From 7b6dd9105ba36aa11d6d0ee6e0823965b9beffb9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 14 Sep 2012 11:08:19 -0700 Subject: altoslib: Remove duplicate seen_ values in AltosEepromIterable These are defined in AltosRecord; duplicating them is not a good plan Signed-off-by: Keith Packard --- altoslib/AltosEepromIterable.java | 22 +++++++--------------- 1 file changed, 7 insertions(+), 15 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java index 2ac10e85..5e250583 100644 --- a/altoslib/AltosEepromIterable.java +++ b/altoslib/AltosEepromIterable.java @@ -23,15 +23,7 @@ import java.text.*; public class AltosEepromIterable extends AltosRecordIterable { - static final int seen_flight = 1; - static final int seen_sensor = 2; - static final int seen_temp_volt = 4; - static final int seen_deploy = 8; - static final int seen_gps_time = 16; - static final int seen_gps_lat = 32; - static final int seen_gps_lon = 64; - - static final int seen_basic = seen_flight|seen_sensor; + static final int seen_basic = AltosRecord.seen_flight|AltosRecord.seen_sensor; boolean has_accel; boolean has_gps; @@ -64,7 +56,7 @@ public class AltosEepromIterable extends AltosRecordIterable { state.tick = record.tick; switch (record.cmd) { case AltosLib.AO_LOG_FLIGHT: - eeprom.seen |= seen_flight; + eeprom.seen |= AltosRecord.seen_flight; state.ground_accel = record.a; state.flight_accel = record.a; state.flight = record.b; @@ -82,10 +74,10 @@ public class AltosEepromIterable extends AltosRecordIterable { state.flight_pres = (state.flight_pres * 15 + state.pres) / 16; } state.flight_accel = (state.flight_accel * 15 + state.accel) / 16; - if ((eeprom.seen & seen_sensor) == 0) + if ((eeprom.seen & AltosRecord.seen_sensor) == 0) eeprom.sensor_tick = record.tick - 1; state.flight_vel += (state.accel_plus_g - state.accel) * (record.tick - eeprom.sensor_tick); - eeprom.seen |= seen_sensor; + eeprom.seen |= AltosRecord.seen_sensor; eeprom.sensor_tick = record.tick; has_accel = true; break; @@ -96,17 +88,17 @@ public class AltosEepromIterable extends AltosRecordIterable { eeprom.n_pad_samples++; state.ground_pres = state.pres; } - eeprom.seen |= seen_sensor; + eeprom.seen |= AltosRecord.seen_sensor; break; case AltosLib.AO_LOG_TEMP_VOLT: state.temp = record.a; state.batt = record.b; - eeprom.seen |= seen_temp_volt; + eeprom.seen |= AltosRecord.seen_temp_volt; break; case AltosLib.AO_LOG_DEPLOY: state.drogue = record.a; state.main = record.b; - eeprom.seen |= seen_deploy; + eeprom.seen |= AltosRecord.seen_deploy; has_ignite = true; break; case AltosLib.AO_LOG_STATE: -- cgit v1.2.3 From 43e646657502f6162fa02f37fd2bd5aa3e29a1a8 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Fri, 14 Sep 2012 11:08:57 -0700 Subject: altoslib: Update GPS seen_values in AltosEepromIterable Otherwise, KML export won't ever get GPS data to write. Reported by: Bob Brown Signed-off-by: Keith Packard --- altoslib/AltosEepromIterable.java | 3 +++ 1 file changed, 3 insertions(+) (limited to 'altoslib') diff --git a/altoslib/AltosEepromIterable.java b/altoslib/AltosEepromIterable.java index 5e250583..986b7a2c 100644 --- a/altoslib/AltosEepromIterable.java +++ b/altoslib/AltosEepromIterable.java @@ -106,6 +106,7 @@ public class AltosEepromIterable extends AltosRecordIterable { break; case AltosLib.AO_LOG_GPS_TIME: eeprom.gps_tick = state.tick; + eeprom.seen |= AltosRecord.seen_gps_time; AltosGPS old = state.gps; state.gps = new AltosGPS(); @@ -128,10 +129,12 @@ public class AltosEepromIterable extends AltosRecordIterable { has_gps = true; break; case AltosLib.AO_LOG_GPS_LAT: + eeprom.seen |= AltosRecord.seen_gps_lat; int lat32 = record.a | (record.b << 16); state.gps.lat = (double) lat32 / 1e7; break; case AltosLib.AO_LOG_GPS_LON: + eeprom.seen |= AltosRecord.seen_gps_lon; int lon32 = record.a | (record.b << 16); state.gps.lon = (double) lon32 / 1e7; break; -- cgit v1.2.3 From 3520bbf1ed6461d1ce7af001c529563a3cffa3c9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 16 Sep 2012 00:58:20 -0700 Subject: altosui: Gather Tm sensor data in Monitor Idle mode Tm is pretty much the same as TM for the analog sensors, it's just missing the accelerometr. Use the same code for constructing an AltosRecord for it Signed-off-by: Keith Packard --- altoslib/AltosIdleMonitor.java | 68 ++++++++++++++++++++++++++---------------- 1 file changed, 43 insertions(+), 25 deletions(-) (limited to 'altoslib') diff --git a/altoslib/AltosIdleMonitor.java b/altoslib/AltosIdleMonitor.java index ae3b7b06..2c4965ff 100644 --- a/altoslib/AltosIdleMonitor.java +++ b/altoslib/AltosIdleMonitor.java @@ -45,6 +45,42 @@ public class AltosIdleMonitor extends Thread { return rssi; } + boolean has_sensor_tm(AltosConfigData config_data) { + return config_data.product.startsWith("TeleMetrum") || config_data.product.startsWith("TeleMini"); + } + + boolean has_sensor_mm(AltosConfigData config_data) { + return config_data.product.startsWith("MegaMetrum"); + } + + boolean has_gps(AltosConfigData config_data) { + return config_data.product.startsWith("TeleMetrum") || config_data.product.startsWith("MegaMetrum"); + } + + AltosRecord sensor_mm(AltosConfigData config_data) throws InterruptedException, TimeoutException { + AltosRecordMM record_mm = new AltosRecordMM(); + AltosSensorMM sensor = new AltosSensorMM(link); + AltosMs5607 ms5607 = new AltosMs5607Query(link); + AltosIMU imu = new AltosIMUQuery(link); + + record_mm.accel_plus_g = config_data.accel_cal_plus; + record_mm.accel_minus_g = config_data.accel_cal_minus; + + record_mm.ground_accel = sensor.accel; + record_mm.accel = sensor.accel; + record_mm.ground_pres = ms5607.pa; + record_mm.pres = ms5607.pa; + record_mm.temp = ms5607.cc; + + record_mm.v_batt = sensor.v_batt; + record_mm.v_pyro = sensor.v_pyro; + record_mm.sense = sensor.sense; + + record_mm.imu = imu; + + return record_mm; + } + void update_state() throws InterruptedException, TimeoutException { AltosRecord record = null; @@ -55,34 +91,16 @@ public class AltosIdleMonitor extends Thread { } else link.flush_input(); config_data = new AltosConfigData(link); - if (config_data.product.startsWith("TeleMetrum")) { - record = new AltosSensorTM(link, config_data); - } else if (config_data.product.startsWith("MegaMetrum")) { - AltosRecordMM record_mm = new AltosRecordMM(); - AltosSensorMM sensor = new AltosSensorMM(link); - AltosMs5607 ms5607 = new AltosMs5607Query(link); - AltosIMU imu = new AltosIMUQuery(link); - - record_mm.accel_plus_g = config_data.accel_cal_plus; - record_mm.accel_minus_g = config_data.accel_cal_minus; - record_mm.ground_accel = sensor.accel; - record_mm.accel = sensor.accel; - record_mm.ground_pres = ms5607.pa; - record_mm.pres = ms5607.pa; - record_mm.temp = ms5607.cc; - - record_mm.v_batt = sensor.v_batt; - record_mm.v_pyro = sensor.v_pyro; - record_mm.sense = sensor.sense; - - record_mm.imu = imu; - - record = record_mm; - } else + if (has_sensor_tm(config_data)) + record = new AltosSensorTM(link, config_data); + else if (has_sensor_mm(config_data)) + record = sensor_mm(config_data); + else record = new AltosRecord(); - gps = new AltosGPSQuery(link, config_data); + if (has_gps(config_data)) + gps = new AltosGPSQuery(link, config_data); record.version = 0; record.callsign = config_data.callsign; -- cgit v1.2.3