altoslib: Add EasyMega v3.0 support
authorKeith Packard <keithp@keithp.com>
Sat, 24 Feb 2024 20:44:00 +0000 (12:44 -0800)
committerKeith Packard <keithp@keithp.com>
Sat, 24 Feb 2024 20:44:00 +0000 (12:44 -0800)
Signed-off-by: Keith Packard <keithp@keithp.com>
altoslib/AltosConfigData.java
altoslib/AltosEepromRecordSet.java
altoslib/AltosIMU.java
altoslib/AltosIdleFetch.java
altoslib/AltosLib.java

index 17a81329e26971ef922c369ebe5c904cf98bb0ee..005ef57156a4da31eb7187ce43df9167446a696b 100644 (file)
@@ -220,6 +220,7 @@ public class AltosConfigData {
                case AltosLib.AO_LOG_FORMAT_TELEMEGA_5:
                case AltosLib.AO_LOG_FORMAT_TELEMEGA_6:
                case AltosLib.AO_LOG_FORMAT_EASYMEGA_2:
+               case AltosLib.AO_LOG_FORMAT_EASYMEGA_3:
                case AltosLib.AO_LOG_FORMAT_EASYMOTOR:
                        /* ADXL375 */
                        return -value;
index c42f78af1abf07e8df6284f2eb51dbdf3b7b8f4c..8f3fa4590e43bcecd060b1d287bf09490a7a23db 100644 (file)
@@ -88,6 +88,7 @@ public class AltosEepromRecordSet implements AltosRecordSet {
                case AltosLib.AO_LOG_FORMAT_TELEMEGA_4:
                case AltosLib.AO_LOG_FORMAT_TELEMEGA_5:
                case AltosLib.AO_LOG_FORMAT_TELEMEGA_6:
+               case AltosLib.AO_LOG_FORMAT_EASYMEGA_3:
                        record = new AltosEepromRecordMega(eeprom);
                        break;
                case AltosLib.AO_LOG_FORMAT_TELEMETRUM:
index 436d54cc7c0ffc93e8904d8c887dda764f313602..01ecc1616630fbaca656ee5918a1404c4770cc2d 100644 (file)
@@ -278,8 +278,10 @@ public class AltosIMU implements Cloneable {
        }
 
        private int accel_along(int imu_type) {
-               if (accel_along != AltosLib.MISSING)
+               if (accel_along != AltosLib.MISSING) {
+                       System.out.printf("accel along %d\n", accel_along);
                        return accel_along;
+               }
 
                switch (imu_type) {
                case imu_type_telemega_v1_v2:
@@ -407,6 +409,7 @@ public class AltosIMU implements Cloneable {
                        AltosIMU        imu = new AltosIMU(link);
                        AltosCalData    cal_data = listener.cal_data();
 
+                       System.out.printf("imu_model %d mag_model %d\n", imu.imu_model, imu.mag_model);
                        if (imu_type != AltosLib.MISSING)
                                cal_data.set_imu_type(imu_type);
                        if (imu != null) {
index 2b92d729c0809b9db23e3f7a4cfd73adbbb48dc7..b64ba0a4c9ee0828d876e80709229b51f5e877e8 100644 (file)
@@ -41,6 +41,7 @@ class AltosIdler {
        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 = 100;
        static final int        idle_sensor_metrum = 101;
@@ -56,6 +57,7 @@ class AltosIdler {
        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) {
@@ -257,6 +259,12 @@ public class AltosIdleFetch implements AltosDataProvider {
                               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),
index 7cd0e15c7830f9a9d6150936de7795e62f127278..82b5881ae49dc4389328460a859cada80acbfbe1 100644 (file)
@@ -388,6 +388,7 @@ public class AltosLib {
        public static final int AO_LOG_FORMAT_TELEMEGA_5 = 21;
        public static final int AO_LOG_FORMAT_TELEMEGA_6 = 22;
        public static final int AO_LOG_FORMAT_EASYTIMER_2 = 23;
+       public static final int AO_LOG_FORMAT_EASYMEGA_3 = 24;
        public static final int AO_LOG_FORMAT_NONE = 127;
 
        public static final int model_mpu6000 = 0;
@@ -615,6 +616,7 @@ public class AltosLib {
                case product_telegps: return "TeleGPS";
                case product_easymini: return "EasyMini";
                case product_telemini: return "TeleMini";
+               case product_easymega: return "EasyMega";
                case product_easymotor: return "EasyMotor";
                default: return "unknown";
                }
@@ -655,6 +657,7 @@ public class AltosLib {
                case AO_LOG_FORMAT_TELEMEGA_3:
                        return product_telemega;
                case AO_LOG_FORMAT_EASYMEGA_2:
+               case AO_LOG_FORMAT_EASYMEGA_3:
                        return product_easymega;
                case AO_LOG_FORMAT_TELESTATIC:
                        return product_altusmetrum;