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';