Allow disabling USB connection by discarding the pop-up menu
This commit is contained in:
committed by
Raphael Coeffic
parent
4fe4c1a385
commit
0bb9994ac5
@@ -90,11 +90,16 @@ void TopbarImpl::paint(BitmapBuffer * dc)
|
||||
|
||||
// USB icon
|
||||
if (usbPlugged()) {
|
||||
dc->drawBitmapPattern(LCD_W - 98, 8, LBM_TOPMENU_USB, MENU_COLOR);
|
||||
}
|
||||
|
||||
LcdFlags flags = MENU_COLOR;
|
||||
if (getSelectedUsbMode() == USB_UNSELECTED_MODE) {
|
||||
flags = MENU_TITLE_DISABLE_COLOR;
|
||||
}
|
||||
|
||||
dc->drawBitmapPattern(LCD_W - 98, 8, LBM_TOPMENU_USB, flags);
|
||||
}
|
||||
// Logs
|
||||
if (isFunctionActive(FUNCTION_LOGS) && !usbPlugged() && BLINK_ON_PHASE) {
|
||||
else if (isFunctionActive(FUNCTION_LOGS) && BLINK_ON_PHASE) {
|
||||
dc->drawBitmapPattern(LCD_W - 98, 6, LBM_DOT, MENU_COLOR);
|
||||
}
|
||||
|
||||
|
||||
+59
-14
@@ -30,30 +30,49 @@ uint8_t currentBacklightBright = 0;
|
||||
uint8_t requiredBacklightBright = 0;
|
||||
uint8_t mainRequestFlags = 0;
|
||||
|
||||
static bool _usbDisabled = false;
|
||||
|
||||
#if defined(LIBOPENUI)
|
||||
static Menu* _usbMenu = nullptr;
|
||||
|
||||
void closeUsbMenu()
|
||||
{
|
||||
if (_usbMenu && !usbPlugged()) {
|
||||
|
||||
// USB has been unplugged meanwhile
|
||||
_usbMenu->deleteLater();
|
||||
}
|
||||
}
|
||||
|
||||
void openUsbMenu()
|
||||
{
|
||||
static Menu * menu = nullptr;
|
||||
if (menu)
|
||||
return;
|
||||
menu = new Menu(MainWindow::instance());
|
||||
menu->setCloseHandler([]() {
|
||||
menu = nullptr;
|
||||
if (_usbMenu || _usbDisabled) return;
|
||||
|
||||
_usbMenu = new Menu(MainWindow::instance());
|
||||
|
||||
_usbMenu->setCloseHandler([]() {
|
||||
_usbMenu = nullptr;
|
||||
if (usbPlugged() && (getSelectedUsbMode() == USB_UNSELECTED_MODE)) {
|
||||
_usbDisabled = true;
|
||||
}
|
||||
});
|
||||
menu->setTitle("USB");
|
||||
menu->addLine(STR_USB_JOYSTICK, [] {
|
||||
|
||||
_usbMenu->setTitle("USB");
|
||||
_usbMenu->addLine(STR_USB_JOYSTICK, [] {
|
||||
setSelectedUsbMode(USB_JOYSTICK_MODE);
|
||||
});
|
||||
menu->addLine(STR_USB_MASS_STORAGE, [] {
|
||||
_usbMenu->addLine(STR_USB_MASS_STORAGE, [] {
|
||||
setSelectedUsbMode(USB_MASS_STORAGE_MODE);
|
||||
});
|
||||
#if defined(DEBUG)
|
||||
menu->addLine(STR_USB_SERIAL, [] {
|
||||
_usbMenu->addLine(STR_USB_SERIAL, [] {
|
||||
setSelectedUsbMode(USB_SERIAL_MODE);
|
||||
});
|
||||
#endif
|
||||
}
|
||||
|
||||
#elif defined(STM32)
|
||||
|
||||
void onUSBConnectMenu(const char *result)
|
||||
{
|
||||
if (result == STR_USB_MASS_STORAGE) {
|
||||
@@ -65,6 +84,9 @@ void onUSBConnectMenu(const char *result)
|
||||
else if (result == STR_USB_SERIAL) {
|
||||
setSelectedUsbMode(USB_SERIAL_MODE);
|
||||
}
|
||||
else if (result == STR_EXIT) {
|
||||
_disableUsb = true;
|
||||
}
|
||||
}
|
||||
|
||||
void openUsbMenu()
|
||||
@@ -77,12 +99,32 @@ void openUsbMenu()
|
||||
POPUP_MENU_TITLE(STR_SELECT_MODE);
|
||||
POPUP_MENU_START(onUSBConnectMenu);
|
||||
}
|
||||
|
||||
void closeUsbMenu()
|
||||
{
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
void handleUsbConnection()
|
||||
{
|
||||
#if defined(STM32) && !defined(SIMU)
|
||||
if (!usbStarted() && usbPlugged()) {
|
||||
|
||||
static bool _pluggedUsb = false;
|
||||
|
||||
if (_pluggedUsb && !usbPlugged()) {
|
||||
TRACE("USB unplugged");
|
||||
closeUsbMenu();
|
||||
_pluggedUsb = false;
|
||||
}
|
||||
else if (!_pluggedUsb && usbPlugged()) {
|
||||
TRACE("USB plugged");
|
||||
_pluggedUsb = true;
|
||||
_usbDisabled = false;
|
||||
}
|
||||
|
||||
if (!_usbDisabled && !usbStarted() && usbPlugged()) {
|
||||
|
||||
if (getSelectedUsbMode() == USB_UNSELECTED_MODE) {
|
||||
if (g_eeGeneral.USBMode == USB_UNSELECTED_MODE) {
|
||||
openUsbMenu();
|
||||
@@ -423,7 +465,7 @@ void perMain()
|
||||
|
||||
checkSpeakerVolume();
|
||||
|
||||
if (!usbPlugged()) {
|
||||
if (!usbPlugged() || (getSelectedUsbMode() == USB_UNSELECTED_MODE)) {
|
||||
checkEeprom();
|
||||
logsWrite();
|
||||
}
|
||||
@@ -458,14 +500,17 @@ void perMain()
|
||||
#endif
|
||||
|
||||
#if defined(STM32)
|
||||
if (!usbPlugged() && SD_CARD_PRESENT() && !sdMounted()) {
|
||||
if ((!usbPlugged() || (getSelectedUsbMode() == USB_UNSELECTED_MODE))
|
||||
&& SD_CARD_PRESENT() && !sdMounted()) {
|
||||
sdMount();
|
||||
}
|
||||
#endif
|
||||
|
||||
#if !defined(EEPROM)
|
||||
// In case the SD card is removed during the session
|
||||
if (!usbPlugged() && !SD_CARD_PRESENT() && !globalData.unexpectedShutdown) {
|
||||
if ((!usbPlugged() || (getSelectedUsbMode() == USB_UNSELECTED_MODE))
|
||||
&& !SD_CARD_PRESENT() && !globalData.unexpectedShutdown) {
|
||||
|
||||
drawFatalErrorScreen(STR_NO_SDCARD);
|
||||
return;
|
||||
}
|
||||
|
||||
@@ -2053,7 +2053,7 @@ uint32_t pwrCheck()
|
||||
#if defined(SHUTDOWN_CONFIRMATION)
|
||||
while (1)
|
||||
#else
|
||||
while (usbPlugged() ||
|
||||
while ((usbPlugged() && getSelectedUsbMode() != USB_UNSELECTED_MODE) ||
|
||||
(TELEMETRY_STREAMING() && !g_eeGeneral.disableRssiPoweroffAlarm))
|
||||
#endif
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user