Changed warning to only be shown when armed.
This commit is contained in:
parent
286f21150c
commit
79fd505a8c
|
@ -129,7 +129,7 @@ enum {
|
|||
int16_t magHold;
|
||||
#endif
|
||||
|
||||
static bool flipOverAfterCrashMode = false;
|
||||
static bool flipOverAfterCrashActive = false;
|
||||
|
||||
static timeUs_t disarmAt; // Time of automatic disarm when "Don't spin the motors when armed" is enabled and auto_disarm_delay is nonzero
|
||||
|
||||
|
@ -216,7 +216,7 @@ void updateArmingStatus(void)
|
|||
}
|
||||
|
||||
// Clear the crash flip active status
|
||||
flipOverAfterCrashMode = false;
|
||||
flipOverAfterCrashActive = false;
|
||||
|
||||
// If switch is used for arming then check it is not defaulting to on when the RX link recovers from a fault
|
||||
if (!isUsingSticksForArming()) {
|
||||
|
@ -339,11 +339,11 @@ void disarm(void)
|
|||
#endif
|
||||
BEEP_OFF;
|
||||
#ifdef USE_DSHOT
|
||||
if (isMotorProtocolDshot() && flipOverAfterCrashMode && !featureIsEnabled(FEATURE_3D)) {
|
||||
if (isMotorProtocolDshot() && flipOverAfterCrashActive && !featureIsEnabled(FEATURE_3D)) {
|
||||
pwmWriteDshotCommand(ALL_MOTORS, getMotorCount(), DSHOT_CMD_SPIN_DIRECTION_NORMAL, false);
|
||||
}
|
||||
#endif
|
||||
flipOverAfterCrashMode = false;
|
||||
flipOverAfterCrashActive = false;
|
||||
|
||||
// if ARMING_DISABLED_RUNAWAY_TAKEOFF is set then we want to play it's beep pattern instead
|
||||
if (!(getArmingDisableFlags() & ARMING_DISABLED_RUNAWAY_TAKEOFF)) {
|
||||
|
@ -384,12 +384,12 @@ void tryArm(void)
|
|||
}
|
||||
if (isMotorProtocolDshot() && isModeActivationConditionPresent(BOXFLIPOVERAFTERCRASH)) {
|
||||
if (!(IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH) || (tryingToArm == ARMING_DELAYED_CRASHFLIP))) {
|
||||
flipOverAfterCrashMode = false;
|
||||
flipOverAfterCrashActive = false;
|
||||
if (!featureIsEnabled(FEATURE_3D)) {
|
||||
pwmWriteDshotCommand(ALL_MOTORS, getMotorCount(), DSHOT_CMD_SPIN_DIRECTION_NORMAL, false);
|
||||
}
|
||||
} else {
|
||||
flipOverAfterCrashMode = true;
|
||||
flipOverAfterCrashActive = true;
|
||||
#ifdef USE_RUNAWAY_TAKEOFF
|
||||
runawayTakeoffCheckDisabled = false;
|
||||
#endif
|
||||
|
@ -401,7 +401,7 @@ void tryArm(void)
|
|||
#endif
|
||||
|
||||
#ifdef USE_LAUNCH_CONTROL
|
||||
if (!flipOverAfterCrashMode && (canUseLaunchControl() || (tryingToArm == ARMING_DELAYED_LAUNCH_CONTROL))) {
|
||||
if (!flipOverAfterCrashActive && (canUseLaunchControl() || (tryingToArm == ARMING_DELAYED_LAUNCH_CONTROL))) {
|
||||
if (launchControlState == LAUNCH_CONTROL_DISABLED) { // only activate if it hasn't already been triggered
|
||||
launchControlState = LAUNCH_CONTROL_ACTIVE;
|
||||
}
|
||||
|
@ -648,7 +648,7 @@ bool processRx(timeUs_t currentTimeUs)
|
|||
if (ARMING_FLAG(ARMED)
|
||||
&& pidConfig()->runaway_takeoff_prevention
|
||||
&& !runawayTakeoffCheckDisabled
|
||||
&& !flipOverAfterCrashMode
|
||||
&& !flipOverAfterCrashActive
|
||||
&& !runawayTakeoffTemporarilyDisabled
|
||||
&& !STATE(FIXED_WING)) {
|
||||
|
||||
|
@ -784,7 +784,7 @@ bool processRx(timeUs_t currentTimeUs)
|
|||
|
||||
#ifdef USE_DSHOT
|
||||
/* Enable beep warning when the crash flip mode is active */
|
||||
if (isFlipOverAfterCrashWarningActive()) {
|
||||
if (flipOverAfterCrashActive) {
|
||||
beeper(BEEPER_CRASH_FLIP_MODE);
|
||||
}
|
||||
#endif
|
||||
|
@ -934,7 +934,7 @@ static FAST_CODE void subTaskPidController(timeUs_t currentTimeUs)
|
|||
&& !STATE(FIXED_WING)
|
||||
&& pidConfig()->runaway_takeoff_prevention
|
||||
&& !runawayTakeoffCheckDisabled
|
||||
&& !flipOverAfterCrashMode
|
||||
&& !flipOverAfterCrashActive
|
||||
&& !runawayTakeoffTemporarilyDisabled
|
||||
&& (!featureIsEnabled(FEATURE_MOTOR_STOP) || airmodeIsEnabled() || (calculateThrottleStatus() != THROTTLE_LOW))) {
|
||||
|
||||
|
@ -1088,14 +1088,9 @@ FAST_CODE void taskMainPidLoop(timeUs_t currentTimeUs)
|
|||
}
|
||||
|
||||
|
||||
bool isFlipOverAfterCrashMode(void)
|
||||
bool isFlipOverAfterCrashActive(void)
|
||||
{
|
||||
return flipOverAfterCrashMode;
|
||||
}
|
||||
|
||||
bool isFlipOverAfterCrashWarningActive(void)
|
||||
{
|
||||
return flipOverAfterCrashMode || IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH);
|
||||
return flipOverAfterCrashActive;
|
||||
}
|
||||
|
||||
timeUs_t getLastDisarmTimeUs(void)
|
||||
|
|
|
@ -67,8 +67,7 @@ void updateArmingStatus(void);
|
|||
|
||||
void taskMainPidLoop(timeUs_t currentTimeUs);
|
||||
|
||||
bool isFlipOverAfterCrashMode(void);
|
||||
bool isFlipOverAfterCrashWarningActive(void);
|
||||
bool isFlipOverAfterCrashActive(void);
|
||||
|
||||
void runawayTakeoffTemporaryDisable(uint8_t disableFlag);
|
||||
bool isAirmodeActivated();
|
||||
|
|
|
@ -774,7 +774,7 @@ void applyMotorStop(void)
|
|||
|
||||
FAST_CODE_NOINLINE void mixTable(timeUs_t currentTimeUs, uint8_t vbatPidCompensation)
|
||||
{
|
||||
if (isFlipOverAfterCrashMode()) {
|
||||
if (isFlipOverAfterCrashActive()) {
|
||||
applyFlipOverAfterCrashModeToMotors();
|
||||
return;
|
||||
}
|
||||
|
|
|
@ -549,7 +549,7 @@ static void applyLedWarningLayer(bool updateNow, timeUs_t *timer)
|
|||
if (!ARMING_FLAG(ARMED) && isArmingDisabled()) {
|
||||
warningFlags |= 1 << WARNING_ARMING_DISABLED;
|
||||
}
|
||||
if (isFlipOverAfterCrashWarningActive()) {
|
||||
if (isFlipOverAfterCrashActive()) {
|
||||
warningFlags |= 1 << WARNING_CRASH_FLIP_ACTIVE;
|
||||
}
|
||||
}
|
||||
|
|
|
@ -483,7 +483,7 @@ static bool osdDrawSingleElement(uint8_t item)
|
|||
{
|
||||
const int angleR = attitude.values.roll / 10;
|
||||
const int angleP = attitude.values.pitch / 10; // still gotta update all angleR and angleP pointers.
|
||||
if (isFlipOverAfterCrashMode()) {
|
||||
if (isFlipOverAfterCrashActive()) {
|
||||
if (angleP > 0 && ((angleR > 175 && angleR < 180) || (angleR > -180 && angleR < -175))) {
|
||||
buff[0] = SYM_ARROW_SOUTH;
|
||||
} else if (angleP > 0 && angleR > 0 && angleR < 175) {
|
||||
|
@ -946,7 +946,7 @@ static bool osdDrawSingleElement(uint8_t item)
|
|||
#endif
|
||||
|
||||
// Warn when in flip over after crash mode
|
||||
if (osdWarnGetState(OSD_WARNING_CRASH_FLIP) && isFlipOverAfterCrashWarningActive()) {
|
||||
if (osdWarnGetState(OSD_WARNING_CRASH_FLIP) && isFlipOverAfterCrashActive()) {
|
||||
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "CRASH FLIP");
|
||||
break;
|
||||
}
|
||||
|
|
|
@ -388,6 +388,6 @@ bool isArmingDisabled(void) { return false; }
|
|||
|
||||
uint8_t getRssiPercent(void) { return 0; }
|
||||
|
||||
bool isFlipOverAfterCrashWarningActive(void) { return false; }
|
||||
bool isFlipOverAfterCrashActive(void) { return false; }
|
||||
|
||||
}
|
||||
|
|
|
@ -1055,8 +1055,7 @@ extern "C" {
|
|||
|
||||
uint16_t getCoreTemperatureCelsius(void) { return simulationCoreTemperature; }
|
||||
|
||||
bool isFlipOverAfterCrashMode(void) { return false; }
|
||||
bool isFlipOverAfterCrashWarningActive(void) { return false; }
|
||||
bool isFlipOverAfterCrashActive(void) { return false; }
|
||||
|
||||
float pidItermAccelerator(void) { return 1.0; }
|
||||
uint8_t getMotorCount(void){ return 4; }
|
||||
|
|
Loading…
Reference in New Issue