From ad0d18cfef6a5f7132d7b06d43b7e35d3a36463f Mon Sep 17 00:00:00 2001 From: Laurent Lalanne Date: Wed, 21 Dec 2016 03:16:29 +0100 Subject: [PATCH] LP-428 Handle different threshold levels for sticks and switches --- flight/modules/ManualControl/armhandler.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/flight/modules/ManualControl/armhandler.c b/flight/modules/ManualControl/armhandler.c index a93586da4..6d067e2db 100644 --- a/flight/modules/ManualControl/armhandler.c +++ b/flight/modules/ManualControl/armhandler.c @@ -41,8 +41,9 @@ #endif // Private constants -#define ARMED_THRESHOLD 0.20f -#define GROUND_LOW_THROTTLE 0.01f +#define ARMED_THRESHOLD_SWITCH 0.20f +#define ARMED_THRESHOLD_STICK 0.80f +#define GROUND_LOW_THROTTLE 0.01f // Private types typedef enum { @@ -116,7 +117,7 @@ void armHandler(bool newinit, FrameType_t frameType) } // immediate disarm on switch - if (armSwitch && acc.AccessoryVal <= -ARMED_THRESHOLD) { + if (armSwitch && acc.AccessoryVal <= -ARMED_THRESHOLD_SWITCH) { lowThrottle = true; } @@ -209,9 +210,11 @@ void armHandler(bool newinit, FrameType_t frameType) previousArmingInputLevel = 0.0f; } - if ((armingInputLevel <= -ARMED_THRESHOLD) && (previousArmingInputLevel > -ARMED_THRESHOLD)) { + float armedThreshold = armSwitch ? ARMED_THRESHOLD_SWITCH : ARMED_THRESHOLD_STICK; + + if ((armingInputLevel <= -armedThreshold) && (previousArmingInputLevel > -armedThreshold)) { manualArm = true; - } else if ((armingInputLevel >= +ARMED_THRESHOLD) && (previousArmingInputLevel < +ARMED_THRESHOLD)) { + } else if ((armingInputLevel >= +armedThreshold) && (previousArmingInputLevel < +armedThreshold)) { manualDisarm = true; }