1
0
Fork 0
mirror of https://github.com/betaflight/betaflight.git synced 2025-07-25 01:05:27 +03:00

Allow OSD warnings to be toggled

This commit is contained in:
Dan Nixon 2017-08-19 13:02:47 +01:00
parent 8a471deddc
commit 6621ed9818
5 changed files with 62 additions and 35 deletions

View file

@ -584,52 +584,56 @@ static void osdDrawSingleElement(uint8_t item)
}
case OSD_WARNINGS:
/* Warn when in flip over after crash mode */
if ((isModeActivationConditionPresent(BOXFLIPOVERAFTERCRASH)) && IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
tfp_sprintf(buff, "CRASH FLIP");
break;
}
{
uint16_t enabledWarnings = osdConfig()->enabledWarnings;
/* Show most severe reason for arming being disabled */
if (IS_RC_MODE_ACTIVE(BOXARM) && isArmingDisabled()) {
const armingDisableFlags_e flags = getArmingDisableFlags();
for (int i = 0; i < NUM_ARMING_DISABLE_FLAGS; i++) {
if (flags & (1 << i)) {
tfp_sprintf(buff, "%s", armingDisableFlagNames[i]);
break;
/* Warn when in flip over after crash mode */
if ((enabledWarnings & OSD_WARNING_CRASH_FLIP)
&& (isModeActivationConditionPresent(BOXFLIPOVERAFTERCRASH))
&& IS_RC_MODE_ACTIVE(BOXFLIPOVERAFTERCRASH)) {
tfp_sprintf(buff, "CRASH FLIP");
break;
}
/* Show most severe reason for arming being disabled */
if (enabledWarnings & OSD_WARNING_ARMING_DISABLE && IS_RC_MODE_ACTIVE(BOXARM) && isArmingDisabled()) {
const armingDisableFlags_e flags = getArmingDisableFlags();
for (int i = 0; i < NUM_ARMING_DISABLE_FLAGS; i++) {
if (flags & (1 << i)) {
tfp_sprintf(buff, "%s", armingDisableFlagNames[i]);
break;
}
}
break;
}
break;
}
/* Show warning if battery is not fresh */
if (!ARMING_FLAG(WAS_EVER_ARMED) && (getBatteryState() == BATTERY_OK)
&& getBatteryAverageCellVoltage() < batteryConfig()->vbatfullcellvoltage) {
tfp_sprintf(buff, "BATT NOT FULL");
break;
}
/* Show warning if battery is not fresh */
if (enabledWarnings & OSD_WARNING_BATTERY_NOT_FULL && !ARMING_FLAG(WAS_EVER_ARMED) && (getBatteryState() == BATTERY_OK)
&& getBatteryAverageCellVoltage() < batteryConfig()->vbatfullcellvoltage) {
tfp_sprintf(buff, "BATT NOT FULL");
break;
}
/* Show battery state warning */
switch (getBatteryState()) {
case BATTERY_WARNING:
tfp_sprintf(buff, "LOW BATTERY");
break;
const batteryState_e batteryState = getBatteryState();
case BATTERY_CRITICAL:
tfp_sprintf(buff, " LAND NOW");
break;
if (enabledWarnings & OSD_WARNING_BATTERY_WARNING && batteryState == BATTERY_WARNING) {
tfp_sprintf(buff, "LOW BATTERY");
break;
}
default:
/* Show visual beeper if battery is OK */
if (showVisualBeeper) {
if (enabledWarnings & OSD_WARNING_BATTERY_CRITICAL && batteryState == BATTERY_CRITICAL) {
tfp_sprintf(buff, " LAND NOW");
break;
}
/* Visual beeper */
if (enabledWarnings & OSD_WARNING_VISUAL_BEEPER && showVisualBeeper) {
tfp_sprintf(buff, " * * * *");
} else {
return;
break;
}
break;
return;
}
break;
case OSD_AVG_CELL_VOLTAGE:
{
@ -804,6 +808,9 @@ void pgResetFn_osdConfig(osdConfig_t *osdConfig)
osdConfig->units = OSD_UNIT_METRIC;
/* Enable all warnings by default */
osdConfig->enabledWarnings = UINT16_MAX;
osdConfig->timers[OSD_TIMER_1] = OSD_TIMER(OSD_TIMER_SRC_ON, OSD_TIMER_PREC_SECOND, 10);
osdConfig->timers[OSD_TIMER_2] = OSD_TIMER(OSD_TIMER_SRC_TOTAL_ARMED, OSD_TIMER_PREC_SECOND, 10);