diff --git a/src/graphics/Screen.cpp b/src/graphics/Screen.cpp index 6e195f133..23be64e74 100644 --- a/src/graphics/Screen.cpp +++ b/src/graphics/Screen.cpp @@ -523,6 +523,8 @@ static void drawGPSAltitude(OLEDDisplay *display, int16_t x, int16_t y, const GP } else { geoCoord.updateCoords(int32_t(gps->getLatitude()), int32_t(gps->getLongitude()), int32_t(gps->getAltitude())); displayLine = "Altitude: " + String(geoCoord.getAltitude()) + "m"; + if (config.display.units == Config_DisplayConfig_DisplayUnits_IMPERIAL) + displayLine = "Altitude: " + String(geoCoord.getAltitude() * METERS_TO_FEET) + "ft"; display->drawString(x + (SCREEN_WIDTH - (display->getStringWidth(displayLine))) / 2, y, displayLine); } } @@ -784,10 +786,18 @@ static void drawNodeInfo(OLEDDisplay *display, OLEDDisplayUiState *state, int16_ Position &p = node->position; float d = GeoCoord::latLongToMeter(DegD(p.latitude_i), DegD(p.longitude_i), DegD(op.latitude_i), DegD(op.longitude_i)); - if (d < 2000) - snprintf(distStr, sizeof(distStr), "%.0f m", d); - else - snprintf(distStr, sizeof(distStr), "%.1f km", d / 1000); + + if (config.display.units == Config_DisplayConfig_DisplayUnits_IMPERIAL) { + if (d < (2 * MILES_TO_FEET)) + snprintf(distStr, sizeof(distStr), "%.0f ft", d * METERS_TO_FEET); + else + snprintf(distStr, sizeof(distStr), "%.1f mi", d * METERS_TO_FEET / MILES_TO_FEET); + } else { + if (d < 2000) + snprintf(distStr, sizeof(distStr), "%.0f m", d); + else + snprintf(distStr, sizeof(distStr), "%.1f km", d / 1000); + } float bearingToOther = GeoCoord::bearing(DegD(op.latitude_i), DegD(op.longitude_i), DegD(p.latitude_i), DegD(p.longitude_i)); diff --git a/src/graphics/Screen.h b/src/graphics/Screen.h index e38f6de66..ab8d44430 100644 --- a/src/graphics/Screen.h +++ b/src/graphics/Screen.h @@ -57,6 +57,16 @@ class Screen #define BRIGHTNESS_DEFAULT 150 #endif +// Meters to feet conversion +#ifndef METERS_TO_FEET +#define METERS_TO_FEET 3.28 +#endif + +// Feet to miles conversion +#ifndef MILES_TO_FEET +#define MILES_TO_FEET 5280 +#endif + namespace graphics {