Browse Source

Altitude: Use Altitude encoding notation

Andrew Tridgell 3 years ago
parent
commit
992859757d
1 changed files with 19 additions and 6 deletions
  1. 19 6
      RemoteIDModule/status.cpp

+ 19 - 6
RemoteIDModule/status.cpp

@@ -204,6 +204,19 @@ static String LatLonString(double lat, double lon, uint8_t select)
     return "UNKNOWN";
 }
 
+/**
+ * UNKNOWN support for altitude
+ * 
+ * @param alt altitude
+ */
+static String AltString(float alt)
+{
+    if (alt <= -1000.0f) {
+        return "UNKNOWN";
+    }
+    return String(alt,2);
+}
+
 #define ENUM_MAP(ename, v) enum_string(enum_ ## ename, ARRAY_SIZE(enum_ ## ename), int(v))
 
 String status_json(void)
@@ -234,11 +247,11 @@ String status_json(void)
         { "SYSTEM:OperatorLongitude", LatLonString(UAS_data.System.OperatorLatitude, UAS_data.System.OperatorLongitude, 1) },
         { "SYSTEM:AreaCount", String(UAS_data.System.AreaCount) },
         { "SYSTEM:AreaRadius", String(UAS_data.System.AreaRadius) },
-        { "SYSTEM:AreaCeiling", String(UAS_data.System.AreaCeiling) },
-        { "SYSTEM:AreaFloor", String(UAS_data.System.AreaFloor) },
+        { "SYSTEM:AreaCeiling", AltString(UAS_data.System.AreaCeiling) },
+        { "SYSTEM:AreaFloor", AltString(UAS_data.System.AreaFloor) },
         { "SYSTEM:CategoryEU", ENUM_MAP(cateu, UAS_data.System.CategoryEU) },
         { "SYSTEM:ClassEU", ENUM_MAP(classeu, UAS_data.System.ClassEU) },
-        { "SYSTEM:OperatorAltitudeGeo", String(UAS_data.System.OperatorAltitudeGeo) },
+        { "SYSTEM:OperatorAltitudeGeo", AltString(UAS_data.System.OperatorAltitudeGeo) },
         { "SYSTEM:Timestamp", String(UAS_data.System.Timestamp) },
         { "LOCATION:Status", ENUM_MAP(status, UAS_data.Location.Status) },
         { "LOCATION:Direction", String(UAS_data.Location.Direction) },
@@ -246,10 +259,10 @@ String status_json(void)
         { "LOCATION:SpeedVertical", String(UAS_data.Location.SpeedVertical) },
         { "LOCATION:Latitude", LatLonString(UAS_data.Location.Latitude, UAS_data.Location.Longitude, 0) },
         { "LOCATION:Longitude", LatLonString(UAS_data.Location.Latitude, UAS_data.Location.Longitude, 1) },
-        { "LOCATION:AltitudeBaro", String(UAS_data.Location.AltitudeBaro) },
-        { "LOCATION:AltitudeGeo", String(UAS_data.Location.AltitudeGeo) },
+        { "LOCATION:AltitudeBaro", AltString(UAS_data.Location.AltitudeBaro) },
+        { "LOCATION:AltitudeGeo", AltString(UAS_data.Location.AltitudeGeo) },
         { "LOCATION:HeightType", ENUM_MAP(height, UAS_data.Location.HeightType) },
-        { "LOCATION:Height", String(UAS_data.Location.Height) },
+        { "LOCATION:Height", AltString(UAS_data.Location.Height) },
         { "LOCATION:HorizAccuracy", ENUM_MAP(hacc, UAS_data.Location.HorizAccuracy) },
         { "LOCATION:VertAccuracy", ENUM_MAP(vacc, UAS_data.Location.VertAccuracy) },
         { "LOCATION:BaroAccuracy", ENUM_MAP(vacc, UAS_data.Location.BaroAccuracy) },