1
0
Fork 0
mirror of https://github.com/iNavFlight/inav.git synced 2025-07-24 00:35:34 +03:00

Formatting changes

- Removed blank spaces from data, to make it look neater
- Current and Power are now on a single row
This commit is contained in:
Darren Lines 2024-02-20 08:12:24 +00:00
parent 014942a48d
commit dd9e459131

View file

@ -4272,7 +4272,7 @@ uint8_t drawStat_Stats(uint8_t statNameX, uint8_t row, uint8_t statValueX, bool
if (isBootStats)
tfp_sprintf(string_buffer, "%d:%02dH:M%c", (int)(tot_mins / 60), (int)(tot_mins % 60), '\0');
else
tfp_sprintf(string_buffer, ": %d:%02dH:M%c", (int)(tot_mins / 60), (int)(tot_mins % 60), '\0');
tfp_sprintf(string_buffer, ": %d:%02d H:M%c", (int)(tot_mins / 60), (int)(tot_mins % 60), '\0');
displayWrite(osdDisplayPort, statValueX-(isBootStats ? 7 : 0), row, string_buffer);
@ -4634,34 +4634,29 @@ uint8_t drawStat_BatteryVoltage(uint8_t col, uint8_t row, uint8_t statValX)
return row;
}
uint8_t drawStat_MaximumCurrent(uint8_t col, uint8_t row, uint8_t statValX)
uint8_t drawStat_MaximumPowerAndCurrent(uint8_t col, uint8_t row, uint8_t statValX)
{
char buff[12];
displayWrite(osdDisplayPort, col, row, "MAX CURRENT");
tfp_sprintf(buff, ": ");
osdFormatCentiNumber(buff + 2, stats.max_current, 0, 2, 0, 3, false);
tfp_sprintf(buff + strlen(buff), "%c", SYM_AMP);
displayWrite(osdDisplayPort, statValX, row++, buff);
char outBuff[12];
tfp_sprintf(outBuff, ": ");
osdFormatCentiNumber(buff, stats.max_current, 0, 2, 0, 3, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
strcat(outBuff, "/");
bool kiloWatt = osdFormatCentiNumber(buff, stats.max_power, 1000, 2, 2, 3, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
displayWrite(osdDisplayPort, statValX, row, outBuff);
return row;
}
if (kiloWatt)
displayWrite(osdDisplayPort, col, row, "MAX AMPS/K WATTS");
else
displayWrite(osdDisplayPort, col, row, "MAX AMPS/WATTS");
uint8_t drawStat_MaximumPower(uint8_t col, uint8_t row, uint8_t statValX)
{
char buff[12];
displayWrite(osdDisplayPort, col, row, "MAX POWER");
tfp_sprintf(buff, ": ");
bool kiloWatt = osdFormatCentiNumber(buff + 2, stats.max_power, 1000, 2, 2, 3, false);
tfp_sprintf(buff + strlen(osdFormatTrimWhiteSpace(buff)), "%c", (char)(kiloWatt ? SYM_KILOWATT : SYM_WATT));
displayWrite(osdDisplayPort, statValX, row++, buff);
return row;
return ++row;
}
uint8_t drawStat_UsedEnergy(uint8_t col, uint8_t row, uint8_t statValX)
{
char buff[12];
uint8_t buffOffset = 0;
if (osdDisplayIsHD())
displayWrite(osdDisplayPort, col, row, "USED ENERGY FLT/TOT");
@ -4671,11 +4666,13 @@ uint8_t drawStat_UsedEnergy(uint8_t col, uint8_t row, uint8_t statValX)
if (osdConfig()->stats_energy_unit == OSD_STATS_ENERGY_UNIT_MAH) {
tfp_sprintf(buff + 2, "%d/%d%c", (int)(getMAhDrawn() - stats.flightStartMAh), (int)getMAhDrawn(), SYM_MAH);
} else {
osdFormatCentiNumber(buff + 2, (getMWhDrawn() - stats.flightStartMWh) / 10, 0, 2, 0, 3, false);
tfp_sprintf(buff, "%s/", buff);
buffOffset = strlen(buff);
osdFormatCentiNumber(buff + buffOffset, getMWhDrawn() / 10, 0, 2, 0, 3, false);
tfp_sprintf(buff, "%s%c", buff, SYM_WH);
char preBuff[12];
osdFormatCentiNumber(preBuff, (getMWhDrawn() - stats.flightStartMWh) / 10, 0, 2, 0, 3, false);
strcat(buff, osdFormatTrimWhiteSpace(preBuff));
strcat(buff, "/");
osdFormatCentiNumber(preBuff, getMWhDrawn() / 10, 0, 2, 0, 3, false);
strcat(buff, osdFormatTrimWhiteSpace(preBuff));
tfp_sprintf(buff + strlen(buff), "%s%c", buff, SYM_WH);
}
displayWrite(osdDisplayPort, statValX, row++, buff);
@ -4685,7 +4682,7 @@ uint8_t drawStat_UsedEnergy(uint8_t col, uint8_t row, uint8_t statValX)
uint8_t drawStat_AverageEfficiency(uint8_t col, uint8_t row, uint8_t statValX, bool forceMetric)
{
char buff[15];
uint8_t buffOffset = 2;
char outBuff[15];
int32_t totalDistance = getTotalTravelDistance();
bool moreThanAh = false;
bool efficiencyValid = totalDistance >= 10000;
@ -4695,7 +4692,7 @@ uint8_t drawStat_AverageEfficiency(uint8_t col, uint8_t row, uint8_t statValX, b
else
displayWrite(osdDisplayPort, col, row, "AV EFFICIENCY F/T");
tfp_sprintf(buff, ": ");
tfp_sprintf(outBuff, ": ");
uint8_t digits = 3U; // Total number of digits (including decimal point)
#ifndef DISABLE_MSP_BF_COMPAT // IF BFCOMPAT is not supported, there's no need to check for it and change the values
if (isBfCompatibleVideoSystem(osdConfig())) {
@ -4710,56 +4707,77 @@ uint8_t drawStat_AverageEfficiency(uint8_t col, uint8_t row, uint8_t statValX, b
case OSD_UNIT_IMPERIAL:
if (osdConfig()->stats_energy_unit == OSD_STATS_ENERGY_UNIT_MAH) {
if (efficiencyValid) {
moreThanAh = osdFormatCentiNumber(buff + buffOffset, (int32_t)((getMAhDrawn() - stats.flightStartMAh) * 10000.0f * METERS_PER_MILE / totalDistance), 1000, 0, 2, digits, false);
strcat(buff, "/");
buffOffset = strlen(buff);
moreThanAh = osdFormatCentiNumber(buff + buffOffset, (int32_t)(getMAhDrawn() * 10000.0f * METERS_PER_MILE / totalDistance), 1000, 0, 2, digits, false);
if (!moreThanAh) {
tfp_sprintf(buff + strlen(buff), "%c%c", SYM_MAH_MI_0, SYM_MAH_MI_1);
} else {
tfp_sprintf(buff + strlen(buff), "%c", SYM_AH_MI);
moreThanAh = osdFormatCentiNumber(buff, (int32_t)((getMAhDrawn() - stats.flightStartMAh) * 10000.0f * METERS_PER_MILE / totalDistance), 1000, 0, 2, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
if (osdDisplayIsHD()) {
if (!moreThanAh)
tfp_sprintf(outBuff + strlen(outBuff), "%c%c", SYM_MAH_MI_0, SYM_MAH_MI_1);
else
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_AH_MI);
moreThanAh = false;
}
strcat(outBuff, "/");
moreThanAh = moreThanAh || osdFormatCentiNumber(buff, (int32_t)(getMAhDrawn() * 10000.0f * METERS_PER_MILE / totalDistance), 1000, 0, 2, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
if (!moreThanAh)
tfp_sprintf(outBuff + strlen(outBuff), "%c%c", SYM_MAH_MI_0, SYM_MAH_MI_1);
else
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_AH_MI);
} else {
tfp_sprintf(buff + buffOffset, "---/---%c%c", SYM_MAH_MI_0, SYM_MAH_MI_1);
tfp_sprintf(outBuff + strlen(outBuff), "---/---%c%c", SYM_MAH_MI_0, SYM_MAH_MI_1);
}
} else {
if (efficiencyValid) {
osdFormatCentiNumber(buff + buffOffset, (int32_t)((getMWhDrawn() - stats.flightStartMWh) * 10.0f * METERS_PER_MILE / totalDistance), 0, 2, 0, digits, false);
strcat(buff, "/");
buffOffset = strlen(buff);
osdFormatCentiNumber(buff + buffOffset, (int32_t)(getMWhDrawn() * 10.0f * METERS_PER_MILE / totalDistance), 0, 2, 0, digits, false);
osdFormatCentiNumber(buff, (int32_t)((getMWhDrawn() - stats.flightStartMWh) * 10.0f * METERS_PER_MILE / totalDistance), 0, 2, 0, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
strcat(outBuff, "/");
osdFormatCentiNumber(buff + strlen(buff), (int32_t)(getMWhDrawn() * 10.0f * METERS_PER_MILE / totalDistance), 0, 2, 0, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
} else {
strcat(buff, "---/---");
strcat(outBuff, "---/---");
}
tfp_sprintf(buff + strlen(buff), "%c", SYM_WH_MI);
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_WH_MI);
}
break;
case OSD_UNIT_GA:
if (osdConfig()->stats_energy_unit == OSD_STATS_ENERGY_UNIT_MAH) {
if (efficiencyValid) {
moreThanAh = osdFormatCentiNumber(buff + buffOffset, (int32_t)((getMAhDrawn()-stats.flightStartMAh) * 10000.0f * METERS_PER_NAUTICALMILE / totalDistance), 1000, 0, 2, digits, false);
strcat(buff, "/");
buffOffset = strlen(buff);
moreThanAh = osdFormatCentiNumber(buff + buffOffset, (int32_t)(getMAhDrawn() * 10000.0f * METERS_PER_NAUTICALMILE / totalDistance), 1000, 0, 2, digits, false);
moreThanAh = osdFormatCentiNumber(buff, (int32_t)((getMAhDrawn()-stats.flightStartMAh) * 10000.0f * METERS_PER_NAUTICALMILE / totalDistance), 1000, 0, 2, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
if (osdDisplayIsHD()) {
if (!moreThanAh)
tfp_sprintf(outBuff + strlen(outBuff), "%c%c", SYM_MAH_NM_0, SYM_MAH_NM_1);
else
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_AH_NM);
moreThanAh = false;
}
strcat(outBuff, "/");
moreThanAh = moreThanAh || osdFormatCentiNumber(buff, (int32_t)(getMAhDrawn() * 10000.0f * METERS_PER_NAUTICALMILE / totalDistance), 1000, 0, 2, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
if (!moreThanAh) {
tfp_sprintf(buff + strlen(buff), "%c%c", SYM_MAH_NM_0, SYM_MAH_NM_1);
tfp_sprintf(outBuff + strlen(outBuff), "%c%c", SYM_MAH_NM_0, SYM_MAH_NM_1);
} else {
tfp_sprintf(buff + strlen(buff), "%c", SYM_AH_NM);
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_AH_NM);
}
} else {
tfp_sprintf(buff + buffOffset, "---/---%c%c", SYM_MAH_NM_0, SYM_MAH_NM_1);
tfp_sprintf(outBuff + strlen(outBuff), "---/---%c%c", SYM_MAH_NM_0, SYM_MAH_NM_1);
}
} else {
if (efficiencyValid) {
osdFormatCentiNumber(buff + buffOffset, (int32_t)((getMWhDrawn()-stats.flightStartMWh) * 10.0f * METERS_PER_NAUTICALMILE / totalDistance), 0, 2, 0, digits, false);
strcat(buff, "/");
buffOffset = strlen(buff);
osdFormatCentiNumber(buff + buffOffset, (int32_t)(getMWhDrawn() * 10.0f * METERS_PER_NAUTICALMILE / totalDistance), 0, 2, 0, digits, false);
osdFormatCentiNumber(buff, (int32_t)((getMWhDrawn()-stats.flightStartMWh) * 10.0f * METERS_PER_NAUTICALMILE / totalDistance), 0, 2, 0, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
strcat(outBuff, "/");
osdFormatCentiNumber(buff, (int32_t)(getMWhDrawn() * 10.0f * METERS_PER_NAUTICALMILE / totalDistance), 0, 2, 0, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
} else {
strcat(buff, "---/---");
strcat(outBuff, "---/---");
}
tfp_sprintf(buff + strlen(buff), "%c", SYM_WH_NM);
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_WH_NM);
}
break;
case OSD_UNIT_METRIC_MPH:
@ -4772,33 +4790,44 @@ uint8_t drawStat_AverageEfficiency(uint8_t col, uint8_t row, uint8_t statValX, b
if (forceMetric) {
if (osdConfig()->stats_energy_unit == OSD_STATS_ENERGY_UNIT_MAH) {
if (efficiencyValid) {
moreThanAh = osdFormatCentiNumber(buff + buffOffset, (int32_t)((getMAhDrawn() - stats.flightStartMAh) * 10000000.0f / totalDistance), 1000, 0, 2, digits, false);
strcat(buff, "/");
buffOffset = strlen(buff);
moreThanAh = osdFormatCentiNumber(buff + buffOffset, (int32_t)(getMAhDrawn() * 10000000.0f / totalDistance), 1000, 0, 2, digits, false);
moreThanAh = osdFormatCentiNumber(buff, (int32_t)((getMAhDrawn() - stats.flightStartMAh) * 10000000.0f / totalDistance), 1000, 0, 2, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
if (osdDisplayIsHD()) {
if (!moreThanAh)
tfp_sprintf(outBuff + strlen(outBuff), "%c%c", SYM_MAH_KM_0, SYM_MAH_KM_1);
else
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_AH_KM);
moreThanAh = false;
}
strcat(outBuff, "/");
moreThanAh = moreThanAh || osdFormatCentiNumber(buff, (int32_t)(getMAhDrawn() * 10000000.0f / totalDistance), 1000, 0, 2, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
if (!moreThanAh) {
tfp_sprintf(buff + strlen(buff), "%c%c", SYM_MAH_KM_0, SYM_MAH_KM_1);
tfp_sprintf(outBuff + strlen(outBuff), "%c%c", SYM_MAH_KM_0, SYM_MAH_KM_1);
} else {
tfp_sprintf(buff + strlen(buff), "%c", SYM_AH_KM);
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_AH_KM);
}
} else {
tfp_sprintf(buff + buffOffset, "---/---%c%c", SYM_MAH_KM_0, SYM_MAH_KM_1);
tfp_sprintf(outBuff + strlen(outBuff), "---/---%c%c", SYM_MAH_KM_0, SYM_MAH_KM_1);
}
} else {
if (efficiencyValid) {
osdFormatCentiNumber(buff + buffOffset, (int32_t)((getMWhDrawn() - stats.flightStartMWh) * 10000.0f / totalDistance), 0, 2, 0, digits, false);
strcat(buff, "/");
buffOffset = strlen(buff);
osdFormatCentiNumber(buff + buffOffset, (int32_t)(getMWhDrawn() * 10000.0f / totalDistance), 0, 2, 0, digits, false);
osdFormatCentiNumber(buff, (int32_t)((getMWhDrawn() - stats.flightStartMWh) * 10000.0f / totalDistance), 0, 2, 0, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
strcat(outBuff, "/");
osdFormatCentiNumber(buff, (int32_t)(getMWhDrawn() * 10000.0f / totalDistance), 0, 2, 0, digits, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
} else {
strcat(buff, "---/---");
strcat(outBuff, "---/---");
}
tfp_sprintf(buff + strlen(buff), "%c", SYM_WH_KM);
tfp_sprintf(outBuff + strlen(outBuff), "%c", SYM_WH_KM);
}
}
osdLeftAlignString(buff);
displayWrite(osdDisplayPort, statValX, row++, buff);
tfp_sprintf(outBuff + strlen(outBuff), "%c", '\0');
displayWrite(osdDisplayPort, statValX, row++, outBuff);
return row;
}
@ -4876,7 +4905,7 @@ uint8_t drawStat_ESCTemperature(uint8_t col, uint8_t row, uint8_t statValX)
uint8_t drawStat_GForce(uint8_t col, uint8_t row, uint8_t statValX)
{
char buff[12];
uint8_t multiValueXOffset = 0;
char outBuff[12];
const float max_gforce = accGetMeasuredMaxG();
const acc_extremes_t *acc_extremes = accGetMeasuredExtremes();
@ -4888,27 +4917,27 @@ uint8_t drawStat_GForce(uint8_t col, uint8_t row, uint8_t statValX)
else
displayWrite(osdDisplayPort, col, row, "MAX/MIN Z/MAX Z G-FORCE");
tfp_sprintf(buff, ": ");
osdFormatCentiNumber(buff + 2, max_gforce * 100, 0, 2, 0, 3, false);
tfp_sprintf(outBuff, ": ");
osdFormatCentiNumber(buff, max_gforce * 100, 0, 2, 0, 3, false);
if (!osdDisplayIsHD()) {
displayWrite(osdDisplayPort, statValX, row++, buff);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
displayWrite(osdDisplayPort, statValX, row++, outBuff);
displayWrite(osdDisplayPort, col, row, "MIN/MAX Z G-FORCE");
memset(buff, '\0', strlen(buff));
tfp_sprintf(buff, ": ");
memset(outBuff, '\0', strlen(outBuff));
tfp_sprintf(outBuff, ": ");
} else {
strcat(osdFormatTrimWhiteSpace(buff), "/");
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
strcat(outBuff, "/");
}
multiValueXOffset = strlen(buff);
osdFormatCentiNumber(buff + multiValueXOffset, acc_extremes_min * 100, 0, 2, 0, 4, false);
osdLeftAlignString(buff);
strcat(osdFormatTrimWhiteSpace(buff), "/");
osdFormatCentiNumber(buff, acc_extremes_min * 100, 0, 2, 0, 4, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
strcat(outBuff, "/");
multiValueXOffset = strlen(buff);
osdFormatCentiNumber(buff + multiValueXOffset, acc_extremes_max * 100, 0, 2, 0, 3, false);
osdLeftAlignString(buff);
displayWrite(osdDisplayPort, statValX, row++, buff);
osdFormatCentiNumber(buff, acc_extremes_max * 100, 0, 2, 0, 3, false);
strcat(outBuff, osdFormatTrimWhiteSpace(buff));
displayWrite(osdDisplayPort, statValX, row++, outBuff);
return row;
}
@ -4959,49 +4988,47 @@ static void osdShowStats(bool isSinglePageStatsCompatible, uint8_t page)
displayWrite(osdDisplayPort, (osdDisplayPort->cols - strlen(statsHeader[page + 1])) / 2, row++, statsHeader[page]);
if (isSinglePageStatsCompatible) {
// Top 15 rows for most important stats. Max 19 rows
row = drawStat_FlightTime(statNameX, row, statValuesX);
row = drawStat_FlightDistance(statNameX, row, statValuesX);
if (feature(FEATURE_GPS)) row = drawStat_MaxDistanceFromHome(statNameX, row, statValuesX);
if (feature(FEATURE_GPS)) row = drawStat_Speed(statNameX, row, statValuesX);
row = drawStat_MaximumAltitude(statNameX, row, statValuesX);
row = drawStat_BatteryVoltage(statNameX, row, statValuesX);
if (feature(FEATURE_CURRENT_METER)) row = drawStat_MaximumCurrent(statNameX, row, statValuesX);
if (feature(FEATURE_CURRENT_METER)) row = drawStat_MaximumPower(statNameX, row, statValuesX);
if (feature(FEATURE_CURRENT_METER)) row = drawStat_UsedEnergy(statNameX, row, statValuesX);
if (feature(FEATURE_CURRENT_METER) && feature(FEATURE_GPS)) row = drawStat_AverageEfficiency(statNameX, row, statValuesX, false);
if (osdConfig()->stats_show_metric_efficiency && osdIsNotMetric() && feature(FEATURE_CURRENT_METER) && feature(FEATURE_GPS)) row = drawStat_AverageEfficiency(statNameX, row, statValuesX, true);
row = drawStat_RXStats(statNameX, row, statValuesX);
if (feature(FEATURE_GPS)) row = drawStat_GPS(statNameX, row, statValuesX);
if (STATE(ESC_SENSOR_ENABLED)) row = drawStat_ESCTemperature(statNameX, row, statValuesX);
// Top 15 rows for most important stats. Max 19 rows (WTF)
row = drawStat_FlightTime(statNameX, row, statValuesX); // 1 row
row = drawStat_FlightDistance(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_GPS)) row = drawStat_MaxDistanceFromHome(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_GPS)) row = drawStat_Speed(statNameX, row, statValuesX); // 1 row
row = drawStat_MaximumAltitude(statNameX, row, statValuesX); // 1 row
row = drawStat_BatteryVoltage(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_CURRENT_METER)) row = drawStat_MaximumPowerAndCurrent(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_CURRENT_METER)) row = drawStat_UsedEnergy(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_CURRENT_METER) && feature(FEATURE_GPS)) row = drawStat_AverageEfficiency(statNameX, row, statValuesX, false); // 1 row
if (osdConfig()->stats_show_metric_efficiency && osdIsNotMetric() && feature(FEATURE_CURRENT_METER) && feature(FEATURE_GPS)) row = drawStat_AverageEfficiency(statNameX, row, statValuesX, true); // 1 row
row = drawStat_RXStats(statNameX, row, statValuesX); // 1 row if non-CRSF else 2 rows
if (feature(FEATURE_GPS)) row = drawStat_GPS(statNameX, row, statValuesX); // 1 row
if (STATE(ESC_SENSOR_ENABLED)) row = drawStat_ESCTemperature(statNameX, row, statValuesX); // 1 row
// Draw these if there is space space
if (row < (osdDisplayPort->cols-3)) row = drawStat_GForce(statNameX, row, statValuesX);
if (row < (osdDisplayPort->cols-3)) row = drawStat_GForce(statNameX, row, statValuesX); // 1 row HD or 2 rows SD
#ifdef USE_STATS
if (row < (osdDisplayPort->cols-7) && statsConfig()->stats_enabled) row = drawStat_Stats(statNameX, row, statValuesX, false);
if (row < (osdDisplayPort->cols-7) && statsConfig()->stats_enabled) row = drawStat_Stats(statNameX, row, statValuesX, false); // 4 rows
#endif
} else {
switch (page) {
case 0:
// Max 10 rows
row = drawStat_FlightTime(statNameX, row, statValuesX);
row = drawStat_FlightDistance(statNameX, row, statValuesX);
if (feature(FEATURE_GPS)) row = drawStat_MaxDistanceFromHome(statNameX, row, statValuesX);
if (feature(FEATURE_GPS)) row = drawStat_Speed(statNameX, row, statValuesX);
row = drawStat_MaximumAltitude(statNameX, row, statValuesX);
row = drawStat_BatteryVoltage(statNameX, row, statValuesX);
if (feature(FEATURE_CURRENT_METER)) row = drawStat_MaximumCurrent(statNameX, row, statValuesX);
if (feature(FEATURE_CURRENT_METER))row = drawStat_MaximumPower(statNameX, row, statValuesX);
if (feature(FEATURE_CURRENT_METER))row = drawStat_UsedEnergy(statNameX, row, statValuesX);
if (feature(FEATURE_CURRENT_METER) && feature(FEATURE_GPS)) row = drawStat_AverageEfficiency(statNameX, row, statValuesX, false);
row = drawStat_FlightTime(statNameX, row, statValuesX); // 1 row
row = drawStat_FlightDistance(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_GPS)) row = drawStat_MaxDistanceFromHome(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_GPS)) row = drawStat_Speed(statNameX, row, statValuesX); // 1 row
row = drawStat_MaximumAltitude(statNameX, row, statValuesX); // 1 row
row = drawStat_BatteryVoltage(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_CURRENT_METER)) row = drawStat_MaximumPowerAndCurrent(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_CURRENT_METER))row = drawStat_UsedEnergy(statNameX, row, statValuesX); // 1 row
if (feature(FEATURE_CURRENT_METER) && feature(FEATURE_GPS)) row = drawStat_AverageEfficiency(statNameX, row, statValuesX, false); // 1 row
if (feature(FEATURE_GPS))row = drawStat_GPS(statNameX, row, statValuesX); // 1 row
break;
case 1:
// Max 10 rows
row = drawStat_RXStats(statNameX, row, statValuesX); // 2 rows
if (feature(FEATURE_GPS))row = drawStat_GPS(statNameX, row, statValuesX);
if (STATE(ESC_SENSOR_ENABLED)) row = drawStat_ESCTemperature(statNameX, row, statValuesX);
row = drawStat_GForce(statNameX, row, statValuesX); // 2 rows
if (osdConfig()->stats_show_metric_efficiency && osdIsNotMetric() && feature(FEATURE_CURRENT_METER) && feature(FEATURE_GPS)) row = drawStat_AverageEfficiency(statNameX, row, statValuesX, true);
row = drawStat_RXStats(statNameX, row, statValuesX); // 1 row if non-CRSF else 2 rows
if (STATE(ESC_SENSOR_ENABLED)) row = drawStat_ESCTemperature(statNameX, row, statValuesX); // 1 row
row = drawStat_GForce(statNameX, row, statValuesX); // 1 row HD or 2 rows SD
if (osdConfig()->stats_show_metric_efficiency && osdIsNotMetric() && feature(FEATURE_CURRENT_METER) && feature(FEATURE_GPS)) row = drawStat_AverageEfficiency(statNameX, row, statValuesX, true); // 1 row
#ifdef USE_BLACKBOX
#ifdef USE_SDCARD
if (feature(FEATURE_BLACKBOX)) {
@ -5016,12 +5043,12 @@ static void osdShowStats(bool isSinglePageStatsCompatible, uint8_t page)
else
strcat(buff, ": INVALID");
displayWrite(osdDisplayPort, statValuesX, row++, buff);
displayWrite(osdDisplayPort, statValuesX, row++, buff); // 1 row
}
#endif
#endif
#ifdef USE_STATS
if (row < (osdDisplayPort->cols-7) && statsConfig()->stats_enabled) row = drawStat_Stats(statNameX, row, statValuesX, false);
if (row < (osdDisplayPort->cols-7) && statsConfig()->stats_enabled) row = drawStat_Stats(statNameX, row, statValuesX, false); // 4 rows
#endif
break;