diff --git a/src/main/interface/settings.c b/src/main/interface/settings.c index f122ecc5ad..5e15219718 100644 --- a/src/main/interface/settings.c +++ b/src/main/interface/settings.c @@ -946,6 +946,7 @@ const clivalue_t valueTable[] = { #ifdef USE_ADC_INTERNAL { "osd_warn_core_temp", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = OSD_WARNING_CORE_TEMPERATURE, PG_OSD_CONFIG, offsetof(osdConfig_t, enabledWarnings)}, #endif + { "osd_warn_fail_safe", VAR_UINT16 | MASTER_VALUE | MODE_BITSET, .config.bitpos = OSD_WARNING_FAIL_SAFE, PG_OSD_CONFIG, offsetof(osdConfig_t, enabledWarnings)}, { "osd_rssi_alarm", VAR_UINT8 | MASTER_VALUE, .config.minmax = { 0, 100 }, PG_OSD_CONFIG, offsetof(osdConfig_t, rssi_alarm) }, { "osd_cap_alarm", VAR_UINT16 | MASTER_VALUE, .config.minmax = { 0, 20000 }, PG_OSD_CONFIG, offsetof(osdConfig_t, cap_alarm) }, diff --git a/src/main/io/osd.c b/src/main/io/osd.c index dffeec60d7..26fdd28e81 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -67,6 +67,7 @@ #include "fc/fc_rc.h" #include "fc/runtime_config.h" +#include "flight/failsafe.h" #include "flight/position.h" #include "flight/imu.h" #ifdef USE_ESC_SENSOR @@ -768,6 +769,10 @@ static bool osdDrawSingleElement(uint8_t item) break; } #endif + if (osdWarnGetState(OSD_WARNING_FAIL_SAFE) && failsafeIsActive()) { + osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "FAIL SAFE"); + break; + } if (osdWarnGetState(OSD_WARNING_BATTERY_CRITICAL) && batteryState == BATTERY_CRITICAL) { osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, " LAND NOW"); diff --git a/src/main/io/osd.h b/src/main/io/osd.h index 3eba7e8ea0..8a0adf3d72 100644 --- a/src/main/io/osd.h +++ b/src/main/io/osd.h @@ -165,6 +165,7 @@ typedef enum { OSD_WARNING_ESC_FAIL, OSD_WARNING_CORE_TEMPERATURE, OSD_WARNING_RC_SMOOTHING, + OSD_WARNING_FAIL_SAFE, OSD_WARNING_COUNT // MUST BE LAST } osdWarningsFlags_e; diff --git a/src/test/unit/osd_unittest.cc b/src/test/unit/osd_unittest.cc index c862bfbca5..45b33bb28b 100644 --- a/src/test/unit/osd_unittest.cc +++ b/src/test/unit/osd_unittest.cc @@ -1047,4 +1047,6 @@ extern "C" { } bool pidOsdAntiGravityActive(void) { return false; } + + bool failsafeIsActive(void) { return false; } }