diff --git a/src/main/fc/fc_msp.c b/src/main/fc/fc_msp.c index 51872632b8..3e47b41450 100644 --- a/src/main/fc/fc_msp.c +++ b/src/main/fc/fc_msp.c @@ -1705,6 +1705,17 @@ static mspResult_e mspProcessInCommand(uint8_t cmdMSP, sbuf_t *src) break; #endif + case MSP_ARMING_DISABLE: + { + const uint8_t command = sbufReadU8(src); + if (command) { + setArmingDisabled(ARMING_DISABLED_MSP); + } else { + unsetArmingDisabled(ARMING_DISABLED_MSP); + } + } + break; + #ifdef USE_FLASHFS case MSP_DATAFLASH_ERASE: flashfsEraseCompletely(); diff --git a/src/main/fc/runtime_config.c b/src/main/fc/runtime_config.c index 0094679329..a49236077e 100644 --- a/src/main/fc/runtime_config.c +++ b/src/main/fc/runtime_config.c @@ -33,7 +33,7 @@ static uint32_t enabledSensors = 0; const char *armingDisableFlagNames[]= { "NOGYRO", "FAILSAFE", "RXLOSS", "BADRX", "BOXFAILSAFE", "THROTTLE", "ANGLE", "BOOTGRACE", "NOPREARM", "ARMSWITCH", - "LOAD", "CALIB", "CLI", "CMS", "OSD", "BST" + "LOAD", "CALIB", "CLI", "CMS", "OSD", "BST", "MSP" }; #endif diff --git a/src/main/fc/runtime_config.h b/src/main/fc/runtime_config.h index d6a123965d..15181c0d53 100644 --- a/src/main/fc/runtime_config.h +++ b/src/main/fc/runtime_config.h @@ -50,10 +50,11 @@ typedef enum { ARMING_DISABLED_CLI = (1 << 12), ARMING_DISABLED_CMS_MENU = (1 << 13), ARMING_DISABLED_OSD_MENU = (1 << 14), - ARMING_DISABLED_BST = (1 << 15) + ARMING_DISABLED_BST = (1 << 15), + ARMING_DISABLED_MSP = (1 << 16) } armingDisableFlags_e; -#define NUM_ARMING_DISABLE_FLAGS 16 +#define NUM_ARMING_DISABLE_FLAGS 17 #if defined(OSD) || !defined(MINIMAL_CLI) extern const char *armingDisableFlagNames[NUM_ARMING_DISABLE_FLAGS]; diff --git a/src/main/msp/msp_protocol.h b/src/main/msp/msp_protocol.h index e74709330d..2cb40b7608 100644 --- a/src/main/msp/msp_protocol.h +++ b/src/main/msp/msp_protocol.h @@ -214,6 +214,8 @@ #define MSP_CAMERA_CONTROL 98 +#define MSP_ARMING_DISABLE 99 + // // OSD specific //