Merge with latest 2.4
This commit is contained in:
@@ -25,6 +25,8 @@ void menuGhostModuleConfig(event_t event)
|
||||
switch (event) {
|
||||
case EVT_ENTRY:
|
||||
memclear(&reusableBuffer.ghostMenu, sizeof(reusableBuffer.ghostMenu));
|
||||
strAppend((char *) &reusableBuffer.ghostMenu.line[1].menuText, STR_WAITING_FOR_MODULE, 0);
|
||||
reusableBuffer.ghostMenu.line[1].lineFlags = GHST_LINE_FLAGS_VALUE_EDIT;
|
||||
reusableBuffer.ghostMenu.buttonAction = GHST_BTN_NONE;
|
||||
reusableBuffer.ghostMenu.menuAction = GHST_MENU_CTRL_OPEN;
|
||||
moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL;
|
||||
@@ -40,6 +42,7 @@ void menuGhostModuleConfig(event_t event)
|
||||
reusableBuffer.ghostMenu.buttonAction = GHST_BTN_JOYUP;
|
||||
reusableBuffer.ghostMenu.menuAction = GHST_MENU_CTRL_NONE;
|
||||
moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL;
|
||||
audioKeyPress();
|
||||
break;
|
||||
|
||||
#if defined(ROTARY_ENCODER_NAVIGATION)
|
||||
@@ -52,6 +55,7 @@ void menuGhostModuleConfig(event_t event)
|
||||
reusableBuffer.ghostMenu.buttonAction = GHST_BTN_JOYDOWN;
|
||||
reusableBuffer.ghostMenu.menuAction = GHST_MENU_CTRL_NONE;
|
||||
moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL;
|
||||
audioKeyPress();
|
||||
break;
|
||||
|
||||
|
||||
@@ -59,12 +63,14 @@ void menuGhostModuleConfig(event_t event)
|
||||
reusableBuffer.ghostMenu.buttonAction = GHST_BTN_JOYPRESS;
|
||||
reusableBuffer.ghostMenu.menuAction = GHST_MENU_CTRL_NONE;
|
||||
moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL;
|
||||
audioKeyPress();
|
||||
break;
|
||||
|
||||
case EVT_KEY_BREAK(KEY_EXIT):
|
||||
reusableBuffer.ghostMenu.buttonAction = GHST_BTN_JOYLEFT;
|
||||
reusableBuffer.ghostMenu.menuAction = GHST_MENU_CTRL_NONE;
|
||||
moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL;
|
||||
audioKeyPress();
|
||||
break;
|
||||
|
||||
case EVT_KEY_LONG(KEY_EXIT):
|
||||
@@ -78,7 +84,12 @@ void menuGhostModuleConfig(event_t event)
|
||||
break;
|
||||
}
|
||||
|
||||
if (reusableBuffer.ghostMenu.menuAction == GHST_MENU_CTRL_CLOSE) {
|
||||
if (reusableBuffer.ghostMenu.menuStatus == GHST_MENU_STATUS_UNOPENED) { // Handles situation where module is plugged after tools start
|
||||
reusableBuffer.ghostMenu.buttonAction = GHST_BTN_NONE;
|
||||
reusableBuffer.ghostMenu.menuAction = GHST_MENU_CTRL_OPEN;
|
||||
moduleState[EXTERNAL_MODULE].counter = GHST_MENU_CONTROL;
|
||||
}
|
||||
else if (reusableBuffer.ghostMenu.menuStatus == GHST_MENU_STATUS_CLOSING) {
|
||||
popMenu();
|
||||
}
|
||||
|
||||
@@ -104,6 +115,8 @@ void menuGhostModuleConfig(event_t event)
|
||||
else {
|
||||
if (reusableBuffer.ghostMenu.line[line].lineFlags & GHST_LINE_FLAGS_LABEL_SELECT)
|
||||
flags = INVERS;
|
||||
if (reusableBuffer.ghostMenu.line[line].lineFlags & GHST_LINE_FLAGS_VALUE_EDIT)
|
||||
flags |= BLINK;
|
||||
lcdDrawText(xOffset, yOffset + line * FH, reusableBuffer.ghostMenu.line[line].menuText, flags);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -227,14 +227,19 @@ void onSdManagerMenu(const char * result)
|
||||
#if defined(INTERNAL_MODULE_MULTI)
|
||||
else if (result == STR_FLASH_INTERNAL_MULTI) {
|
||||
getSelectionFullPath(lfn);
|
||||
MultiDeviceFirmwareUpdate device(INTERNAL_MODULE);
|
||||
MultiDeviceFirmwareUpdate device(INTERNAL_MODULE, MULTI_TYPE_MULTIMODULE);
|
||||
device.flashFirmware(lfn, drawProgressScreen);
|
||||
}
|
||||
#endif
|
||||
else if (result == STR_FLASH_EXTERNAL_MULTI) {
|
||||
getSelectionFullPath(lfn);
|
||||
MultiDeviceFirmwareUpdate device(EXTERNAL_MODULE);
|
||||
device.flashFirmware(lfn, drawProgressScreen);
|
||||
device.flashFirmware(lfn, MULTI_TYPE_MULTIMODULE, drawProgressScreen);
|
||||
}
|
||||
else if (result == STR_FLASH_EXTERNAL_ELRS) {
|
||||
getSelectionFullPath(lfn);
|
||||
MultiDeviceFirmwareUpdate device(EXTERNAL_MODULE);
|
||||
device.flashFirmware(lfn, MULTI_TYPE_ELRS, drawProgressScreen);
|
||||
}
|
||||
#endif
|
||||
#if defined(BLUETOOTH)
|
||||
@@ -404,6 +409,12 @@ void menuRadioSdManager(event_t _event)
|
||||
POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_MULTI);
|
||||
}
|
||||
}
|
||||
|
||||
if (!READ_ONLY() && !strcasecmp(ext, ELRS_FIRMWARE_EXT)) {
|
||||
TCHAR lfn[FF_MAX_LFN + 1];
|
||||
getSelectionFullPath(lfn);
|
||||
POPUP_MENU_ADD_ITEM(STR_FLASH_EXTERNAL_ELRS);
|
||||
}
|
||||
#endif
|
||||
#if defined(PCBTARANIS)
|
||||
if (!READ_ONLY() && !strcasecmp(ext, FIRMWARE_EXT)) {
|
||||
|
||||
@@ -133,6 +133,7 @@ void menuRadioTools(event_t event)
|
||||
if (isModuleGhost(EXTERNAL_MODULE))
|
||||
addRadioModuleTool(index++, "Ghost Menu", menuGhostModuleConfig, EXTERNAL_MODULE);
|
||||
#endif
|
||||
|
||||
if (index == 0) {
|
||||
lcdDrawCenteredText(LCD_H/2, STR_NO_TOOLS);
|
||||
}
|
||||
|
||||
@@ -237,7 +237,7 @@ void menuRadioVersion(event_t event)
|
||||
|
||||
coord_t y = MENU_HEADER_HEIGHT + 2;
|
||||
lcdDrawText(FW, y, vers_stamp, SMLSIZE);
|
||||
y += 4 * (FH - 1);
|
||||
y += 5 * (FH - 1);
|
||||
|
||||
#if defined(COPROCESSOR)
|
||||
lcdDrawText(FW, y, "COPR\037\033: ", SMLSIZE);
|
||||
|
||||
@@ -35,8 +35,8 @@ enum NavigationDirection {
|
||||
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_LEFT) && IS_SHIFT_PRESSED())
|
||||
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_LONG(KEY_RIGHT) && IS_SHIFT_PRESSED())
|
||||
#elif defined(NAVIGATION_X7_TX12)
|
||||
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_UP))
|
||||
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_DOWN))
|
||||
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEUP))
|
||||
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_FIRST(KEY_PAGEDN))
|
||||
#elif defined(NAVIGATION_X7) || defined(NAVIGATION_X9D)
|
||||
#define EVT_KEY_PREVIOUS_VIEW(evt) (evt == EVT_KEY_LONG(KEY_PAGE))
|
||||
#define EVT_KEY_NEXT_VIEW(evt) (evt == EVT_KEY_BREAK(KEY_PAGE))
|
||||
|
||||
Reference in New Issue
Block a user