altoslib: Recover battery voltage from TeleGPS configuration packet
authorKeith Packard <keithp@keithp.com>
Sun, 8 Jun 2014 05:25:17 +0000 (22:25 -0700)
committerKeith Packard <keithp@keithp.com>
Sun, 8 Jun 2014 05:30:26 +0000 (22:30 -0700)
TeleGPS stuffs battery voltage in the apogee_delay slot of the
configuration packet. Pull it out from there and stick it into the
current state.

Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/AltosConvert.java
altoslib/AltosState.java
altoslib/AltosTelemetryConfiguration.java

index 8bcb9c9693618df5ce4dcd382fd37648dfe8d64d..6578e90f58a1d5c9ab4349d5511c0d68066474ca 100644 (file)
@@ -224,6 +224,12 @@ public class AltosConvert {
                return sensor / 32767.0 * supply * 127/27;
        }
 
+       static double tele_gps_voltage(int sensor) {
+               double  supply = 3.3;
+
+               return sensor / 32767.0 * supply * (5.6 + 10.0) / 10.0;
+       }
+
        static double easy_mini_voltage(int sensor, int serial) {
                double  supply = 3.3;
                double  diode_offset = 0.0;
index ef3a09766adc68e69c60e09b725f2358aa56ffbc..7871da77b3a73a3bc60edefaa68a6adf1b58c88a 100644 (file)
@@ -959,11 +959,14 @@ public class AltosState implements Cloneable {
                this.device_type = device_type;
        }
 
-       public void set_config(int major, int minor, int apogee_delay, int main_deploy, int flight_log_max) {
-               config_major = major;
-               config_minor = minor;
+       public void set_flight_params(int apogee_delay, int main_deploy) {
                this.apogee_delay = apogee_delay;
                this.main_deploy = main_deploy;
+       }
+
+       public void set_config(int major, int minor, int flight_log_max) {
+               config_major = major;
+               config_minor = minor;
                this.flight_log_max = flight_log_max;
        }
 
index d1341b9e342a54ebbb8de0c49150f2d9939f933f..e38840519c3f20276c8c9834e0e5fa5cd9a78a61 100644 (file)
@@ -25,6 +25,7 @@ public class AltosTelemetryConfiguration extends AltosTelemetryStandard {
        int     config_minor;
        int     apogee_delay;
        int     main_deploy;
+       int     v_batt;
        int     flight_log_max;
        String  callsign;
        String  version;
@@ -36,6 +37,7 @@ public class AltosTelemetryConfiguration extends AltosTelemetryStandard {
                flight         = uint16(6);
                config_major   = uint8(8);
                config_minor   = uint8(9);
+               v_batt         = uint16(10);
                apogee_delay   = uint16(10);
                main_deploy    = uint16(12);
                flight_log_max = uint16(14);
@@ -47,7 +49,11 @@ public class AltosTelemetryConfiguration extends AltosTelemetryStandard {
                super.update_state(state);
                state.set_device_type(device_type);
                state.set_flight(flight);
-               state.set_config(config_major, config_minor, apogee_delay, main_deploy, flight_log_max);
+               state.set_config(config_major, config_minor, flight_log_max);
+               if (device_type == AltosLib.product_telegps)
+                       state.set_battery_voltage(AltosConvert.tele_gps_voltage(v_batt));
+               else
+                       state.set_flight_params(apogee_delay, main_deploy);
 
                state.set_callsign(callsign);
                state.set_firmware_version(version);