altoslib: Store MS5607 data in AltosConfigData for use by AltosMs5607
[fw/altos] / altoslib / AltosConfigData.java
index fc1f2442ebfa04fd66074a096449eda21022fdc3..65f6346a4c00633ce6aede342c2fad71da08560d 100644 (file)
@@ -90,6 +90,19 @@ public class AltosConfigData implements Iterable<String> {
        public int      tracker_motion;
        public int      tracker_interval;
 
+       /* HAS_GYRO */
+       public int      accel_zero_along, accel_zero_across, accel_zero_through;
+
+       /* ms5607 data */
+       public int      ms5607_reserved;
+       public int      ms5607_sens;
+       public int      ms5607_off;
+       public int      ms5607_tcs;
+       public int      ms5607_tco;
+       public int      ms5607_tref;
+       public int      ms5607_tempsens;
+       public int      ms5607_crc;
+
        public static String get_string(String line, String label) throws  ParseException {
                if (line.startsWith(label)) {
                        String  quoted = line.substring(label.length()).trim();
@@ -266,6 +279,10 @@ public class AltosConfigData implements Iterable<String> {
                storage_size = -1;
                storage_erase_unit = -1;
                stored_flight = 0;
+
+               accel_zero_along = -1;
+               accel_zero_across = -1;
+               accel_zero_through = -1;
        }
 
        public void parse_line(String line) {
@@ -282,6 +299,15 @@ public class AltosConfigData implements Iterable<String> {
 
                /* Version also contains MS5607 info, which we ignore here */
 
+               try { ms5607_reserved = get_int(line, "ms5607 reserved:"); } catch (Exception e) {}
+               try { ms5607_sens = get_int(line, "ms5607 sens:"); } catch (Exception e) {}
+               try { ms5607_off = get_int(line, "ms5607 off:"); } catch (Exception e) {}
+               try { ms5607_tcs = get_int(line, "ms5607 tcs:"); } catch (Exception e) {}
+               try { ms5607_tco = get_int(line, "ms5607 tco:"); } catch (Exception e) {}
+               try { ms5607_tref = get_int(line, "ms5607 tref:"); } catch (Exception e) {}
+               try { ms5607_tempsens = get_int(line, "ms5607 tempsens:"); } catch (Exception e) {}
+               try { ms5607_crc = get_int(line, "ms5607 crc:"); } catch (Exception e) {}
+
                /* Config show replies */
 
                /* HAS_FLIGHT */
@@ -361,6 +387,18 @@ public class AltosConfigData implements Iterable<String> {
 
                /* Log listing replies */
                try { get_int(line, "flight"); stored_flight++; }  catch (Exception e) {}
+
+               /* HAS_GYRO */
+               try {
+                       if (line.startsWith("IMU call along")) {
+                               String[] bits = line.split("\\s+");
+                               if (bits.length >= 8) {
+                                       accel_zero_along = Integer.parseInt(bits[3]);
+                                       accel_zero_across = Integer.parseInt(bits[5]);
+                                       accel_zero_through = Integer.parseInt(bits[7]);
+                               }
+                       }
+               } catch (Exception e) {}
        }
 
        public AltosConfigData() {
@@ -637,6 +675,9 @@ public class AltosConfigData implements Iterable<String> {
                if (tracker_motion >= 0 && tracker_interval >= 0)
                        link.printf("c t %d %d\n", tracker_motion, tracker_interval);
 
+               /* HAS_GYRO */
+               /* UI doesn't support accel cal */
+
                link.printf("c w\n");
                link.flush_output();
        }