From 57c3471dc66e693ee37322f5103f65f7f591a1df Mon Sep 17 00:00:00 2001 From: Mark Haslinghuis Date: Thu, 22 May 2025 18:59:52 +0200 Subject: [PATCH] [4.5.3] Fix osd esc alarm (#14394) Fix osd_esc_rpm_alarm (#14361) * Fix osd_esc_rpm_alarm * Should be >= ??? * Add edt condition to pass * Revert 349 --- src/main/osd/osd_warnings.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/main/osd/osd_warnings.c b/src/main/osd/osd_warnings.c index 4b5e57ccb2..641999df5b 100644 --- a/src/main/osd/osd_warnings.c +++ b/src/main/osd/osd_warnings.c @@ -331,11 +331,6 @@ void renderOsdWarning(char *warningText, bool *blinking, uint8_t *displayAttr) warningText[dshotEscErrorLength++] = 'C'; for (uint8_t k = 0; k < getMotorCount(); k++) { - // Skip if no extended telemetry at all - if ((dshotTelemetryState.motorState[k].telemetryTypes & DSHOT_EXTENDED_TELEMETRY_MASK) == 0) { - continue; - } - // Remember text index before writing warnings dshotEscErrorLengthMotorBegin = dshotEscErrorLength; @@ -349,12 +344,16 @@ void renderOsdWarning(char *warningText, bool *blinking, uint8_t *displayAttr) && (dshotTelemetryState.motorState[k].telemetryData[DSHOT_TELEMETRY_TYPE_eRPM] * 100 * 2 / motorConfig()->motorPoleCount) <= osdConfig()->esc_rpm_alarm) { warningText[dshotEscErrorLength++] = 'R'; } - if (osdConfig()->esc_temp_alarm != ESC_TEMP_ALARM_OFF + + // Skip if no extended telemetry available + bool edt = (dshotTelemetryState.motorState[k].telemetryTypes & DSHOT_EXTENDED_TELEMETRY_MASK) != 0; + + if (edt && osdConfig()->esc_temp_alarm != ESC_TEMP_ALARM_OFF && (dshotTelemetryState.motorState[k].telemetryTypes & (1 << DSHOT_TELEMETRY_TYPE_TEMPERATURE)) != 0 && dshotTelemetryState.motorState[k].telemetryData[DSHOT_TELEMETRY_TYPE_TEMPERATURE] >= osdConfig()->esc_temp_alarm) { warningText[dshotEscErrorLength++] = 'T'; } - if (ARMING_FLAG(ARMED) && osdConfig()->esc_current_alarm != ESC_CURRENT_ALARM_OFF + if (edt && osdConfig()->esc_current_alarm != ESC_CURRENT_ALARM_OFF && (dshotTelemetryState.motorState[k].telemetryTypes & (1 << DSHOT_TELEMETRY_TYPE_CURRENT)) != 0 && dshotTelemetryState.motorState[k].telemetryData[DSHOT_TELEMETRY_TYPE_CURRENT] >= osdConfig()->esc_current_alarm) { warningText[dshotEscErrorLength++] = 'C';