mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-23 16:25:31 +03:00
Fixed OSD warnings overlap to the right.
This commit is contained in:
parent
9d7c8fbd46
commit
c89f87018b
3 changed files with 32 additions and 11 deletions
|
@ -29,10 +29,26 @@ uint16_t flightModeFlags = 0;
|
||||||
|
|
||||||
static uint32_t enabledSensors = 0;
|
static uint32_t enabledSensors = 0;
|
||||||
|
|
||||||
|
// Must be shorter than OSD_WARNINGS_MAX_SIZE (11) to be displayed fully in OSD
|
||||||
const char *armingDisableFlagNames[]= {
|
const char *armingDisableFlagNames[]= {
|
||||||
"NOGYRO", "FAILSAFE", "RXLOSS", "BADRX", "BOXFAILSAFE",
|
"NOGYRO",
|
||||||
"RUNAWAY", "THROTTLE", "ANGLE", "BOOTGRACE", "NOPREARM", "LOAD",
|
"FAILSAFE",
|
||||||
"CALIB", "CLI", "CMS", "OSD", "BST", "MSP", "ARMSWITCH"
|
"RXLOSS",
|
||||||
|
"BADRX",
|
||||||
|
"BOXFAILSAFE",
|
||||||
|
"RUNAWAY",
|
||||||
|
"THROTTLE",
|
||||||
|
"ANGLE",
|
||||||
|
"BOOTGRACE",
|
||||||
|
"NOPREARM",
|
||||||
|
"LOAD",
|
||||||
|
"CALIB",
|
||||||
|
"CLI",
|
||||||
|
"CMS",
|
||||||
|
"OSD",
|
||||||
|
"BST",
|
||||||
|
"MSP",
|
||||||
|
"ARMSWITCH"
|
||||||
};
|
};
|
||||||
|
|
||||||
static armingDisableFlags_e armingDisableFlags = 0;
|
static armingDisableFlags_e armingDisableFlags = 0;
|
||||||
|
|
|
@ -645,19 +645,23 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
|
|
||||||
case OSD_WARNINGS:
|
case OSD_WARNINGS:
|
||||||
{
|
{
|
||||||
|
|
||||||
|
#define OSD_WARNINGS_MAX_SIZE 11
|
||||||
|
#define OSD_FORMAT_MESSAGE_BUFFER_SIZE (OSD_WARNINGS_MAX_SIZE + 1)
|
||||||
|
|
||||||
const uint16_t enabledWarnings = osdConfig()->enabledWarnings;
|
const uint16_t enabledWarnings = osdConfig()->enabledWarnings;
|
||||||
|
|
||||||
const batteryState_e batteryState = getBatteryState();
|
const batteryState_e batteryState = getBatteryState();
|
||||||
|
|
||||||
if (enabledWarnings & OSD_WARNING_BATTERY_CRITICAL && batteryState == BATTERY_CRITICAL) {
|
if (enabledWarnings & OSD_WARNING_BATTERY_CRITICAL && batteryState == BATTERY_CRITICAL) {
|
||||||
osdFormatMessage(buff, sizeof(buff), " LAND NOW");
|
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, " LAND NOW");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Warn when in flip over after crash mode
|
// Warn when in flip over after crash mode
|
||||||
if ((enabledWarnings & OSD_WARNING_CRASH_FLIP)
|
if ((enabledWarnings & OSD_WARNING_CRASH_FLIP)
|
||||||
&& (isFlipOverAfterCrashMode())) {
|
&& (isFlipOverAfterCrashMode())) {
|
||||||
osdFormatMessage(buff, sizeof(buff), "CRASH FLIP");
|
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "CRASH FLIP");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -666,7 +670,7 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
const armingDisableFlags_e flags = getArmingDisableFlags();
|
const armingDisableFlags_e flags = getArmingDisableFlags();
|
||||||
for (int i = 0; i < ARMING_DISABLE_FLAGS_COUNT; i++) {
|
for (int i = 0; i < ARMING_DISABLE_FLAGS_COUNT; i++) {
|
||||||
if (flags & (1 << i)) {
|
if (flags & (1 << i)) {
|
||||||
osdFormatMessage(buff, sizeof(buff), armingDisableFlagNames[i]);
|
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, armingDisableFlagNames[i]);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -674,24 +678,25 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
}
|
}
|
||||||
|
|
||||||
if (enabledWarnings & OSD_WARNING_BATTERY_WARNING && batteryState == BATTERY_WARNING) {
|
if (enabledWarnings & OSD_WARNING_BATTERY_WARNING && batteryState == BATTERY_WARNING) {
|
||||||
osdFormatMessage(buff, sizeof(buff), "LOW BATTERY");
|
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "LOW BATTERY");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Show warning if battery is not fresh
|
// Show warning if battery is not fresh
|
||||||
if (enabledWarnings & OSD_WARNING_BATTERY_NOT_FULL && !ARMING_FLAG(WAS_EVER_ARMED) && (getBatteryState() == BATTERY_OK)
|
if (enabledWarnings & OSD_WARNING_BATTERY_NOT_FULL && !ARMING_FLAG(WAS_EVER_ARMED) && (getBatteryState() == BATTERY_OK)
|
||||||
&& getBatteryAverageCellVoltage() < batteryConfig()->vbatfullcellvoltage) {
|
&& getBatteryAverageCellVoltage() < batteryConfig()->vbatfullcellvoltage) {
|
||||||
osdFormatMessage(buff, sizeof(buff), "BATT NOT FULL");
|
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, "BATT < FULL");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
// Visual beeper
|
// Visual beeper
|
||||||
if (enabledWarnings & OSD_WARNING_VISUAL_BEEPER && showVisualBeeper) {
|
if (enabledWarnings & OSD_WARNING_VISUAL_BEEPER && showVisualBeeper) {
|
||||||
osdFormatMessage(buff, sizeof(buff), " * * * *");
|
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, " * * * *");
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
return true;
|
osdFormatMessage(buff, OSD_FORMAT_MESSAGE_BUFFER_SIZE, NULL);
|
||||||
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
case OSD_AVG_CELL_VOLTAGE:
|
case OSD_AVG_CELL_VOLTAGE:
|
||||||
|
|
|
@ -851,7 +851,7 @@ TEST(OsdTest, TestElementWarningsBattery)
|
||||||
osdRefresh(simulationTime);
|
osdRefresh(simulationTime);
|
||||||
|
|
||||||
// then
|
// then
|
||||||
displayPortTestBufferSubstring(9, 10, "BATT NOT FULL");
|
displayPortTestBufferSubstring(9, 10, "BATT < FULL");
|
||||||
|
|
||||||
// given
|
// given
|
||||||
// full battery
|
// full battery
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue