From 98c123ef8b2e7b7e28ba3ed609ed74f93aac9e4f Mon Sep 17 00:00:00 2001 From: Bertrand Songis Date: Fri, 6 Dec 2019 16:27:07 +0100 Subject: [PATCH] Bsongis/issue 7156 (#7160) Fixes #7156 --- radio/src/logs.cpp | 4 ++ radio/src/main.cpp | 62 +++++++++++++++------------- radio/src/opentx.cpp | 14 +++---- radio/src/opentx.h | 1 - radio/src/switches.cpp | 2 +- radio/src/targets/taranis/diskio.cpp | 2 +- 6 files changed, 45 insertions(+), 40 deletions(-) diff --git a/radio/src/logs.cpp b/radio/src/logs.cpp index 2ada6d7fd..6ae447ff8 100644 --- a/radio/src/logs.cpp +++ b/radio/src/logs.cpp @@ -197,6 +197,10 @@ void logsWrite() { static const char * error_displayed = nullptr; + if (!sdMounted()) { + return; + } + if (isFunctionActive(FUNCTION_LOGS) && logDelay > 0) { tmr10ms_t tmr10ms = get_tmr10ms(); if (lastLogTime == 0 || (tmr10ms_t)(tmr10ms - lastLogTime) >= (tmr10ms_t)logDelay*10) { diff --git a/radio/src/main.cpp b/radio/src/main.cpp index 5f1582b49..0725dfb1a 100644 --- a/radio/src/main.cpp +++ b/radio/src/main.cpp @@ -42,34 +42,35 @@ void onUSBConnectMenu(const char *result) void handleUsbConnection() { #if defined(STM32) && !defined(SIMU) - if (!usbStarted() && usbPlugged() && !(getSelectedUsbMode() == USB_UNSELECTED_MODE)) { - usbStart(); - if (getSelectedUsbMode() == USB_MASS_STORAGE_MODE) { - opentxClose(false); - usbPluggedIn(); - } - } - if (!usbStarted() && usbPlugged() && getSelectedUsbMode() == USB_UNSELECTED_MODE) { - if (g_eeGeneral.USBMode == USB_UNSELECTED_MODE && popupMenuItemsCount == 0) { - POPUP_MENU_ADD_ITEM(STR_USB_JOYSTICK); - POPUP_MENU_ADD_ITEM(STR_USB_MASS_STORAGE); + if (!usbStarted() && usbPlugged()) { + if (getSelectedUsbMode() == USB_UNSELECTED_MODE) { + if (g_eeGeneral.USBMode == USB_UNSELECTED_MODE && popupMenuItemsCount == 0) { + POPUP_MENU_ADD_ITEM(STR_USB_JOYSTICK); + POPUP_MENU_ADD_ITEM(STR_USB_MASS_STORAGE); #if defined(DEBUG) - POPUP_MENU_ADD_ITEM(STR_USB_SERIAL); + POPUP_MENU_ADD_ITEM(STR_USB_SERIAL); #endif - POPUP_MENU_START(onUSBConnectMenu); + POPUP_MENU_START(onUSBConnectMenu); + } + else { + setSelectedUsbMode(g_eeGeneral.USBMode); + } } - if (g_eeGeneral.USBMode != USB_UNSELECTED_MODE) { - setSelectedUsbMode(g_eeGeneral.USBMode); + else { + if (getSelectedUsbMode() == USB_MASS_STORAGE_MODE) { + opentxClose(false); + usbPluggedIn(); + } + usbStart(); } } + if (usbStarted() && !usbPlugged()) { usbStop(); if (getSelectedUsbMode() == USB_MASS_STORAGE_MODE) { opentxResume(); } -#if !defined(BOOT) setSelectedUsbMode(USB_UNSELECTED_MODE); -#endif } #endif // defined(STM32) && !defined(SIMU) } @@ -157,12 +158,10 @@ void checkSpeakerVolume() #if defined(EEPROM) void checkEeprom() { - if (!usbPlugged()) { - if (eepromIsWriting()) - eepromWriteProcess(); - else if (TIME_TO_WRITE()) - storageCheck(false); - } + if (eepromIsWriting()) + eepromWriteProcess(); + else if (TIME_TO_WRITE()) + storageCheck(false); } #else void checkEeprom() @@ -483,13 +482,20 @@ void perMain() #if defined(PCBSKY9X) calcConsumption(); #endif + checkSpeakerVolume(); - checkEeprom(); - logsWrite(); + + if (!usbPlugged()) { + checkEeprom(); + logsWrite(); + } + handleUsbConnection(); + #if defined(PCBXLITES) handleJackConnection(); #endif + checkTrainerSettings(); periodicTick(); DEBUG_TIMER_STOP(debugTimerPerMain1); @@ -500,7 +506,7 @@ void perMain() mainRequestFlags &= ~(1 << REQUEST_FLIGHT_RESET); } - doLoopCommonActions(); + checkBacklight(); event_t evt = getEvent(false); @@ -512,14 +518,14 @@ void perMain() #endif #if defined(STM32) - if (SD_CARD_PRESENT() && !sdMounted()) { + if (!usbPlugged() && SD_CARD_PRESENT() && !sdMounted()) { sdMount(); } #endif #if !defined(EEPROM) // In case the SD card is removed during the session - if (!SD_CARD_PRESENT() && !globalData.unexpectedShutdown) { + if (!usbPlugged() && !SD_CARD_PRESENT() && !globalData.unexpectedShutdown) { drawFatalErrorScreen(STR_NO_SDCARD); return; } diff --git a/radio/src/opentx.cpp b/radio/src/opentx.cpp index 3425802d6..6d850467e 100644 --- a/radio/src/opentx.cpp +++ b/radio/src/opentx.cpp @@ -712,11 +712,6 @@ void checkBacklight() } } -void doLoopCommonActions() -{ - checkBacklight(); -} - void backlightOn() { lightOffCounter = ((uint16_t)g_eeGeneral.lightAutoOff*250) << 1; @@ -802,7 +797,7 @@ void doSplash() } #endif - doLoopCommonActions(); + checkBacklight(); } } } @@ -1021,7 +1016,7 @@ void checkThrottleStick() } #endif - doLoopCommonActions(); + checkBacklight(); WDG_RESET(); @@ -1060,7 +1055,7 @@ void alert(const char * title, const char * msg , uint8_t sound) if (keyDown()) // wait for key release break; - doLoopCommonActions(); + checkBacklight(); WDG_RESET(); @@ -1591,8 +1586,9 @@ void opentxClose(uint8_t shutdown) { TRACE("opentxClose"); + watchdogSuspend(2000/*20s*/); + if (shutdown) { - watchdogSuspend(2000/*20s*/); pausePulses(); // stop mixer task to disable trims processing while in shutdown AUDIO_BYE(); // TODO needed? telemetryEnd(); diff --git a/radio/src/opentx.h b/radio/src/opentx.h index f13914e86..cda5378d8 100644 --- a/radio/src/opentx.h +++ b/radio/src/opentx.h @@ -642,7 +642,6 @@ static inline void GET_ADC_IF_MIXER_NOT_RUNNING() void backlightOn(); void checkBacklight(); -void doLoopCommonActions(); #define BITMASK(bit) (1<<(bit)) diff --git a/radio/src/switches.cpp b/radio/src/switches.cpp index fc6a0b5e2..6067f4d8c 100644 --- a/radio/src/switches.cpp +++ b/radio/src/switches.cpp @@ -766,7 +766,7 @@ void checkSwitches() } #endif - doLoopCommonActions(); + checkBacklight(); WDG_RESET(); diff --git a/radio/src/targets/taranis/diskio.cpp b/radio/src/targets/taranis/diskio.cpp index 482e62367..94f190aa0 100644 --- a/radio/src/targets/taranis/diskio.cpp +++ b/radio/src/targets/taranis/diskio.cpp @@ -1026,7 +1026,7 @@ void sdDone() #if defined(LOG_TELEMETRY) f_close(&g_telemetryFile); #endif - f_mount(NULL, "", 0); // unmount SD + f_mount(nullptr, "", 0); // unmount SD } } #endif