1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-14 11:59:58 +03:00

Merge pull request #7056 from etracer65/fix_osd_warning_blinking

Improve behavior of OSD warnings element blinking
This commit is contained in:
Michael Keller 2018-11-10 20:00:10 +13:00 committed by GitHub
commit b58e8f827f
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -832,6 +832,8 @@ static bool osdDrawSingleElement(uint8_t item)
static timeUs_t armingDisabledUpdateTimeUs; static timeUs_t armingDisabledUpdateTimeUs;
static unsigned armingDisabledDisplayIndex; static unsigned armingDisabledDisplayIndex;
CLR_BLINK(OSD_WARNINGS);
// Cycle through the arming disabled reasons // Cycle through the arming disabled reasons
if (osdWarnGetState(OSD_WARNING_ARMING_DISABLE)) { if (osdWarnGetState(OSD_WARNING_ARMING_DISABLE)) {
if (IS_RC_MODE_ACTIVE(BOXARM) && isArmingDisabled()) { if (IS_RC_MODE_ACTIVE(BOXARM) && isArmingDisabled()) {
@ -883,17 +885,20 @@ static bool osdDrawSingleElement(uint8_t item)
#endif #endif
if (osdWarnGetState(OSD_WARNING_FAIL_SAFE) && failsafeIsActive()) { if (osdWarnGetState(OSD_WARNING_FAIL_SAFE) && failsafeIsActive()) {
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "FAIL SAFE"); osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "FAIL SAFE");
SET_BLINK(OSD_WARNINGS);
break; break;
} }
if (osdWarnGetState(OSD_WARNING_BATTERY_CRITICAL) && batteryState == BATTERY_CRITICAL) { if (osdWarnGetState(OSD_WARNING_BATTERY_CRITICAL) && batteryState == BATTERY_CRITICAL) {
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, " LAND NOW"); osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, " LAND NOW");
SET_BLINK(OSD_WARNINGS);
break; break;
} }
// Show warning if in HEADFREE flight mode // Show warning if in HEADFREE flight mode
if (FLIGHT_MODE(HEADFREE_MODE)) { if (FLIGHT_MODE(HEADFREE_MODE)) {
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "HEADFREE"); osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "HEADFREE");
SET_BLINK(OSD_WARNINGS);
break; break;
} }
@ -904,7 +909,7 @@ static bool osdDrawSingleElement(uint8_t item)
tfp_sprintf(coreTemperatureWarningMsg, "CORE: %3d%c", osdConvertTemperatureToSelectedUnit(coreTemperature), osdGetTemperatureSymbolForSelectedUnit()); tfp_sprintf(coreTemperatureWarningMsg, "CORE: %3d%c", osdConvertTemperatureToSelectedUnit(coreTemperature), osdGetTemperatureSymbolForSelectedUnit());
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, coreTemperatureWarningMsg); osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, coreTemperatureWarningMsg);
SET_BLINK(OSD_WARNINGS);
break; break;
} }
#endif #endif
@ -955,6 +960,7 @@ static bool osdDrawSingleElement(uint8_t item)
if (escWarningCount > 0) { if (escWarningCount > 0) {
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, escWarningMsg); osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, escWarningMsg);
SET_BLINK(OSD_WARNINGS);
break; break;
} }
} }
@ -983,6 +989,7 @@ static bool osdDrawSingleElement(uint8_t item)
if (osdWarnGetState(OSD_WARNING_BATTERY_WARNING) && batteryState == BATTERY_WARNING) { if (osdWarnGetState(OSD_WARNING_BATTERY_WARNING) && batteryState == BATTERY_WARNING) {
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "LOW BATTERY"); osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "LOW BATTERY");
SET_BLINK(OSD_WARNINGS);
break; break;
} }
@ -990,6 +997,7 @@ static bool osdDrawSingleElement(uint8_t item)
// Show warning if rc smoothing hasn't initialized the filters // Show warning if rc smoothing hasn't initialized the filters
if (osdWarnGetState(OSD_WARNING_RC_SMOOTHING) && ARMING_FLAG(ARMED) && !rcSmoothingInitializationComplete()) { if (osdWarnGetState(OSD_WARNING_RC_SMOOTHING) && ARMING_FLAG(ARMED) && !rcSmoothingInitializationComplete()) {
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "RCSMOOTHING"); osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "RCSMOOTHING");
SET_BLINK(OSD_WARNINGS);
break; break;
} }
#endif #endif
@ -1309,18 +1317,6 @@ void osdUpdateAlarms(void)
CLR_BLINK(OSD_RSSI_VALUE); CLR_BLINK(OSD_RSSI_VALUE);
} }
// Determine if the OSD_WARNINGS should blink
if (getBatteryState() != BATTERY_OK
&& (osdWarnGetState(OSD_WARNING_BATTERY_CRITICAL) || osdWarnGetState(OSD_WARNING_BATTERY_WARNING))
#ifdef USE_DSHOT
&& (!isTryingToArm())
#endif
) {
SET_BLINK(OSD_WARNINGS);
} else {
CLR_BLINK(OSD_WARNINGS);
}
if (getBatteryState() == BATTERY_OK) { if (getBatteryState() == BATTERY_OK) {
CLR_BLINK(OSD_MAIN_BATT_VOLTAGE); CLR_BLINK(OSD_MAIN_BATT_VOLTAGE);
CLR_BLINK(OSD_AVG_CELL_VOLTAGE); CLR_BLINK(OSD_AVG_CELL_VOLTAGE);