altosui: Handle old TeleDongle receiving kalman telemetry packets
[fw/altos] / altosui / AltosTelemetry.java
index 3eb0efa8eea8e5defa4185a887cca358d0fc98fa..7d68b5b5394898c62698ee90bdcf05e519ed43e2 100644 (file)
@@ -253,12 +253,8 @@ public class AltosTelemetry extends AltosRecord {
                accel_minus_g = map.get_int(AO_TELEM_CAL_ACCEL_MINUS, MISSING);
 
                /* flight computer values */
-               acceleration = map.get_int(AO_TELEM_KALMAN_ACCEL, MISSING);
-               if (acceleration != MISSING)
-                       acceleration /= 16.0;
-               speed = map.get_int(AO_TELEM_KALMAN_SPEED, MISSING);
-               if (speed != MISSING)
-                       speed /= 16.0;
+               acceleration = map.get_double(AO_TELEM_KALMAN_ACCEL, MISSING, 1/16.0);
+               speed = map.get_double(AO_TELEM_KALMAN_SPEED, MISSING, 1/16.0);
                height = map.get_int(AO_TELEM_KALMAN_HEIGHT, MISSING);
 
                flight_accel = map.get_int(AO_TELEM_ADHOC_ACCEL, MISSING);
@@ -330,6 +326,16 @@ public class AltosTelemetry extends AltosRecord {
                AltosParse.word(words[i++], "fp:");
                flight_pres = AltosParse.parse_int(words[i++]);
 
+               /* Old TeleDongle code with kalman-reporting TeleMetrum code */
+               if ((flight_vel & 0xffff0000) == 0x80000000) {
+                       speed = ((short) flight_vel) / 16.0;
+                       acceleration = flight_accel / 16.0;
+                       height = flight_pres;
+                       flight_vel = MISSING;
+                       flight_pres = MISSING;
+                       flight_accel = MISSING;
+               }
+
                AltosParse.word(words[i++], "gp:");
                ground_pres = AltosParse.parse_int(words[i++]);