altoslib,altosuilib,altosui: log_format/device_type TeleGPS selects stateless
authorKeith Packard <keithp@keithp.com>
Mon, 2 Oct 2017 23:55:18 +0000 (16:55 -0700)
committerKeith Packard <keithp@keithp.com>
Mon, 2 Oct 2017 23:55:18 +0000 (16:55 -0700)
When the device being analyzed has no flight state, we want to use the
'stateless' state so that the UI can display reasonable
information. This bit was lost in the recent AltosState shuffle and
this patch brings it back.

Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/AltosCalData.java
altoslib/AltosDataListener.java
altoslib/AltosEepromRecord.java
altoslib/AltosEepromRecordSet.java
altoslib/AltosFlightSeries.java
altoslib/AltosState.java
altoslib/AltosTelemetry.java
altoslib/AltosTelemetryConfiguration.java
altoslib/AltosTelemetryFile.java
altoslib/AltosTelemetryReader.java

index 6258c1a8448175d8e532c918d62fa506655fdcd3..7415d5ad6584e54c4594fe44c21ef5588529c537 100644 (file)
@@ -72,6 +72,13 @@ public class AltosCalData {
                }
        }
 
                }
        }
 
+       public int              log_format = AltosLib.MISSING;
+
+       public void set_log_format(int log_format) {
+               if (log_format != AltosLib.MISSING)
+                       this.log_format = log_format;
+       }
+
        public int              config_major = AltosLib.MISSING;
        public int              config_minor = AltosLib.MISSING;
        public int              flight_log_max = AltosLib.MISSING;
        public int              config_major = AltosLib.MISSING;
        public int              config_minor = AltosLib.MISSING;
        public int              flight_log_max = AltosLib.MISSING;
index be6d840f0091e9b20d21589634ff63099272f5eb..fb37fe3d6453229fa1d107fae80c616272ef2871 100644 (file)
@@ -19,7 +19,6 @@ public abstract class AltosDataListener {
        private AltosCalData    cal_data = null;
 
        public double           time = AltosLib.MISSING;
        private AltosCalData    cal_data = null;
 
        public double           time = AltosLib.MISSING;
-       public int              state = AltosLib.MISSING;
        public double           frequency = AltosLib.MISSING;
 
        public void set_tick(int tick) {
        public double           frequency = AltosLib.MISSING;
 
        public void set_tick(int tick) {
@@ -42,14 +41,34 @@ public abstract class AltosDataListener {
                cal_data().set_serial(serial);
        }
 
                cal_data().set_serial(serial);
        }
 
+       public void set_device_type(int device_type) {
+               cal_data().set_device_type(device_type);
+               switch (device_type) {
+               case AltosLib.product_telegps:
+                       set_state(AltosLib.ao_flight_stateless);
+                       break;
+               }
+       }
+
+       public void set_log_format(int log_format) {
+               cal_data().set_log_format(log_format);
+               switch (log_format) {
+               case AltosLib.AO_LOG_FORMAT_TELEGPS:
+                       set_state(AltosLib.ao_flight_stateless);
+                       break;
+               }
+       }
+
        public double time() {
                return time;
        }
 
        public void set_state(int state) {
                cal_data().set_state(state);
        public double time() {
                return time;
        }
 
        public void set_state(int state) {
                cal_data().set_state(state);
-               if (state != AltosLib.MISSING)
-                       this.state = state;
+       }
+
+       public int state() {
+               return cal_data().state;
        }
 
        public void set_flight(int flight) {
        }
 
        public void set_flight(int flight) {
@@ -64,6 +83,12 @@ public abstract class AltosDataListener {
        public void finish() {
        }
 
        public void finish() {
        }
 
+       public void init() {
+               set_state(AltosLib.ao_flight_invalid);
+               time = AltosLib.MISSING;
+               frequency = AltosLib.MISSING;
+       }
+
        public abstract void set_rssi(int rssi, int status);
        public abstract void set_received_time(long received_time);
 
        public abstract void set_rssi(int rssi, int status);
        public abstract void set_received_time(long received_time);
 
index 094584fecf8176668b1f239daca1a1520d8ff3b2..e937c3d0c4bfff99c1ed9a58fc3c1723b63ad696 100644 (file)
@@ -83,7 +83,7 @@ public abstract class AltosEepromRecord implements Comparable<AltosEepromRecord>
 
        /* AltosDataProvider */
        public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
 
        /* AltosDataProvider */
        public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               cal_data.set_tick(tick());
+               listener.set_tick(tick());
                if (cmd() == AltosLib.AO_LOG_FLIGHT)
                        cal_data.set_boost_tick();
                listener.set_time(cal_data.time());
                if (cmd() == AltosLib.AO_LOG_FLIGHT)
                        cal_data.set_boost_tick();
                listener.set_time(cal_data.time());
index 48e90c055e0269be6136385ac50935e411d4505e..d91ae3ac1c1aba278cd21eedc03c3de3cad802a2 100644 (file)
@@ -44,6 +44,8 @@ public class AltosEepromRecordSet implements AltosRecordSet {
                AltosCalData    cal_data = cal_data();
 
                cal_data.reset();
                AltosCalData    cal_data = cal_data();
 
                cal_data.reset();
+               listener.set_log_format(config_data().log_format);
+
                for (AltosEepromRecord record : ordered) {
                        record.provide_data(listener, cal_data);
                }
                for (AltosEepromRecord record : ordered) {
                        record.provide_data(listener, cal_data);
                }
index df5751895e71bd16de0d9846056b7d9bd46f9af4..f7ea0d153ffc57678c5615d89ed985cc7e7d373d 100644 (file)
@@ -150,15 +150,13 @@ public class AltosFlightSeries extends AltosDataListener {
 
        public void set_state(int state) {
 
 
        public void set_state(int state) {
 
-               if (state == AltosLib.ao_flight_pad)
-                       return;
-
-               if (state_series == null)
-                       state_series = add_series(state_name, AltosConvert.state_name);
-               else if (this.state == state)
-                       return;
-               this.state = state;
-               state_series.add(time(), state);
+               if (state != AltosLib.ao_flight_pad && state != AltosLib.MISSING && state != AltosLib.ao_flight_stateless) {
+                       if (state_series == null)
+                               state_series = add_series(state_name, AltosConvert.state_name);
+                       if (this.state() != state)
+                               state_series.add(time(), state);
+               }
+               super.set_state(state);
        }
 
        public AltosTimeSeries  accel_series;
        }
 
        public AltosTimeSeries  accel_series;
index 39ab10da14c9c78bafee2156b7b3097b6ac80a71..54c7009451232bd43651b4028d31450622474c27 100644 (file)
@@ -480,7 +480,7 @@ public class AltosState extends AltosDataListener {
        class AltosPressure extends AltosValue {
                void set(double p, double time) {
                        super.set(p, time);
        class AltosPressure extends AltosValue {
                void set(double p, double time) {
                        super.set(p, time);
-                       if (state == AltosLib.ao_flight_pad)
+                       if (state() == AltosLib.ao_flight_pad)
                                ground_pressure.set_filtered(p, time);
                        double a = pressure_to_altitude(p);
                        altitude.set_computed(a, time);
                                ground_pressure.set_filtered(p, time);
                        double a = pressure_to_altitude(p);
                        altitude.set_computed(a, time);
@@ -557,7 +557,7 @@ public class AltosState extends AltosDataListener {
        class AltosSpeed extends AltosCValue {
 
                boolean can_max() {
        class AltosSpeed extends AltosCValue {
 
                boolean can_max() {
-                       return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless;
+                       return state() < AltosLib.ao_flight_fast || state() == AltosLib.ao_flight_stateless;
                }
 
                void set_accel() {
                }
 
                void set_accel() {
@@ -615,7 +615,7 @@ public class AltosState extends AltosDataListener {
        class AltosAccel extends AltosCValue {
 
                boolean can_max() {
        class AltosAccel extends AltosCValue {
 
                boolean can_max() {
-                       return state < AltosLib.ao_flight_fast || state == AltosLib.ao_flight_stateless;
+                       return state() < AltosLib.ao_flight_fast || state() == AltosLib.ao_flight_stateless;
                }
 
                void set_measured(double a, double time) {
                }
 
                void set_measured(double a, double time) {
@@ -712,11 +712,11 @@ public class AltosState extends AltosDataListener {
        }
 
        public void init() {
        }
 
        public void init() {
+               super.init();
+
                set = 0;
 
                received_time = System.currentTimeMillis();
                set = 0;
 
                received_time = System.currentTimeMillis();
-               time = AltosLib.MISSING;
-               state = AltosLib.ao_flight_invalid;
                landed = false;
                boost = false;
                rssi = AltosLib.MISSING;
                landed = false;
                boost = false;
                rssi = AltosLib.MISSING;
@@ -819,9 +819,9 @@ public class AltosState extends AltosDataListener {
 
                if (gps.locked && gps.nsat >= 4) {
                        /* Track consecutive 'good' gps reports, waiting for 10 of them */
 
                if (gps.locked && gps.nsat >= 4) {
                        /* Track consecutive 'good' gps reports, waiting for 10 of them */
-                       if (state == AltosLib.ao_flight_pad || state == AltosLib.ao_flight_stateless) {
+                       if (state() == AltosLib.ao_flight_pad || state() == AltosLib.ao_flight_stateless) {
                                set_npad(npad+1);
                                set_npad(npad+1);
-                               if (pad_lat != AltosLib.MISSING && (npad < 10 || state == AltosLib.ao_flight_pad)) {
+                               if (pad_lat != AltosLib.MISSING && (npad < 10 || state() == AltosLib.ao_flight_pad)) {
                                        pad_lat = (pad_lat * 31 + gps.lat) / 32;
                                        pad_lon = (pad_lon * 31 + gps.lon) / 32;
                                        gps_ground_altitude.set_filtered(gps.alt, time);
                                        pad_lat = (pad_lat * 31 + gps.lat) / 32;
                                        pad_lon = (pad_lon * 31 + gps.lon) / 32;
                                        gps_ground_altitude.set_filtered(gps.alt, time);
@@ -859,24 +859,14 @@ public class AltosState extends AltosDataListener {
        }
 
        public String state_name() {
        }
 
        public String state_name() {
-               return AltosLib.state_name(state);
+               return AltosLib.state_name(state());
        }
 
        public void set_state(int state) {
        }
 
        public void set_state(int state) {
-               if (state != AltosLib.ao_flight_invalid) {
-                       this.state = state;
-                       ascent = (AltosLib.ao_flight_boost <= state &&
-                                 state <= AltosLib.ao_flight_coast);
-                       boost = (AltosLib.ao_flight_boost == state);
-               }
-       }
-
-       public int state() {
-               return state;
-       }
-
-       private void re_init() {
-               init();
+               super.set_state(state);
+               ascent = (AltosLib.ao_flight_boost <= state() &&
+                         state() <= AltosLib.ao_flight_coast);
+               boost = (AltosLib.ao_flight_boost == state());
        }
 
        public int rssi() {
        }
 
        public int rssi() {
index f17e11717c391410fd222148b4e6733165c45ed0..fe536c6ac17e4ede763d2bb832b9bb7e1c2f4121 100644 (file)
@@ -51,7 +51,7 @@ public abstract class AltosTelemetry implements AltosDataProvider {
 
        public void provide_data(AltosDataListener listener) {
                listener.set_serial(serial());
 
        public void provide_data(AltosDataListener listener) {
                listener.set_serial(serial());
-               if (listener.state == AltosLib.ao_flight_invalid)
+               if (listener.state() == AltosLib.ao_flight_invalid)
                        listener.set_state(AltosLib.ao_flight_startup);
                if (frequency != AltosLib.MISSING)
                        listener.set_frequency(frequency);
                        listener.set_state(AltosLib.ao_flight_startup);
                if (frequency != AltosLib.MISSING)
                        listener.set_frequency(frequency);
index ea3074429c2cf4989e6e60e1668e90c255664a3a..c8026a8353923535b364e3d769944f5305f80926 100644 (file)
@@ -40,7 +40,7 @@ public class AltosTelemetryConfiguration extends AltosTelemetryStandard {
 
                AltosCalData cal_data = listener.cal_data();
 
 
                AltosCalData cal_data = listener.cal_data();
 
-               cal_data.set_device_type(device_type());
+               listener.set_device_type(device_type());
                cal_data.set_flight(flight());
                cal_data.set_config(config_major(), config_minor(), flight_log_max());
                if (device_type() == AltosLib.product_telegps)
                cal_data.set_flight(flight());
                cal_data.set_config(config_major(), config_minor(), flight_log_max());
                if (device_type() == AltosLib.product_telegps)
index 135b028447bb6ac49bf85ccbce1b6ea33cf27be4..e51455f8bb8c00cd4dabb62aa134276942e2e5f9 100644 (file)
@@ -128,7 +128,7 @@ public class AltosTelemetryFile implements AltosRecordSet {
                        /* Try to pick up at least one pre-boost value */
                        if (cal_data.time() >= -2)
                                telem.provide_data(listener);
                        /* Try to pick up at least one pre-boost value */
                        if (cal_data.time() >= -2)
                                telem.provide_data(listener);
-                       if (listener.state == AltosLib.ao_flight_landed)
+                       if (listener.state() == AltosLib.ao_flight_landed)
                                break;
                }
                listener.finish();
                                break;
                }
                listener.finish();
index 26fe4f26c38823584307d1b861637b7b0b105431..8fb61a4fe32490cbc4a31a6f16dbb71f33d0f643 100644 (file)
@@ -41,19 +41,15 @@ public class AltosTelemetryReader extends AltosFlightReader {
                                throw new IOException("IO error");
                } while (!link.get_monitor());
                AltosTelemetry  telem = AltosTelemetry.parse(l.line);
                                throw new IOException("IO error");
                } while (!link.get_monitor());
                AltosTelemetry  telem = AltosTelemetry.parse(l.line);
-               if (state == null) {
-                       System.out.printf("Make state\n");
+               if (state == null)
                        state = new AltosState(cal_data());
                        state = new AltosState(cal_data());
-               }
                telem.provide_data(state);
                return state;
        }
 
        public AltosCalData cal_data() {
                telem.provide_data(state);
                return state;
        }
 
        public AltosCalData cal_data() {
-               if (cal_data == null) {
-                       System.out.printf("Make cal data\n");
+               if (cal_data == null)
                        cal_data = new AltosCalData();
                        cal_data = new AltosCalData();
-               }
                return cal_data;
        }
 
                return cal_data;
        }