altosui: Initial accel calibration UI
[fw/altos] / altoslib / AltosConfigData.java
index c39a6c94680e6683907088e11b5c1685d898cd03..c5aa2531f8f918ede37e21804b359e428b8a7bd5 100644 (file)
@@ -16,7 +16,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib_11;
+package org.altusmetrum.altoslib_12;
 
 import java.util.*;
 import java.text.*;
@@ -451,8 +451,7 @@ public class AltosConfigData {
                        radio_frequency = (int) Math.floor (freq * 1000 + 0.5);
                        radio_channel = AltosLib.MISSING;
                } else if (setting != AltosLib.MISSING) {
-                       radio_setting =AltosConvert.radio_frequency_to_setting(freq,
-                                                                                   radio_calibration);
+                       radio_setting =AltosConvert.radio_frequency_to_setting(freq, radio_calibration);
                        radio_channel = AltosLib.MISSING;
                } else {
                        radio_channel = AltosConvert.radio_frequency_to_channel(freq);
@@ -463,12 +462,12 @@ public class AltosConfigData {
                int     channel = radio_channel;
                int     setting = radio_setting;
 
-               if (radio_frequency < 0 && channel < 0 && setting < 0)
+               if (radio_frequency == AltosLib.MISSING && channel == AltosLib.MISSING && setting == AltosLib.MISSING)
                        return AltosLib.MISSING;
 
-               if (channel < 0)
+               if (channel == AltosLib.MISSING)
                        channel = 0;
-               if (setting < 0)
+               if (setting == AltosLib.MISSING)
                        setting = 0;
 
                return AltosConvert.radio_to_frequency(radio_frequency,
@@ -524,6 +523,12 @@ public class AltosConfigData {
                if (pad_orientation != AltosLib.MISSING)
                        pad_orientation = source.pad_orientation();
 
+               if (accel_cal_plus != AltosLib.MISSING)
+                       accel_cal_plus = source.accel_cal_plus();
+
+               if (accel_cal_minus != AltosLib.MISSING)
+                       accel_cal_minus = source.accel_cal_minus();
+
                /* HAS_LOG */
                if (flight_log_max != AltosLib.MISSING)
                        flight_log_max = source.flight_log_max();
@@ -591,6 +596,7 @@ public class AltosConfigData {
                dest.set_flight_log_max(flight_log_max);
                dest.set_ignite_mode(ignite_mode);
                dest.set_pad_orientation(pad_orientation);
+               dest.set_accel_cal(accel_cal_plus, accel_cal_minus);
                dest.set_callsign(callsign);
                if (npyro != AltosLib.MISSING)
                        dest.set_pyros(pyros);
@@ -668,9 +674,10 @@ public class AltosConfigData {
                        link.printf("c e %d\n", radio_enable);
 
                /* HAS_ACCEL */
-               /* UI doesn't support accel cal */
                if (pad_orientation != AltosLib.MISSING)
                        link.printf("c o %d\n", pad_orientation);
+               if (accel_cal_plus != AltosLib.MISSING && accel_cal_minus != AltosLib.MISSING)
+                       link.printf("c a %d %d\n", accel_cal_plus, accel_cal_minus);
 
                /* HAS_LOG */
                if (flight_log_max != 0)