altoslib: Support TeleMega v5.0
[fw/altos] / altoslib / AltosIdleFetch.java
index ca3e33eb244ffc91d47a4a035a8ffad5a9e5e668..b2fd3c6f56833b938cc91392f12fa7c48f87f951 100644 (file)
@@ -38,6 +38,8 @@ class AltosIdler {
        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_sensor_tm = 100;
        static final int        idle_sensor_metrum = 101;
@@ -49,6 +51,7 @@ class AltosIdler {
        static final int        idle_sensor_tgps2 = 107;
        static final int        idle_sensor_tmini3 = 108;
        static final int        idle_sensor_easytimer1 = 109;
+       static final int        idle_sensor_easymotor2 = 110;
 
        public void provide_data(AltosDataListener listener, AltosLink link) throws InterruptedException, TimeoutException, AltosUnknownProduct {
                for (int idler : idlers) {
@@ -74,6 +77,9 @@ class AltosIdler {
                        case idle_imu_et_v1:
                                AltosIMU.provide_data(listener, link, AltosIMU.imu_type_easytimer_v1);
                                break;
+                       case idle_imu:
+                               AltosIMU.provide_data(listener, link, AltosLib.MISSING);
+                               break;
                        case idle_mag:
                                AltosMag.provide_data(listener, link);
                                break;
@@ -81,7 +87,10 @@ class AltosIdler {
                                AltosMma655x.provide_data(listener, link);
                                break;
                        case idle_adxl375:
-                               AltosAdxl375.provide_data(listener, link);
+                               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);
@@ -116,6 +125,9 @@ class AltosIdler {
                        case idle_sensor_easytimer1:
                                AltosSensorEasyTimer1.provide_data(listener, link);
                                break;
+                       case idle_sensor_easymotor2:
+                               AltosSensorEasyMotor2.provide_data(listener, link);
+                               break;
                        }
                }
        }
@@ -200,6 +212,12 @@ public class AltosIdleFetch implements AltosDataProvider {
                               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("EasyMega-v1",
                               AltosIdler.idle_mma655x,
                               AltosIdler.idle_ms5607,
@@ -219,6 +237,9 @@ public class AltosIdleFetch implements AltosDataProvider {
                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),
        };
 
        AltosLink               link;
@@ -227,7 +248,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)) {