mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-25 17:25:20 +03:00
Added rx link quality indicator (based on rx frame error rate) to OSD.
This commit is contained in:
parent
71c563fdb4
commit
9b9a86e4c5
8 changed files with 113 additions and 22 deletions
|
@ -135,12 +135,13 @@ typedef struct statistic_s {
|
|||
int16_t max_speed;
|
||||
int16_t min_voltage; // /10
|
||||
int16_t max_current; // /10
|
||||
int16_t min_rssi;
|
||||
uint8_t min_rssi;
|
||||
int32_t max_altitude;
|
||||
int16_t max_distance;
|
||||
float max_g_force;
|
||||
int16_t max_esc_temp;
|
||||
int32_t max_esc_rpm;
|
||||
uint8_t min_link_quality;
|
||||
} statistic_t;
|
||||
|
||||
static statistic_t stats;
|
||||
|
@ -217,6 +218,9 @@ static const uint8_t osdElementDisplayOrder[] = {
|
|||
#ifdef USE_ADC_INTERNAL
|
||||
OSD_CORE_TEMPERATURE,
|
||||
#endif
|
||||
#ifdef USE_RX_LINK_QUALITY_INFO
|
||||
OSD_LINK_QUALITY,
|
||||
#endif
|
||||
};
|
||||
|
||||
PG_REGISTER_WITH_RESET_FN(osdConfig_t, osdConfig, PG_OSD_CONFIG, 3);
|
||||
|
@ -503,13 +507,28 @@ static bool osdDrawSingleElement(uint8_t item)
|
|||
case OSD_RSSI_VALUE:
|
||||
{
|
||||
uint16_t osdRssi = getRssi() * 100 / 1024; // change range
|
||||
if (osdRssi >= 100)
|
||||
if (osdRssi >= 100) {
|
||||
osdRssi = 99;
|
||||
}
|
||||
|
||||
tfp_sprintf(buff, "%c%2d", SYM_RSSI, osdRssi);
|
||||
break;
|
||||
}
|
||||
|
||||
#ifdef USE_RX_LINK_QUALITY_INFO
|
||||
case OSD_LINK_QUALITY:
|
||||
{
|
||||
// change range to 0-9 (two sig. fig. adds little extra value, also reduces screen estate)
|
||||
uint8_t osdLinkQuality = rxGetLinkQuality() * 10 / LINK_QUALITY_MAX_VALUE;
|
||||
if (osdLinkQuality >= 10) {
|
||||
osdLinkQuality = 9;
|
||||
}
|
||||
|
||||
tfp_sprintf(buff, "%1d", osdLinkQuality);
|
||||
break;
|
||||
}
|
||||
#endif
|
||||
|
||||
case OSD_MAIN_BATT_VOLTAGE:
|
||||
buff[0] = osdGetBatterySymbol(osdGetBatteryAverageCellVoltage());
|
||||
tfp_sprintf(buff + 1, "%2d.%1d%c", getBatteryVoltage() / 10, getBatteryVoltage() % 10, SYM_VOLT);
|
||||
|
@ -1332,13 +1351,14 @@ static void osdResetStats(void)
|
|||
stats.max_current = 0;
|
||||
stats.max_speed = 0;
|
||||
stats.min_voltage = 500;
|
||||
stats.min_rssi = 99;
|
||||
stats.min_rssi = 99; // percent
|
||||
stats.max_altitude = 0;
|
||||
stats.max_distance = 0;
|
||||
stats.armed_time = 0;
|
||||
stats.max_g_force = 0;
|
||||
stats.max_esc_temp = 0;
|
||||
stats.max_esc_rpm = 0;
|
||||
stats.min_link_quality = 99; // percent
|
||||
}
|
||||
|
||||
static void osdUpdateStats(void)
|
||||
|
@ -1382,6 +1402,13 @@ static void osdUpdateStats(void)
|
|||
stats.max_g_force = osdGForce;
|
||||
}
|
||||
|
||||
#ifdef USE_RX_LINK_QUALITY_INFO
|
||||
value = rxGetLinkQualityPercent();
|
||||
if (stats.min_link_quality > value) {
|
||||
stats.min_link_quality = value;
|
||||
}
|
||||
#endif
|
||||
|
||||
#ifdef USE_GPS
|
||||
if (STATE(GPS_FIX) && STATE(GPS_FIX_HOME)) {
|
||||
value = GPS_distanceToHome;
|
||||
|
@ -1578,6 +1605,13 @@ static void osdShowStats(uint16_t endBatteryVoltage)
|
|||
}
|
||||
#endif
|
||||
|
||||
#ifdef USE_RX_LINK_QUALITY_INFO
|
||||
if (osdStatGetState(OSD_STAT_MIN_LINK_QUALITY)) {
|
||||
itoa(stats.min_link_quality, buff, 10);
|
||||
strcat(buff, "%");
|
||||
osdDisplayStatisticLabel(top++, "MIN LINK", buff);
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
static void osdShowArmed(void)
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue