feat: add support for ExpressLRS optional arming method (#5641)
Co-authored-by: elecpower <elecpower@users.noreply.github.com>
This commit is contained in:
@@ -119,6 +119,10 @@ enum MenuModelSetupItems {
|
||||
#if defined(CROSSFIRE) || defined(GHOST)
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE,
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_SERIALSTATUS,
|
||||
#if defined(CROSSFIRE)
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_ARMING_MODE,
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_ARMING_TRIGGER,
|
||||
#endif
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL,
|
||||
@@ -155,6 +159,10 @@ enum MenuModelSetupItems {
|
||||
#if defined(CROSSFIRE) || defined(GHOST)
|
||||
ITEM_MODEL_SETUP_EXTERNAL_MODULE_BAUDRATE,
|
||||
ITEM_MODEL_SETUP_EXTERNAL_MODULE_SERIALSTATUS,
|
||||
#if defined(CROSSFIRE)
|
||||
ITEM_MODEL_SETUP_EXTERNAL_MODULE_ARMING_MODE,
|
||||
ITEM_MODEL_SETUP_EXTERNAL_MODULE_ARMING_TRIGGER,
|
||||
#endif
|
||||
#endif
|
||||
#if defined(MULTIMODULE)
|
||||
ITEM_MODEL_SETUP_EXTERNAL_MODULE_PROTOCOL,
|
||||
@@ -268,9 +276,13 @@ static uint8_t VIEWOPT_ROW(uint8_t value) { return expandState.viewOpt ? value :
|
||||
#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
|
||||
|
||||
|
||||
@@ -471,6 +483,8 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event)
|
||||
LABEL(InternalModule), \
|
||||
MODULE_TYPE_ROWS(INTERNAL_MODULE), /* ITEM_MODEL_SETUP_INTERNAL_MODULE_TYPE */ \
|
||||
IF_MODULE_SYNCED(INTERNAL_MODULE, 0), /* Sync rate + errors */ \
|
||||
IF_MODULE_ARMED(INTERNAL_MODULE, 0), /* Arming Mode */ \
|
||||
IF_MODULE_ARMED_TRIGGER(INTERNAL_MODULE, 0),/* Arming Trigger */ \
|
||||
MULTIMODULE_TYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL */ \
|
||||
MULTIMODULE_SUBTYPE_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_SUBTYPE */ \
|
||||
MULTIMODULE_STATUS_ROWS(INTERNAL_MODULE) /* ITEM_MODEL_SETUP_INTERNAL_MODULE_STATUS, ITEM_MODEL_SETUP_INTERNAL_MODULE_SYNCSTATUS */ \
|
||||
@@ -498,6 +512,8 @@ void editTimerCountdown(int timerIdx, coord_t y, LcdFlags attr, event_t event)
|
||||
MODULE_TYPE_ROWS(EXTERNAL_MODULE), \
|
||||
IF_MODULE_BAUDRATE_ADJUST(EXTERNAL_MODULE, 0), /* Baudrate */ \
|
||||
IF_MODULE_SYNCED(EXTERNAL_MODULE, 0), /* Sync rate + errors */ \
|
||||
IF_MODULE_ARMED(EXTERNAL_MODULE, 0), /* Arming Mode */ \
|
||||
IF_MODULE_ARMED_TRIGGER(EXTERNAL_MODULE, 0), /* Arming TRIGGER */ \
|
||||
MULTIMODULE_TYPE_ROWS(EXTERNAL_MODULE) /* PROTOCOL */ \
|
||||
MULTIMODULE_SUBTYPE_ROWS(EXTERNAL_MODULE) /* SUBTYPE */ \
|
||||
MULTIMODULE_STATUS_ROWS(EXTERNAL_MODULE) \
|
||||
@@ -1410,6 +1426,31 @@ void menuModelSetup(event_t event)
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(CROSSFIRE)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_ARMING_MODE:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_ARMING_MODE:
|
||||
#endif
|
||||
g_model.moduleData[moduleIdx].crsf.crsfArmingMode =
|
||||
editChoice(MODEL_SETUP_2ND_COLUMN, y, STR_CRSF_ARMING_MODE, STR_CRSF_ARMING_MODES,
|
||||
g_model.moduleData[moduleIdx].crsf.crsfArmingMode, ARMING_MODE_FIRST, ARMING_MODE_LAST, attr, event, INDENT_WIDTH);
|
||||
break;
|
||||
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_ARMING_TRIGGER:
|
||||
#endif
|
||||
#if defined(HARDWARE_EXTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_EXTERNAL_MODULE_ARMING_TRIGGER:
|
||||
#endif
|
||||
lcdDrawTextIndented(y, STR_SWITCH);
|
||||
drawSwitch(MODEL_SETUP_2ND_COLUMN, y, g_model.moduleData[moduleIdx].crsf.crsfArmingTrigger, attr);
|
||||
if(attr)
|
||||
CHECK_INCDEC_SWITCH(event, g_model.moduleData[moduleIdx].crsf.crsfArmingTrigger, SWSRC_FIRST, SWSRC_LAST, EE_MODEL, isSwitchAvailableForArming);
|
||||
break;
|
||||
#endif
|
||||
|
||||
#if defined(MULTIMODULE)
|
||||
#if defined(HARDWARE_INTERNAL_MODULE)
|
||||
case ITEM_MODEL_SETUP_INTERNAL_MODULE_PROTOCOL:
|
||||
|
||||
Reference in New Issue
Block a user