diff --git a/radio/src/gui/colorlcd/radio_hardware.cpp b/radio/src/gui/colorlcd/radio_hardware.cpp index 219a449f0..6c88314a4 100644 --- a/radio/src/gui/colorlcd/radio_hardware.cpp +++ b/radio/src/gui/colorlcd/radio_hardware.cpp @@ -330,28 +330,7 @@ void RadioHardwarePage::build(FormWindow * window) GET_SET_DEFAULT(g_eeGeneral.internalModule)); internalModule->setAvailableHandler([](int module){ - switch(module) { - case MODULE_TYPE_NONE: return true; -#if defined(INTERNAL_MODULE_MULTI) - case MODULE_TYPE_MULTIMODULE: return true; -#endif -#if defined(INTERNAL_MODULE_CRSF) - case MODULE_TYPE_CROSSFIRE: return true; -#endif -#if defined(INTERNAL_MODULE_PXX1) - case MODULE_TYPE_XJT_PXX1: return true; -#endif -#if defined(INTERNAL_MODULE_PXX2) - case MODULE_TYPE_ISRM_PXX2: return true; -#endif -#if defined(INTERNAL_MODULE_PPM) - case MODULE_TYPE_PPM: return true; -#endif -#if defined(INTERNAL_MODULE_AFHDS2A) || defined(INTERNAL_MODULE_AFHDS3) - case MODULE_TYPE_FLYSKY: return true; -#endif - } - return false; + return isInternalModuleSupported(module); }); grid.nextLine(); #endif diff --git a/radio/src/gui/common/stdlcd/radio_hardware.cpp b/radio/src/gui/common/stdlcd/radio_hardware.cpp index 23a8b86bb..ad769f60d 100644 --- a/radio/src/gui/common/stdlcd/radio_hardware.cpp +++ b/radio/src/gui/common/stdlcd/radio_hardware.cpp @@ -22,77 +22,6 @@ #include #include "hal/adc_driver.h" -#if defined(PCBSKY9X) -#define HW_SETTINGS_COLUMN (2+(15*FW)) -enum { - ITEM_RADIO_HARDWARE_OPTREX_DISPLAY, - ITEM_RADIO_HARDWARE_STICKS_GAINS_LABELS, - ITEM_RADIO_HARDWARE_STICK_LV_GAIN, - ITEM_RADIO_HARDWARE_STICK_LH_GAIN, - ITEM_RADIO_HARDWARE_STICK_RV_GAIN, - ITEM_RADIO_HARDWARE_STICK_RH_GAIN, - CASE_BLUETOOTH(ITEM_RADIO_HARDWARE_BT_BAUDRATE) - ITEM_RADIO_HARDWARE_MAX -}; - -void menuRadioHardware(event_t event) -{ - MENU(STR_HARDWARE, menuTabGeneral, MENU_RADIO_HARDWARE, ITEM_RADIO_HARDWARE_MAX+1, {0, 0, 0, 0, 0, 0, CASE_BLUETOOTH(0)}); - - uint8_t sub = menuVerticalPosition - 1; - - for (uint8_t i=0; i0) ? BLINK|INVERS : INVERS); - uint8_t attr = (sub == k ? blink : 0); - - switch(k) { - case ITEM_RADIO_HARDWARE_OPTREX_DISPLAY: - g_eeGeneral.optrexDisplay = editChoice(HW_SETTINGS_COLUMN, y, STR_LCD, STR_VLCD, g_eeGeneral.optrexDisplay, 0, 1, attr, event); - break; - - case ITEM_RADIO_HARDWARE_STICKS_GAINS_LABELS: - lcdDrawTextAlignedLeft(y, "Sticks"); - lcdDrawText(LCD_W, y, BUTTON(TR_CALIBRATION), attr| RIGHT); - if (attr && event == EVT_KEY_FIRST(KEY_ENTER)) { - pushMenu(menuRadioCalibration); - } - break; - - case ITEM_RADIO_HARDWARE_STICK_LV_GAIN: - case ITEM_RADIO_HARDWARE_STICK_LH_GAIN: - case ITEM_RADIO_HARDWARE_STICK_RV_GAIN: - case ITEM_RADIO_HARDWARE_STICK_RH_GAIN: - { - lcdDrawTextAtIndex(INDENT_WIDTH, y, "\002LVLHRVRH", k-ITEM_RADIO_HARDWARE_STICK_LV_GAIN, 0); - lcdDrawText(INDENT_WIDTH+3*FW, y, "Gain"); - uint8_t mask = (1<<(k-ITEM_RADIO_HARDWARE_STICK_LV_GAIN)); - uint8_t val = (g_eeGeneral.sticksGain & mask ? 1 : 0); - lcdDrawChar(HW_SETTINGS_COLUMN, y, val ? '2' : '1', attr); - if (attr) { - CHECK_INCDEC_GENVAR(event, val, 0, 1); - if (checkIncDec_Ret) { - g_eeGeneral.sticksGain ^= mask; - setSticksGain(g_eeGeneral.sticksGain); - } - } - break; - } - -#if defined(BLUETOOTH) - case ITEM_RADIO_HARDWARE_BT_BAUDRATE: - g_eeGeneral.bluetoothBaudrate = editChoice(HW_SETTINGS_COLUMN, y, STR_BAUDRATE, "\005115k 9600 19200", g_eeGeneral.bluetoothBaudrate, 0, 2, attr, event); - if (attr && checkIncDec_Ret) { - btInit(); - } - break; -#endif - } - } -} -#endif // PCBSKY9X - #if defined(PCBTARANIS) enum { ITEM_RADIO_HARDWARE_LABEL_STICKS, @@ -166,6 +95,10 @@ enum { ITEM_RADIO_HARDWARE_CAPACITY_CALIB, #endif +#if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) + ITEM_RADIO_HARDWARE_INTERNAL_MODULE, +#endif + #if (defined(CROSSFIRE) || defined(GHOST)) ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE, #endif @@ -576,6 +509,16 @@ void menuRadioHardware(event_t event) break; #endif +#if !defined(PCBX9D) && !defined(PCBX9DP) && !defined(PCBX9E) + case ITEM_RADIO_HARDWARE_INTERNAL_MODULE: + g_eeGeneral.internalModule = + editChoice(HW_SETTINGS_COLUMN2, y, STR_INTERNAL_MODULE, + STR_INTERNAL_MODULE_PROTOCOLS, + g_eeGeneral.internalModule, MODULE_TYPE_NONE, + MODULE_TYPE_MAX, attr, event, isInternalModuleSupported); + break; +#endif + #if (defined(CROSSFIRE) || defined(GHOST)) case ITEM_RADIO_HARDWARE_SERIAL_BAUDRATE: lcdDrawTextAlignedLeft(y, STR_MAXBAUDRATE); diff --git a/radio/src/gui/gui_common.cpp b/radio/src/gui/gui_common.cpp index 60762927e..748b3a397 100644 --- a/radio/src/gui/gui_common.cpp +++ b/radio/src/gui/gui_common.cpp @@ -602,6 +602,32 @@ bool areModulesConflicting(int intModuleType, int extModuleType) } #if defined(HARDWARE_INTERNAL_MODULE) +bool isInternalModuleSupported(int moduleType) +{ + switch(moduleType) { + case MODULE_TYPE_NONE: return true; +#if defined(INTERNAL_MODULE_MULTI) + case MODULE_TYPE_MULTIMODULE: return true; +#endif +#if defined(INTERNAL_MODULE_CRSF) + case MODULE_TYPE_CROSSFIRE: return true; +#endif +#if defined(INTERNAL_MODULE_PXX1) + case MODULE_TYPE_XJT_PXX1: return true; +#endif +#if defined(INTERNAL_MODULE_PXX2) + case MODULE_TYPE_ISRM_PXX2: return true; +#endif +#if defined(INTERNAL_MODULE_PPM) + case MODULE_TYPE_PPM: return true; +#endif +#if defined(INTERNAL_MODULE_AFHDS2A) || defined(INTERNAL_MODULE_AFHDS3) + case MODULE_TYPE_FLYSKY: return true; +#endif + } + return false; +} + bool isInternalModuleAvailable(int moduleType) { if (moduleType == MODULE_TYPE_NONE) @@ -629,6 +655,11 @@ bool isInternalModuleAvailable(int moduleType) return true; } #else +bool isInternalModuleSupported(int moduleType) +{ + return false; +} + bool isInternalModuleAvailable(int moduleType) { return false; diff --git a/radio/src/gui/gui_common.h b/radio/src/gui/gui_common.h index 9231d9131..b3158de2d 100644 --- a/radio/src/gui/gui_common.h +++ b/radio/src/gui/gui_common.h @@ -98,6 +98,7 @@ bool isModuleUsingSport(uint8_t moduleBay, uint8_t moduleType); bool isTrainerUsingModuleBay(); bool isExternalModuleAvailable(int moduleType); bool isInternalModuleAvailable(int moduleType); +bool isInternalModuleSupported(int moduleType); bool isRfProtocolAvailable(int protocol); bool isTelemetryProtocolAvailable(int protocol); bool isTrainerModeAvailable(int mode);