Added support for internal module config in stdlcd UI in radio hardware

This commit is contained in:
Raphael Coeffic
2021-11-25 12:10:16 +01:00
committed by Raphael Coeffic
parent 0c305f4237
commit daf8bae8e4
4 changed files with 47 additions and 93 deletions
+1 -22
View File
@@ -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
+14 -71
View File
@@ -22,77 +22,6 @@
#include <opentx.h>
#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; i<LCD_LINES-1; i++) {
coord_t y = MENU_HEADER_HEIGHT + 1 + i*FH;
uint8_t k = i+menuVerticalOffset;
uint8_t blink = ((s_editMode>0) ? 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);
+31
View File
@@ -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;
+1
View File
@@ -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);