From: Keith Packard Date: Tue, 20 Jun 2017 18:18:41 +0000 (-0700) Subject: altoslib: Make cal_data private in AltosDataListener X-Git-Tag: 1.8~25 X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=commitdiff_plain;h=0da4e201041a4420f273c2e0cda77eea78099518 altoslib: Make cal_data private in AltosDataListener This way we can create it as needed. Signed-off-by: Keith Packard --- diff --git a/altoslib/AltosCSV.java b/altoslib/AltosCSV.java index aed18728..f55b4785 100644 --- a/altoslib/AltosCSV.java +++ b/altoslib/AltosCSV.java @@ -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(); diff --git a/altoslib/AltosDataListener.java b/altoslib/AltosDataListener.java index 7f5dfda9..5f89b3e4 100644 --- a/altoslib/AltosDataListener.java +++ b/altoslib/AltosDataListener.java @@ -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() { } diff --git a/altoslib/AltosDataProvider.java b/altoslib/AltosDataProvider.java index f977aee3..9589a8e6 100644 --- a/altoslib/AltosDataProvider.java +++ b/altoslib/AltosDataProvider.java @@ -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; } diff --git a/altoslib/AltosEepromRecordTiny.java b/altoslib/AltosEepromRecordTiny.java index 4d44ddd7..06ee9d54 100644 --- a/altoslib/AltosEepromRecordTiny.java +++ b/altoslib/AltosEepromRecordTiny.java @@ -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); diff --git a/altoslib/AltosFlightSeries.java b/altoslib/AltosFlightSeries.java index fc7a9f14..45d3b456 100644 --- a/altoslib/AltosFlightSeries.java +++ b/altoslib/AltosFlightSeries.java @@ -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); diff --git a/altoslib/AltosFlightStats.java b/altoslib/AltosFlightStats.java index a2c5d468..2b6530c8 100644 --- a/altoslib/AltosFlightStats.java +++ b/altoslib/AltosFlightStats.java @@ -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; diff --git a/altoslib/AltosGPS.java b/altoslib/AltosGPS.java index 7898fb9f..b6ca3576 100644 --- a/altoslib/AltosGPS.java +++ b/altoslib/AltosGPS.java @@ -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) diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index 87d3ec94..dee28a92 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -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), diff --git a/altoslib/AltosIdleFetch.java b/altoslib/AltosIdleFetch.java index 7980ae6b..058df0a1 100644 --- a/altoslib/AltosIdleFetch.java +++ b/altoslib/AltosIdleFetch.java @@ -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; } diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java index cc6b8545..fc5d4cc8 100644 --- a/altoslib/AltosIdleMonitor.java +++ b/altoslib/AltosIdleMonitor.java @@ -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 { diff --git a/altoslib/AltosIdleReader.java b/altoslib/AltosIdleReader.java index 5f9ceca3..d15e2174 100644 --- a/altoslib/AltosIdleReader.java +++ b/altoslib/AltosIdleReader.java @@ -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) { diff --git a/altoslib/AltosKML.java b/altoslib/AltosKML.java index ccdd0818..1c025ef4 100644 --- a/altoslib/AltosKML.java +++ b/altoslib/AltosKML.java @@ -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 { diff --git a/altoslib/AltosLog.java b/altoslib/AltosLog.java index ab0d3987..44bea646 100644 --- a/altoslib/AltosLog.java +++ b/altoslib/AltosLog.java @@ -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 || diff --git a/altoslib/AltosMag.java b/altoslib/AltosMag.java index 3cf83138..0d8ec69f 100644 --- a/altoslib/AltosMag.java +++ b/altoslib/AltosMag.java @@ -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), diff --git a/altoslib/AltosMma655x.java b/altoslib/AltosMma655x.java index f69b571b..0f6022ac 100644 --- a/altoslib/AltosMma655x.java +++ b/altoslib/AltosMma655x.java @@ -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; diff --git a/altoslib/AltosMs5607.java b/altoslib/AltosMs5607.java index 6888bda1..5b3ba65d 100644 --- a/altoslib/AltosMs5607.java +++ b/altoslib/AltosMs5607.java @@ -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) { diff --git a/altoslib/AltosReplayReader.java b/altoslib/AltosReplayReader.java index 3847cab7..24b425b7 100644 --- a/altoslib/AltosReplayReader.java +++ b/altoslib/AltosReplayReader.java @@ -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() { diff --git a/altoslib/AltosSensorEMini.java b/altoslib/AltosSensorEMini.java index a144ec7a..1bdbb60c 100644 --- a/altoslib/AltosSensorEMini.java +++ b/altoslib/AltosSensorEMini.java @@ -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; diff --git a/altoslib/AltosSensorMega.java b/altoslib/AltosSensorMega.java index c47ee4b1..e58b03a1 100644 --- a/altoslib/AltosSensorMega.java +++ b/altoslib/AltosSensorMega.java @@ -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); diff --git a/altoslib/AltosSensorMetrum.java b/altoslib/AltosSensorMetrum.java index 6d64b6ba..e01d57cc 100644 --- a/altoslib/AltosSensorMetrum.java +++ b/altoslib/AltosSensorMetrum.java @@ -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)); diff --git a/altoslib/AltosSensorTGPS.java b/altoslib/AltosSensorTGPS.java index 5f39e596..14514413 100644 --- a/altoslib/AltosSensorTGPS.java +++ b/altoslib/AltosSensorTGPS.java @@ -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); diff --git a/altoslib/AltosSensorTM.java b/altoslib/AltosSensorTM.java index 76bf8a77..bdedaa9c 100644 --- a/altoslib/AltosSensorTM.java +++ b/altoslib/AltosSensorTM.java @@ -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; diff --git a/altoslib/AltosSensorTMini2.java b/altoslib/AltosSensorTMini2.java index 8d95c7f7..9b5a1854 100644 --- a/altoslib/AltosSensorTMini2.java +++ b/altoslib/AltosSensorTMini2.java @@ -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); diff --git a/altoslib/AltosSensorTMini3.java b/altoslib/AltosSensorTMini3.java index bb7fcd77..b92def03 100644 --- a/altoslib/AltosSensorTMini3.java +++ b/altoslib/AltosSensorTMini3.java @@ -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); diff --git a/altoslib/AltosState.java b/altoslib/AltosState.java index 6f293652..cfee819b 100644 --- a/altoslib/AltosState.java +++ b/altoslib/AltosState.java @@ -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(); } } diff --git a/altoslib/AltosTelemetry.java b/altoslib/AltosTelemetry.java index e93e6601..7d576942 100644 --- a/altoslib/AltosTelemetry.java +++ b/altoslib/AltosTelemetry.java @@ -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); } diff --git a/altoslib/AltosTelemetryCompanion.java b/altoslib/AltosTelemetryCompanion.java index 6f91d7c2..c6dfe3eb 100644 --- a/altoslib/AltosTelemetryCompanion.java +++ b/altoslib/AltosTelemetryCompanion.java @@ -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()); } } diff --git a/altoslib/AltosTelemetryConfiguration.java b/altoslib/AltosTelemetryConfiguration.java index b5f0eb4b..ea307442 100644 --- a/altoslib/AltosTelemetryConfiguration.java +++ b/altoslib/AltosTelemetryConfiguration.java @@ -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()); diff --git a/altoslib/AltosTelemetryFile.java b/altoslib/AltosTelemetryFile.java index 037a6c87..135b0284 100644 --- a/altoslib/AltosTelemetryFile.java +++ b/altoslib/AltosTelemetryFile.java @@ -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; } diff --git a/altoslib/AltosTelemetryLegacy.java b/altoslib/AltosTelemetryLegacy.java index 7f3f2ecb..027f601e 100644 --- a/altoslib/AltosTelemetryLegacy.java +++ b/altoslib/AltosTelemetryLegacy.java @@ -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) diff --git a/altoslib/AltosTelemetryLocation.java b/altoslib/AltosTelemetryLocation.java index 6819fec8..f4366e33 100644 --- a/altoslib/AltosTelemetryLocation.java +++ b/altoslib/AltosTelemetryLocation.java @@ -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); diff --git a/altoslib/AltosTelemetryMegaData.java b/altoslib/AltosTelemetryMegaData.java index 29baee8c..7ef9c637 100644 --- a/altoslib/AltosTelemetryMegaData.java +++ b/altoslib/AltosTelemetryMegaData.java @@ -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()); diff --git a/altoslib/AltosTelemetryMegaSensor.java b/altoslib/AltosTelemetryMegaSensor.java index efcc3ccb..4c64b554 100644 --- a/altoslib/AltosTelemetryMegaSensor.java +++ b/altoslib/AltosTelemetryMegaSensor.java @@ -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()); diff --git a/altoslib/AltosTelemetryMetrumSensor.java b/altoslib/AltosTelemetryMetrumSensor.java index 211f9c68..79d3a499 100644 --- a/altoslib/AltosTelemetryMetrumSensor.java +++ b/altoslib/AltosTelemetryMetrumSensor.java @@ -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); diff --git a/altoslib/AltosTelemetryMini2.java b/altoslib/AltosTelemetryMini2.java index 59a4d506..3ea287ac 100644 --- a/altoslib/AltosTelemetryMini2.java +++ b/altoslib/AltosTelemetryMini2.java @@ -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()); diff --git a/altoslib/AltosTelemetryMini3.java b/altoslib/AltosTelemetryMini3.java index 13c2ea4d..c66f8e61 100644 --- a/altoslib/AltosTelemetryMini3.java +++ b/altoslib/AltosTelemetryMini3.java @@ -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); diff --git a/altoslib/AltosTelemetryRaw.java b/altoslib/AltosTelemetryRaw.java index f2d73ae8..f2108d68 100644 --- a/altoslib/AltosTelemetryRaw.java +++ b/altoslib/AltosTelemetryRaw.java @@ -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); } } diff --git a/altoslib/AltosTelemetryReader.java b/altoslib/AltosTelemetryReader.java index 7b51853d..26fe4f26 100644 --- a/altoslib/AltosTelemetryReader.java +++ b/altoslib/AltosTelemetryReader.java @@ -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; } diff --git a/altoslib/AltosTelemetrySatellite.java b/altoslib/AltosTelemetrySatellite.java index 012d0c46..60bc4a51 100644 --- a/altoslib/AltosTelemetrySatellite.java +++ b/altoslib/AltosTelemetrySatellite.java @@ -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); diff --git a/altoslib/AltosTelemetrySensor.java b/altoslib/AltosTelemetrySensor.java index 6bbe4ece..dc8efa9b 100644 --- a/altoslib/AltosTelemetrySensor.java +++ b/altoslib/AltosTelemetrySensor.java @@ -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()); diff --git a/altoslib/AltosTelemetryStandard.java b/altoslib/AltosTelemetryStandard.java index 56381561..2a1c9365 100644 --- a/altoslib/AltosTelemetryStandard.java +++ b/altoslib/AltosTelemetryStandard.java @@ -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); } } diff --git a/altosui/AltosFlightStatus.java b/altosui/AltosFlightStatus.java index b46cbc84..a5e5a4ef 100644 --- a/altosui/AltosFlightStatus.java +++ b/altosui/AltosFlightStatus.java @@ -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) diff --git a/altosui/AltosPad.java b/altosui/AltosPad.java index 331b58e3..0aeef8e1 100644 --- a/altosui/AltosPad.java +++ b/altosui/AltosPad.java @@ -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) { diff --git a/altosui/AltosUI.java b/altosui/AltosUI.java index 3ec25cfa..26591738 100644 --- a/altosui/AltosUI.java +++ b/altosui/AltosUI.java @@ -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. diff --git a/altosuilib/AltosCSVUI.java b/altosuilib/AltosCSVUI.java index 821b842b..442e3de3 100644 --- a/altosuilib/AltosCSVUI.java +++ b/altosuilib/AltosCSVUI.java @@ -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(); diff --git a/altosuilib/AltosGraph.java b/altosuilib/AltosGraph.java index 8125e5e0..31042abb 100644 --- a/altosuilib/AltosGraph.java +++ b/altosuilib/AltosGraph.java @@ -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; diff --git a/altosuilib/AltosInfoTable.java b/altosuilib/AltosInfoTable.java index 41614cfa..9e528b1f 100644 --- a/altosuilib/AltosInfoTable.java +++ b/altosuilib/AltosInfoTable.java @@ -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; diff --git a/altosuilib/AltosScanUI.java b/altosuilib/AltosScanUI.java index 1280ba6a..c63f027c 100644 --- a/altosuilib/AltosScanUI.java +++ b/altosuilib/AltosScanUI.java @@ -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, diff --git a/telegps/TeleGPS.java b/telegps/TeleGPS.java index c6cd2bd1..3646f000 100644 --- a/telegps/TeleGPS.java +++ b/telegps/TeleGPS.java @@ -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() { diff --git a/telegps/TeleGPSState.java b/telegps/TeleGPSState.java index 19fd3694..21173394 100644 --- a/telegps/TeleGPSState.java +++ b/telegps/TeleGPSState.java @@ -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 diff --git a/telegps/TeleGPSStatus.java b/telegps/TeleGPSStatus.java index 15292fe5..e1be69a4 100644 --- a/telegps/TeleGPSStatus.java +++ b/telegps/TeleGPSStatus.java @@ -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; } }