use multimaint-merge to make Debian changelogs less ugly
[fw/altos] / altosui / AltosTelemetryRecordRaw.java
index e6c4cfc8af44ddf3ba5c3424df4b44b7cf7ef48e..39b2ba0772a2d3efdf56d897023ce5bd3718402c 100644 (file)
@@ -33,6 +33,7 @@ public class AltosTelemetryRecordRaw implements AltosTelemetryRecord {
        final static int packet_type_configuration = 0x04;
        final static int packet_type_location = 0x05;
        final static int packet_type_satellite = 0x06;
+       final static int packet_type_companion = 0x07;
        
        final static int PKT_APPEND_STATUS_1_CRC_OK             = (1 << 7);
        final static int PKT_APPEND_STATUS_1_LQI_MASK           = (0x7f);
@@ -72,7 +73,7 @@ public class AltosTelemetryRecordRaw implements AltosTelemetryRecord {
 
                /* length, data ..., rssi, status, checksum -- 4 bytes extra */
                switch (bytes.length) {
-               case Altos.ao_telemetry_split_len + 4:
+               case Altos.ao_telemetry_standard_len + 4:
                        int     type = Altos.uint8(bytes, 4 + 1);
                        switch (type) {
                        case packet_type_TM_sensor:
@@ -89,12 +90,18 @@ public class AltosTelemetryRecordRaw implements AltosTelemetryRecord {
                        case packet_type_satellite:
                                r = new AltosTelemetryRecordSatellite(bytes);
                                break;
+                       case packet_type_companion:
+                               r = new AltosTelemetryRecordCompanion(bytes);
+                               break;
                        default:
                                r = new AltosTelemetryRecordRaw(bytes);
                                break;
                        }
                        break;
-               case Altos.ao_telemetry_legacy_len + 4:
+               case Altos.ao_telemetry_0_9_len + 4:
+                       r = new AltosTelemetryRecordLegacy(bytes, rssi, status);
+                       break;
+               case Altos.ao_telemetry_0_8_len + 4:
                        r = new AltosTelemetryRecordLegacy(bytes, rssi, status);
                        break;
                default:
@@ -136,9 +143,11 @@ public class AltosTelemetryRecordRaw implements AltosTelemetryRecord {
 
        public AltosRecord update_state(AltosRecord previous) {
                AltosRecord     next;
-               if (previous != null)
+               if (previous != null) {
                        next = new AltosRecord(previous);
-               else
+                       while (tick < previous.tick)
+                               tick += 65536;
+               } else
                        next = new AltosRecord();
                next.serial = serial;
                next.tick = tick;