+1
-1
@@ -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
|
||||
|
||||
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 1.5 KiB |
Binary file not shown.
|
Before Width: | Height: | Size: 3.1 KiB |
Executable
BIN
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
Binary file not shown.
|
After Width: | Height: | Size: 5.4 KiB |
@@ -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);
|
||||
|
||||
@@ -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)
|
||||
|
||||
+150
-29
@@ -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
|
||||
|
||||
+2
-1
@@ -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
|
||||
|
||||
+28
-2
@@ -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<GETADC_COUNT; i++)
|
||||
for (int i=0; i<GETADC_COUNT; i++) {
|
||||
getADC();
|
||||
}
|
||||
#undef GETADC_COUNT
|
||||
#endif
|
||||
#endif // !defined(MODULE_ALWAYS_SEND_PULSES)
|
||||
@@ -752,7 +757,28 @@ void checkSwitches()
|
||||
last_bad_switches = 0xff;
|
||||
}
|
||||
#else
|
||||
if (pwrCheck()==e_power_off || keyDown()) return;
|
||||
|
||||
if (keyDown()) {
|
||||
return;
|
||||
}
|
||||
|
||||
#if defined(PCBTARANIS) && defined(REV9E)
|
||||
uint32_t pwr_check = pwrCheck();
|
||||
if (pwr_check == e_power_off) {
|
||||
return;
|
||||
}
|
||||
else if (pwr_check == e_power_press) {
|
||||
refresh = true;
|
||||
}
|
||||
else if (pwr_check == e_power_on && refresh) {
|
||||
last_bad_switches = 0xff;
|
||||
refresh = false;
|
||||
}
|
||||
#else
|
||||
if (pwrCheck() == e_power_off) {
|
||||
return;
|
||||
}
|
||||
#endif
|
||||
|
||||
checkBacklight();
|
||||
|
||||
|
||||
@@ -1191,9 +1191,12 @@ void lcdRefresh()
|
||||
|
||||
#if defined(PCBTARANIS)
|
||||
void pwrInit() { }
|
||||
uint32_t pwrCheck() { return true; }
|
||||
void pwrOff() { }
|
||||
uint32_t pwrPressedDuration() { return 0; }
|
||||
#if defined(REV9E)
|
||||
uint32_t pwrPressed() { return false; }
|
||||
#else
|
||||
uint32_t pwrCheck() { return true; }
|
||||
#endif
|
||||
void usbStart() { }
|
||||
int usbPlugged() { return false; }
|
||||
void USART_DeInit(USART_TypeDef* ) { }
|
||||
|
||||
@@ -112,6 +112,23 @@ extern "C" void INTERRUPT_5MS_IRQHandler()
|
||||
interrupt5ms() ;
|
||||
}
|
||||
|
||||
#if defined(REV9E)
|
||||
#define PWR_PRESS_DURATION_MIN 80 // 800ms
|
||||
#define PWR_PRESS_DURATION_MAX 300 // 3s
|
||||
|
||||
const pm_uchar bmp_startup[] PROGMEM = {
|
||||
#include "../../bitmaps/Taranis/startup.lbm"
|
||||
};
|
||||
|
||||
const pm_uchar bmp_lock[] PROGMEM = {
|
||||
#include "../../bitmaps/Taranis/lock.lbm"
|
||||
};
|
||||
|
||||
const pm_uchar bmp_sleep[] PROGMEM = {
|
||||
#include "../../bitmaps/Taranis/sleep.lbm"
|
||||
};
|
||||
#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);
|
||||
@@ -123,11 +140,6 @@ void boardInit()
|
||||
adcInit();
|
||||
delaysInit();
|
||||
lcdInit(); // delaysInit() must be called before
|
||||
|
||||
#if defined(REV9E)
|
||||
topLcdInit();
|
||||
#endif
|
||||
|
||||
audioInit();
|
||||
init2MhzTimer();
|
||||
init5msTimer();
|
||||
@@ -146,6 +158,46 @@ 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
|
||||
|
||||
#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
|
||||
|
||||
|
||||
@@ -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,18 @@ 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 lcdInitFinish(void);
|
||||
void lcdOff(void);
|
||||
|
||||
// Top LCD driver
|
||||
#if defined(REV9E)
|
||||
void topLcdInit(void);
|
||||
|
||||
@@ -398,45 +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();
|
||||
|
||||
@@ -251,8 +251,7 @@ void lcdRefresh()
|
||||
}
|
||||
#endif
|
||||
|
||||
/**Init the Backlight GPIO */
|
||||
static void LCD_BL_Config()
|
||||
void backlightInit()
|
||||
{
|
||||
GPIO_InitTypeDef GPIO_InitStructure;
|
||||
|
||||
@@ -269,8 +268,8 @@ static void LCD_BL_Config()
|
||||
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)
|
||||
@@ -288,7 +287,7 @@ static void LCD_BL_Config()
|
||||
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
|
||||
@@ -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
|
||||
|
||||
@@ -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,36 +108,9 @@ uint32_t pwrPressed()
|
||||
{
|
||||
return GPIO_ReadInputDataBit(PWR_GPIO, PWR_GPIO_PIN_SWITCH) == Bit_RESET;
|
||||
}
|
||||
#if !defined(BOOT)
|
||||
uint32_t pwrPressTime = 0;
|
||||
uint32_t pwrPressedDuration()
|
||||
{
|
||||
if (pwrPressTime == 0) {
|
||||
return 0;
|
||||
}
|
||||
else {
|
||||
return get_tmr10ms() - pwrPressTime;
|
||||
}
|
||||
}
|
||||
uint32_t pwrCheck()
|
||||
{
|
||||
if (pwrPressed()) {
|
||||
if (pwrPressTime == 0) {
|
||||
pwrPressTime = get_tmr10ms();
|
||||
}
|
||||
else {
|
||||
if (get_tmr10ms() - pwrPressTime > 250) {
|
||||
return e_power_off;
|
||||
}
|
||||
}
|
||||
}
|
||||
else {
|
||||
pwrPressTime = 0;
|
||||
}
|
||||
return e_power_on;
|
||||
}
|
||||
#endif
|
||||
#else
|
||||
|
||||
#if !defined(REV9E)
|
||||
uint32_t pwrCheck()
|
||||
{
|
||||
#if defined(SIMU)
|
||||
|
||||
@@ -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
|
||||
|
||||
Executable
+7
@@ -0,0 +1,7 @@
|
||||
#!/bin/bash
|
||||
|
||||
set -x
|
||||
set -e
|
||||
|
||||
ffmpeg -i $1 -an -vb 1000k -s 960x540 `echo $1 | sed 's/\(.*\.\)mp4/\1mov/'`
|
||||
|
||||
Reference in New Issue
Block a user