mirror of
https://github.com/betaflight/betaflight.git
synced 2025-07-21 15:25:36 +03:00
OSD: allow to present odometer on post flight screen
This commit is contained in:
parent
eb7e6c0b39
commit
cd0e90fdde
3 changed files with 37 additions and 2 deletions
|
@ -1230,6 +1230,11 @@ const clivalue_t valueTable[] = {
|
||||||
#ifdef USE_GYRO_DATA_ANALYSE
|
#ifdef USE_GYRO_DATA_ANALYSE
|
||||||
{ "osd_stat_max_fft", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = OSD_STAT_MAX_FFT, PG_OSD_CONFIG, offsetof(osdConfig_t, enabled_stats)},
|
{ "osd_stat_max_fft", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = OSD_STAT_MAX_FFT, PG_OSD_CONFIG, offsetof(osdConfig_t, enabled_stats)},
|
||||||
#endif
|
#endif
|
||||||
|
#ifdef USE_PERSISTENT_STATS
|
||||||
|
{ "osd_stat_total_flights", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = OSD_STAT_TOTAL_FLIGHTS, PG_OSD_CONFIG, offsetof(osdConfig_t, enabled_stats)},
|
||||||
|
{ "osd_stat_total_time", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = OSD_STAT_TOTAL_TIME, PG_OSD_CONFIG, offsetof(osdConfig_t, enabled_stats)},
|
||||||
|
{ "osd_stat_total_dist", VAR_UINT32 | MASTER_VALUE | MODE_BITSET, .config.bitpos = OSD_STAT_TOTAL_DIST, PG_OSD_CONFIG, offsetof(osdConfig_t, enabled_stats)},
|
||||||
|
#endif
|
||||||
|
|
||||||
#ifdef USE_OSD_PROFILES
|
#ifdef USE_OSD_PROFILES
|
||||||
{ "osd_profile", VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 1, OSD_PROFILE_COUNT }, PG_OSD_CONFIG, offsetof(osdConfig_t, osdProfileIndex) },
|
{ "osd_profile", VAR_UINT8 | MASTER_VALUE, .config.minmaxUnsigned = { 1, OSD_PROFILE_COUNT }, PG_OSD_CONFIG, offsetof(osdConfig_t, osdProfileIndex) },
|
||||||
|
|
|
@ -75,6 +75,7 @@
|
||||||
|
|
||||||
#include "pg/pg.h"
|
#include "pg/pg.h"
|
||||||
#include "pg/pg_ids.h"
|
#include "pg/pg_ids.h"
|
||||||
|
#include "pg/stats.h"
|
||||||
|
|
||||||
#include "rx/rx.h"
|
#include "rx/rx.h"
|
||||||
|
|
||||||
|
@ -90,6 +91,9 @@
|
||||||
#include "hardware_revision.h"
|
#include "hardware_revision.h"
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#define VIDEO_BUFFER_CHARS_PAL 480
|
||||||
|
#define IS_DISPLAY_PAL (displayScreenSize(osdDisplayPort) == VIDEO_BUFFER_CHARS_PAL)
|
||||||
|
|
||||||
const char * const osdTimerSourceNames[] = {
|
const char * const osdTimerSourceNames[] = {
|
||||||
"ON TIME ",
|
"ON TIME ",
|
||||||
"TOTAL ARM",
|
"TOTAL ARM",
|
||||||
|
@ -464,10 +468,12 @@ static bool isSomeStatEnabled(void)
|
||||||
|
|
||||||
static void osdShowStats(uint16_t endBatteryVoltage)
|
static void osdShowStats(uint16_t endBatteryVoltage)
|
||||||
{
|
{
|
||||||
uint8_t top = 2;
|
uint8_t top = 1; /* first fully visible line */
|
||||||
char buff[OSD_ELEMENT_BUFFER_LENGTH];
|
char buff[OSD_ELEMENT_BUFFER_LENGTH];
|
||||||
|
|
||||||
displayClearScreen(osdDisplayPort);
|
displayClearScreen(osdDisplayPort);
|
||||||
|
|
||||||
|
if (IS_DISPLAY_PAL)
|
||||||
displayWrite(osdDisplayPort, 2, top++, " --- STATS ---");
|
displayWrite(osdDisplayPort, 2, top++, " --- STATS ---");
|
||||||
|
|
||||||
if (osdStatGetState(OSD_STAT_RTC_DATE_TIME)) {
|
if (osdStatGetState(OSD_STAT_RTC_DATE_TIME)) {
|
||||||
|
@ -603,6 +609,27 @@ static void osdShowStats(uint16_t endBatteryVoltage)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
#ifdef USE_PERSISTENT_STATS
|
||||||
|
if (osdStatGetState(OSD_STAT_TOTAL_FLIGHTS)) {
|
||||||
|
itoa(statsConfig()->stats_total_flights, buff, 10);
|
||||||
|
osdDisplayStatisticLabel(top++, "TOTAL FLIGHTS", buff);
|
||||||
|
}
|
||||||
|
if (osdStatGetState(OSD_STAT_TOTAL_TIME)) {
|
||||||
|
int minutes = statsConfig()->stats_total_time_s / 60;
|
||||||
|
tfp_sprintf(buff, "%d:%02dH", minutes / 60, minutes % 60);
|
||||||
|
osdDisplayStatisticLabel(top++, "TOTAL FLIGHT TIME", buff);
|
||||||
|
}
|
||||||
|
if (osdStatGetState(OSD_STAT_TOTAL_DIST)) {
|
||||||
|
#define METERS_PER_KILOMETER 1000
|
||||||
|
#define METERS_PER_MILE 1609
|
||||||
|
if (osdConfig()->units == OSD_UNIT_IMPERIAL)
|
||||||
|
tfp_sprintf(buff, "%dMI", statsConfig()->stats_total_dist_m / METERS_PER_MILE);
|
||||||
|
else
|
||||||
|
tfp_sprintf(buff, "%dKM", statsConfig()->stats_total_dist_m / METERS_PER_KILOMETER);
|
||||||
|
osdDisplayStatisticLabel(top++, "TOTAL DISTANCE", buff);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
}
|
}
|
||||||
|
|
||||||
static void osdShowArmed(void)
|
static void osdShowArmed(void)
|
||||||
|
|
|
@ -159,6 +159,9 @@ typedef enum {
|
||||||
OSD_STAT_MIN_LINK_QUALITY,
|
OSD_STAT_MIN_LINK_QUALITY,
|
||||||
OSD_STAT_FLIGHT_DISTANCE,
|
OSD_STAT_FLIGHT_DISTANCE,
|
||||||
OSD_STAT_MAX_FFT,
|
OSD_STAT_MAX_FFT,
|
||||||
|
OSD_STAT_TOTAL_FLIGHTS,
|
||||||
|
OSD_STAT_TOTAL_TIME,
|
||||||
|
OSD_STAT_TOTAL_DIST,
|
||||||
OSD_STAT_COUNT // MUST BE LAST
|
OSD_STAT_COUNT // MUST BE LAST
|
||||||
} osd_stats_e;
|
} osd_stats_e;
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue