From 3520bbf1ed6461d1ce7af001c529563a3cffa3c9 Mon Sep 17 00:00:00 2001 From: Keith Packard Date: Sun, 16 Sep 2012 00:58:20 -0700 Subject: [PATCH 1/1] 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(-) 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; -- 2.30.2