mirror of
https://github.com/iNavFlight/inav.git
synced 2025-07-15 04:15:38 +03:00
Finished before flight test...I think
There are some hacks in this, due to running out of 0-254 indexed characters in the font, needed for the char array.
This commit is contained in:
parent
1590e8447f
commit
2372eb6e37
6 changed files with 48 additions and 27 deletions
|
@ -36,8 +36,8 @@
|
||||||
#define SYM_AH_NM 0x120 // 288 Ah/NM
|
#define SYM_AH_NM 0x120 // 288 Ah/NM
|
||||||
#define SYM_MAH_MI_0 0x0A // 010 mAh/mi left
|
#define SYM_MAH_MI_0 0x0A // 010 mAh/mi left
|
||||||
#define SYM_MAH_MI_1 0x0B // 011 mAh/mi right
|
#define SYM_MAH_MI_1 0x0B // 011 mAh/mi right
|
||||||
#define SYM_MAH_NM_0 0x11E // 286 mAh/NM left
|
#define SYM_MAH_NM_0 0xDA // 286 mAh/NM left
|
||||||
#define SYM_MAH_NM_1 0x11F // 287 mAh/NM right
|
#define SYM_MAH_NM_1 0xDB // 287 mAh/NM right
|
||||||
#define SYM_LQ 0x0C // 012 LQ
|
#define SYM_LQ 0x0C // 012 LQ
|
||||||
|
|
||||||
#define SYM_TEMP_F 0x0D // 013 °F
|
#define SYM_TEMP_F 0x0D // 013 °F
|
||||||
|
@ -118,7 +118,7 @@
|
||||||
|
|
||||||
#define SYM_3D_KMH 0x89 // 137 KM/H 3D
|
#define SYM_3D_KMH 0x89 // 137 KM/H 3D
|
||||||
#define SYM_3D_MPH 0x8A // 138 MPH 3D
|
#define SYM_3D_MPH 0x8A // 138 MPH 3D
|
||||||
#define SYM_3D_KTS 0x11B // 283 Knots 3D
|
#define SYM_3D_KTS 0x119 // 281 Knots 3D
|
||||||
|
|
||||||
#define SYM_RPM 0x8B // 139 RPM
|
#define SYM_RPM 0x8B // 139 RPM
|
||||||
#define SYM_WAYPOINT 0x8C // 140 Waypoint
|
#define SYM_WAYPOINT 0x8C // 140 Waypoint
|
||||||
|
@ -138,7 +138,7 @@
|
||||||
#define SYM_AIR 0x97 // 151 Air speed
|
#define SYM_AIR 0x97 // 151 Air speed
|
||||||
// 0x98 // 152 Home point map
|
// 0x98 // 152 Home point map
|
||||||
#define SYM_FTS 0x99 // 153 FT/S
|
#define SYM_FTS 0x99 // 153 FT/S
|
||||||
#define SYM_100FTM 0x11D // 285 100 Feet per Min
|
#define SYM_100FTM 0xDC // 220 100 Feet per Min
|
||||||
#define SYM_AMP 0x9A // 154 A
|
#define SYM_AMP 0x9A // 154 A
|
||||||
#define SYM_ON_M 0x9B // 155 On MN
|
#define SYM_ON_M 0x9B // 155 On MN
|
||||||
#define SYM_FLY_M 0x9C // 156 FL MN
|
#define SYM_FLY_M 0x9C // 156 FL MN
|
||||||
|
@ -165,7 +165,7 @@
|
||||||
#define SYM_WATT 0xAE // 174 W
|
#define SYM_WATT 0xAE // 174 W
|
||||||
#define SYM_SCALE 0xAF // 175 Map scale
|
#define SYM_SCALE 0xAF // 175 Map scale
|
||||||
#define SYM_MPH 0xB0 // 176 MPH
|
#define SYM_MPH 0xB0 // 176 MPH
|
||||||
#define SYM_KTS 0x11C // 284 Knots
|
#define SYM_KTS 0xDE // 222 Knots
|
||||||
#define SYM_ALT_M 0xB1 // 177 ALT M
|
#define SYM_ALT_M 0xB1 // 177 ALT M
|
||||||
#define SYM_ALT_KM 0xB2 // 178 ALT KM
|
#define SYM_ALT_KM 0xB2 // 178 ALT KM
|
||||||
#define SYM_ALT_FT 0xB3 // 179 ALT FT
|
#define SYM_ALT_FT 0xB3 // 179 ALT FT
|
||||||
|
@ -174,11 +174,11 @@
|
||||||
#define SYM_DIST_KM 0xB6 // 182 DIM KM
|
#define SYM_DIST_KM 0xB6 // 182 DIM KM
|
||||||
#define SYM_DIST_FT 0xB7 // 183 DIS FT
|
#define SYM_DIST_FT 0xB7 // 183 DIS FT
|
||||||
#define SYM_DIST_MI 0xB8 // 184 DIS MI
|
#define SYM_DIST_MI 0xB8 // 184 DIS MI
|
||||||
#define SYM_DIST_NM 0x119 // 281 DIS NM
|
#define SYM_DIST_NM 0xFE // 254 DIS NM
|
||||||
#define SYM_M 0xB9 // 185 M
|
#define SYM_M 0xB9 // 185 M
|
||||||
#define SYM_KM 0xBA // 186 KM
|
#define SYM_KM 0xBA // 186 KM
|
||||||
#define SYM_MI 0xBB // 187 MI
|
#define SYM_MI 0xBB // 187 MI
|
||||||
#define SYM_NM 0x11A // 282 NM
|
#define SYM_NM 0xDD // 221 NM
|
||||||
|
|
||||||
#define SYM_CLOCK 0xBC // 188 Clock
|
#define SYM_CLOCK 0xBC // 188 Clock
|
||||||
#define SYM_HDP_L 0xBD // 189 HDOP left
|
#define SYM_HDP_L 0xBD // 189 HDOP left
|
||||||
|
@ -197,12 +197,6 @@
|
||||||
|
|
||||||
#define SYM_ZERO_HALF_LEADING_DOT 0xD0 // 208 to 217 Numbers with leading dot
|
#define SYM_ZERO_HALF_LEADING_DOT 0xD0 // 208 to 217 Numbers with leading dot
|
||||||
|
|
||||||
#define SYM_AH_CH_AIRCRAFT0 0xDA // 218 Crossair aircraft left
|
|
||||||
#define SYM_AH_CH_AIRCRAFT1 0xDB // 219 Crossair aircraft
|
|
||||||
#define SYM_AH_CH_AIRCRAFT2 0xDC // 220 Crossair aircraft center
|
|
||||||
#define SYM_AH_CH_AIRCRAFT3 0xDD // 221 Crossair aircraft
|
|
||||||
#define SYM_AH_CH_AIRCRAFT4 0xDE // 222 Crossair aircraft right
|
|
||||||
|
|
||||||
#define SYM_PITCH_DOWN 0xDF // 223 Pitch down
|
#define SYM_PITCH_DOWN 0xDF // 223 Pitch down
|
||||||
|
|
||||||
#define SYM_AH_V_START 0xE0 // 224 to 229 Vertical AHI
|
#define SYM_AH_V_START 0xE0 // 224 to 229 Vertical AHI
|
||||||
|
@ -237,6 +231,12 @@
|
||||||
#define SYM_AH_CH_TYPE6 0x199 // 409 to 411, crosshair 6
|
#define SYM_AH_CH_TYPE6 0x199 // 409 to 411, crosshair 6
|
||||||
#define SYM_AH_CH_TYPE7 0x19C // 412 to 414, crosshair 7
|
#define SYM_AH_CH_TYPE7 0x19C // 412 to 414, crosshair 7
|
||||||
|
|
||||||
|
#define SYM_AH_CH_AIRCRAFT0 0x1AE // 430 Crossair aircraft left
|
||||||
|
#define SYM_AH_CH_AIRCRAFT1 0x1AF // 431 Crossair aircraft
|
||||||
|
#define SYM_AH_CH_AIRCRAFT2 0x1B0 // 432 Crossair aircraft center
|
||||||
|
#define SYM_AH_CH_AIRCRAFT3 0x1B1 // 433 Crossair aircraft
|
||||||
|
#define SYM_AH_CH_AIRCRAFT4 0x1B2 // 434 Crossair aircraft right
|
||||||
|
|
||||||
#define SYM_HUD_ARROWS_L1 0x1A2 // 418 1 arrow left
|
#define SYM_HUD_ARROWS_L1 0x1A2 // 418 1 arrow left
|
||||||
#define SYM_HUD_ARROWS_L2 0x1A3 // 419 2 arrows left
|
#define SYM_HUD_ARROWS_L2 0x1A3 // 419 2 arrows left
|
||||||
#define SYM_HUD_ARROWS_L3 0x1A4 // 420 3 arrows left
|
#define SYM_HUD_ARROWS_L3 0x1A4 // 420 3 arrows left
|
||||||
|
|
|
@ -64,7 +64,7 @@ tables:
|
||||||
- name: nav_rth_alt_mode
|
- name: nav_rth_alt_mode
|
||||||
values: ["CURRENT", "EXTRA", "FIXED", "MAX", "AT_LEAST", "AT_LEAST_LINEAR_DESCENT"]
|
values: ["CURRENT", "EXTRA", "FIXED", "MAX", "AT_LEAST", "AT_LEAST_LINEAR_DESCENT"]
|
||||||
- name: osd_unit
|
- name: osd_unit
|
||||||
values: ["IMPERIAL", "METRIC", "METRIC_MPH", "UK"]
|
values: ["IMPERIAL", "METRIC", "METRIC_MPH", "UK", "GA"]
|
||||||
enum: osd_unit_e
|
enum: osd_unit_e
|
||||||
- name: osd_stats_energy_unit
|
- name: osd_stats_energy_unit
|
||||||
values: ["MAH", "WH"]
|
values: ["MAH", "WH"]
|
||||||
|
|
|
@ -421,7 +421,7 @@ static int32_t osdConvertVelocityToUnit(int32_t vel)
|
||||||
* Converts velocity into a string based on the current unit system.
|
* Converts velocity into a string based on the current unit system.
|
||||||
* @param alt Raw velocity (i.e. as taken from gpsSol.groundSpeed in centimeters/seconds)
|
* @param alt Raw velocity (i.e. as taken from gpsSol.groundSpeed in centimeters/seconds)
|
||||||
*/
|
*/
|
||||||
void osdFormatVelocityStr(char* buff, int32_t vel, bool _3D)
|
void osdFormatVelocityStr(char* buff, int32_t vel, bool _3D, uint8_t elemPosX, uint8_t elemPosY)
|
||||||
{
|
{
|
||||||
switch ((osd_unit_e)osdConfig()->units) {
|
switch ((osd_unit_e)osdConfig()->units) {
|
||||||
case OSD_UNIT_UK:
|
case OSD_UNIT_UK:
|
||||||
|
@ -435,7 +435,12 @@ void osdFormatVelocityStr(char* buff, int32_t vel, bool _3D)
|
||||||
tfp_sprintf(buff, "%3d%c", (int)osdConvertVelocityToUnit(vel), (_3D ? SYM_3D_KMH : SYM_KMH));
|
tfp_sprintf(buff, "%3d%c", (int)osdConvertVelocityToUnit(vel), (_3D ? SYM_3D_KMH : SYM_KMH));
|
||||||
break;
|
break;
|
||||||
case OSD_UNIT_GA:
|
case OSD_UNIT_GA:
|
||||||
tfp_sprintf(buff, "%3d%c", (int)osdConvertVelocityToUnit(vel), (_3D ? SYM_3D_KTS : SYM_KTS));
|
if (_3D) {
|
||||||
|
tfp_sprintf(buff, "%3d", (int)osdConvertVelocityToUnit(vel));
|
||||||
|
displayWriteChar(osdDisplayPort, elemPosX + 3, elemPosY, SYM_3D_KTS);
|
||||||
|
} else {
|
||||||
|
tfp_sprintf(buff, "%3d%c", (int)osdConvertVelocityToUnit(vel), SYM_KTS);
|
||||||
|
}
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -1569,12 +1574,12 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OSD_GPS_SPEED:
|
case OSD_GPS_SPEED:
|
||||||
osdFormatVelocityStr(buff, gpsSol.groundSpeed, false);
|
osdFormatVelocityStr(buff, gpsSol.groundSpeed, false, elemPosX, elemPosY);
|
||||||
break;
|
break;
|
||||||
|
|
||||||
case OSD_3D_SPEED:
|
case OSD_3D_SPEED:
|
||||||
{
|
{
|
||||||
osdFormatVelocityStr(buff, osdGet3DSpeed(), true);
|
osdFormatVelocityStr(buff, osdGet3DSpeed(), true, elemPosX, elemPosY);
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1869,13 +1874,27 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
#endif
|
#endif
|
||||||
buff[0] = SYM_TRIP_DIST;
|
buff[0] = SYM_TRIP_DIST;
|
||||||
if ((!ARMING_FLAG(ARMED)) || (distanceMeters == -1)) {
|
if ((!ARMING_FLAG(ARMED)) || (distanceMeters == -1)) {
|
||||||
buff[4] = SYM_DIST_M;
|
buff[4] = SYM_BLANK;
|
||||||
buff[5] = '\0';
|
buff[5] = '\0';
|
||||||
strcpy(buff + 1, "---");
|
strcpy(buff + 1, "---");
|
||||||
} else if (distanceMeters == -2) {
|
} else if (distanceMeters == -2) {
|
||||||
// Wind is too strong to come back with cruise throttle
|
// Wind is too strong to come back with cruise throttle
|
||||||
buff[1] = buff[2] = buff[3] = SYM_WIND_HORIZONTAL;
|
buff[1] = buff[2] = buff[3] = SYM_WIND_HORIZONTAL;
|
||||||
buff[4] = SYM_DIST_M;
|
switch ((osd_unit_e)osdConfig()->units){
|
||||||
|
case OSD_UNIT_UK:
|
||||||
|
FALLTHROUGH;
|
||||||
|
case OSD_UNIT_IMPERIAL:
|
||||||
|
buff[4] = SYM_DIST_MI;
|
||||||
|
break;
|
||||||
|
case OSD_UNIT_METRIC_MPH:
|
||||||
|
FALLTHROUGH;
|
||||||
|
case OSD_UNIT_METRIC:
|
||||||
|
buff[4] = SYM_DIST_KM;
|
||||||
|
break;
|
||||||
|
case OSD_UNIT_GA:
|
||||||
|
buff[4] = SYM_DIST_NM;
|
||||||
|
break;
|
||||||
|
}
|
||||||
buff[5] = '\0';
|
buff[5] = '\0';
|
||||||
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
|
TEXT_ATTRIBUTES_ADD_BLINK(elemAttr);
|
||||||
} else {
|
} else {
|
||||||
|
@ -2391,7 +2410,7 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
{
|
{
|
||||||
#ifdef USE_PITOT
|
#ifdef USE_PITOT
|
||||||
buff[0] = SYM_AIR;
|
buff[0] = SYM_AIR;
|
||||||
osdFormatVelocityStr(buff + 1, pitot.airSpeed, false);
|
osdFormatVelocityStr(buff + 1, pitot.airSpeed, false, elemPosX, elemPosY);
|
||||||
#else
|
#else
|
||||||
return false;
|
return false;
|
||||||
#endif
|
#endif
|
||||||
|
@ -2553,7 +2572,8 @@ static bool osdDrawSingleElement(uint8_t item)
|
||||||
break;
|
break;
|
||||||
case OSD_UNIT_GA:
|
case OSD_UNIT_GA:
|
||||||
osdFormatCentiNumber(buff, value * METERS_PER_NAUTICALMILE / 10000, 0, 2, 0, 3);
|
osdFormatCentiNumber(buff, value * METERS_PER_NAUTICALMILE / 10000, 0, 2, 0, 3);
|
||||||
buff[3] = SYM_WH_NM;
|
// buff[3] = SYM_WH_NM;
|
||||||
|
displayWriteChar(osdDisplayPort, elemPosX +3, elemPosY, SYM_WH_NM);
|
||||||
break;
|
break;
|
||||||
case OSD_UNIT_METRIC_MPH:
|
case OSD_UNIT_METRIC_MPH:
|
||||||
FALLTHROUGH;
|
FALLTHROUGH;
|
||||||
|
@ -3367,7 +3387,8 @@ static void osdCompleteAsyncInitialization(void)
|
||||||
break;
|
break;
|
||||||
case OSD_UNIT_GA:
|
case OSD_UNIT_GA:
|
||||||
osdFormatCentiNumber(string_buffer, avg_efficiency / 10, 0, 2, 0, 3);
|
osdFormatCentiNumber(string_buffer, avg_efficiency / 10, 0, 2, 0, 3);
|
||||||
string_buffer[3] = SYM_WH_NM;
|
displayWriteChar(osdDisplayPort, STATS_LABEL_X_POS +3, y, SYM_WH_NM);
|
||||||
|
// string_buffer[3] = SYM_WH_NM;
|
||||||
break;
|
break;
|
||||||
default:
|
default:
|
||||||
case OSD_UNIT_METRIC_MPH:
|
case OSD_UNIT_METRIC_MPH:
|
||||||
|
@ -3477,7 +3498,7 @@ static void osdShowStatsPage1(void)
|
||||||
|
|
||||||
if (feature(FEATURE_GPS)) {
|
if (feature(FEATURE_GPS)) {
|
||||||
displayWrite(osdDisplayPort, statNameX, top, "MAX SPEED :");
|
displayWrite(osdDisplayPort, statNameX, top, "MAX SPEED :");
|
||||||
osdFormatVelocityStr(buff, stats.max_speed, true);
|
osdFormatVelocityStr(buff, stats.max_speed, true, statValuesX, top);
|
||||||
osdLeftAlignString(buff);
|
osdLeftAlignString(buff);
|
||||||
displayWrite(osdDisplayPort, statValuesX, top++, buff);
|
displayWrite(osdDisplayPort, statValuesX, top++, buff);
|
||||||
|
|
||||||
|
|
|
@ -412,7 +412,7 @@ int32_t osdGetAltitude(void);
|
||||||
void osdCrosshairPosition(uint8_t *x, uint8_t *y);
|
void osdCrosshairPosition(uint8_t *x, uint8_t *y);
|
||||||
bool osdFormatCentiNumber(char *buff, int32_t centivalue, uint32_t scale, int maxDecimals, int maxScaledDecimals, int length);
|
bool osdFormatCentiNumber(char *buff, int32_t centivalue, uint32_t scale, int maxDecimals, int maxScaledDecimals, int length);
|
||||||
void osdFormatAltitudeSymbol(char *buff, int32_t alt);
|
void osdFormatAltitudeSymbol(char *buff, int32_t alt);
|
||||||
void osdFormatVelocityStr(char* buff, int32_t vel, bool _3D);
|
void osdFormatVelocityStr(char* buff, int32_t vel, bool _3D, uint8_t elemPosX, uint8_t elemPosY);
|
||||||
// Returns a heading angle in degrees normalized to [0, 360).
|
// Returns a heading angle in degrees normalized to [0, 360).
|
||||||
int osdGetHeadingAngle(int angle);
|
int osdGetHeadingAngle(int angle);
|
||||||
|
|
||||||
|
|
|
@ -749,7 +749,7 @@ static void osdDJIFormatDistanceStr(char *buff, int32_t dist)
|
||||||
else {
|
else {
|
||||||
// Show miles when dist >= 0.5mi
|
// Show miles when dist >= 0.5mi
|
||||||
tfp_sprintf(buff, "%d.%02d%s", (int)(centifeet / (100 * FEET_PER_NAUTICALMILE)),
|
tfp_sprintf(buff, "%d.%02d%s", (int)(centifeet / (100 * FEET_PER_NAUTICALMILE)),
|
||||||
(abs(centifeet) % (int)(100 * FEET_PER_NAUTICALMILE)) / FEET_PER_NAUTICALMILE, "NM");
|
(int)((abs(centifeet) % (int)(100 * FEET_PER_NAUTICALMILE)) / FEET_PER_NAUTICALMILE), "NM");
|
||||||
}
|
}
|
||||||
break;
|
break;
|
||||||
case OSD_UNIT_METRIC_MPH:
|
case OSD_UNIT_METRIC_MPH:
|
||||||
|
|
|
@ -345,7 +345,7 @@ void osdHudDrawExtras(uint8_t poi_id)
|
||||||
|
|
||||||
displayWrite(osdGetDisplayPort(), minX + 4, lineY, buftmp);
|
displayWrite(osdGetDisplayPort(), minX + 4, lineY, buftmp);
|
||||||
|
|
||||||
osdFormatVelocityStr(buftmp, radar_pois[poi_id].speed, false);
|
osdFormatVelocityStr(buftmp, radar_pois[poi_id].speed, false, minX + 5, lineY);
|
||||||
displayWrite(osdGetDisplayPort(), maxX - 9, lineY, buftmp);
|
displayWrite(osdGetDisplayPort(), maxX - 9, lineY, buftmp);
|
||||||
|
|
||||||
tfp_sprintf(buftmp, "%3d%c", radar_pois[poi_id].heading, SYM_HEADING);
|
tfp_sprintf(buftmp, "%3d%c", radar_pois[poi_id].heading, SYM_HEADING);
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue