altos/test: Adjust CRC error rate after FEC fix
[fw/altos] / altoslib / AltosIdleFetch.java
index 88a65e63bb7001fcdf5f4e3fb087d641284e6945..b64ba0a4c9ee0828d876e80709229b51f5e877e8 100644 (file)
@@ -16,7 +16,7 @@
  * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
  */
 
-package org.altusmetrum.altoslib_13;
+package org.altusmetrum.altoslib_14;
 
 import java.io.*;
 import java.util.*;
@@ -28,20 +28,36 @@ class AltosIdler {
        int[]   idlers;
 
        static final int        idle_gps = 0;
-       static final int        idle_imu = 1;
-       static final int        idle_mag = 2;
-       static final int        idle_mma655x = 4;
-       static final int        idle_ms5607 = 5;
+       static final int        idle_imu_tm_v1_v2 = 1;
+       static final int        idle_imu_tm_v3 = 2;
+       static final int        idle_imu_tm_v4 = 3;
+       static final int        idle_imu_em_v1 = 4;
+       static final int        idle_imu_em_v2 = 5;
+       static final int        idle_imu_et_v1 = 6;
+       static final int        idle_mag = 7;
+       static final int        idle_mma655x = 8;
+       static final int        idle_ms5607 = 9;
+       static final int        idle_adxl375 = 10;
+       static final int        idle_adxl375_easymotor_v2 = 11;
+       static final int        idle_imu = 12;
+       static final int        idle_imu_et_v2 = 13;
+       static final int        idle_imu_em_v3 = 14;
 
-
-       static final int        idle_sensor_tm = 10;
-       static final int        idle_sensor_metrum = 11;
-       static final int        idle_sensor_mega = 12;
-       static final int        idle_sensor_emini1 = 13;
-       static final int        idle_sensor_emini2 = 14;
-       static final int        idle_sensor_tmini2 = 15;
-       static final int        idle_sensor_tgps = 16;
-       static final int        idle_sensor_tmini3 = 17;
+       static final int        idle_sensor_tm = 100;
+       static final int        idle_sensor_metrum = 101;
+       static final int        idle_sensor_mega = 102;
+       static final int        idle_sensor_emini1 = 103;
+       static final int        idle_sensor_emini2 = 104;
+       static final int        idle_sensor_tmini2 = 105;
+       static final int        idle_sensor_tgps1 = 106;
+       static final int        idle_sensor_tgps2 = 107;
+       static final int        idle_sensor_tgps3 = 108;
+       static final int        idle_sensor_tmini3 = 109;
+       static final int        idle_sensor_easytimer1 = 110;
+       static final int        idle_sensor_easymotor2 = 111;
+       static final int        idle_sensor_emini3 = 112;
+       static final int        idle_sensor_etimer2 = 113;
+       static final int        idle_sensor_emega3 = 114;
 
        public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException, TimeoutException, AltosUnknownProduct {
                for (int idler : idlers) {
@@ -49,8 +65,29 @@ class AltosIdler {
                        case idle_gps:
                                AltosGPS.provide_data(listener, link);
                                break;
+                       case idle_imu_tm_v1_v2:
+                               AltosIMU.provide_data(listener, link, AltosIMU.imu_type_telemega_v1_v2);
+                               break;
+                       case idle_imu_tm_v3:
+                               AltosIMU.provide_data(listener, link, AltosIMU.imu_type_telemega_v3);
+                               break;
+                       case idle_imu_tm_v4:
+                               AltosIMU.provide_data(listener, link, AltosIMU.imu_type_telemega_v4);
+                               break;
+                       case idle_imu_em_v1:
+                               AltosIMU.provide_data(listener, link, AltosIMU.imu_type_easymega_v1);
+                               break;
+                       case idle_imu_em_v2:
+                               AltosIMU.provide_data(listener, link, AltosIMU.imu_type_easymega_v2);
+                               break;
+                       case idle_imu_et_v1:
+                               AltosIMU.provide_data(listener, link, AltosIMU.imu_type_easytimer_v1);
+                               break;
+                       case idle_imu_et_v2:
+                               AltosIMU.provide_data(listener, link, AltosIMU.imu_type_easytimer_v2);
+                               break;
                        case idle_imu:
-                               AltosIMU.provide_data(listener, link);
+                               AltosIMU.provide_data(listener, link, AltosLib.MISSING);
                                break;
                        case idle_mag:
                                AltosMag.provide_data(listener, link);
@@ -58,6 +95,12 @@ class AltosIdler {
                        case idle_mma655x:
                                AltosMma655x.provide_data(listener, link);
                                break;
+                       case idle_adxl375:
+                               AltosAdxl375.provide_data(listener, link, false, AltosLib.MISSING);
+                               break;
+                       case idle_adxl375_easymotor_v2:
+                               AltosAdxl375.provide_data(listener, link, true, AltosIMU.imu_type_easymotor_v2);
+                               break;
                        case idle_ms5607:
                                AltosMs5607.provide_data(listener, link);
                                break;
@@ -76,15 +119,30 @@ class AltosIdler {
                        case idle_sensor_emini2:
                                AltosSensorEMini.provide_data(listener, link, 2);
                                break;
+                       case idle_sensor_emini3:
+                               AltosSensorEMini.provide_data(listener, link, 3);
+                               break;
                        case idle_sensor_tmini2:
                                AltosSensorTMini2.provide_data(listener, link);
                                break;
-                       case idle_sensor_tgps:
-                               AltosSensorTGPS.provide_data(listener, link);
+                       case idle_sensor_tgps1:
+                               AltosSensorTGPS1.provide_data(listener, link);
+                               break;
+                       case idle_sensor_tgps2:
+                               AltosSensorTGPS2.provide_data(listener, link);
+                               break;
+                       case idle_sensor_tgps3:
+                               AltosSensorTGPS3.provide_data(listener, link);
                                break;
                        case idle_sensor_tmini3:
                                AltosSensorTMini3.provide_data(listener, link);
                                break;
+                       case idle_sensor_easytimer1:
+                               AltosSensorEasyTimer1.provide_data(listener, link);
+                               break;
+                       case idle_sensor_easymotor2:
+                               AltosSensorEasyMotor2.provide_data(listener, link);
+                               break;
                        }
                }
        }
@@ -112,6 +170,10 @@ public class AltosIdleFetch implements AltosDataProvider {
                               AltosIdler.idle_ms5607,
                               AltosIdler.idle_sensor_emini2),
 
+               new AltosIdler("EasyMini-v3",
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_sensor_emini3),
+
                new AltosIdler("TeleMini-v1",
                               AltosIdler.idle_sensor_tm),
 
@@ -133,38 +195,94 @@ public class AltosIdleFetch implements AltosDataProvider {
                               AltosIdler.idle_ms5607,
                               AltosIdler.idle_sensor_metrum),
 
+               new AltosIdler("TeleMetrum-v3",
+                              AltosIdler.idle_gps,
+                              AltosIdler.idle_adxl375,
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_sensor_metrum),
+
+               new AltosIdler("TeleMetrum-v4",
+                              AltosIdler.idle_gps,
+                              AltosIdler.idle_adxl375,
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_sensor_metrum),
+
                new AltosIdler("TeleMega-v0",
                               AltosIdler.idle_gps,
                               AltosIdler.idle_mma655x,
                               AltosIdler.idle_ms5607,
-                              AltosIdler.idle_imu, AltosIdler.idle_mag,
+                              AltosIdler.idle_imu_tm_v1_v2, AltosIdler.idle_mag,
                               AltosIdler.idle_sensor_mega),
                new AltosIdler("TeleMega-v1",
                               AltosIdler.idle_gps,
                               AltosIdler.idle_mma655x,
                               AltosIdler.idle_ms5607,
-                              AltosIdler.idle_imu, AltosIdler.idle_mag,
+                              AltosIdler.idle_imu_tm_v1_v2, AltosIdler.idle_mag,
                               AltosIdler.idle_sensor_mega),
                new AltosIdler("TeleMega-v2",
                               AltosIdler.idle_gps,
                               AltosIdler.idle_mma655x,
                               AltosIdler.idle_ms5607,
-                              AltosIdler.idle_imu, AltosIdler.idle_mag,
+                              AltosIdler.idle_imu_tm_v1_v2, AltosIdler.idle_mag,
                               AltosIdler.idle_sensor_mega),
                new AltosIdler("TeleMega-v3",
                               AltosIdler.idle_gps,
                               AltosIdler.idle_mma655x,
                               AltosIdler.idle_ms5607,
-                              AltosIdler.idle_imu,
+                              AltosIdler.idle_imu_tm_v3,
                               AltosIdler.idle_sensor_mega),
-               new AltosIdler("EasyMega",
-                              AltosIdler.idle_mma655x,
+               new AltosIdler("TeleMega-v4",
+                              AltosIdler.idle_gps,
+                              AltosIdler.idle_adxl375,
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_imu_tm_v4,
+                              AltosIdler.idle_sensor_mega),
+               new AltosIdler("TeleMega-v5",
+                              AltosIdler.idle_gps,
+                              AltosIdler.idle_adxl375,
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_imu, AltosIdler.idle_mag,
+                              AltosIdler.idle_sensor_mega),
+               new AltosIdler("TeleMega-v6",
+                              AltosIdler.idle_gps,
+                              AltosIdler.idle_adxl375,
                               AltosIdler.idle_ms5607,
                               AltosIdler.idle_imu, AltosIdler.idle_mag,
                               AltosIdler.idle_sensor_mega),
-               new AltosIdler("TeleGPS",
+               new AltosIdler("EasyMega-v1",
+                              AltosIdler.idle_mma655x,
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_imu_em_v1, AltosIdler.idle_mag,
+                              AltosIdler.idle_sensor_mega),
+               new AltosIdler("EasyMega-v2",
+                              AltosIdler.idle_adxl375,
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_imu_em_v2,
+                              AltosIdler.idle_sensor_mega),
+               new AltosIdler("EasyMega-v3",
+                              AltosIdler.idle_adxl375,
+                              AltosIdler.idle_ms5607,
+                              AltosIdler.idle_imu,
+                              AltosIdler.idle_mag,
+                              AltosIdler.idle_sensor_mega),
+               new AltosIdler("TeleGPS-v1",
+                              AltosIdler.idle_gps,
+                              AltosIdler.idle_sensor_tgps1),
+               new AltosIdler("TeleGPS-v2",
+                              AltosIdler.idle_gps,
+                              AltosIdler.idle_sensor_tgps2),
+               new AltosIdler("TeleGPS-v3",
                               AltosIdler.idle_gps,
-                              AltosIdler.idle_sensor_tgps),
+                              AltosIdler.idle_sensor_tgps3),
+               new AltosIdler("EasyTimer-v1",
+                              AltosIdler.idle_imu_et_v1,
+                              AltosIdler.idle_sensor_easytimer1),
+               new AltosIdler("EasyMotor-v2",
+                              AltosIdler.idle_adxl375_easymotor_v2,
+                              AltosIdler.idle_sensor_easymotor2),
+               new AltosIdler("EasyTimer-v2",
+                              AltosIdler.idle_imu_et_v2,
+                              AltosIdler.idle_sensor_easymotor2),
        };
 
        AltosLink               link;
@@ -173,7 +291,7 @@ public class AltosIdleFetch implements AltosDataProvider {
                try {
                        boolean matched = false;
                        /* Fetch config data from remote */
-                       AltosConfigData config_data = new AltosConfigData(link);
+                       AltosConfigData config_data = link.config_data();
                        listener.set_state(AltosLib.ao_flight_stateless);
                        for (AltosIdler idler : idlers) {
                                if (idler.matches(config_data)) {