diff --git a/src/main/flight/mixer.c b/src/main/flight/mixer.c index 3d61823474..e02fc2c774 100644 --- a/src/main/flight/mixer.c +++ b/src/main/flight/mixer.c @@ -712,7 +712,6 @@ static void applyMixToMotors(float motorMix[MAX_SUPPORTED_MOTORS]) } else { motorOutput = constrain(motorOutput, motorRangeMin, motorRangeMax); } - motor[i] = motorOutput; } @@ -786,10 +785,12 @@ FAST_CODE_NOINLINE void mixTable(timeUs_t currentTimeUs, uint8_t vbatPidCompensa throttle = applyThrottleLimit(throttle); } + const bool airmodeEnabled = airmodeIsEnabled(); + #ifdef USE_YAW_SPIN_RECOVERY // 50% throttle provides the maximum authority for yaw recovery when airmode is not active. // When airmode is active the throttle setting doesn't impact recovery authority. - if (yawSpinDetected && !airmodeIsEnabled()) { + if (yawSpinDetected && !airmodeEnabled) { throttle = 0.5f; // } #endif // USE_YAW_SPIN_RECOVERY @@ -836,11 +837,11 @@ FAST_CODE_NOINLINE void mixTable(timeUs_t currentTimeUs, uint8_t vbatPidCompensa motorMix[i] /= motorMixRange; } // Get the maximum correction by setting offset to center when airmode enabled - if (airmodeIsEnabled()) { + if (airmodeEnabled) { throttle = 0.5f; } } else { - if (airmodeIsEnabled() || throttle > 0.5f) { // Only automatically adjust throttle when airmode enabled. Airmode logic is always active on high throttle + if (airmodeEnabled || throttle > 0.5f) { // Only automatically adjust throttle when airmode enabled. Airmode logic is always active on high throttle const float throttleLimitOffset = motorMixRange / 2.0f; throttle = constrainf(throttle, 0.0f + throttleLimitOffset, 1.0f - throttleLimitOffset); } @@ -849,7 +850,7 @@ FAST_CODE_NOINLINE void mixTable(timeUs_t currentTimeUs, uint8_t vbatPidCompensa if (featureIsEnabled(FEATURE_MOTOR_STOP) && ARMING_FLAG(ARMED) && !featureIsEnabled(FEATURE_3D) - && !isAirmodeActive() + && !airmodeEnabled && (rcData[THROTTLE] < rxConfig()->mincheck)) { // motor_stop handling applyMotorStop(); diff --git a/src/test/unit/osd_unittest.cc b/src/test/unit/osd_unittest.cc index 9beb0bf418..528020399e 100644 --- a/src/test/unit/osd_unittest.cc +++ b/src/test/unit/osd_unittest.cc @@ -972,7 +972,7 @@ extern "C" { return false; } - bool isAirmodeActive() { + bool airmodeIsEnabled() { return false; } diff --git a/src/test/unit/telemetry_crsf_msp_unittest.cc b/src/test/unit/telemetry_crsf_msp_unittest.cc index fe6f65d614..ddd5225daf 100644 --- a/src/test/unit/telemetry_crsf_msp_unittest.cc +++ b/src/test/unit/telemetry_crsf_msp_unittest.cc @@ -278,7 +278,7 @@ extern "C" { bool featureIsEnabled(uint32_t) {return false;} - bool isAirmodeActive(void) {return true;} + bool airmodeIsEnabled(void) {return true;} mspResult_e mspFcProcessCommand(mspPacket_t *cmd, mspPacket_t *reply, mspPostProcessFnPtr *mspPostProcessFn) { diff --git a/src/test/unit/telemetry_crsf_unittest.cc b/src/test/unit/telemetry_crsf_unittest.cc index a48e1d122a..fe2cf8332b 100644 --- a/src/test/unit/telemetry_crsf_unittest.cc +++ b/src/test/unit/telemetry_crsf_unittest.cc @@ -312,7 +312,7 @@ bool telemetryCheckRxPortShared(const serialPortConfig_t *) {return true;} portSharing_e determinePortSharing(const serialPortConfig_t *, serialPortFunction_e) {return PORTSHARING_NOT_SHARED;} -bool isAirmodeActive(void) {return airMode;} +bool airmodeIsEnabled(void) {return airMode;} int32_t getAmperage(void) { return testAmperage;