From bfb72bb0a9cd9fde3f364198edbe004c729a36bb Mon Sep 17 00:00:00 2001 From: bsongis Date: Thu, 9 Jul 2015 23:53:09 +0200 Subject: [PATCH 1/7] [Taranis X9E] The radio starts if the PWR button is pressed between 2s and 5s --- radio/src/gui/Taranis/lcd.h | 2 -- radio/src/targets/taranis/board_taranis.cpp | 19 ++++++++++++++++-- radio/src/targets/taranis/board_taranis.h | 8 +++++++- radio/src/targets/taranis/bootloader/boot.cpp | 1 + radio/src/targets/taranis/lcd_driver.cpp | 4 +--- radio/src/targets/taranis/pwr_driver.c | 20 ++++++++++++------- 6 files changed, 39 insertions(+), 15 deletions(-) diff --git a/radio/src/gui/Taranis/lcd.h b/radio/src/gui/Taranis/lcd.h index a89c57dd1..caecc1ded 100755 --- a/radio/src/gui/Taranis/lcd.h +++ b/radio/src/gui/Taranis/lcd.h @@ -228,8 +228,6 @@ void lcd_bmp(coord_t x, coord_t y, const uint8_t * img, coord_t offset=0, coord_ void lcdSetRefVolt(unsigned char val); void lcd_clear(); void lcdSetContrast(); -void lcdInit(); -void lcdOff(); #if defined(REVPLUS) && !defined(SIMU) void lcdRefresh(bool wait=true); diff --git a/radio/src/targets/taranis/board_taranis.cpp b/radio/src/targets/taranis/board_taranis.cpp index cd1a518ab..4e6a4d392 100644 --- a/radio/src/targets/taranis/board_taranis.cpp +++ b/radio/src/targets/taranis/board_taranis.cpp @@ -119,6 +119,21 @@ void boardInit() RCC_APB2PeriphClockCmd(BACKLIGHT_RCC_APB2Periph | ADC_RCC_APB2Periph | HAPTIC_RCC_APB2Periph | INTMODULE_RCC_APB2Periph | EXTMODULE_RCC_APB2Periph | HEARTBEAT_RCC_APB2Periph, ENABLE); pwrInit(); + + init5msTimer(); + __enable_irq(); + +#if defined(REV9E) + if (!(RCC->CSR & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { + tmr10ms_t start = get_tmr10ms(); + while (pwrPressed()); + tmr10ms_t duration = get_tmr10ms() - start; + if (duration < 200 || duration >= 500) { + pwrOff(); + } + } +#endif + keysInit(); adcInit(); delaysInit(); @@ -130,8 +145,6 @@ void boardInit() audioInit(); init2MhzTimer(); - init5msTimer(); - __enable_irq(); i2cInit(); usbInit(); @@ -146,6 +159,8 @@ void boardInit() #if defined(DEBUG) DBGMCU_APB1PeriphConfig(DBGMCU_IWDG_STOP|DBGMCU_TIM1_STOP|DBGMCU_TIM2_STOP|DBGMCU_TIM3_STOP|DBGMCU_TIM6_STOP|DBGMCU_TIM8_STOP|DBGMCU_TIM10_STOP|DBGMCU_TIM13_STOP|DBGMCU_TIM14_STOP, ENABLE); #endif + + backlightInit(); } #endif diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index 7b068335d..5c3546a54 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -254,6 +254,7 @@ extern "C" { // Power driver void pwrInit(void); uint32_t pwrCheck(void); +void pwrOn(void); void pwrOff(void); #if defined(REV9E) uint32_t pwrPressed(void); @@ -262,6 +263,7 @@ uint32_t pwrPressedDuration(void); #define UNEXPECTED_SHUTDOWN() (g_eeGeneral.unexpectedShutdown) // Backlight driver +void backlightInit(void); #if defined(REVPLUS) void turnBacklightOn(uint8_t level, uint8_t color); void turnBacklightOff(void); @@ -331,13 +333,17 @@ void uart3Stop(void); // BT driver #define BLUETOOTH_DEFAULT_BAUDRATE 115200 #define BLUETOOTH_FACTORY_BAUDRATE 9600 -uint8_t bluetoothReady(); +uint8_t bluetoothReady(void); void bluetoothInit(uint32_t baudrate); void bluetoothWrite(const void * buffer, int len); void bluetoothWriteString(const char * str); int bluetoothRead(void * buffer, int len); void bluetoothWakeup(void); +// LCD driver +void lcdInit(void); +void lcdOff(void); + // Top LCD driver #if defined(REV9E) void topLcdInit(void); diff --git a/radio/src/targets/taranis/bootloader/boot.cpp b/radio/src/targets/taranis/bootloader/boot.cpp index 66612198a..fad946eb8 100755 --- a/radio/src/targets/taranis/bootloader/boot.cpp +++ b/radio/src/targets/taranis/bootloader/boot.cpp @@ -413,6 +413,7 @@ int main() delaysInit(); //needed for lcdInit() #endif lcdInit(); + backlightInit(); #if defined(PCBSKY9X) extern uint8_t OptrexDisplay; diff --git a/radio/src/targets/taranis/lcd_driver.cpp b/radio/src/targets/taranis/lcd_driver.cpp index b4ef70b11..afc965bb8 100644 --- a/radio/src/targets/taranis/lcd_driver.cpp +++ b/radio/src/targets/taranis/lcd_driver.cpp @@ -251,8 +251,7 @@ void lcdRefresh() } #endif -/**Init the Backlight GPIO */ -static void LCD_BL_Config() +void backlightInit() { GPIO_InitTypeDef GPIO_InitStructure; @@ -362,7 +361,6 @@ void lcdOff() */ void lcdInit() { - LCD_BL_Config(); LCD_Hardware_Init(); if (WAS_RESET_BY_WATCHDOG()|WAS_RESET_BY_SOFTWARE()) return; //no need to reset LCD module diff --git a/radio/src/targets/taranis/pwr_driver.c b/radio/src/targets/taranis/pwr_driver.c index c0abac8df..dccadba72 100644 --- a/radio/src/targets/taranis/pwr_driver.c +++ b/radio/src/targets/taranis/pwr_driver.c @@ -72,17 +72,18 @@ void pwrInit() GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IN; GPIO_Init(TRAINER_GPIO_DETECT, &GPIO_InitStructure); - // Soft power ON - GPIO_SetBits(PWR_GPIO, PWR_GPIO_PIN_ON); + pwrOn(); +} -#if defined(REV9E) - while (pwrPressed()) ; -#endif +void pwrOn() +{ + GPIO_SetBits(PWR_GPIO, PWR_GPIO_PIN_ON); } void pwrOff() { GPIO_ResetBits(PWR_GPIO, PWR_GPIO_PIN_ON); + #if defined(REV9E) // 9E needs watchdog reset because CPU is still running while the power // key is held pressed by the user @@ -107,8 +108,11 @@ uint32_t pwrPressed() { return GPIO_ReadInputDataBit(PWR_GPIO, PWR_GPIO_PIN_SWITCH) == Bit_RESET; } -#if !defined(BOOT) +#endif + +#if defined(REV9E) && !defined(BOOT) uint32_t pwrPressTime = 0; + uint32_t pwrPressedDuration() { if (pwrPressTime == 0) { @@ -118,6 +122,7 @@ uint32_t pwrPressedDuration() return get_tmr10ms() - pwrPressTime; } } + uint32_t pwrCheck() { if (pwrPressed()) { @@ -136,7 +141,8 @@ uint32_t pwrCheck() return e_power_on; } #endif -#else + +#if !defined(REV9E) uint32_t pwrCheck() { #if defined(SIMU) From e4698d10a366191eaf25726e2c51d612083e3194 Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 10 Jul 2015 09:15:18 +0200 Subject: [PATCH 2/7] [Taranis X9E] Second version for the startup procedure --- radio/src/targets/taranis/board_taranis.cpp | 23 ++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/radio/src/targets/taranis/board_taranis.cpp b/radio/src/targets/taranis/board_taranis.cpp index 4e6a4d392..ff0abb3d1 100644 --- a/radio/src/targets/taranis/board_taranis.cpp +++ b/radio/src/targets/taranis/board_taranis.cpp @@ -123,7 +123,7 @@ void boardInit() init5msTimer(); __enable_irq(); -#if defined(REV9E) +#if 0 // first version if (!(RCC->CSR & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { tmr10ms_t start = get_tmr10ms(); while (pwrPressed()); @@ -134,6 +134,27 @@ void boardInit() } #endif +#if defined(REV9E) // second version + if (!(RCC->CSR & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { + tmr10ms_t start = get_tmr10ms(); + tmr10ms_t duration = 0; + uint8_t pwr_on = 0; + while (pwrPressed()) { + duration = get_tmr10ms() - start; + if (duration >= 300) { + turnBacklightOff(); + } + else if (duration > 80 && pwr_on != 1) { + backlightInit(); + pwr_on = 1; + } + } + if (duration < 80 || duration >= 300) { + pwrOff(); + } + } +#endif + keysInit(); adcInit(); delaysInit(); From 1f0d0433bb0ec9750a55f60c6699ea926af6fd6d Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 10 Jul 2015 11:03:38 +0200 Subject: [PATCH 3/7] [Taranis X9E] Constants added --- radio/src/targets/taranis/board_taranis.cpp | 36 ++++++++++++++++++--- 1 file changed, 31 insertions(+), 5 deletions(-) diff --git a/radio/src/targets/taranis/board_taranis.cpp b/radio/src/targets/taranis/board_taranis.cpp index ff0abb3d1..7742a8c45 100644 --- a/radio/src/targets/taranis/board_taranis.cpp +++ b/radio/src/targets/taranis/board_taranis.cpp @@ -112,6 +112,11 @@ extern "C" void INTERRUPT_5MS_IRQHandler() interrupt5ms() ; } +#if defined(REV9E) + #define PWR_PRESS_DURATION_MIN 80 // 800ms + #define PWR_PRESS_DURATION_MAX 300 // 3s +#endif + void boardInit() { RCC_AHB1PeriphClockCmd(PWR_RCC_AHB1Periph | KEYS_RCC_AHB1Periph | LCD_RCC_AHB1Periph | BACKLIGHT_RCC_AHB1Periph | ADC_RCC_AHB1Periph | I2C_RCC_AHB1Periph | SD_RCC_AHB1Periph | HAPTIC_RCC_AHB1Periph | INTMODULE_RCC_AHB1Periph | EXTMODULE_RCC_AHB1Periph | TELEMETRY_RCC_AHB1Periph | SERIAL_RCC_AHB1Periph | TRAINER_RCC_AHB1Periph | HEARTBEAT_RCC_AHB1Periph, ENABLE); @@ -128,28 +133,49 @@ void boardInit() tmr10ms_t start = get_tmr10ms(); while (pwrPressed()); tmr10ms_t duration = get_tmr10ms() - start; - if (duration < 200 || duration >= 500) { + if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) { pwrOff(); } } #endif -#if defined(REV9E) // second version +#if 0 // second version if (!(RCC->CSR & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { tmr10ms_t start = get_tmr10ms(); tmr10ms_t duration = 0; uint8_t pwr_on = 0; while (pwrPressed()) { duration = get_tmr10ms() - start; - if (duration >= 300) { + if (duration >= PWR_PRESS_DURATION_MAX) { turnBacklightOff(); } - else if (duration > 80 && pwr_on != 1) { + else if (duration > PWR_PRESS_DURATION_MIN && pwr_on != 1) { backlightInit(); pwr_on = 1; } } - if (duration < 80 || duration >= 300) { + if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) { + pwrOff(); + } + } +#endif + +#if defined(REV9E) // third version + if (!(RCC->CSR & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { + tmr10ms_t start = get_tmr10ms(); + tmr10ms_t duration = 0; + uint8_t pwr_on = 0; + while (pwrPressed()) { + duration = get_tmr10ms() - start; + if (duration >= PWR_PRESS_DURATION_MAX) { + turnBacklightOff(); + } + else if (duration > PWR_PRESS_DURATION_MIN && pwr_on != 1) { + backlightInit(); + pwr_on = 1; + } + } + if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) { pwrOff(); } } From 17f465bff54cb8a3aa86dda4d1389479088cbb82 Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 10 Jul 2015 14:10:16 +0200 Subject: [PATCH 4/7] [Taranis X9E] Shutdown procedure modified (popup with confirmation added) --- radio/src/Makefile | 2 +- radio/src/main_arm.cpp | 7 - radio/src/opentx.cpp | 179 +++++++++++++++++++++---- radio/src/pwr.h | 3 +- radio/src/switches.cpp | 30 ++++- radio/src/targets/simu/simpgmspace.cpp | 7 +- radio/src/targets/taranis/pwr_driver.c | 32 ----- radio/src/tasks_arm.cpp | 11 ++ 8 files changed, 197 insertions(+), 74 deletions(-) diff --git a/radio/src/Makefile b/radio/src/Makefile index 4d4952764..ad5cad4d6 100644 --- a/radio/src/Makefile +++ b/radio/src/Makefile @@ -923,7 +923,7 @@ ifeq ($(PCB), TARANIS) CPPSRC += bmp.cpp gui/$(GUIDIRECTORY)/view_channels.cpp gui/$(GUIDIRECTORY)/view_about.cpp gui/$(GUIDIRECTORY)/view_text.cpp debug.cpp CPPSRC += loadboot.cpp ifeq ($(PCBREV), REV9E) - EXTRABOARDSRC += targets/taranis/top_lcd_driver.cpp + CPPSRC += targets/taranis/top_lcd_driver.cpp SRC += targets/taranis/system_stm32f4xx.c SRC += $(STM32LIBPATH)/STM32F4xx_StdPeriph_Driver/src/misc.c SRC += $(STM32LIBPATH)/STM32F4xx_StdPeriph_Driver/src/stm32f4xx_gpio.c diff --git a/radio/src/main_arm.cpp b/radio/src/main_arm.cpp index 445d5f8fc..2792c325c 100644 --- a/radio/src/main_arm.cpp +++ b/radio/src/main_arm.cpp @@ -176,13 +176,6 @@ void perMain() drawStatusLine(); } -#if defined(REV9E) - uint32_t pwr_pressed_duration = pwrPressedDuration(); - if (pwr_pressed_duration > 0) { - displayShutdownProgress(pwr_pressed_duration); - } -#endif - lcdRefresh(); #if defined(REV9E) && !defined(SIMU) diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 768b33ee0..b08511b0b 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -977,6 +977,10 @@ bool readonlyUnlocked() #if defined(SPLASH) void doSplash() { +#if defined(PCBTARANIS) && defined(REV9E) + bool refresh = false; +#endif + if (SPLASH_NEEDED()) { displaySplash(); @@ -997,7 +1001,8 @@ void doSplash() inputsMoved(); tmr10ms_t tgtime = get_tmr10ms() + SPLASH_TIMEOUT; - while (tgtime != get_tmr10ms()) { + + while (tgtime > get_tmr10ms()) { #if defined(SIMU) SIMU_SLEEP(1); #elif defined(CPUARM) @@ -1017,7 +1022,23 @@ void doSplash() } #endif - if (pwrCheck()==e_power_off) return; +#if defined(PCBTARANIS) && defined(REV9E) + uint32_t pwr_check = pwrCheck(); + if (pwr_check == e_power_off) { + break; + } + else if (pwr_check == e_power_press) { + refresh = true; + } + else if (pwr_check == e_power_on && refresh) { + displaySplash(); + refresh = false; + } +#else + if (pwrCheck() == e_power_off) { + return; + } +#endif #if !defined(PCBTARANIS) && !defined(PCBSTD) if (curTime < get_tmr10ms()) { @@ -1142,16 +1163,26 @@ void checkTHR() MESSAGE(STR_THROTTLEWARN, STR_THROTTLENOTIDLE, STR_PRESSANYKEYTOSKIP, AU_THROTTLE_ALERT); } #else - if (g_model.disableThrottleWarning) return; + if (g_model.disableThrottleWarning) { + return; + } + getADC(); + evalInputs(e_perout_mode_notrainer); // let do evalInputs do the job int16_t v = calibratedStick[thrchn]; - if (v<=(THRCHK_DEADBAND-1024)) return; // prevent warning if throttle input OK + if (v <= THRCHK_DEADBAND-1024) { + return; // prevent warning if throttle input OK + } // first - display warning; also deletes inputs if any have been before MESSAGE(STR_THROTTLEWARN, STR_THROTTLENOTIDLE, STR_PRESSANYKEYTOSKIP, AU_THROTTLE_ALERT); +#if defined(PCBTARANIS) && defined(REV9E) + bool refresh = false; +#endif + while (1) { SIMU_SLEEP(1); @@ -1159,10 +1190,30 @@ void checkTHR() getADC(); evalInputs(e_perout_mode_notrainer); // let do evalInputs do the job + v = calibratedStick[thrchn]; - if (pwrCheck()==e_power_off || keyDown() || v<=(THRCHK_DEADBAND-1024)) +#if defined(PCBTARANIS) && defined(REV9E) + uint32_t pwr_check = pwrCheck(); + if (pwr_check == e_power_off) { break; + } + else if (pwr_check == e_power_press) { + refresh = true; + } + else if (pwr_check == e_power_on && refresh) { + MESSAGE(STR_THROTTLEWARN, STR_THROTTLENOTIDLE, STR_PRESSANYKEYTOSKIP, AU_NONE); + refresh = false; + } +#else + if (pwrCheck() == e_power_off) { + break; + } +#endif + + if (keyDown() || v <= THRCHK_DEADBAND-1024) { + break; + } checkBacklight(); @@ -1173,8 +1224,9 @@ void checkTHR() void checkAlarm() // added by Gohst { - if (g_eeGeneral.disableAlarmWarning) + if (g_eeGeneral.disableAlarmWarning) { return; + } if (IS_SOUND_OFF()) { ALERT(STR_ALARMSWARN, STR_ALARMSDISABLED, AU_ERROR); @@ -1185,42 +1237,41 @@ void alert(const pm_char * t, const pm_char *s MESSAGE_SOUND_ARG) { MESSAGE(t, s, STR_PRESSANYKEY, sound); +#if defined(PCBTARANIS) && defined(REV9E) + bool refresh = false; +#endif + while(1) { SIMU_SLEEP(1); - if (pwrCheck() == e_power_off) { - // the radio has been powered off during the ALERT -#if defined(TARANIS) && defined(REV9E) - // TODO this is quick & dirty - lcdOff(); - BACKLIGHT_OFF(); - topLcdOff(); - SysTick->CTRL = 0; // turn off systick -#endif - pwrOff(); // turn power off now - } - if (keyDown()) return; // wait for key release checkBacklight(); wdt_reset(); -#if defined(REV9E) - static bool refresh = false; - uint32_t pwr_pressed_duration = pwrPressedDuration(); - if (refresh) { - lcdRefresh(); - refresh = false; - if (pwr_pressed_duration == 0) { - MESSAGE(t, s, STR_PRESSANYKEY, AU_NONE); - } +#if defined(PCBTARANIS) && defined(REV9E) + uint32_t pwr_check = pwrCheck(); + if (pwr_check == e_power_off) { + // TODO this is quick & dirty + lcdOff(); + BACKLIGHT_OFF(); + topLcdOff(); + SysTick->CTRL = 0; // turn off systick + pwrOff(); } - if (pwr_pressed_duration > 0) { - displayShutdownProgress(pwr_pressed_duration); + else if (pwr_check == e_power_press) { refresh = true; } + else if (pwr_check == e_power_on && refresh) { + MESSAGE(t, s, STR_PRESSANYKEY, AU_NONE); + refresh = false; + } +#else + if (pwrCheck() == e_power_off) { + pwrOff(); // turn power off now + } #endif } } @@ -2546,3 +2597,73 @@ int main(void) #endif } #endif // !SIMU + +#if defined(PCBTARANIS) && defined(REV9E) +uint32_t pwr_press_time = 0; + +uint32_t pwrPressedDuration() +{ + if (pwr_press_time == 0) { + return 0; + } + else { + return get_tmr10ms() - pwr_press_time; + } +} + +uint32_t pwrCheck() +{ + enum PwrCheckState { + PWR_CHECK_ON, + PWR_CHECK_OFF, + PWR_CHECK_PAUSED, + }; + + static uint8_t pwr_check_state = PWR_CHECK_ON; + + if (pwr_check_state == PWR_CHECK_OFF) { + return e_power_off; + } + else if (pwrPressed()) { + if (pwr_check_state == PWR_CHECK_PAUSED) { + // nothing + } + else if (pwr_press_time == 0) { + pwr_press_time = get_tmr10ms(); + } + else { + if (get_tmr10ms() - pwr_press_time > 300) { + while (1) { + lcdRefreshWait(); + lcd_clear(); + POPUP_CONFIRMATION("Confirm Shutdown"); + uint8_t evt = getEvent(false); + DISPLAY_WARNING(evt); + lcdRefresh(); + if (s_warning_result == true) { + pwr_check_state = PWR_CHECK_OFF; + return e_power_off; + } + else if (!s_warning) { + // shutdown has been cancelled + pwr_check_state = PWR_CHECK_PAUSED; + return e_power_on; + } + } + } + else { + lcdRefreshWait(); + displayShutdownProgress(pwrPressedDuration()); + lcdRefresh(); + return e_power_press; + } + } + } + else { + pwr_check_state = PWR_CHECK_ON; + pwr_press_time = 0; + } + + return e_power_on; +} +#endif diff --git a/radio/src/pwr.h b/radio/src/pwr.h index b6816d590..a8ed7a0c8 100644 --- a/radio/src/pwr.h +++ b/radio/src/pwr.h @@ -41,7 +41,8 @@ enum PowerState { e_power_on, e_power_trainer, e_power_usb, - e_power_off + e_power_off, + e_power_press, }; #endif diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index e87dc4c28..e26bc3de9 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -611,6 +611,10 @@ void checkSwitches() uint8_t bad_pots = 0, last_bad_pots = 0xff; #endif +#if defined(PCBTARANIS) && defined(REV9E) + bool refresh = false; +#endif + #if !defined(MODULE_ALWAYS_SEND_PULSES) while (1) { @@ -621,8 +625,9 @@ void checkSwitches() #define GETADC_COUNT 1 #endif #ifdef GETADC_COUNT - for (int i=0; i 250) { - return e_power_off; - } - } - } - else { - pwrPressTime = 0; - } - return e_power_on; -} -#endif - #if !defined(REV9E) uint32_t pwrCheck() { diff --git a/radio/src/tasks_arm.cpp b/radio/src/tasks_arm.cpp index 4b7edb2f4..2f2d8e4dc 100644 --- a/radio/src/tasks_arm.cpp +++ b/radio/src/tasks_arm.cpp @@ -159,7 +159,18 @@ void menusTask(void * pdata) { opentxInit(); +#if defined(PCBTARANIS) && defined(REV9E) + while (1) { + uint32_t pwr_check = pwrCheck(); + if (pwr_check == e_power_off) { + break; + } + else if (pwr_check == e_power_press) { + continue; + } +#else while (pwrCheck() != e_power_off) { +#endif U64 start = CoGetOSTime(); perMain(); // TODO remove completely massstorage from sky9x firmware From a7462157c550a6a9baa3dbb724368612cb8994fe Mon Sep 17 00:00:00 2001 From: bsongis Date: Fri, 10 Jul 2015 23:35:28 +0200 Subject: [PATCH 5/7] [Taranis X9E] Bitmaps added on startup --- radio/src/bitmaps/Taranis/lock.png | Bin 0 -> 1573 bytes radio/src/bitmaps/Taranis/logo.bmp | Bin 3126 -> 0 bytes radio/src/bitmaps/Taranis/sleep.png | Bin 0 -> 1691 bytes radio/src/bitmaps/Taranis/startup.png | Bin 0 -> 5532 bytes radio/src/targets/taranis/board_taranis.cpp | 114 +++++++++----------- radio/src/targets/taranis/board_taranis.h | 1 + radio/src/targets/taranis/lcd_driver.cpp | 6 +- 7 files changed, 56 insertions(+), 65 deletions(-) create mode 100755 radio/src/bitmaps/Taranis/lock.png delete mode 100755 radio/src/bitmaps/Taranis/logo.bmp create mode 100755 radio/src/bitmaps/Taranis/sleep.png create mode 100644 radio/src/bitmaps/Taranis/startup.png diff --git a/radio/src/bitmaps/Taranis/lock.png b/radio/src/bitmaps/Taranis/lock.png new file mode 100755 index 0000000000000000000000000000000000000000..a3b103e94ee6c0789a345a4a2e00fb4929e61925 GIT binary patch literal 1573 zcmV+=2HN?FP)WZq0 z6<5@_qGH8WE3UDks`4u7am9)nm4{ey z#T8dvag7>lthmOCipoPCqUS!OGtFdXl9^tmh3fy-b@g%d;s`mHonk-!4L@QpSY*^V4FOy{FCzPr9bpy>*%oYwI;JM> zlRBm(eHPD)_XBYHWm>dGU^9T4mrcX0(Y$P;z-B<~Km9U&w}8_pw_xMXioln-#w|iF?Di z0ZLe3dMw-c+(6z(UUA@R)&9Vaa_@7hmbNX}#tvj-0T!ZhU^Afko$T8zvVCV83AVrb z9{Xhd2y5E6=9>-R!dXF_Wvu~wwoMuiTkw}bSDKNTC zUm*x7H}14MGMXujMHri*iU;4|d$i5vmhs+5B%-O0SFc_{Fc{R-w$*G&**eza%l$F9Vd;1%A;<7gVyn1RD7C*vqK$0YM zIvw2{yjHCN;Uz?=M>e?}2dAf}l4m%s4tOdS9&|U-PimHK)Ibpg0kvvP_TS;*q3qdC zct^FbPPbz`V286en+(eU86Z`yqg3W?^ROS?heRR)tE;P$iCbS^2b!j(;I?-p>vz?= zs#U0#1c>RAS$MVdI*5`C$B8$R@$!z6N~ykb!1!Uk&W`7<)M5$dJr{!TM{g+ z$9(_*QdCM7U1QOhtX(7$fy4N%E4w{zVCoFSVlmkkB?dN@k&Mky3k!)yzrd!YDkU4u zFHKd3q$gDzC-E37wbaCGt#X#5q=TuksPI|f))NpOPR04t^#Gs^9^7%XffaXMIEL~cphu=Fj6L!%epIGF3?3-Bem?=H% z7XXCyqs4{0*Ig9)C8P_ipluC{&Qliv1|^>Uz++#st8O3t3a6f`q^h*9+TwOK6N#sv zJ#!IHh>*f84-)l3u{`rSqZ_Q68hU3k?Vy_~1+l$nd#HKY zR2AliWoDzqz?lp2N=Ge%#Rr3q9veT61u6*iWo1KuHeM zPSW@1xKy;Tbqv5(3|0TC$|mw&9+&n9GT)j{dZM5aaN(?g5JHH(U=fw1B>B2;&1dL= zxZzhGXqtvtG$y(7FsuYaL2x)6P%4&W*CbM@l;Kw%=B9ODI-k!&KA+chsb$_a55Zti ztY5{Y7S(G@l?reT4tSmizQIGM+mT#yA&A*rTbeU(#G8Okz$Rc5unE`%Yyvg`PpSM5 XopQ=0&%gb(00000NkvXXu0mjfXC%xteR?uv z$Uw%78Of9>6PYt-Myu75B}*2vX3a{rY}v@3Jv%var$^?J?hu5PlE;xXxOkJjT$wgapT7L`T5bLNfVkjZA!Cd z&1l}dIW1bWpk>RJv})Cg)~#F9rcE2#wrxwhcI{~2zC9f}bf9C$j&$nOiO!unV=x%# z(xnSsyLP2pw{CRr-klyjdeF0HPkQz0Mep9d>C>kVef##MU%!6z@86#R0|qc~;6Mfq z8pPnigYozGXULEt3>`X@VZ(+oeE4uij2OYlks}#3Y80bKk0u}>fH7mnFm~)%#*G`t z`0?YJFku1{Cr)J2q)8Z!MkY_5%#|p24o$T7Ri`~0-vuDp9_U_$_$z)>RzJ2W9zn=pK z4sh_`K@J@{#Noq-IdbF(M~@!m*s)_AKYpAOCr)tkqVJr#W-x3}?@t#cVcn z?%X-fpFhuq3m3R}@gkQlUE=cP%Uro~g{xPua_!nRu3x{-jT<+(dGjW>Zr$Sc?c3bB zbBDWk?_#l7xOeX!_wV25!Gi}peE5(@j~?;(@nfDmdBW4DPkHw28PA_T=f#T`ynOkR zSFc|2`t@txym`ahw{Njptwcmb@b29^-oJm(hYuf!jEv;t$B#rsMe*s=Cq94v%$F}; z`1)Zq^3y~_=wo8aDR+-wV+5`B_6ZMm_^U;M z+aeK*e8ePJ<#$O&xQG;!e)Y8L@4Ue$LIR@(I)Zp^5G$jle}Md}w$)GKY+uBK|H$m{ z_W@rk!ll%Ei56Fh4i)R;$@*n}r$1eVh^^{)QT$RyaJY}}#z5&`=9N8vtXSwOCFw5T z9QOR#qr^V(B)#L!@pAyrK&y3@pH(3G{ovr~&7b3v@j4&s8BUbC(a}ld)hE5S)69)T`P^Yo%a_8DH?5dDQKJk zwY?5SO8Pjn5MlDWK$Yq!z@+@`nN$IBnN(VhMk{Mq=D5D>^-7BhuNbfmvn{>?{s^EH zJ0(go7;QaDoRdKXRc)wY53iW`5kT>3w=16H@OLz!V0y`++#kh~NdoOFIt4PsaVWJA z+k)9(@HZI^24N9a`BT(5cT^VWCmXcaChgMM&$;L?RrUSjEL@m$0*gj(-*L4PCKO91 zVOC_?*^nD(aBPQJe)uS^I_MYG*~oR8AZxE#iUXOj?a}S5L|x y45LP?53`yznxESIjX+kb#q6ii{i(Z7@2Ash?Z@divc^G;I=#R1%*7f1i|{WifsP*l diff --git a/radio/src/bitmaps/Taranis/sleep.png b/radio/src/bitmaps/Taranis/sleep.png new file mode 100755 index 0000000000000000000000000000000000000000..b35df3e5234065dba9eddb33c719863739151b6d GIT binary patch literal 1691 zcmV;M24wk(P)7mY^2CAis> zQcCIQ@6p1g^t42o2;)fUyVA`6=9Sp(8126Add|x%O|yFq*Y`;?J{g_(caE_r+O0N( ztgw8OHgv;rTpOhgH`pnAmQV1Wj?Nlbuq?|3R#B7-!G>zmtzTPo{mDAbKg!e5=?pV| zTJk-vexy_O4(rQ|Cna#eo&63?-%nE}!qDWsBpngXsmpB{8 z#>U1uA0T7}SOd$oXGKx;zu2p4c<09*=dI@-<>~Ol@Jit&{Z%>?%?4u9lVG>L-|~#J zmjN8ao((JxlMZprwqCEJuwHQf>mByMB{)>JD!#|%6Z}jwo+r+RV$%ANPGh%YQ#Biu z0}NWTS8`fXP68nWQeJ|hD1j#_lbQtpF(*RIiZdOZBuU7uX2Q{M>s^a75r(oWtP^&^ z((Jsl^V81UbND6zD$neFS=p)}9*+mASy2>Snq7K%*lxAa>)8&eyjc!(A%qYVOT|m| z^+O@~0^DfYNq>2>9C+E`7c3zJN>hO#2=nh>zl;aRa8h@+z_A=OO@pRs zXt&$5=T=o{2ljK5{pGxDQ^A@RJYchLn@uWtX3Bza<}AvaWneVL^b7;lT6Jol$&{e|}B-fAs0#ctBh4T25`vL>S86amW7V+a_fq3|)J? z7JTuLeUPP0ggIBK?7i8Wn_$y_*UydH|FiFUDPGe2rRnP1ec!cT&%Mi07s8Av(FF6cdG;*&g7RYkpC2O$L7fd*@6A(P2K%!(+Mic??ccrBhh^ko4%Wn15v zsfB8_dS&{ySe!or83P`#El@8#ev6-<11+=l^qy}G&kcAS4!q*!q8sVh2}dRqa%$P@ z^}J66{|~7p07!Ys$()wm#%ma_DHIL2TW!d)3@*XhS`kL%MM-Zr!2hIH0>;T{=@ULy!=RC?8!rCzvGzUWCazL zOcp7f{m%6}Y6(NLb2-bfk4wD{)2=GR4?~)Nln)GSVCTb~{f@Jz*%j7a*y$C?&&sL|xTq>ClFtb+>eK-`s$wcDsX ztDx8Gx$0dxFWcdVv%?QYcBW;TCJe(4Uz3~`pXBlC)hici7(@&0CZ3`wP!t92R@-&s z=Ax@dvMf6iMq9|$LqZ5NO@rD0H}UA3I2oOQ=Xoc;&a7rGcZK0P0=`b|i@Onj1Na8; l4d5HVH-K*d-vC}-`v)7EK%J;760QIM002ovPDHLkV1lb-EQSC8 literal 0 HcmV?d00001 diff --git a/radio/src/bitmaps/Taranis/startup.png b/radio/src/bitmaps/Taranis/startup.png new file mode 100644 index 0000000000000000000000000000000000000000..03fac5a86f8c3695477ddfb765d15215f80d27f4 GIT binary patch literal 5532 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 & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { - tmr10ms_t start = get_tmr10ms(); - while (pwrPressed()); - tmr10ms_t duration = get_tmr10ms() - start; - if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) { - pwrOff(); - } - } -#endif - -#if 0 // second version - if (!(RCC->CSR & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { - tmr10ms_t start = get_tmr10ms(); - tmr10ms_t duration = 0; - uint8_t pwr_on = 0; - while (pwrPressed()) { - duration = get_tmr10ms() - start; - if (duration >= PWR_PRESS_DURATION_MAX) { - turnBacklightOff(); - } - else if (duration > PWR_PRESS_DURATION_MIN && pwr_on != 1) { - backlightInit(); - pwr_on = 1; - } - } - if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) { - pwrOff(); - } - } -#endif - -#if defined(REV9E) // third version - if (!(RCC->CSR & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { - tmr10ms_t start = get_tmr10ms(); - tmr10ms_t duration = 0; - uint8_t pwr_on = 0; - while (pwrPressed()) { - duration = get_tmr10ms() - start; - if (duration >= PWR_PRESS_DURATION_MAX) { - turnBacklightOff(); - } - else if (duration > PWR_PRESS_DURATION_MIN && pwr_on != 1) { - backlightInit(); - pwr_on = 1; - } - } - if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) { - pwrOff(); - } - } -#endif - keysInit(); adcInit(); delaysInit(); lcdInit(); // delaysInit() must be called before - -#if defined(REV9E) - topLcdInit(); -#endif - audioInit(); init2MhzTimer(); + init5msTimer(); + __enable_irq(); i2cInit(); usbInit(); @@ -207,7 +159,45 @@ void boardInit() DBGMCU_APB1PeriphConfig(DBGMCU_IWDG_STOP|DBGMCU_TIM1_STOP|DBGMCU_TIM2_STOP|DBGMCU_TIM3_STOP|DBGMCU_TIM6_STOP|DBGMCU_TIM8_STOP|DBGMCU_TIM10_STOP|DBGMCU_TIM13_STOP|DBGMCU_TIM14_STOP, ENABLE); #endif +#if defined(REV9E) + if (!(RCC->CSR & (RCC_CSR_SFTRSTF | RCC_CSR_WDGRSTF))) { + tmr10ms_t start = get_tmr10ms(); + tmr10ms_t duration = 0; + uint8_t pwr_on = 0; + while (pwrPressed()) { + duration = get_tmr10ms() - start; + lcd_clear(); + if (duration < PWR_PRESS_DURATION_MIN) { + lcd_bmp(76, 0, bmp_lock, 0, 60); + } + else if (duration >= PWR_PRESS_DURATION_MAX) { + lcd_bmp(76, 0, bmp_sleep, 0, 60); + turnBacklightOff(); + } + else { + unsigned index = (duration - PWR_PRESS_DURATION_MIN) / ((PWR_PRESS_DURATION_MAX-PWR_PRESS_DURATION_MIN) / 4); + lcd_bmp(76, 0, bmp_startup, index*60, 60); + if (pwr_on != 1) { + backlightInit(); + pwr_on = 1; + } + } + lcdRefresh(); + } + if (duration < PWR_PRESS_DURATION_MIN || duration >= PWR_PRESS_DURATION_MAX) { + pwrOff(); + } + else { + lcdRefreshWait(); + } + } + else { + backlightInit(); + } + topLcdInit(); +#else backlightInit(); +#endif } #endif diff --git a/radio/src/targets/taranis/board_taranis.h b/radio/src/targets/taranis/board_taranis.h index 5c3546a54..605332f20 100644 --- a/radio/src/targets/taranis/board_taranis.h +++ b/radio/src/targets/taranis/board_taranis.h @@ -342,6 +342,7 @@ void bluetoothWakeup(void); // LCD driver void lcdInit(void); +void lcdInitFinish(void); void lcdOff(void); // Top LCD driver diff --git a/radio/src/targets/taranis/lcd_driver.cpp b/radio/src/targets/taranis/lcd_driver.cpp index afc965bb8..4ad229b7e 100644 --- a/radio/src/targets/taranis/lcd_driver.cpp +++ b/radio/src/targets/taranis/lcd_driver.cpp @@ -268,8 +268,8 @@ void backlightInit() BACKLIGHT_TIMER->PSC = (PERI2_FREQUENCY * TIMER_MULT_APB2) / 50000 - 1; // 20us * 100 = 2ms => 500Hz BACKLIGHT_TIMER->CCMR1 = TIM_CCMR1_OC1M_1 | TIM_CCMR1_OC1M_2 | TIM_CCMR1_OC2M_1 | TIM_CCMR1_OC2M_2 ; // PWM BACKLIGHT_TIMER->CCER = TIM_CCER_CC1E | TIM_CCER_CC2E ; - BACKLIGHT_TIMER->CCR1 = 0 ; - BACKLIGHT_TIMER->CCR2 = 80 ; + BACKLIGHT_TIMER->CCR2 = 0 ; + BACKLIGHT_TIMER->CCR1 = 100 ; BACKLIGHT_TIMER->EGR = 0 ; BACKLIGHT_TIMER->CR1 = TIM_CR1_CEN ; // Counter enable #elif defined(REVPLUS) @@ -287,7 +287,7 @@ void backlightInit() BACKLIGHT_TIMER->CCMR2 = TIM_CCMR2_OC4M_1 | TIM_CCMR2_OC4M_2 ; // PWM BACKLIGHT_TIMER->CCER = TIM_CCER_CC4E | TIM_CCER_CC2E ; BACKLIGHT_TIMER->CCR2 = 0 ; - BACKLIGHT_TIMER->CCR4 = 80 ; + BACKLIGHT_TIMER->CCR4 = 100 ; BACKLIGHT_TIMER->EGR = 0 ; BACKLIGHT_TIMER->CR1 = TIM_CR1_CEN ; // Counter enable #else From 5db809841a0c68c96573f4df53fe15be9d7ce0e3 Mon Sep 17 00:00:00 2001 From: bsongis Date: Sat, 11 Jul 2015 08:52:57 +0200 Subject: [PATCH 6/7] [Taranis] Bootloader cosmetics --- radio/src/targets/taranis/bootloader/boot.cpp | 25 ------------------- 1 file changed, 25 deletions(-) diff --git a/radio/src/targets/taranis/bootloader/boot.cpp b/radio/src/targets/taranis/bootloader/boot.cpp index fad946eb8..366544167 100755 --- a/radio/src/targets/taranis/bootloader/boot.cpp +++ b/radio/src/targets/taranis/bootloader/boot.cpp @@ -398,46 +398,21 @@ int main() #endif pwrInit(); - -#if defined(PCBSKY9X) - MATRIX->CCFG_SYSIO |= 0x000000F0L; // Disable syspins, enable B4,5,6,7 -#endif - -#if defined(PCBSKY9X) - init_SDcard(); - PIOC->PIO_PER = PIO_PC25; // Enable bit C25 (USB-detect) - start_timer0(); -#endif - -#if defined(PCBTARANIS) delaysInit(); //needed for lcdInit() -#endif lcdInit(); backlightInit(); -#if defined(PCBSKY9X) - extern uint8_t OptrexDisplay; - OptrexDisplay = 1; -#endif lcd_clear(); lcd_putsLeft(0, BOOTLOADER_TITLE); lcd_invert_line(0); lcdRefresh(); -#if defined(REVPLUS) - turnBacklightOn(0, 0); -#endif keysInit(); i2cInit(); __enable_irq(); init10msTimer(); -#if defined(PCBSKY9X) - EblockAddress = -1; - init_spi(); -#endif - #if defined(PCBTARANIS) // SD card detect pin sdInit(); From d4ff8c99c72eba31a63c06bbd876146a78a52763 Mon Sep 17 00:00:00 2001 From: bsongis Date: Sat, 11 Jul 2015 08:53:37 +0200 Subject: [PATCH 7/7] Script for resizing / removing audio from videos --- radio/util/video.sh | 7 +++++++ 1 file changed, 7 insertions(+) create mode 100755 radio/util/video.sh diff --git a/radio/util/video.sh b/radio/util/video.sh new file mode 100755 index 000000000..dc65906bc --- /dev/null +++ b/radio/util/video.sh @@ -0,0 +1,7 @@ +#!/bin/bash + +set -x +set -e + +ffmpeg -i $1 -an -vb 1000k -s 960x540 `echo $1 | sed 's/\(.*\.\)mp4/\1mov/'` +