Multi : improve options support part 1
This commit is contained in:
@@ -1538,43 +1538,29 @@ void menuModelSetup(event_t event)
|
||||
{
|
||||
#if defined(MULTIMODULE)
|
||||
if (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx)) {
|
||||
const char * title = getMultiOptionTitle(moduleIdx);
|
||||
|
||||
lcdDrawText(INDENT_WIDTH, y, title);
|
||||
if (title == STR_MULTI_RFTUNE) {
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN + 23, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
|
||||
int optionValue = g_model.moduleData[moduleIdx].multi.optionValue;
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
|
||||
if (status.isValid()) {
|
||||
if (status.optionDisp >= getMaxMultiOptions()) {
|
||||
status.optionDisp = 1; // Unknown options are defaulted to type 1 (basic option)
|
||||
}
|
||||
lcdDrawText(INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN + 23, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
|
||||
if (pdef->optionsstr) {
|
||||
lcdDrawText(INDENT_WIDTH, y, pdef->optionsstr);
|
||||
if (attr && pdef->optionsstr == STR_MULTI_RFTUNE) {
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN + 23, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int8_t min, max;
|
||||
getMultiOptionValues(multi_proto, min, max);
|
||||
|
||||
if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) {
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 50 + 5 * optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_FRSKY_R9) {
|
||||
if (title == STR_MULTI_RFPOWER) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_POWER, optionValue, LEFT | attr);
|
||||
}
|
||||
else if (title == STR_MULTI_TELEMETRY) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_TELEMETRY_MODE, optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) {
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 50 + 5 * optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_DSM2) {
|
||||
optionValue = optionValue & 0x01;
|
||||
editCheckBox(optionValue, MODEL_SETUP_2ND_COLUMN, y, "", LEFT | attr, event);
|
||||
|
||||
@@ -1294,41 +1294,29 @@ void menuModelSetup(event_t event)
|
||||
#if defined(MULTIMODULE)
|
||||
|
||||
if (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx)) {
|
||||
const char * title = getMultiOptionTitle(moduleIdx);
|
||||
|
||||
lcdDrawText(INDENT_WIDTH, y, title);
|
||||
if (title == STR_MULTI_RFTUNE) {
|
||||
lcdDrawText(MODEL_SETUP_2ND_COLUMN + 23, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
|
||||
int optionValue = g_model.moduleData[moduleIdx].multi.optionValue;
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
const uint8_t multi_proto = g_model.moduleData[EXTERNAL_MODULE].getMultiProtocol();
|
||||
if (status.isValid()) {
|
||||
if (status.optionDisp >= getMaxMultiOptions()) {
|
||||
status.optionDisp = 1; // Unknown options are defaulted to type 1 (basic option)
|
||||
}
|
||||
lcdDrawText(INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawText(MODEL_SETUP_3RD_COLUMN+22, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
else {
|
||||
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
|
||||
if (pdef->optionsstr)
|
||||
lcdDrawText(INDENT_WIDTH, y, pdef->optionsstr);
|
||||
if (pdef->optionsstr == STR_MULTI_RFTUNE) {
|
||||
lcdDrawText(MODEL_SETUP_3RD_COLUMN+22, y, "RSSI(", LEFT);
|
||||
lcdDrawNumber(lcdLastRightPos, y, TELEMETRY_RSSI(), LEFT);
|
||||
lcdDrawText(lcdLastRightPos, y, ")", LEFT);
|
||||
}
|
||||
}
|
||||
|
||||
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
int8_t min, max;
|
||||
getMultiOptionValues(multi_proto, min, max);
|
||||
|
||||
if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) {
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 50 + 5 * optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_FRSKY_R9) {
|
||||
if (title == STR_MULTI_RFPOWER) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_POWER, optionValue, LEFT | attr);
|
||||
}
|
||||
else if (title == STR_MULTI_TELEMETRY) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_TELEMETRY_MODE, optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) {
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 50 + 5 * optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_DSM2) {
|
||||
optionValue = optionValue & 0x01;
|
||||
editCheckBox(optionValue, MODEL_SETUP_2ND_COLUMN, y, "", LEFT | attr, event);
|
||||
|
||||
@@ -1676,38 +1676,27 @@ bool menuModelSetup(event_t event)
|
||||
{
|
||||
#if defined(MULTIMODULE)
|
||||
if (MULTIMODULE_PROTOCOL_KNOWN(moduleIdx)) {
|
||||
const char * title = getMultiOptionTitle(moduleIdx);
|
||||
|
||||
lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y, title);
|
||||
if (title == STR_MULTI_RFTUNE) {
|
||||
lcdDrawNumber(LCD_W - 10, y, TELEMETRY_RSSI(), RIGHT, 0, "RSSI(", ")");
|
||||
}
|
||||
|
||||
int optionValue = g_model.moduleData[moduleIdx].multi.optionValue;
|
||||
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
if (status.isValid()) {
|
||||
if (status.optionDisp >= getMaxMultiOptions()) {
|
||||
status.optionDisp = 1; // Unknown options are defaulted to type 1 (basic option)
|
||||
}
|
||||
lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y, mm_options_strings::options[status.optionDisp]);
|
||||
if (attr && status.optionDisp == 2) {
|
||||
lcdDrawNumber(LCD_W - 10, y, TELEMETRY_RSSI(), RIGHT, 0, "RSSI(", ")");
|
||||
}
|
||||
}
|
||||
else {
|
||||
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
|
||||
if (pdef->optionsstr) {
|
||||
lcdDrawText(MENUS_MARGIN_LEFT + INDENT_WIDTH, y, pdef->optionsstr);
|
||||
if (attr && pdef->optionsstr == STR_MULTI_RFTUNE) {
|
||||
lcdDrawNumber(LCD_W - 10, y, TELEMETRY_RSSI(), RIGHT, 0, "RSSI(", ")");
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
int8_t min, max;
|
||||
getMultiOptionValues(multi_proto, min, max);
|
||||
|
||||
if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) {
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 50 + 5 * optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_FRSKY_R9) {
|
||||
if (title == STR_MULTI_RFPOWER) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_POWER, optionValue, LEFT | attr);
|
||||
}
|
||||
else if (title == STR_MULTI_TELEMETRY) {
|
||||
lcdDrawTextAtIndex(MODEL_SETUP_2ND_COLUMN, y, STR_MULTI_TELEMETRY_MODE, optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_FS_AFHDS2A) {
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, 50 + 5 * optionValue, LEFT | attr);
|
||||
}
|
||||
else if (multi_proto == MODULE_SUBTYPE_MULTI_DSM2) {
|
||||
optionValue = optionValue & 0x01;
|
||||
editCheckBox(optionValue, MODEL_SETUP_2ND_COLUMN, y, LEFT | attr, event);
|
||||
@@ -1718,6 +1707,7 @@ bool menuModelSetup(event_t event)
|
||||
else
|
||||
lcdDrawNumber(MODEL_SETUP_2ND_COLUMN, y, optionValue, LEFT | attr);
|
||||
}
|
||||
|
||||
if (attr) {
|
||||
CHECK_INCDEC_MODELVAR(event, optionValue, min, max);
|
||||
if (checkIncDec_Ret) {
|
||||
|
||||
@@ -1096,3 +1096,22 @@ void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, Lcd
|
||||
else
|
||||
lcdDrawMMM(x, y, flags);
|
||||
}
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
const char* getMultiOptionTitle(uint8_t moduleIdx)
|
||||
{
|
||||
MultiModuleStatus &status = getMultiModuleStatus(moduleIdx);
|
||||
|
||||
if (status.isValid()) {
|
||||
if (status.optionDisp >= getMaxMultiOptions()) {
|
||||
status.optionDisp = 1; // Unknown options are defaulted to type 1 (basic option)
|
||||
}
|
||||
return mm_options_strings::options[status.optionDisp];
|
||||
}
|
||||
else {
|
||||
const uint8_t multi_proto = g_model.moduleData[moduleIdx].getMultiProtocol();
|
||||
const mm_protocol_definition * pdef = getMultiProtocolDefinition(multi_proto);
|
||||
return pdef->optionsstr;
|
||||
}
|
||||
}
|
||||
#endif
|
||||
|
||||
@@ -318,6 +318,7 @@ inline uint8_t MODULE_OPTION_ROW(uint8_t moduleIdx) {
|
||||
}
|
||||
|
||||
void editStickHardwareSettings(coord_t x, coord_t y, int idx, event_t event, LcdFlags flags);
|
||||
const char* getMultiOptionTitle(uint8_t moduleIdx);
|
||||
|
||||
const char * writeScreenshot();
|
||||
|
||||
|
||||
@@ -98,6 +98,7 @@ ISTR(INPUTNAMES);
|
||||
#if defined(MULTIMODULE)
|
||||
ISTR(MULTI_PROTOCOLS);
|
||||
ISTR(MULTI_POWER);
|
||||
ISTR(MULTI_TELEMETRY_MODE);
|
||||
#endif
|
||||
|
||||
#if defined(BLUETOOTH)
|
||||
|
||||
@@ -161,6 +161,7 @@ extern const char STR_R9M_PXX2_RF_PROTOCOLS[];
|
||||
extern const char STR_DSM_PROTOCOLS[];
|
||||
extern const char STR_MULTI_PROTOCOLS[];
|
||||
extern const char STR_MULTI_POWER[];
|
||||
extern const char STR_MULTI_TELEMETRY_MODE[];
|
||||
extern const char STR_SPORT_MODES[];
|
||||
|
||||
#if defined(AFHDS3)
|
||||
|
||||
@@ -136,6 +136,9 @@
|
||||
#define LEN_MULTI_POWER "\005"
|
||||
#define TR_MULTI_POWER "1.6mW""2.0mW""2.5mW""3.2mW""4.0mW""5.0mW""6.3mW""7.9mW""10mW\0""13mW\0""16mW\0""20mW\0""25mW\0""32mW\0""40mW\0""50mW\0"
|
||||
|
||||
#define LEN_MULTI_TELEMETRY_MODE "\007"
|
||||
#define TR_MULTI_TELEMETRY_MODE "Off\0 ""On\0 ""Off+Aux""On+Aux\0"
|
||||
|
||||
#define LEN_AFHDS3_PROTOCOLS "\x008"
|
||||
#define TR_AFHDS3_PROTOCOLS "PWM/IBUS""PWM/SBUS""PPM/IBUS""PPM/SBUS"
|
||||
|
||||
|
||||
Reference in New Issue
Block a user