altoslib: Add support for MicroPeak v2 eeprom format
[fw/altos] / altoslib / AltosDataListener.java
index 14c29d85263fc332e2ebe29f8be7bf6a22f121ec..496235c3c843fa5f2595a6b74d7f12ced91f35bc 100644 (file)
  * General Public License for more details.
  */
 
-package org.altusmetrum.altoslib_11;
+package org.altusmetrum.altoslib_13;
 
 public abstract class AltosDataListener {
 
-       public AltosCalData     cal_data;
+       private AltosCalData    cal_data = null;
 
-       public double   time = AltosLib.MISSING;
+       public double           time = AltosLib.MISSING;
+       public double           frequency = AltosLib.MISSING;
+
+       public int              raw_tick = AltosLib.MISSING;
+
+       public int tick() {
+               return raw_tick;
+       }
+
+       public void set_tick(int tick) {
+               raw_tick = 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 void set_device_type(int device_type) {
+               cal_data().set_device_type(device_type);
+               switch (device_type) {
+               case AltosLib.product_telegps:
+                       set_state(AltosLib.ao_flight_stateless);
+                       break;
+               }
+       }
+
+       public void set_log_format(int log_format) {
+               cal_data().set_log_format(log_format);
+               switch (log_format) {
+               case AltosLib.AO_LOG_FORMAT_TELEGPS:
+                       set_state(AltosLib.ao_flight_stateless);
+                       break;
+               }
+       }
+
        public double time() {
                return time;
        }
 
-       public int      state = AltosLib.MISSING;
-
        public void set_state(int state) {
-               if (state != AltosLib.MISSING)
-                       this.state = state;
+               cal_data().set_state(state);
+       }
+
+       public int state() {
+               return cal_data().state;
+       }
+
+       public void set_flight(int flight) {
+               cal_data().set_flight(flight);
+       }
+
+       public void set_frequency(double frequency) {
+               this.frequency = frequency;
+       }
+
+       public void set_avoid_duplicate_files() {
        }
 
        /* Called after all records are captured */
        public void finish() {
        }
 
+       public void init() {
+               set_state(AltosLib.ao_flight_invalid);
+               time = AltosLib.MISSING;
+               frequency = AltosLib.MISSING;
+       }
+
        public abstract void set_rssi(int rssi, int status);
        public abstract void set_received_time(long received_time);
 
@@ -55,7 +114,18 @@ public abstract class AltosDataListener {
        public abstract void set_apogee_voltage(double volts);
        public abstract void set_main_voltage(double volts);
 
-       public abstract void set_gps(AltosGPS gps);
+       public void set_gps(AltosGPS gps) {
+               AltosCalData cal_data = cal_data();
+               cal_data.set_cal_gps(gps);
+       }
+
+       public AltosGPS make_temp_gps(boolean sats) {
+               return cal_data().make_temp_cal_gps(tick(), sats);
+       }
+
+       public AltosGPS temp_gps() {
+               return cal_data().temp_cal_gps();
+       }
 
        public abstract void set_orient(double orient);
        public abstract void set_gyro(double roll, double pitch, double yaw);
@@ -67,6 +137,9 @@ public abstract class AltosDataListener {
        public abstract void set_pyro_fired(int pyro_mask);
        public abstract void set_companion(AltosCompanion companion);
 
+       public AltosDataListener() {
+       }
+
        public AltosDataListener(AltosCalData cal_data) {
                this.cal_data = cal_data;
        }