feat: add support for ExpressLRS optional arming method (#5641)

Co-authored-by: elecpower <elecpower@users.noreply.github.com>
This commit is contained in:
Michael
2024-11-22 21:32:40 +10:00
committed by GitHub
co-authored by elecpower
parent ebb5d39a14
commit 8fd3d50add
69 changed files with 654 additions and 38 deletions
+25
View File
@@ -125,6 +125,10 @@ enum MenuModelSetupItems {
ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS,
#endif
#if defined(CROSSFIRE)
ITEM_MODEL_SETUP_ARMING_MODE,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_ARMING_TRIGGER,
#endif
#if defined (MULTIMODULE)
ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL,
ITEM_MODEL_SETUP_EXTERNAL_MODULE_DSM_CLONED,
@@ -420,9 +424,13 @@ inline uint8_t EXTERNAL_MODULE_TYPE_ROW()
#else
#define IF_MODULE_BAUDRATE_ADJUST(module, xxx) (isModuleCrossfire(module) ? (uint8_t)(xxx) : HIDDEN_ROW)
#endif
#define IF_MODULE_ARMED(module, xxx) (CRSF_ELRS_MIN_VER(module, 4, 0) ? (uint8_t)(xxx) : HIDDEN_ROW)
#define IF_MODULE_ARMED_TRIGGER(module, xxx) ((CRSF_ELRS_MIN_VER(module, 4, 0) && g_model.moduleData[module].crsf.crsfArmingMode) ? (uint8_t)(xxx) : HIDDEN_ROW)
#else
#define IF_MODULE_SYNCED(module, xxx)
#define IF_MODULE_BAUDRATE_ADJUST(module, xxx)
#define IF_MODULE_ARMED(module, xxx)
#define IF_MODULE_ARMED_TRIGGER(module, xxx)
#endif
#if defined(PXX2)
@@ -546,6 +554,8 @@ void menuModelSetup(event_t event)
EXTERNAL_MODULE_TYPE_ROW(), // ITEM_MODEL_SETUP_EXTERNAL_MODULE_TYPE
IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), // ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE
IF_MODULE_SYNCED(EXTERNAL_MODULE, 0), // ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS
IF_MODULE_ARMED(EXTERNAL_MODULE, 0), // ITEM_MODEL_SETUP_ARMING_MODE
IF_MODULE_ARMED_TRIGGER(EXTERNAL_MODULE, 0), // ITEM_MODEL_SETUP_ARMING_TRIGGER
MULTIMODULE_TYPE_ROW(EXTERNAL_MODULE) // ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL
MULTIMODULE_DSM_CLONED_RAW(EXTERNAL_MODULE), // ITEM_MODEL_SETUP_EXTERNAL_MODULE_DSM_CLONED
MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) // ITEM_MODEL_SETUP_EXTERNAL_MODULE_STATUS + ITEM_MODEL_SETUP_EXTERNAL_MODULE_SYNCSTATUS
@@ -1266,6 +1276,21 @@ void menuModelSetup(event_t event)
break;
#endif
#if defined(CROSSFIRE)
case ITEM_MODEL_SETUP_ARMING_MODE:
g_model.moduleData[EXTERNAL_MODULE].crsf.crsfArmingMode =
editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_ARMING_MODE, STR_CRSF_ARMING_MODES,
g_model.moduleData[EXTERNAL_MODULE].crsf.crsfArmingMode, ARMING_MODE_FIRST, ARMING_MODE_LAST, attr, event, INDENT_WIDTH);
break;
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_ARMING_TRIGGER:
lcdDrawTextIndented(y, STR_SWITCH);
drawSwitch(MODEL_SETUP_2ND_COLUMN, y, g_model.moduleData[EXTERNAL_MODULE].crsf.crsfArmingTrigger, attr);
if(attr)
CHECK_INCDEC_SWITCH(event, g_model.moduleData[EXTERNAL_MODULE].crsf.crsfArmingTrigger, SWSRC_FIRST, SWSRC_LAST, EE_MODEL, isSwitchAvailableForArming);
break;
#endif
#if defined(MULTIMODULE)
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL:
{