1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-15 20:35:33 +03:00

Changes in crash flip OSD warnings:

1. Show "ARMED"<new line>"> CRASH FLIP <" when arming in crash flip
2. Show "CRASH FLIP SWITCH" when disarmed, but in crash flip.
3. Hide the disarmed stats screen if "CRASH FLIP SWITCH" is activated.
This commit is contained in:
Ivan Efimov 2022-05-26 22:50:45 -05:00
parent aaece8915a
commit bb33c65f11
4 changed files with 24 additions and 7 deletions

View file

@ -440,7 +440,7 @@ void disarm(flightLogDisarmReason_e reason)
lastDisarmTimeUs = micros(); lastDisarmTimeUs = micros();
#ifdef USE_OSD #ifdef USE_OSD
if (flipOverAfterCrashActive || isLaunchControlActive()) { if (IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH) || isLaunchControlActive()) {
osdSuppressStats(true); osdSuppressStats(true);
} }
#endif #endif

View file

@ -60,6 +60,7 @@
#include "drivers/sdcard.h" #include "drivers/sdcard.h"
#include "drivers/time.h" #include "drivers/time.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"
@ -79,6 +80,7 @@
#include "osd/osd.h" #include "osd/osd.h"
#include "osd/osd_elements.h" #include "osd/osd_elements.h"
#include "osd/osd_warnings.h"
#include "pg/motor.h" #include "pg/motor.h"
#include "pg/pg.h" #include "pg/pg.h"
@ -1016,6 +1018,10 @@ static timeDelta_t osdShowArmed(void)
} }
displayWrite(osdDisplayPort, 12, 7, DISPLAYPORT_ATTR_NONE, "ARMED"); displayWrite(osdDisplayPort, 12, 7, DISPLAYPORT_ATTR_NONE, "ARMED");
if (isFlipOverAfterCrashActive()) {
displayWrite(osdDisplayPort, 8, 8, DISPLAYPORT_ATTR_NONE, CRASH_FLIP_WARNING);
}
return ret; return ret;
} }
@ -1087,8 +1093,9 @@ void osdProcessStats2(timeUs_t currentTimeUs)
if (resumeRefreshAt) { if (resumeRefreshAt) {
if (cmp32(currentTimeUs, resumeRefreshAt) < 0) { if (cmp32(currentTimeUs, resumeRefreshAt) < 0) {
// in timeout period, check sticks for activity to resume display. // in timeout period, check sticks for activity or CRASH FLIP switch to resume display.
if (IS_HI(THROTTLE) || IS_HI(PITCH)) { if (!ARMING_FLAG(ARMED) &&
(IS_HI(THROTTLE) || IS_HI(PITCH) || IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH))) {
resumeRefreshAt = currentTimeUs; resumeRefreshAt = currentTimeUs;
} }
return; return;

View file

@ -63,6 +63,8 @@
#include "sensors/battery.h" #include "sensors/battery.h"
#include "sensors/sensors.h" #include "sensors/sensors.h"
const char CRASH_FLIP_WARNING[] = "> CRASH FLIP <";
void renderOsdWarning(char *warningText, bool *blinking, uint8_t *displayAttr) void renderOsdWarning(char *warningText, bool *blinking, uint8_t *displayAttr)
{ {
const batteryState_e batteryState = getBatteryState(); const batteryState_e batteryState = getBatteryState();
@ -132,10 +134,16 @@ void renderOsdWarning(char *warningText, bool *blinking, uint8_t *displayAttr)
} }
// Warn when in flip over after crash mode // Warn when in flip over after crash mode
if (osdWarnGetState(OSD_WARNING_CRASH_FLIP) && isFlipOverAfterCrashActive()) { if (osdWarnGetState(OSD_WARNING_CRASH_FLIP) && IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
tfp_sprintf(warningText, "CRASH FLIP"); if (isFlipOverAfterCrashActive()) { // if was armed in crash flip mode
*displayAttr = DISPLAYPORT_ATTR_INFO; tfp_sprintf(warningText, CRASH_FLIP_WARNING);
return; *displayAttr = DISPLAYPORT_ATTR_INFO;
return;
} else if (!ARMING_FLAG(ARMED)) { // if disarmed, but crash flip mode is activated
tfp_sprintf(warningText, "CRASH FLIP SWITCH");
*displayAttr = DISPLAYPORT_ATTR_INFO;
return;
}
} }
#ifdef USE_LAUNCH_CONTROL #ifdef USE_LAUNCH_CONTROL

View file

@ -23,6 +23,8 @@
#define OSD_WARNINGS_MAX_SIZE 12 #define OSD_WARNINGS_MAX_SIZE 12
#define OSD_FORMAT_MESSAGE_BUFFER_SIZE (OSD_WARNINGS_MAX_SIZE + 1) #define OSD_FORMAT_MESSAGE_BUFFER_SIZE (OSD_WARNINGS_MAX_SIZE + 1)
extern const char CRASH_FLIP_WARNING[];
STATIC_ASSERT(OSD_FORMAT_MESSAGE_BUFFER_SIZE <= OSD_ELEMENT_BUFFER_LENGTH, osd_warnings_size_exceeds_buffer_size); STATIC_ASSERT(OSD_FORMAT_MESSAGE_BUFFER_SIZE <= OSD_ELEMENT_BUFFER_LENGTH, osd_warnings_size_exceeds_buffer_size);
void renderOsdWarning(char *warningText, bool *blinking, uint8_t *displayAttr); void renderOsdWarning(char *warningText, bool *blinking, uint8_t *displayAttr);