altoslib: Make any incoming telem packet update the RSSI value
authorKeith Packard <keithp@keithp.com>
Tue, 2 Apr 2013 23:44:58 +0000 (16:44 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 2 Apr 2013 23:44:58 +0000 (16:44 -0700)
Every packet has RSSI info, so use the latest one available. This
makes telegps RSSI available as it never sends sensor packets (having
no sensors).

Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/AltosTelemetryRecord.java
altoslib/AltosTelemetryRecordCompanion.java
altoslib/AltosTelemetryRecordConfiguration.java
altoslib/AltosTelemetryRecordLocation.java
altoslib/AltosTelemetryRecordMegaData.java
altoslib/AltosTelemetryRecordMegaSensor.java
altoslib/AltosTelemetryRecordRaw.java
altoslib/AltosTelemetryRecordSatellite.java
altoslib/AltosTelemetryRecordSensor.java

index 01215968427069b36aa585090404f58ff9b57af6..fdc3c88eb6d25b773c1dbad62a6fba17564f5ef9 100644 (file)
@@ -80,25 +80,25 @@ public abstract class AltosTelemetryRecord {
                                r = new AltosTelemetryRecordSensor(bytes, rssi);
                                break;
                        case packet_type_configuration:
-                               r = new AltosTelemetryRecordConfiguration(bytes);
+                               r = new AltosTelemetryRecordConfiguration(bytes, rssi);
                                break;
                        case packet_type_location:
-                               r = new AltosTelemetryRecordLocation(bytes);
+                               r = new AltosTelemetryRecordLocation(bytes, rssi);
                                break;
                        case packet_type_satellite:
-                               r = new AltosTelemetryRecordSatellite(bytes);
+                               r = new AltosTelemetryRecordSatellite(bytes, rssi);
                                break;
                        case packet_type_companion:
-                               r = new AltosTelemetryRecordCompanion(bytes);
+                               r = new AltosTelemetryRecordCompanion(bytes, rssi);
                                break;
                        case packet_type_MM_sensor:
                                r = new AltosTelemetryRecordMegaSensor(bytes, rssi);
                                break;
                        case packet_type_MM_data:
-                               r = new AltosTelemetryRecordMegaData(bytes);
+                               r = new AltosTelemetryRecordMegaData(bytes, rssi);
                                break;
                        default:
-                               r = new AltosTelemetryRecordRaw(bytes);
+                               r = new AltosTelemetryRecordRaw(bytes, rssi);
                                break;
                        }
                        break;
index e016dd016e757a93b94715fe81f00c3228a186b7..2231df13a1c8ec403aa87532ce1cdcb303ca2de5 100644 (file)
@@ -21,8 +21,8 @@ public class AltosTelemetryRecordCompanion extends AltosTelemetryRecordRaw {
 
        AltosRecordCompanion    companion;
 
-       public AltosTelemetryRecordCompanion(int[] in_bytes) {
-               super(in_bytes);
+       public AltosTelemetryRecordCompanion(int[] in_bytes, int rssi) {
+               super(in_bytes, rssi);
 
                int     off = 0;
                if (uint8(6) == 0)
index 472a631860ea9c23cdd23f4f3d7a04db34b1479d..47fc34886a20a2be529708a2abd11bac72d01b14 100644 (file)
@@ -29,8 +29,8 @@ public class AltosTelemetryRecordConfiguration extends AltosTelemetryRecordRaw {
        String  callsign;
        String  version;
 
-       public AltosTelemetryRecordConfiguration(int[] in_bytes) {
-               super(in_bytes);
+       public AltosTelemetryRecordConfiguration(int[] in_bytes, int rssi) {
+               super(in_bytes, rssi);
 
                device_type    = uint8(5);
                flight         = uint16(6);
index 469a5400d28bf9f8a0e679463ad86c2621fa9d31..029996963b555f9a9f4b2648e463d48adb87b5e3 100644 (file)
@@ -37,8 +37,8 @@ public class AltosTelemetryRecordLocation extends AltosTelemetryRecordRaw {
        int     climb_rate;
        int     course;
 
-       public AltosTelemetryRecordLocation(int[] in_bytes) {
-               super(in_bytes);
+       public AltosTelemetryRecordLocation(int[] in_bytes, int rssi) {
+               super(in_bytes, rssi);
 
                flags          = uint8(5);
                altitude       = int16(6);
index 08df9ee1ef15105460e487e08cd1bd95206d77bf..a484ef4ee52bfec3db92471294ab009ab7b1b288 100644 (file)
@@ -35,8 +35,8 @@ public class AltosTelemetryRecordMegaData extends AltosTelemetryRecordRaw {
        int     speed;
        int     height;
 
-       public AltosTelemetryRecordMegaData(int[] in_bytes) {
-               super(in_bytes);
+       public AltosTelemetryRecordMegaData(int[] in_bytes, int rssi) {
+               super(in_bytes, rssi);
 
                state = int8(5);
 
index 7548d69942af15ce6a055a1e45a4989fe27cc28a..2a4b17a4811839fd5f88503a2bca43e86f105c30 100644 (file)
@@ -35,10 +35,8 @@ public class AltosTelemetryRecordMegaSensor extends AltosTelemetryRecordRaw {
        int     mag_y;
        int     mag_z;
 
-       int     rssi;
-
-       public AltosTelemetryRecordMegaSensor(int[] in_bytes, int in_rssi) {
-               super(in_bytes);
+       public AltosTelemetryRecordMegaSensor(int[] in_bytes, int rssi) {
+               super(in_bytes, rssi);
 
                accel         = int16(6);
                pres          = int32(8);
@@ -55,8 +53,6 @@ public class AltosTelemetryRecordMegaSensor extends AltosTelemetryRecordRaw {
                mag_x         = int16(26);
                mag_y         = int16(28);
                mag_z         = int16(30);
-
-               rssi          = in_rssi;
        }
 
        public AltosRecord update_state(AltosRecord previous) {
@@ -85,8 +81,6 @@ public class AltosTelemetryRecordMegaSensor extends AltosTelemetryRecordRaw {
                next.mag.y = mag_y;
                next.mag.z = mag_z;
 
-               next.rssi = rssi;
-
                next.seen |= AltosRecord.seen_sensor;
 
                return next;
index a06348c19d2e379a3733b7cd0e2214b034d34834..f94789bb57adb08d936bf26ba9806eeeb199ca12 100644 (file)
@@ -22,6 +22,7 @@ public class AltosTelemetryRecordRaw extends AltosTelemetryRecord {
        int     serial;
        int     tick;
        int     type;
+       int     rssi;
 
        long    received_time;
 
@@ -53,11 +54,12 @@ public class AltosTelemetryRecordRaw extends AltosTelemetryRecord {
                return AltosLib.string(bytes, off + 1, l);
        }
 
-       public AltosTelemetryRecordRaw(int[] in_bytes) {
+       public AltosTelemetryRecordRaw(int[] in_bytes, int in_rssi) {
                bytes = in_bytes;
                serial = uint16(0);
                tick   = uint16(2);
                type   = uint8(4);
+               rssi   = in_rssi;
        }
 
        public AltosRecord update_state(AltosRecord previous) {
@@ -69,6 +71,7 @@ public class AltosTelemetryRecordRaw extends AltosTelemetryRecord {
                        next = new AltosRecordNone();
                next.serial = serial;
                next.tick = tick;
+               next.rssi = rssi;
                return next;
        }
 
index 3e93b3377fb156941e1d53f158b8c400d90e1421..9835389b977a127a424c4563da13403efbdcdedb 100644 (file)
@@ -21,8 +21,8 @@ public class AltosTelemetryRecordSatellite extends AltosTelemetryRecordRaw {
        int             channels;
        AltosGPSSat[]   sats;
 
-       public AltosTelemetryRecordSatellite(int[] in_bytes) {
-               super(in_bytes);
+       public AltosTelemetryRecordSatellite(int[] in_bytes, int rssi) {
+               super(in_bytes, rssi);
 
                channels = uint8(5);
                if (channels > 12)
index 767a464a7e5e046e8534481d89f46e21345e1516..e0e92c13d5ba2218d17119b0241db34e58400da3 100644 (file)
@@ -36,10 +36,8 @@ public class AltosTelemetryRecordSensor extends AltosTelemetryRecordRaw {
        int     accel_plus_g;
        int     accel_minus_g;
 
-       int     rssi;
-
-       public AltosTelemetryRecordSensor(int[] in_bytes, int in_rssi) {
-               super(in_bytes);
+       public AltosTelemetryRecordSensor(int[] in_bytes, int rssi) {
+               super(in_bytes, rssi);
                state         = uint8(5);
 
                accel         = int16(6);
@@ -57,8 +55,6 @@ public class AltosTelemetryRecordSensor extends AltosTelemetryRecordRaw {
                ground_accel  = int16(26);
                accel_plus_g  = int16(28);
                accel_minus_g = int16(30);
-
-               rssi          = in_rssi;
        }
 
        public AltosRecord update_state(AltosRecord prev) {
@@ -101,8 +97,6 @@ public class AltosTelemetryRecordSensor extends AltosTelemetryRecordRaw {
                        next.accel_minus_g = AltosRecord.MISSING;
                }
 
-               next.rssi = rssi;
-
                next.seen |= AltosRecord.seen_sensor | AltosRecord.seen_temp_volt;
 
                return next;