From 4270c658a343726e049d3ded3fcf8a2bf133ee89 Mon Sep 17 00:00:00 2001 From: Bruce Luckcuck Date: Mon, 19 Feb 2018 20:40:35 -0500 Subject: [PATCH] Reordered arming disabled flags to give runaway takeoff a higher priority Previously the ARMING_DISABLED_RUNAWAY_TAKEOFF reason would be overridden by ARMING_DISABLED_THROTTLE which prevented the indication that the disarming was casued by a runaway event. Also fixed a problem where the disarm beep pattern would override the arming disabled beep codes when runaway takeoff triggered an auto-disarm. --- src/main/fc/fc_core.c | 5 ++++- src/main/fc/runtime_config.c | 4 ++-- src/main/fc/runtime_config.h | 24 ++++++++++++------------ 3 files changed, 18 insertions(+), 15 deletions(-) diff --git a/src/main/fc/fc_core.c b/src/main/fc/fc_core.c index bdda1d9257..022187e2bf 100644 --- a/src/main/fc/fc_core.c +++ b/src/main/fc/fc_core.c @@ -280,7 +280,10 @@ void disarm(void) } #endif BEEP_OFF; - beeper(BEEPER_DISARMING); // emit disarm tone + // if ARMING_DISABLED_RUNAWAY_TAKEOFF is set then we want to play it's beep pattern instead + if (!(getArmingDisableFlags() & ARMING_DISABLED_RUNAWAY_TAKEOFF)) { + beeper(BEEPER_DISARMING); // emit disarm tone + } } } diff --git a/src/main/fc/runtime_config.c b/src/main/fc/runtime_config.c index 8e3f61bdaa..2c79877120 100644 --- a/src/main/fc/runtime_config.c +++ b/src/main/fc/runtime_config.c @@ -31,8 +31,8 @@ static uint32_t enabledSensors = 0; const char *armingDisableFlagNames[]= { "NOGYRO", "FAILSAFE", "RXLOSS", "BADRX", "BOXFAILSAFE", - "THROTTLE", "ANGLE", "BOOTGRACE", "NOPREARM", "LOAD", - "CALIB", "CLI", "CMS", "OSD", "BST", "MSP", "RUNAWAY", "ARMSWITCH" + "RUNAWAY", "THROTTLE", "ANGLE", "BOOTGRACE", "NOPREARM", "LOAD", + "CALIB", "CLI", "CMS", "OSD", "BST", "MSP", "ARMSWITCH" }; static armingDisableFlags_e armingDisableFlags = 0; diff --git a/src/main/fc/runtime_config.h b/src/main/fc/runtime_config.h index 5025e953be..1e81424f69 100644 --- a/src/main/fc/runtime_config.h +++ b/src/main/fc/runtime_config.h @@ -40,18 +40,18 @@ typedef enum { ARMING_DISABLED_RX_FAILSAFE = (1 << 2), ARMING_DISABLED_BAD_RX_RECOVERY = (1 << 3), ARMING_DISABLED_BOXFAILSAFE = (1 << 4), - ARMING_DISABLED_THROTTLE = (1 << 5), - ARMING_DISABLED_ANGLE = (1 << 6), - ARMING_DISABLED_BOOT_GRACE_TIME = (1 << 7), - ARMING_DISABLED_NOPREARM = (1 << 8), - ARMING_DISABLED_LOAD = (1 << 9), - ARMING_DISABLED_CALIBRATING = (1 << 10), - ARMING_DISABLED_CLI = (1 << 11), - ARMING_DISABLED_CMS_MENU = (1 << 12), - ARMING_DISABLED_OSD_MENU = (1 << 13), - ARMING_DISABLED_BST = (1 << 14), - ARMING_DISABLED_MSP = (1 << 15), - ARMING_DISABLED_RUNAWAY_TAKEOFF = (1 << 16), + ARMING_DISABLED_RUNAWAY_TAKEOFF = (1 << 5), + ARMING_DISABLED_THROTTLE = (1 << 6), + ARMING_DISABLED_ANGLE = (1 << 7), + ARMING_DISABLED_BOOT_GRACE_TIME = (1 << 8), + ARMING_DISABLED_NOPREARM = (1 << 9), + ARMING_DISABLED_LOAD = (1 << 10), + ARMING_DISABLED_CALIBRATING = (1 << 11), + ARMING_DISABLED_CLI = (1 << 12), + ARMING_DISABLED_CMS_MENU = (1 << 13), + ARMING_DISABLED_OSD_MENU = (1 << 14), + ARMING_DISABLED_BST = (1 << 15), + ARMING_DISABLED_MSP = (1 << 16), ARMING_DISABLED_ARM_SWITCH = (1 << 17), // Needs to be the last element, since it's always activated if one of the others is active when arming } armingDisableFlags_e;