altosui,telegps: Do not allow radio calibration to be edited
[fw/altos] / altoslib / AltosConfigData.java
index fc1f2442ebfa04fd66074a096449eda21022fdc3..b6475bb33fd9f12ae074aec0ec63d37e8f9be542 100644 (file)
@@ -15,7 +15,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib_5;
+package org.altusmetrum.altoslib_9;
 
 import java.util.*;
 import java.text.*;
@@ -75,6 +75,7 @@ public class AltosConfigData implements Iterable<String> {
        /* HAS_APRS */
        public int              aprs_interval;
        public int              aprs_ssid;
+       public int              aprs_format;
 
        /* HAS_BEEP */
        public int              beep;
@@ -90,6 +91,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();
@@ -257,6 +271,7 @@ public class AltosConfigData implements Iterable<String> {
 
                aprs_interval = -1;
                aprs_ssid = -1;
+               aprs_format = -1;
 
                beep = -1;
 
@@ -266,6 +281,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 +301,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 */
@@ -344,6 +372,7 @@ public class AltosConfigData implements Iterable<String> {
                /* HAS_APRS */
                try { aprs_interval = get_int(line, "APRS interval:"); } catch (Exception e) {}
                try { aprs_ssid = get_int(line, "APRS SSID:"); } catch (Exception e) {}
+               try { aprs_format = get_int(line, "APRS format:"); } catch (Exception e) {}
 
                /* HAS_BEEP */
                try { beep = get_int(line, "Beeper setting:"); } catch (Exception e) {}
@@ -361,6 +390,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() {
@@ -452,8 +493,6 @@ public class AltosConfigData implements Iterable<String> {
                        radio_enable = source.radio_enable();
                if (callsign != null)
                        callsign = source.callsign();
-               if (radio_calibration >= 0)
-                       radio_calibration = source.radio_calibration();
                if (telemetry_rate >= 0)
                        telemetry_rate = source.telemetry_rate();
 
@@ -480,6 +519,8 @@ public class AltosConfigData implements Iterable<String> {
                        aprs_interval = source.aprs_interval();
                if (aprs_ssid >= 0)
                        aprs_ssid = source.aprs_ssid();
+               if (aprs_format >= 0)
+                       aprs_format = source.aprs_format();
 
                /* HAS_BEEP */
                if (beep >= 0)
@@ -534,11 +575,20 @@ public class AltosConfigData implements Iterable<String> {
                dest.set_pyro_firing_time(pyro_firing_time);
                dest.set_aprs_interval(aprs_interval);
                dest.set_aprs_ssid(aprs_ssid);
+               dest.set_aprs_format(aprs_format);
                dest.set_beep(beep);
                dest.set_tracker_motion(tracker_motion);
                dest.set_tracker_interval(tracker_interval);
        }
 
+       public boolean log_has_state() {
+               switch (log_format) {
+               case AltosLib.AO_LOG_FORMAT_TELEGPS:
+                       return false;
+               }
+               return true;
+       }
+
        public void save(AltosLink link, boolean remote) throws InterruptedException, TimeoutException {
 
                /* HAS_FLIGHT */
@@ -549,10 +599,6 @@ public class AltosConfigData implements Iterable<String> {
                if (apogee_lockout >= 0)
                        link.printf("c L %d\n", apogee_lockout);
 
-               /* Don't mess with radio calibration when remote */
-               if (radio_calibration > 0 && !remote)
-                       link.printf("c f %d\n", radio_calibration);
-
                /* HAS_RADIO */
                if (has_frequency()) {
                        boolean has_frequency = radio_frequency >= 0;
@@ -628,6 +674,8 @@ public class AltosConfigData implements Iterable<String> {
                        link.printf("c A %d\n", aprs_interval);
                if (aprs_ssid >= 0)
                        link.printf("c S %d\n", aprs_ssid);
+               if (aprs_format >= 0)
+                       link.printf("c C %d\n", aprs_format);
 
                /* HAS_BEEP */
                if (beep >= 0)
@@ -637,6 +685,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();
        }