Unified warning activation conditions.
This commit is contained in:
parent
99eab92200
commit
286f21150c
|
@ -370,7 +370,7 @@ void tryArm(void)
|
||||||
#ifdef USE_DSHOT
|
#ifdef USE_DSHOT
|
||||||
if (currentTimeUs - getLastDshotBeaconCommandTimeUs() < DSHOT_BEACON_GUARD_DELAY_US) {
|
if (currentTimeUs - getLastDshotBeaconCommandTimeUs() < DSHOT_BEACON_GUARD_DELAY_US) {
|
||||||
if (tryingToArm == ARMING_DELAYED_DISARMED) {
|
if (tryingToArm == ARMING_DELAYED_DISARMED) {
|
||||||
if (isModeActivationConditionPresent(BOXFLIPOVERAFTERCRASH) && IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
|
if (IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
|
||||||
tryingToArm = ARMING_DELAYED_CRASHFLIP;
|
tryingToArm = ARMING_DELAYED_CRASHFLIP;
|
||||||
#ifdef USE_LAUNCH_CONTROL
|
#ifdef USE_LAUNCH_CONTROL
|
||||||
} else if (canUseLaunchControl()) {
|
} else if (canUseLaunchControl()) {
|
||||||
|
@ -784,7 +784,7 @@ bool processRx(timeUs_t currentTimeUs)
|
||||||
|
|
||||||
#ifdef USE_DSHOT
|
#ifdef USE_DSHOT
|
||||||
/* Enable beep warning when the crash flip mode is active */
|
/* Enable beep warning when the crash flip mode is active */
|
||||||
if (isMotorProtocolDshot() && isModeActivationConditionPresent(BOXFLIPOVERAFTERCRASH) && IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
|
if (isFlipOverAfterCrashWarningActive()) {
|
||||||
beeper(BEEPER_CRASH_FLIP_MODE);
|
beeper(BEEPER_CRASH_FLIP_MODE);
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@ -1093,6 +1093,11 @@ bool isFlipOverAfterCrashMode(void)
|
||||||
return flipOverAfterCrashMode;
|
return flipOverAfterCrashMode;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
bool isFlipOverAfterCrashWarningActive(void)
|
||||||
|
{
|
||||||
|
return flipOverAfterCrashMode || IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH);
|
||||||
|
}
|
||||||
|
|
||||||
timeUs_t getLastDisarmTimeUs(void)
|
timeUs_t getLastDisarmTimeUs(void)
|
||||||
{
|
{
|
||||||
return lastDisarmTimeUs;
|
return lastDisarmTimeUs;
|
||||||
|
|
|
@ -66,7 +66,9 @@ bool processRx(timeUs_t currentTimeUs);
|
||||||
void updateArmingStatus(void);
|
void updateArmingStatus(void);
|
||||||
|
|
||||||
void taskMainPidLoop(timeUs_t currentTimeUs);
|
void taskMainPidLoop(timeUs_t currentTimeUs);
|
||||||
|
|
||||||
bool isFlipOverAfterCrashMode(void);
|
bool isFlipOverAfterCrashMode(void);
|
||||||
|
bool isFlipOverAfterCrashWarningActive(void);
|
||||||
|
|
||||||
void runawayTakeoffTemporaryDisable(uint8_t disableFlag);
|
void runawayTakeoffTemporaryDisable(uint8_t disableFlag);
|
||||||
bool isAirmodeActivated();
|
bool isAirmodeActivated();
|
||||||
|
|
|
@ -47,6 +47,7 @@
|
||||||
#include "drivers/vtx_common.h"
|
#include "drivers/vtx_common.h"
|
||||||
|
|
||||||
#include "fc/config.h"
|
#include "fc/config.h"
|
||||||
|
#include "fc/core.h"
|
||||||
#include "fc/rc_controls.h"
|
#include "fc/rc_controls.h"
|
||||||
#include "fc/rc_modes.h"
|
#include "fc/rc_modes.h"
|
||||||
#include "fc/runtime_config.h"
|
#include "fc/runtime_config.h"
|
||||||
|
@ -548,7 +549,7 @@ static void applyLedWarningLayer(bool updateNow, timeUs_t *timer)
|
||||||
if (!ARMING_FLAG(ARMED) && isArmingDisabled()) {
|
if (!ARMING_FLAG(ARMED) && isArmingDisabled()) {
|
||||||
warningFlags |= 1 << WARNING_ARMING_DISABLED;
|
warningFlags |= 1 << WARNING_ARMING_DISABLED;
|
||||||
}
|
}
|
||||||
if (IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
|
if (isFlipOverAfterCrashWarningActive()) {
|
||||||
warningFlags |= 1 << WARNING_CRASH_FLIP_ACTIVE;
|
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 angleR = attitude.values.roll / 10;
|
||||||
const int angleP = attitude.values.pitch / 10; // still gotta update all angleR and angleP pointers.
|
const int angleP = attitude.values.pitch / 10; // still gotta update all angleR and angleP pointers.
|
||||||
if (IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
|
if (isFlipOverAfterCrashMode()) {
|
||||||
if (angleP > 0 && ((angleR > 175 && angleR < 180) || (angleR > -180 && angleR < -175))) {
|
if (angleP > 0 && ((angleR > 175 && angleR < 180) || (angleR > -180 && angleR < -175))) {
|
||||||
buff[0] = SYM_ARROW_SOUTH;
|
buff[0] = SYM_ARROW_SOUTH;
|
||||||
} else if (angleP > 0 && angleR > 0 && angleR < 175) {
|
} else if (angleP > 0 && angleR > 0 && angleR < 175) {
|
||||||
|
@ -946,7 +946,7 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
// Warn when in flip over after crash mode
|
// Warn when in flip over after crash mode
|
||||||
if (osdWarnGetState(OSD_WARNING_CRASH_FLIP) && IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
|
if (osdWarnGetState(OSD_WARNING_CRASH_FLIP) && isFlipOverAfterCrashWarningActive()) {
|
||||||
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "CRASH FLIP");
|
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "CRASH FLIP");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
|
@ -388,4 +388,6 @@ bool isArmingDisabled(void) { return false; }
|
||||||
|
|
||||||
uint8_t getRssiPercent(void) { return 0; }
|
uint8_t getRssiPercent(void) { return 0; }
|
||||||
|
|
||||||
|
bool isFlipOverAfterCrashWarningActive(void) { return false; }
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -1055,9 +1055,8 @@ extern "C" {
|
||||||
|
|
||||||
uint16_t getCoreTemperatureCelsius(void) { return simulationCoreTemperature; }
|
uint16_t getCoreTemperatureCelsius(void) { return simulationCoreTemperature; }
|
||||||
|
|
||||||
bool isFlipOverAfterCrashMode(void) {
|
bool isFlipOverAfterCrashMode(void) { return false; }
|
||||||
return false;
|
bool isFlipOverAfterCrashWarningActive(void) { return false; }
|
||||||
}
|
|
||||||
|
|
||||||
float pidItermAccelerator(void) { return 1.0; }
|
float pidItermAccelerator(void) { return 1.0; }
|
||||||
uint8_t getMotorCount(void){ return 4; }
|
uint8_t getMotorCount(void){ return 4; }
|
||||||
|
|
Loading…
Reference in New Issue