From a8af467665dcb9eda359150fac783a611a5536c5 Mon Sep 17 00:00:00 2001 From: breadoven <56191411+breadoven@users.noreply.github.com> Date: Sat, 10 Dec 2022 23:51:50 +0000 Subject: [PATCH 1/4] Update osd.c --- src/main/io/osd.c | 108 ++++++++++++++++++++++++++++------------------ 1 file changed, 67 insertions(+), 41 deletions(-) diff --git a/src/main/io/osd.c b/src/main/io/osd.c index fed65bef81..9f84393232 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -3247,26 +3247,36 @@ uint8_t osdIncElementIndex(uint8_t elementIndex) { ++elementIndex; - if (elementIndex == OSD_ARTIFICIAL_HORIZON) - ++elementIndex; - -#ifndef USE_TEMPERATURE_SENSOR - if (elementIndex == OSD_TEMP_SENSOR_0_TEMPERATURE) - elementIndex = OSD_ALTITUDE_MSL; -#endif - - if (!sensors(SENSOR_ACC)) { - if (elementIndex == OSD_CROSSHAIRS) { - elementIndex = OSD_ONTIME; - } + if (elementIndex == OSD_ARTIFICIAL_HORIZON) { // always drawn last so skip + elementIndex++; } - if (!feature(FEATURE_VBAT)) { +#ifndef USE_TEMPERATURE_SENSOR + if (elementIndex == OSD_TEMP_SENSOR_0_TEMPERATURE) { + elementIndex = OSD_ALTITUDE_MSL; + } +#endif + + if (!(feature(FEATURE_VBAT) && feature(FEATURE_CURRENT_METER))) { + if (elementIndex == OSD_POWER) { + elementIndex = OSD_GPS_LON; + } if (elementIndex == OSD_SAG_COMPENSATED_MAIN_BATT_VOLTAGE) { elementIndex = OSD_LEVEL_PIDS; } +#ifdef USE_POWER_LIMITS + if (elementIndex == OSD_PLIMIT_REMAINING_BURST_TIME) { + elementIndex = OSD_GLIDESLOPE; + } +#endif } +#ifndef USE_POWER_LIMITS + if (elementIndex == OSD_PLIMIT_REMAINING_BURST_TIME) { + elementIndex = OSD_GLIDESLOPE; + } +#endif + if (!feature(FEATURE_CURRENT_METER)) { if (elementIndex == OSD_CURRENT_DRAW) { elementIndex = OSD_GPS_SPEED; @@ -3277,43 +3287,59 @@ uint8_t osdIncElementIndex(uint8_t elementIndex) if (elementIndex == OSD_REMAINING_FLIGHT_TIME_BEFORE_RTH) { elementIndex = OSD_HOME_HEADING_ERROR; } - if (elementIndex == OSD_SAG_COMPENSATED_MAIN_BATT_VOLTAGE) { - elementIndex = OSD_LEVEL_PIDS; - } - } - - if (!feature(FEATURE_GPS)) { - if (elementIndex == OSD_GPS_SPEED) { - elementIndex = OSD_ALTITUDE; - } - if (elementIndex == OSD_GPS_LON) { - elementIndex = OSD_VARIO; - } - if (elementIndex == OSD_GPS_HDOP) { - elementIndex = OSD_MAIN_BATT_CELL_VOLTAGE; - } - if (elementIndex == OSD_TRIP_DIST) { - elementIndex = OSD_ATTITUDE_PITCH; - } - if (elementIndex == OSD_WIND_SPEED_HORIZONTAL) { - elementIndex = OSD_SAG_COMPENSATED_MAIN_BATT_VOLTAGE; - } - if (elementIndex == OSD_3D_SPEED) { - elementIndex++; + if (elementIndex == OSD_CLIMB_EFFICIENCY) { + elementIndex = OSD_NAV_WP_MULTI_MISSION_INDEX; } } if (!STATE(ESC_SENSOR_ENABLED)) { if (elementIndex == OSD_ESC_RPM) { - elementIndex++; + elementIndex = OSD_AZIMUTH; } } -#ifndef USE_POWER_LIMITS - if (elementIndex == OSD_NAV_FW_CONTROL_SMOOTHNESS) { - elementIndex = OSD_ITEM_COUNT; + if (!feature(FEATURE_GPS)) { + if (elementIndex == OSD_GPS_HDOP || elementIndex == OSD_TRIP_DIST || elementIndex == OSD_3D_SPEED || elementIndex == OSD_MISSION || + elementIndex == OSD_AZIMUTH) { + elementIndex++; + } + if (elementIndex == OSD_HEADING_GRAPH && !sensors(SENSOR_MAG)) { + elementIndex = feature(FEATURE_CURRENT_METER) ? OSD_WH_DRAWN : OSD_ATTITUDE_PITCH; + } + if (elementIndex == OSD_EFFICIENCY_WH_PER_KM) { + elementIndex = OSD_ATTITUDE_PITCH; + } + if (elementIndex == OSD_GPS_SPEED) { + elementIndex = OSD_ALTITUDE; + } + if (elementIndex == OSD_GPS_LON) { + elementIndex = sensors(SENSOR_MAG) ? OSD_HEADING : OSD_VARIO; + } + if (elementIndex == OSD_MAP_NORTH || elementIndex == OSD_HOME_HEADING_ERROR) { + elementIndex = feature(FEATURE_CURRENT_METER) ? OSD_SAG_COMPENSATED_MAIN_BATT_VOLTAGE : OSD_LEVEL_PIDS; + } + if (elementIndex == OSD_PLUS_CODE) { + elementIndex = OSD_GFORCE; + } + if (elementIndex == OSD_GLIDESLOPE) { + elementIndex = OSD_AIR_MAX_SPEED; + } + if (elementIndex == OSD_GLIDE_RANGE) { + elementIndex = feature(FEATURE_CURRENT_METER) ? OSD_CLIMB_EFFICIENCY : OSD_ITEM_COUNT; + } + if (elementIndex == OSD_NAV_WP_MULTI_MISSION_INDEX) { + elementIndex = OSD_ITEM_COUNT; + } + } + + if (!sensors(SENSOR_ACC)) { + if (elementIndex == OSD_CROSSHAIRS) { + elementIndex = OSD_ONTIME; + } + if (elementIndex == OSD_GFORCE) { + elementIndex = OSD_RC_SOURCE; + } } -#endif if (elementIndex == OSD_ITEM_COUNT) { elementIndex = 0; From 10b85b8df7952ac3caa24866264f68f9ba7b8cc3 Mon Sep 17 00:00:00 2001 From: breadoven <56191411+breadoven@users.noreply.github.com> Date: Sun, 11 Dec 2022 22:16:42 +0000 Subject: [PATCH 2/4] Update osd.c --- src/main/io/osd.c | 48 +++++++++++++++++++++++------------------------ 1 file changed, 24 insertions(+), 24 deletions(-) diff --git a/src/main/io/osd.c b/src/main/io/osd.c index 9f84393232..e5024031c2 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -1762,23 +1762,6 @@ static bool osdDrawSingleElement(uint8_t item) osdFormatDistanceSymbol(buff + 1, getTotalTravelDistance(), 0); break; - case OSD_HEADING: - { - buff[0] = SYM_HEADING; - if (osdIsHeadingValid()) { - int16_t h = DECIDEGREES_TO_DEGREES(osdGetHeading()); - if (h < 0) { - h += 360; - } - tfp_sprintf(&buff[1], "%3d", h); - } else { - buff[1] = buff[2] = buff[3] = '-'; - } - buff[4] = SYM_DEGREES; - buff[5] = '\0'; - break; - } - case OSD_GROUND_COURSE: { buff[0] = SYM_GROUND_COURSE; @@ -2701,6 +2684,23 @@ static bool osdDrawSingleElement(uint8_t item) break; } + case OSD_HEADING: + { + buff[0] = SYM_HEADING; + if (osdIsHeadingValid()) { + int16_t h = DECIDEGREES_TO_DEGREES(osdGetHeading()); + if (h < 0) { + h += 360; + } + tfp_sprintf(&buff[1], "%3d", h); + } else { + buff[1] = buff[2] = buff[3] = '-'; + } + buff[4] = SYM_DEGREES; + buff[5] = '\0'; + break; + } + case OSD_HEADING_GRAPH: { if (osdIsHeadingValid()) { @@ -3315,7 +3315,7 @@ uint8_t osdIncElementIndex(uint8_t elementIndex) if (elementIndex == OSD_GPS_LON) { elementIndex = sensors(SENSOR_MAG) ? OSD_HEADING : OSD_VARIO; } - if (elementIndex == OSD_MAP_NORTH || elementIndex == OSD_HOME_HEADING_ERROR) { + if (elementIndex == OSD_MAP_NORTH) { elementIndex = feature(FEATURE_CURRENT_METER) ? OSD_SAG_COMPENSATED_MAIN_BATT_VOLTAGE : OSD_LEVEL_PIDS; } if (elementIndex == OSD_PLUS_CODE) { @@ -3350,18 +3350,18 @@ uint8_t osdIncElementIndex(uint8_t elementIndex) void osdDrawNextElement(void) { static uint8_t elementIndex = 0; - // Prevent infinite loop when no elements are enabled + // Flag for end of loop, also prevents infinite loop when no elements are enabled uint8_t index = elementIndex; do { elementIndex = osdIncElementIndex(elementIndex); - } while(!osdDrawSingleElement(elementIndex) && index != elementIndex); + } while (!osdDrawSingleElement(elementIndex) && index != elementIndex); // Draw artificial horizon + tracking telemtry last - osdDrawSingleElement(OSD_ARTIFICIAL_HORIZON); - if (osdConfig()->telemetry>0){ - osdDisplayTelemetry(); - } + osdDrawSingleElement(OSD_ARTIFICIAL_HORIZON); + if (osdConfig()->telemetry>0){ + osdDisplayTelemetry(); } +} PG_RESET_TEMPLATE(osdConfig_t, osdConfig, .rssi_alarm = SETTING_OSD_RSSI_ALARM_DEFAULT, From 59541dc1395cab8411dca4aabc620e5a7600d7d6 Mon Sep 17 00:00:00 2001 From: breadoven <56191411+breadoven@users.noreply.github.com> Date: Sun, 1 Jan 2023 23:32:58 +0000 Subject: [PATCH 3/4] Update osd.c --- src/main/io/osd.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/src/main/io/osd.c b/src/main/io/osd.c index e5024031c2..de93246613 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -3282,6 +3282,9 @@ uint8_t osdIncElementIndex(uint8_t elementIndex) elementIndex = OSD_GPS_SPEED; } if (elementIndex == OSD_EFFICIENCY_MAH_PER_KM) { + elementIndex = OSD_BATTERY_REMAINING_PERCENT; + } + if (elementIndex == OSD_EFFICIENCY_WH_PER_KM) { elementIndex = OSD_TRIP_DIST; } if (elementIndex == OSD_REMAINING_FLIGHT_TIME_BEFORE_RTH) { @@ -3300,11 +3303,14 @@ uint8_t osdIncElementIndex(uint8_t elementIndex) if (!feature(FEATURE_GPS)) { if (elementIndex == OSD_GPS_HDOP || elementIndex == OSD_TRIP_DIST || elementIndex == OSD_3D_SPEED || elementIndex == OSD_MISSION || - elementIndex == OSD_AZIMUTH) { + elementIndex == OSD_AZIMUTH || elementIndex == OSD_BATTERY_REMAINING_CAPACITY) { elementIndex++; } if (elementIndex == OSD_HEADING_GRAPH && !sensors(SENSOR_MAG)) { - elementIndex = feature(FEATURE_CURRENT_METER) ? OSD_WH_DRAWN : OSD_ATTITUDE_PITCH; + elementIndex = feature(FEATURE_CURRENT_METER) ? OSD_WH_DRAWN : OSD_BATTERY_REMAINING_PERCENT; + } + if (elementIndex == OSD_EFFICIENCY_MAH_PER_KM) { + elementIndex = OSD_WH_DRAWN; } if (elementIndex == OSD_EFFICIENCY_WH_PER_KM) { elementIndex = OSD_ATTITUDE_PITCH; From b5f5785c964c37aa185210107e066cd2dfcfb336 Mon Sep 17 00:00:00 2001 From: breadoven <56191411+breadoven@users.noreply.github.com> Date: Mon, 2 Jan 2023 11:21:03 +0000 Subject: [PATCH 4/4] Update osd.c --- src/main/io/osd.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/src/main/io/osd.c b/src/main/io/osd.c index de93246613..a4d4e572a9 100644 --- a/src/main/io/osd.c +++ b/src/main/io/osd.c @@ -3303,15 +3303,12 @@ uint8_t osdIncElementIndex(uint8_t elementIndex) if (!feature(FEATURE_GPS)) { if (elementIndex == OSD_GPS_HDOP || elementIndex == OSD_TRIP_DIST || elementIndex == OSD_3D_SPEED || elementIndex == OSD_MISSION || - elementIndex == OSD_AZIMUTH || elementIndex == OSD_BATTERY_REMAINING_CAPACITY) { + elementIndex == OSD_AZIMUTH || elementIndex == OSD_BATTERY_REMAINING_CAPACITY || elementIndex == OSD_EFFICIENCY_MAH_PER_KM) { elementIndex++; } if (elementIndex == OSD_HEADING_GRAPH && !sensors(SENSOR_MAG)) { elementIndex = feature(FEATURE_CURRENT_METER) ? OSD_WH_DRAWN : OSD_BATTERY_REMAINING_PERCENT; } - if (elementIndex == OSD_EFFICIENCY_MAH_PER_KM) { - elementIndex = OSD_WH_DRAWN; - } if (elementIndex == OSD_EFFICIENCY_WH_PER_KM) { elementIndex = OSD_ATTITUDE_PITCH; }