altoslib: Make cal_data private in AltosDataListener
authorKeith Packard <keithp@keithp.com>
Tue, 20 Jun 2017 18:18:41 +0000 (11:18 -0700)
committerKeith Packard <keithp@keithp.com>
Tue, 20 Jun 2017 18:18:41 +0000 (11:18 -0700)
This way we can create it as needed.

Signed-off-by: Keith Packard <keithp@keithp.com>
51 files changed:
altoslib/AltosCSV.java
altoslib/AltosDataListener.java
altoslib/AltosDataProvider.java
altoslib/AltosEepromRecordTiny.java
altoslib/AltosFlightSeries.java
altoslib/AltosFlightStats.java
altoslib/AltosGPS.java
altoslib/AltosIMU.java
altoslib/AltosIdleFetch.java
altoslib/AltosIdleMonitor.java
altoslib/AltosIdleReader.java
altoslib/AltosKML.java
altoslib/AltosLog.java
altoslib/AltosMag.java
altoslib/AltosMma655x.java
altoslib/AltosMs5607.java
altoslib/AltosReplayReader.java
altoslib/AltosSensorEMini.java
altoslib/AltosSensorMega.java
altoslib/AltosSensorMetrum.java
altoslib/AltosSensorTGPS.java
altoslib/AltosSensorTM.java
altoslib/AltosSensorTMini2.java
altoslib/AltosSensorTMini3.java
altoslib/AltosState.java
altoslib/AltosTelemetry.java
altoslib/AltosTelemetryCompanion.java
altoslib/AltosTelemetryConfiguration.java
altoslib/AltosTelemetryFile.java
altoslib/AltosTelemetryLegacy.java
altoslib/AltosTelemetryLocation.java
altoslib/AltosTelemetryMegaData.java
altoslib/AltosTelemetryMegaSensor.java
altoslib/AltosTelemetryMetrumSensor.java
altoslib/AltosTelemetryMini2.java
altoslib/AltosTelemetryMini3.java
altoslib/AltosTelemetryRaw.java
altoslib/AltosTelemetryReader.java
altoslib/AltosTelemetrySatellite.java
altoslib/AltosTelemetrySensor.java
altoslib/AltosTelemetryStandard.java
altosui/AltosFlightStatus.java
altosui/AltosPad.java
altosui/AltosUI.java
altosuilib/AltosCSVUI.java
altosuilib/AltosGraph.java
altosuilib/AltosInfoTable.java
altosuilib/AltosScanUI.java
telegps/TeleGPS.java
telegps/TeleGPSState.java
telegps/TeleGPSStatus.java

index aed187283c43d4adf30e5986c6978525738c566e..f55b47852a47a895e8fa829346a9594b5a17a6a9 100644 (file)
@@ -133,8 +133,8 @@ public class AltosCSV implements AltosWriter {
        void write_general() {
                double time = time();
                out.printf("%s, %d, %d, %s, %8.2f, %8.2f, %4d, %3d",
-                          ALTOS_CSV_VERSION, series.cal_data.serial,
-                          series.cal_data.flight, series.cal_data.callsign,
+                          ALTOS_CSV_VERSION, series.cal_data().serial,
+                          series.cal_data().flight, series.cal_data().callsign,
                           time, time,
                           rssi(), status() & 0x7f);
        }
@@ -220,8 +220,8 @@ public class AltosCSV implements AltosWriter {
 
                AltosGreatCircle from_pad;
 
-               if (series.cal_data.gps_pad != null && gps != null)
-                       from_pad = new AltosGreatCircle(series.cal_data.gps_pad, gps);
+               if (series.cal_data().gps_pad != null && gps != null)
+                       from_pad = new AltosGreatCircle(series.cal_data().gps_pad, gps);
                else
                        from_pad = new AltosGreatCircle();
 
index 7f5dfda9360cfb9bf1c4c249e457134aae4957b2..5f89b3e4b5adae46772f47387ea0e5da37107f19 100644 (file)
@@ -16,24 +16,45 @@ package org.altusmetrum.altoslib_12;
 
 public abstract class AltosDataListener {
 
-       public AltosCalData     cal_data = null;
+       private AltosCalData    cal_data = null;
+
        public double           time = AltosLib.MISSING;
        public int              state = AltosLib.MISSING;
 
+       public void set_tick(int tick) {
+               cal_data.set_tick(tick);
+               set_time(cal_data.time());
+       }
+
+       public AltosCalData cal_data() {
+               if (cal_data == null)
+                       cal_data = new AltosCalData();
+               return cal_data;
+       }
+
        public void set_time(double time) {
                if (time != AltosLib.MISSING)
                        this.time = time;
        }
 
+       public void set_serial(int serial) {
+               cal_data().set_serial(serial);
+       }
+
        public double time() {
                return time;
        }
 
        public void set_state(int state) {
+               cal_data().set_state(state);
                if (state != AltosLib.MISSING)
                        this.state = state;
        }
 
+       public void set_flight(int flight) {
+               cal_data().set_flight(flight);
+       }
+
        /* Called after all records are captured */
        public void finish() {
        }
index f977aee3f88f62a23233540e14fdb2df5d9c2e8b..9589a8e65db8829a00e902e6470c3f719b0887dc 100644 (file)
@@ -19,5 +19,5 @@
 package org.altusmetrum.altoslib_12;
 
 public interface AltosDataProvider {
-       public void     provide_data(AltosDataListener listener, AltosCalData cal_data) throws InterruptedException, AltosUnknownProduct;
+       public void     provide_data(AltosDataListener listener) throws InterruptedException, AltosUnknownProduct;
 }
index 4d44ddd7dac6b09837aabc9d95e64fdc95b1b36f..06ee9d54508575d142dc66c8e3a07fb3a6e3c4ed 100644 (file)
@@ -50,16 +50,15 @@ public class AltosEepromRecordTiny extends AltosEepromRecord implements AltosDat
                return tick;
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
+       public void provide_data(AltosDataListener listener) {
                int value = data16(-header_length);
 
-               cal_data.set_tick(tick());
-               listener.set_time(cal_data.time());
+               listener.set_tick(tick());
                switch (cmd()) {
                case AltosLib.AO_LOG_FLIGHT:
                        listener.set_state(AltosLib.ao_flight_pad);
-                       cal_data.set_flight(value);
-                       cal_data.set_boost_tick();
+                       listener.cal_data().set_flight(value);
+                       listener.cal_data().set_boost_tick();
                        break;
                case AltosLib.AO_LOG_STATE:
                        listener.set_state(value & 0x7fff);
index fc7a9f147f9c2344c905cac192f79ee5654c869d..45d3b4563207a0c5f4f11309c6e41064ca107392 100644 (file)
@@ -232,23 +232,23 @@ public class AltosFlightSeries extends AltosDataListener {
                if (altitude_series == null)
                        altitude_series = add_series(altitude_name, AltosConvert.height);
 
-               if (cal_data.ground_pressure == AltosLib.MISSING)
-                       cal_data.set_ground_pressure(pa);
+               if (cal_data().ground_pressure == AltosLib.MISSING)
+                       cal_data().set_ground_pressure(pa);
 
                double altitude = AltosConvert.pressure_to_altitude(pa);
                altitude_series.add(time(), altitude);
        }
 
        private void compute_height() {
-               double ground_altitude = cal_data.ground_altitude;
+               double ground_altitude = cal_data().ground_altitude;
                if (height_series == null && ground_altitude != AltosLib.MISSING && altitude_series != null) {
                        height_series = add_series(height_name, AltosConvert.height);
                        for (AltosTimeValue alt : altitude_series)
                                height_series.add(alt.time, alt.value - ground_altitude);
                }
 
-               if (gps_height == null && cal_data.gps_pad != null && cal_data.gps_pad.alt != AltosLib.MISSING && gps_altitude != null) {
-                       double gps_ground_altitude = cal_data.gps_pad.alt;
+               if (gps_height == null && cal_data().gps_pad != null && cal_data().gps_pad.alt != AltosLib.MISSING && gps_altitude != null) {
+                       double gps_ground_altitude = cal_data().gps_pad.alt;
                        gps_height = add_series(gps_height_name, AltosConvert.height);
                        for (AltosTimeValue gps_alt : gps_altitude)
                                gps_height.add(gps_alt.time, gps_alt.value - gps_ground_altitude);
@@ -343,16 +343,16 @@ public class AltosFlightSeries extends AltosDataListener {
                if (accel_ground_across == AltosLib.MISSING)
                        return;
 
-               if (cal_data.pad_orientation == AltosLib.MISSING)
+               if (cal_data().pad_orientation == AltosLib.MISSING)
                        return;
 
-               if (cal_data.accel_zero_across == AltosLib.MISSING)
+               if (cal_data().accel_zero_across == AltosLib.MISSING)
                        return;
 
-               AltosRotation rotation = new AltosRotation(AltosIMU.convert_accel(accel_ground_across - cal_data.accel_zero_across),
-                                                          AltosIMU.convert_accel(accel_ground_through - cal_data.accel_zero_through),
-                                                          AltosIMU.convert_accel(accel_ground_along - cal_data.accel_zero_along),
-                                                          cal_data.pad_orientation);
+               AltosRotation rotation = new AltosRotation(AltosIMU.convert_accel(accel_ground_across - cal_data().accel_zero_across),
+                                                          AltosIMU.convert_accel(accel_ground_through - cal_data().accel_zero_through),
+                                                          AltosIMU.convert_accel(accel_ground_along - cal_data().accel_zero_along),
+                                                          cal_data().pad_orientation);
                double prev_time = ground_time;
 
                orient_series = add_series(orient_name, AltosConvert.orient);
index a2c5d468d179c88c46f556d00aa6797b93dd3165..2b6530c8d0c04458d0751dd181b24c7fc85dcca7 100644 (file)
@@ -128,7 +128,7 @@ public class AltosFlightStats {
 
 
        public AltosFlightStats(AltosFlightSeries series) {
-               AltosCalData    cal_data = series.cal_data;
+               AltosCalData    cal_data = series.cal_data();
 
                series.finish();
 
@@ -204,7 +204,7 @@ public class AltosFlightStats {
                has_rssi = series.rssi_series != null;
                has_flight_data = series.pressure_series != null;
 
-               AltosGPS gps = series.cal_data.gps_pad;
+               AltosGPS gps = series.cal_data().gps_pad;
 
                if (gps != null) {
                        year = gps.year;
index 7898fb9fa90e5c723901cd218caeef9ba8daf01f..b6ca3576b4096e061d2d59090c0ae9a93e544db2 100644 (file)
@@ -383,7 +383,7 @@ public class AltosGPS implements Cloneable {
                }
        }
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosGPS gps = new AltosGPS(link, link.config_data());
                        if (gps != null)
index 87d3ec940b5f436e8a0bb23fb15c8e5d186c6deb..dee28a92319eb8532d5d2556180ae51fa827509d 100644 (file)
@@ -74,9 +74,10 @@ public class AltosIMU implements Cloneable {
                return n;
        }
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosIMU        imu = new AltosIMU(link);
+                       AltosCalData    cal_data = listener.cal_data();
 
                        if (imu != null) {
                                listener.set_gyro(cal_data.gyro_roll(imu.gyro_y),
index 7980ae6b521cfec0da3510ee91a4e127542b9c6b..058df0a1a246db3455e4f4877b05df0f8ff241fa 100644 (file)
@@ -43,47 +43,47 @@ class AltosIdler {
        static final int        idle_sensor_tgps = 16;
        static final int        idle_sensor_tmini3 = 17;
 
-       public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException, TimeoutException, AltosUnknownProduct {
+       public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException, TimeoutException, AltosUnknownProduct {
                for (int idler : idlers) {
                        switch (idler) {
                        case idle_gps:
-                               AltosGPS.provide_data(listener, link, cal_data);
+                               AltosGPS.provide_data(listener, link);
                                break;
                        case idle_imu:
-                               AltosIMU.provide_data(listener, link, cal_data);
+                               AltosIMU.provide_data(listener, link);
                                break;
                        case idle_mag:
-                               AltosMag.provide_data(listener, link, cal_data);
+                               AltosMag.provide_data(listener, link);
                                break;
                        case idle_mma655x:
-                               AltosMma655x.provide_data(listener, link, cal_data);
+                               AltosMma655x.provide_data(listener, link);
                                break;
                        case idle_ms5607:
-                               AltosMs5607.provide_data(listener, link, cal_data);
+                               AltosMs5607.provide_data(listener, link);
                                break;
                        case idle_sensor_tm:
-                               AltosSensorTM.provide_data(listener, link, cal_data);
+                               AltosSensorTM.provide_data(listener, link);
                                break;
                        case idle_sensor_metrum:
-                               AltosSensorMetrum.provide_data(listener, link, cal_data);
+                               AltosSensorMetrum.provide_data(listener, link);
                                break;
                        case idle_sensor_mega:
-                               AltosSensorMega.provide_data(listener, link, cal_data);
+                               AltosSensorMega.provide_data(listener, link);
                                break;
                        case idle_sensor_emini1:
-                               AltosSensorEMini.provide_data(listener, link, cal_data, 1);
+                               AltosSensorEMini.provide_data(listener, link, 1);
                                break;
                        case idle_sensor_emini2:
-                               AltosSensorEMini.provide_data(listener, link, cal_data, 2);
+                               AltosSensorEMini.provide_data(listener, link, 2);
                                break;
                        case idle_sensor_tmini2:
-                               AltosSensorTMini2.provide_data(listener, link, cal_data);
+                               AltosSensorTMini2.provide_data(listener, link);
                                break;
                        case idle_sensor_tgps:
-                               AltosSensorTGPS.provide_data(listener, link, cal_data);
+                               AltosSensorTGPS.provide_data(listener, link);
                                break;
                        case idle_sensor_tmini3:
-                               AltosSensorTMini3.provide_data(listener, link, cal_data);
+                               AltosSensorTMini3.provide_data(listener, link);
                                break;
                        }
                }
@@ -151,7 +151,7 @@ public class AltosIdleFetch implements AltosDataProvider {
 
        AltosLink               link;
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) throws InterruptedException, AltosUnknownProduct {
+       public void provide_data(AltosDataListener listener) throws InterruptedException, AltosUnknownProduct {
                try {
                        boolean matched = false;
                        /* Fetch config data from remote */
@@ -159,7 +159,7 @@ public class AltosIdleFetch implements AltosDataProvider {
                        listener.set_state(AltosLib.ao_flight_stateless);
                        for (AltosIdler idler : idlers) {
                                if (idler.matches(config_data)) {
-                                       idler.provide_data(listener, link, cal_data);
+                                       idler.provide_data(listener, link);
                                        matched = true;
                                        break;
                                }
index cc6b854587f50bdc5ee0b9e57114050d16249139..fc5d4cc889ef51bbe52227bb93d53b2409a9723e 100644 (file)
@@ -55,11 +55,10 @@ public class AltosIdleMonitor extends Thread {
        boolean provide_data(AltosDataListener listener) throws InterruptedException, TimeoutException, AltosUnknownProduct {
                boolean         worked = false;
                boolean         aborted = false;
-               AltosCalData    cal_data = new AltosCalData(link.config_data());
 
                try {
                        start_link();
-                       fetch.provide_data(listener, cal_data);
+                       fetch.provide_data(listener);
                        if (!link.has_error && !link.reply_abort)
                                worked = true;
                } finally {
index 5f9ceca31bee0564a3c617bdee9884029aef77c1..d15e217487f482815e29281a8fece2c3016e7b98 100644 (file)
@@ -72,7 +72,7 @@ public class AltosIdleReader extends AltosFlightReader {
                                start_link();
                                if (state == null)
                                        state = new AltosState(cal_data());
-                               fetch.provide_data(state, state.cal_data);
+                               fetch.provide_data(state);
                                if (!link.has_error && !link.reply_abort)
                                        worked = true;
                        } catch (TimeoutException te) {
index ccdd0818e124e1bfa6d20eccc5f2c36021c92f10..1c025ef41cc09b5049181f61dfbcd6e56259d83d 100644 (file)
@@ -189,9 +189,9 @@ public class AltosKML implements AltosWriter {
 
        public void write(AltosFlightSeries series) {
                stats = new AltosFlightStats(series);
-               start(series.cal_data);
+               start(series.cal_data());
                for (AltosGPSTimeValue gtv : series.gps_series)
-                       write(gtv, series.cal_data, state(series, gtv.time), height(series, gtv.time));
+                       write(gtv, series.cal_data(), state(series, gtv.time), height(series, gtv.time));
        }
 
        public AltosKML(File in_name) throws FileNotFoundException {
index ab0d398799f7661ec46d89f064c954f84a4caa97..44bea6465859e7ff2a91e8c3c65bd173fdafc508 100644 (file)
@@ -92,7 +92,7 @@ public class AltosLog implements Runnable {
                                        AltosTelemetry  telem = AltosTelemetry.parse(line.line);
                                        if (state == null)
                                                state = new AltosState(cal_data);
-                                       telem.provide_data(state, cal_data);
+                                       telem.provide_data(state);
 
                                        if (cal_data.serial != serial ||
                                            cal_data.flight != flight ||
index 3cf83138059add1bd119c7cd3a18a0b860f60eeb..0d8ec69fec6ecf85bd448d988b4de25577169673 100644 (file)
@@ -62,9 +62,10 @@ public class AltosMag implements Cloneable {
                y = AltosLib.MISSING;
        }
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosMag        mag = new AltosMag(link);
+                       AltosCalData    cal_data = listener.cal_data();
 
                        if (mag != null)
                                listener.set_mag(cal_data.mag_along(mag.y),
index f69b571b17c528810a373c9ead7a69b860248926..0f6022ac4d89c34ac077e9eb8a477bb6caeb6e0f 100644 (file)
@@ -46,9 +46,10 @@ public class AltosMma655x implements Cloneable {
                return n;
        }
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException, AltosUnknownProduct {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException, AltosUnknownProduct {
                try {
                        AltosMma655x    mma655x = new AltosMma655x(link);
+                       AltosCalData    cal_data = listener.cal_data();
 
                        if (mma655x != null) {
                                int accel = mma655x.accel;
index 6888bda1a8c5441e487fc2f8beede8a04fdf2bf4..5b3ba65d2040a1df3331312e899e09c8042e6266 100644 (file)
@@ -133,8 +133,9 @@ public class AltosMs5607 {
                crc = old.crc;
        }
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
+                       AltosCalData    cal_data = listener.cal_data();
                        AltosMs5607     ms5607 = cal_data.ms5607;
 
                        if (ms5607 != null) {
index 3847cab7cb49849bbc382734a04baa1f77edb670..24b425b78a2bc797f93cf77bdd6b405d1d318f58 100644 (file)
@@ -108,7 +108,7 @@ public class AltosReplayReader extends AltosFlightReader {
        int             reads;
 
        public AltosCalData cal_data() {
-               return replay.state.cal_data;
+               return replay.state.cal_data();
        }
 
        public AltosState read() {
index a144ec7a1dd9cefa0b09faaac199dcbf4f2bd9d8..1bdbb60c4a33624ed2a6c95e2c36f33a181f5eac 100644 (file)
@@ -26,9 +26,10 @@ public class AltosSensorEMini {
        public int      main;
        public int      batt;
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data, int version) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link, int version) throws InterruptedException {
                try {
                        AltosSensorEMini        sensor_emini = new AltosSensorEMini(link);
+                       AltosCalData            cal_data = listener.cal_data();
 
                        if (sensor_emini == null)
                                return;
index c47ee4b1faf400db7230b30ef6f1831a21c84905..e58b03a1342e329be3741d93fb5049328ee511ff 100644 (file)
@@ -89,7 +89,7 @@ class AltosSensorMega {
                }
        }
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosSensorMega sensor_mega = new AltosSensorMega(link);
 
index 6d64b6baef664ebde488a73d43ac23662d97df58..e01d57cc6bacaf9085f9c55d5fc59a6ed6cf38be 100644 (file)
@@ -53,7 +53,7 @@ class AltosSensorMetrum {
                }
        }
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosSensorMetrum       sensor_metrum = new AltosSensorMetrum(link);
                        listener.set_battery_voltage(AltosConvert.mega_battery_voltage(sensor_metrum.v_batt));
index 5f39e5961f5d89ee5bda70c099f504c9f6edc6fd..14514413de9aceadb57ef6aa0b05251e6a331996 100644 (file)
@@ -24,7 +24,7 @@ public class AltosSensorTGPS {
        public int      tick;
        public int      batt;
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosSensorTGPS sensor_tgps = new AltosSensorTGPS(link);
 
index 76bf8a77b3feb08ad66c7b0aab90eef36036fc51..bdedaa9c88b1218cb64e8a1a91dfbbd0c1163145 100644 (file)
@@ -29,9 +29,10 @@ public class AltosSensorTM {
        public int      drogue;
        public int      main;
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosSensorTM   sensor_tm = new AltosSensorTM(link);
+                       AltosCalData    cal_data = listener.cal_data();
 
                        if (sensor_tm == null)
                                return;
index 8d95c7f711d17bb984227ebc8f3c2f5868632949..9b5a18545070e7e331886a8e62f33af712aaa179 100644 (file)
@@ -26,7 +26,7 @@ public class AltosSensorTMini2 {
        public int      main;
        public int      batt;
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosSensorTMini2       sensor_tmini = new AltosSensorTMini2(link);
 
index bb7fcd7770c99be8b1574a3a9bb361bf561cbed1..b92def03475357ca1b563615501f292ae6392004 100644 (file)
@@ -26,7 +26,7 @@ public class AltosSensorTMini3 {
        public int      main;
        public int      batt;
 
-       static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException {
+       static public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException {
                try {
                        AltosSensorTMini3       sensor_tmini = new AltosSensorTMini3(link);
 
index 6f2936529959ed1b71be688969d22c00ad1fc475..cfee819bc76610f81fd2d092a9b7c18c79126368 100644 (file)
@@ -909,11 +909,11 @@ public class AltosState extends AltosDataListener {
        public double   accel_ground_along, accel_ground_across, accel_ground_through;
 
        void update_pad_rotation() {
-               if (cal_data.pad_orientation != AltosLib.MISSING && accel_ground_along != AltosLib.MISSING) {
-                       rotation = new AltosRotation(AltosIMU.convert_accel(accel_ground_across - cal_data.accel_zero_across),
-                                                    AltosIMU.convert_accel(accel_ground_through - cal_data.accel_zero_through),
-                                                    AltosIMU.convert_accel(accel_ground_along - cal_data.accel_zero_along),
-                                                    cal_data.pad_orientation);
+               if (cal_data().pad_orientation != AltosLib.MISSING && accel_ground_along != AltosLib.MISSING) {
+                       rotation = new AltosRotation(AltosIMU.convert_accel(accel_ground_across - cal_data().accel_zero_across),
+                                                    AltosIMU.convert_accel(accel_ground_through - cal_data().accel_zero_through),
+                                                    AltosIMU.convert_accel(accel_ground_along - cal_data().accel_zero_along),
+                                                    cal_data().pad_orientation);
                        orient.set_computed(rotation.tilt(), time);
                }
        }
@@ -1066,8 +1066,6 @@ public class AltosState extends AltosDataListener {
 
        public AltosState (AltosCalData cal_data) {
                super(cal_data);
-               if (cal_data == null)
-                       Thread.dumpStack();
                init();
        }
 }
index e93e6601ea417bece40a9f68c9a08c6e67228558..7d576942c22f6348cd2b804c9855d751f1745f69 100644 (file)
@@ -46,12 +46,11 @@ public abstract class AltosTelemetry implements AltosDataProvider {
                return sum == bytes[bytes.length - 1];
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               cal_data.set_serial(serial());
+       public void provide_data(AltosDataListener listener) {
+               listener.set_serial(serial());
                if (listener.state == AltosLib.ao_flight_invalid)
                        listener.set_state(AltosLib.ao_flight_startup);
-               cal_data.set_tick(tick());
-               listener.set_time(cal_data.time());
+               listener.set_tick(tick());
                listener.set_rssi(rssi(), status());
                listener.set_received_time(received_time);
        }
index 6f91d7c289a5ba760ed8d065f142df46ddcc7fb1..c6dfe3eb90a54d2a1579bc7610a12d75260d1439 100644 (file)
@@ -49,8 +49,8 @@ public class AltosTelemetryCompanion extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
                listener.set_companion(companion());
        }
 }
index b5f0eb4b821893074b99f1d5ad702961c09b090b..ea3074429c2cf4989e6e60e1668e90c255664a3a 100644 (file)
@@ -35,8 +35,11 @@ public class AltosTelemetryConfiguration extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
+
+               AltosCalData cal_data = listener.cal_data();
+
                cal_data.set_device_type(device_type());
                cal_data.set_flight(flight());
                cal_data.set_config(config_major(), config_minor(), flight_log_max());
index 037a6c87f9698a2c018d0426d5ab4aaa3b3d1eb6..135b028447bb6ac49bf85ccbce1b6ea33cf27be4 100644 (file)
@@ -52,6 +52,8 @@ class AltosTelemetryNullListener extends AltosDataListener {
 
        public boolean cal_data_complete() {
                /* All telemetry packets */
+               AltosCalData cal_data = cal_data();
+
                if (cal_data.serial == AltosLib.MISSING)
                        return false;
 
@@ -107,7 +109,7 @@ public class AltosTelemetryFile implements AltosRecordSet {
                        AltosTelemetryNullListener l = new AltosTelemetryNullListener(cal_data);
 
                        for (AltosTelemetry telem : telems) {
-                               telem.provide_data(l, cal_data);
+                               telem.provide_data(l);
                                if (l.cal_data_complete())
                                        break;
                        }
@@ -125,7 +127,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, cal_data);
+                               telem.provide_data(listener);
                        if (listener.state == AltosLib.ao_flight_landed)
                                break;
                }
index 7f3f2ecb2382f9a155b7bea6f79d949a4fac8d2d..027f601e1aa553fa022ae12636e55ee9ac8d7f58 100644 (file)
@@ -548,16 +548,17 @@ public class AltosTelemetryLegacy extends AltosTelemetry {
                }
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               cal_data.set_tick(tick);
-               listener.set_time(cal_data.time());
+       public void provide_data(AltosDataListener listener) {
+               listener.set_serial(serial);
+               listener.set_tick(tick);
                listener.set_state(this.state);
-               cal_data.set_state(this.state);
-               cal_data.set_flight(flight);
-               cal_data.set_serial(serial);
+               listener.set_flight(flight);
                listener.set_rssi(rssi, status);
 
                listener.set_pressure(AltosConvert.barometer_to_pressure(pres));
+
+               AltosCalData cal_data = listener.cal_data();
+
                cal_data.set_accel_plus_minus(accel_plus_g, accel_minus_g);
                listener.set_acceleration(cal_data.acceleration(accel));
                if (kalman_height != AltosLib.MISSING)
index 6819fec8c5b9898c133032449db3197bf4795ff8..f4366e33a3116ada1f71104dc4854dce701e1cad 100644 (file)
@@ -49,8 +49,10 @@ public class AltosTelemetryLocation extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
+
+               AltosCalData    cal_data = listener.cal_data();
 
                AltosGPS        gps = cal_data.make_temp_gps(tick(), false);
 
index 29baee8c4f7c9ededa4b6c3746fef0fc5f095268..7ef9c63759fd0e00ff70823903837c9e162973f0 100644 (file)
@@ -39,11 +39,10 @@ public class AltosTelemetryMegaData extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
 
                listener.set_state(state());
-               cal_data.set_state(state());
 
                listener.set_battery_voltage(AltosConvert.mega_battery_voltage(v_batt()));
                listener.set_pyro_voltage(AltosConvert.mega_pyro_voltage(v_pyro()));
@@ -57,6 +56,8 @@ public class AltosTelemetryMegaData extends AltosTelemetryStandard {
 
                listener.set_igniter_voltage(voltages);
 
+               AltosCalData cal_data = listener.cal_data();
+
                cal_data.set_ground_accel(ground_accel());
                cal_data.set_ground_pressure(ground_pres());
                cal_data.set_accel_plus_minus(accel_plus_g(), accel_minus_g());
index efcc3ccb6c19ea312814767b657a56b6433449eb..4c64b55456b9ef8731593aafc2c2177ff0132aa2 100644 (file)
@@ -41,8 +41,10 @@ public class AltosTelemetryMegaSensor extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
+
+               AltosCalData cal_data = listener.cal_data();
 
                listener.set_acceleration(cal_data.acceleration(accel()));
                listener.set_pressure(pres());
index 211f9c687fe10ec732e5fb5e780b835ae5dac6d8..79d3a499dcad7edde7443852bac42c4028484dce 100644 (file)
@@ -38,13 +38,12 @@ public class AltosTelemetryMetrumSensor extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
 
                listener.set_state(state());
-               cal_data.set_state(state());
 
-               listener.set_acceleration(cal_data.acceleration(accel()));
+               listener.set_acceleration(listener.cal_data().acceleration(accel()));
                listener.set_pressure(pres());
                listener.set_temperature(temp()/100.0);
 
index 59a4d5061a32657c6834dfb5563c21fa81162d42..3ea287ac23de4206022c2a67c3aee38ce043d5b0 100644 (file)
@@ -40,16 +40,17 @@ public class AltosTelemetryMini2 extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
 
                listener.set_state(state());
-               cal_data.set_state(state());
 
                listener.set_battery_voltage(AltosConvert.tele_mini_2_voltage(v_batt()));
                listener.set_apogee_voltage(AltosConvert.tele_mini_2_voltage(sense_a()));
                listener.set_main_voltage(AltosConvert.tele_mini_2_voltage(sense_m()));
 
+               AltosCalData    cal_data = listener.cal_data();
+
                cal_data.set_ground_pressure(ground_pres());
 
                listener.set_pressure(pres());
index 13c2ea4d2d4ad5ba08d434cb7fe7b5296d166086..c66f8e6114316da6e6e1538b6b96066505b5ff5e 100644 (file)
@@ -40,19 +40,18 @@ public class AltosTelemetryMini3 extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
-
-               cal_data.set_ground_pressure(ground_pres());
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
 
                listener.set_state(state());
-               cal_data.set_state(state());
 
                listener.set_battery_voltage(AltosConvert.tele_mini_3_battery_voltage(v_batt()));
 
                listener.set_apogee_voltage(AltosConvert.tele_mini_3_pyro_voltage(sense_a()));
                listener.set_main_voltage(AltosConvert.tele_mini_3_pyro_voltage(sense_m()));
 
+               listener.cal_data().set_ground_pressure(ground_pres());
+
                listener.set_pressure(pres());
                listener.set_temperature(temp()/100.0);
 
index f2d73ae833e47ce2b7a3772622a3d22a4ba5dff2..f2108d6861bbcf886987555f5d1bc34023b1f859 100644 (file)
@@ -23,7 +23,7 @@ public class AltosTelemetryRaw extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
        }
 }
index 7b51853d703d2983991cd048afdf35767349b7cd..26fe4f26c38823584307d1b861637b7b0b105431 100644 (file)
@@ -45,7 +45,7 @@ public class AltosTelemetryReader extends AltosFlightReader {
                        System.out.printf("Make state\n");
                        state = new AltosState(cal_data());
                }
-               telem.provide_data(state, state.cal_data);
+               telem.provide_data(state);
                return state;
        }
 
index 012d0c467551aa3b0f19e720b55003481d8a91be..60bc4a51db41ba15cbb4ddcc1a1333094b6239bc 100644 (file)
@@ -44,8 +44,10 @@ public class AltosTelemetrySatellite extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
+
+               AltosCalData    cal_data = listener.cal_data();
 
                AltosGPS        gps = cal_data.make_temp_gps(tick(), true);
 
index 6bbe4ecea50e32a4a2eb031d6a645795cf28316f..dc8efa9b1d7c3a269b9b1c4371d870f1547e6e3b 100644 (file)
@@ -41,11 +41,12 @@ public class AltosTelemetrySensor extends AltosTelemetryStandard {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
 
                listener.set_state(state());
-               cal_data.set_state(state());
+
+               AltosCalData    cal_data = listener.cal_data();
 
                if (type() == packet_type_TM_sensor) {
                        cal_data.set_ground_accel(ground_accel());
index 563815618f41a33d6a516f6b46ee2781c26fe22b..2a1c93652f08d8f42379deb693c587fdda1eb3e5 100644 (file)
@@ -104,7 +104,7 @@ public abstract class AltosTelemetryStandard extends AltosTelemetry {
                super(bytes);
        }
 
-       public void provide_data(AltosDataListener listener, AltosCalData cal_data) {
-               super.provide_data(listener, cal_data);
+       public void provide_data(AltosDataListener listener) {
+               super.provide_data(listener);
        }
 }
index b46cbc840f6ae3c9417c754fb67bcee6f22d3951..a5e5a4efec4fea8fae1f2dd3f78c9539145e492d 100644 (file)
@@ -93,14 +93,14 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay
                }
 
                void show(AltosState state, AltosListenerState listener_state) {
-                       if (!same_call(state.cal_data.callsign)) {
+                       if (!same_call(state.cal_data().callsign)) {
                                show();
-                               value.setText(state.cal_data.callsign);
-                               if (state.cal_data.callsign == null)
+                               value.setText(state.cal_data().callsign);
+                               if (state.cal_data().callsign == null)
                                        setVisible(false);
                                else
                                        setVisible(true);
-                               last_call = state.cal_data.callsign;
+                               last_call = state.cal_data().callsign;
                        }
                }
 
@@ -120,7 +120,7 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay
 
                int     last_serial = -1;
                void show(AltosState state, AltosListenerState listener_state) {
-                       AltosCalData    cal_data = state.cal_data;
+                       AltosCalData    cal_data = state.cal_data();
                        if (cal_data.serial != last_serial) {
                                show();
                                if (cal_data.serial == AltosLib.MISSING)
@@ -148,7 +148,7 @@ public class AltosFlightStatus extends JComponent implements AltosFlightDisplay
                int     last_flight = -1;
 
                void show(AltosState state, AltosListenerState listener_state) {
-                       AltosCalData cal_data = state.cal_data;
+                       AltosCalData cal_data = state.cal_data();
                        if (cal_data.flight != last_flight) {
                                show();
                                if (cal_data.flight == AltosLib.MISSING)
index 331b58e366fde122a8e76adccb77527f8f889cc0..0aeef8e159cd92bf79c3826f5f445c162deca8e7 100644 (file)
@@ -46,10 +46,11 @@ public class AltosPad extends AltosUIFlightTab {
 
        class LoggingReady extends AltosUIIndicator {
                public void show (AltosState state, AltosListenerState listener_state) {
-                       if (state == null || state.cal_data.flight == AltosLib.MISSING) {
+                       AltosCalData    cal_data = state.cal_data();
+                       if (state == null || cal_data.flight == AltosLib.MISSING) {
                                hide();
                        } else {
-                               if (state.cal_data.flight != 0) {
+                               if (cal_data.flight != 0) {
                                        if (state.state() <= Altos.ao_flight_pad)
                                                show("Ready to record");
                                        else if (state.state() < Altos.ao_flight_landed ||
@@ -59,7 +60,7 @@ public class AltosPad extends AltosUIFlightTab {
                                                show("Recorded data");
                                } else
                                        show("Storage full");
-                               set_lights(state.cal_data.flight != 0);
+                               set_lights(cal_data.flight != 0);
                        }
                }
                public LoggingReady (AltosUIFlightTab container, int y) {
index 3ec25cfa7cb8af96d5c2faebf086533968d29a14..26591738440a197dbde1d60cb1241644b06296bc 100644 (file)
@@ -342,7 +342,7 @@ public class AltosUI extends AltosUIFrame {
                if (set == null)
                        return;
                AltosFlightSeries series = make_series(set);
-               new AltosCSVUI(AltosUI.this, series, series.cal_data, chooser.file());
+               new AltosCSVUI(AltosUI.this, series, chooser.file());
        }
 
        /* Load a flight log CSV file and display a pretty graph.
index 821b842b7eb90b88a443a7ca401f24b07039f395..442e3de3520483cf092c1555e482249d01449fb5 100644 (file)
@@ -56,9 +56,9 @@ public class AltosCSVUI
                        set_default_file();
        }
 
-       public AltosCSVUI(JFrame frame, AltosFlightSeries series, AltosCalData cal_data, File source_file) {
+       public AltosCSVUI(JFrame frame, AltosFlightSeries series, File source_file) {
                this.series = series;
-               this.cal_data = cal_data;
+               this.cal_data = series.cal_data();
                csv_chooser = new JFileChooser(source_file);
 
                accessory = new JPanel();
index 8125e5e0b09645ffcf2e1c9907409a4719634676..31042abb51e34ca1da41c1f0ff4df5809243280d 100644 (file)
@@ -84,7 +84,7 @@ public class AltosGraph extends AltosUIGraph {
        AltosUIFlightSeries flight_series;
 
        AltosUITimeSeries[] setup(AltosFlightStats stats, AltosUIFlightSeries flight_series) {
-               AltosCalData    cal_data = flight_series.cal_data;
+               AltosCalData    cal_data = flight_series.cal_data();
 
                AltosUIAxis     height_axis, speed_axis, accel_axis, voltage_axis, temperature_axis, nsat_axis, dbm_axis;
                AltosUIAxis     distance_axis, pressure_axis, thrust_axis;
index 41614cfa7e54d585306004ee9db17917bacf5ae4..9e528b1fd27f6ae4295bb7bdc013a53c3a74ab0c 100644 (file)
@@ -128,7 +128,7 @@ public class AltosInfoTable extends JTable implements AltosFlightDisplay, Hierar
 
        public void show(AltosState state, AltosListenerState listener_state) {
 
-               AltosCalData    cal_data = state.cal_data;
+               AltosCalData    cal_data = state.cal_data();
 
                if (!isShowing()) {
                        last_state = state;
index 1280ba6a3daaad617f497e37635cfe191c349740..c63f027c12d7c0de1e12a95475937feae6d2ae77 100644 (file)
@@ -213,7 +213,7 @@ public class AltosScanUI
                                                if (state == null)
                                                        continue;
                                                packet_count++;
-                                               AltosCalData    cal_data = state.cal_data;
+                                               AltosCalData    cal_data = state.cal_data();
                                                if (cal_data.flight != AltosLib.MISSING) {
                                                        final AltosScanResult   result = new AltosScanResult(cal_data.callsign,
                                                                                                             cal_data.serial,
index c6cd2bd1d3998824647c4f5bc6a0f77884c5b796..3646f000a450d2b65a8c1304520a7a84098f248c 100644 (file)
@@ -301,7 +301,7 @@ public class TeleGPS
                if (set == null)
                        return;
                AltosFlightSeries series = make_series(set);
-               new AltosCSVUI(this, series, series.cal_data, chooser.file());
+               new AltosCSVUI(this, series, chooser.file());
        }
 
        void graph() {
index 19fd369454ff9b4403486c5976485966b7ddc393..2117339486751156f07072c393cf60b5c2a95720 100644 (file)
@@ -124,10 +124,11 @@ public class TeleGPSState extends AltosUIFlightTab {
 
        class FirmwareVersion extends AltosUIIndicator {
                public void show(AltosState state, AltosListenerState listener_state) {
-                       if (state.cal_data.firmware_version == null)
+                       AltosCalData cal_data = state.cal_data();
+                       if (cal_data.firmware_version == null)
                                show("Missing");
                        else
-                               show(state.cal_data.firmware_version);
+                               show(cal_data.firmware_version);
                }
 
                public FirmwareVersion(Container container, int y) {
@@ -137,7 +138,8 @@ public class TeleGPSState extends AltosUIFlightTab {
 
        class FlightLogMax extends AltosUIIndicator {
                public void show(AltosState state, AltosListenerState listener_state) {
-                       int storage = state.cal_data.flight_log_max;
+                       AltosCalData cal_data = state.cal_data();
+                       int storage = cal_data.flight_log_max;
                        if (storage == AltosLib.MISSING)
                                show("Missing");
                        else
index 15292fe56640823a38b06b93139b2c058a020807..e1be69a495717f156e1f5ea5d9a0c09e97eedc0e 100644 (file)
@@ -75,13 +75,14 @@ public class TeleGPSStatus extends JComponent implements AltosFlightDisplay {
                String  call;
 
                void show(AltosState state, AltosListenerState listener_state) {
-                       if (state.cal_data == null)
+                       AltosCalData cal_data = state.cal_data();
+                       if (cal_data == null)
                                System.out.printf("null cal data?\n");
-                       if (state.cal_data.callsign != call) {
-                               value.setText(state.cal_data.callsign);
-                               call = state.cal_data.callsign;
+                       if (cal_data.callsign != call) {
+                               value.setText(cal_data.callsign);
+                               call = cal_data.callsign;
                        }
-                       if (state.cal_data.callsign == null)
+                       if (cal_data.callsign == null)
                                setVisible(false);
                        else
                                setVisible(true);
@@ -102,12 +103,13 @@ public class TeleGPSStatus extends JComponent implements AltosFlightDisplay {
        class Serial extends Value {
                int     serial = -1;
                void show(AltosState state, AltosListenerState listener_state) {
-                       if (state.cal_data.serial != serial) {
-                               if (state.cal_data.serial == AltosLib.MISSING)
+                       AltosCalData cal_data = state.cal_data();
+                       if (cal_data.serial != serial) {
+                               if (cal_data.serial == AltosLib.MISSING)
                                        value.setText("none");
                                else
-                                       value.setText(String.format("%d", state.cal_data.serial));
-                               serial = state.cal_data.serial;
+                                       value.setText(String.format("%d", cal_data.serial));
+                               serial = cal_data.serial;
                        }
                }
 
@@ -128,12 +130,13 @@ public class TeleGPSStatus extends JComponent implements AltosFlightDisplay {
                int     last_flight = -1;
 
                void show(AltosState state, AltosListenerState listener_state) {
-                       if (state.cal_data.flight != last_flight) {
-                               if (state.cal_data.flight == AltosLib.MISSING)
+                       AltosCalData cal_data = state.cal_data();
+                       if (cal_data.flight != last_flight) {
+                               if (cal_data.flight == AltosLib.MISSING)
                                        value.setText("none");
                                else
-                                       value.setText(String.format("%d", state.cal_data.flight));
-                               last_flight = state.cal_data.flight;
+                                       value.setText(String.format("%d", cal_data.flight));
+                               last_flight = cal_data.flight;
                        }
                }