X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosEepromRecordMega.java;h=57de0a4137406a38b9ca54f9fedd10d8ecc27b1f;hb=HEAD;hp=b858e7098d7f8907938fd8da40c3ccc7e04bc827;hpb=76b288f8d02e0a48f04de9455a2dd0b77e48bd63;p=fw%2Faltos diff --git a/altoslib/AltosEepromRecordMega.java b/altoslib/AltosEepromRecordMega.java index b858e709..bf94b676 100644 --- a/altoslib/AltosEepromRecordMega.java +++ b/altoslib/AltosEepromRecordMega.java @@ -34,6 +34,8 @@ public class AltosEepromRecordMega extends AltosEepromRecord { case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: case AltosLib.AO_LOG_FORMAT_EASYMEGA_2: case AltosLib.AO_LOG_FORMAT_TELEMEGA_4: + case AltosLib.AO_LOG_FORMAT_TELEMEGA_5: + case AltosLib.AO_LOG_FORMAT_TELEMEGA_6: return data32(16); case AltosLib.AO_LOG_FORMAT_TELEMEGA_OLD: return data16(14); @@ -47,6 +49,8 @@ public class AltosEepromRecordMega extends AltosEepromRecord { case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: case AltosLib.AO_LOG_FORMAT_EASYMEGA_2: case AltosLib.AO_LOG_FORMAT_TELEMEGA_4: + case AltosLib.AO_LOG_FORMAT_TELEMEGA_5: + case AltosLib.AO_LOG_FORMAT_TELEMEGA_6: return data32(20); case AltosLib.AO_LOG_FORMAT_TELEMEGA_OLD: return data16(16); @@ -60,6 +64,8 @@ public class AltosEepromRecordMega extends AltosEepromRecord { case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: case AltosLib.AO_LOG_FORMAT_EASYMEGA_2: case AltosLib.AO_LOG_FORMAT_TELEMEGA_4: + case AltosLib.AO_LOG_FORMAT_TELEMEGA_5: + case AltosLib.AO_LOG_FORMAT_TELEMEGA_6: return data32(24); case AltosLib.AO_LOG_FORMAT_TELEMEGA_OLD: return data16(18); @@ -85,6 +91,17 @@ public class AltosEepromRecordMega extends AltosEepromRecord { private int mag_z() { return data16(22); } private int mag_y() { return data16(24); } + /* normalized log data */ + private int norm_accel_along() { return data16(8); } + private int norm_accel_across() { return data16(10); } + private int norm_accel_through() { return data16(12); } + private int norm_gyro_roll() { return data16(14); } + private int norm_gyro_pitch() { return data16(16); } + private int norm_gyro_yaw() { return data16(18); } + private int norm_mag_along() { return data16(20); } + private int norm_mag_across() { return data16(22); } + private int norm_mag_through() { return data16(24); } + private int imu_type() { switch (log_format) { case AltosLib.AO_LOG_FORMAT_TELEMEGA: @@ -101,7 +118,39 @@ public class AltosEepromRecordMega extends AltosEepromRecord { } } + private int imu_model() { + switch (log_format) { + case AltosLib.AO_LOG_FORMAT_TELEMEGA_5: + return AltosLib.model_mpu6000; + case AltosLib.AO_LOG_FORMAT_TELEMEGA_6: + return AltosLib.model_bmi088; + } + return AltosLib.MISSING; + } + + private boolean sensor_normalized() { + switch (log_format) { + case AltosLib.AO_LOG_FORMAT_TELEMEGA_5: + case AltosLib.AO_LOG_FORMAT_TELEMEGA_6: + return true; + } + return false; + } + + private int mag_model() { + switch (log_format) { + case AltosLib.AO_LOG_FORMAT_TELEMEGA_5: + case AltosLib.AO_LOG_FORMAT_TELEMEGA_6: + return AltosLib.model_mmc5983; + } + return AltosLib.MISSING; + } + private int accel_across() { + if (sensor_normalized()) { + return norm_accel_across(); + } + switch (log_format) { case AltosLib.AO_LOG_FORMAT_TELEMEGA: case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: @@ -116,6 +165,10 @@ public class AltosEepromRecordMega extends AltosEepromRecord { } private int accel_along(){ + if (sensor_normalized()) { + return norm_accel_along(); + } + switch (log_format) { case AltosLib.AO_LOG_FORMAT_TELEMEGA: case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: @@ -130,10 +183,18 @@ public class AltosEepromRecordMega extends AltosEepromRecord { } private int accel_through() { + if (sensor_normalized()) { + return norm_accel_through(); + } + return accel_z(); } private int gyro_pitch() { + if (sensor_normalized()) { + return norm_gyro_pitch(); + } + switch (log_format) { case AltosLib.AO_LOG_FORMAT_TELEMEGA: case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: @@ -149,6 +210,10 @@ public class AltosEepromRecordMega extends AltosEepromRecord { } private int gyro_roll() { + if (sensor_normalized()) { + return norm_gyro_roll(); + } + switch (log_format) { case AltosLib.AO_LOG_FORMAT_TELEMEGA: case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: @@ -163,10 +228,18 @@ public class AltosEepromRecordMega extends AltosEepromRecord { } private int gyro_yaw() { + if (sensor_normalized()) { + return norm_gyro_yaw(); + } + return gyro_z(); } private int mag_across() { + if (sensor_normalized()) { + return norm_mag_across(); + } + switch (log_format) { case AltosLib.AO_LOG_FORMAT_TELEMEGA: case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: @@ -182,6 +255,10 @@ public class AltosEepromRecordMega extends AltosEepromRecord { } private int mag_along() { + if (sensor_normalized()) { + return norm_mag_along(); + } + switch (log_format) { case AltosLib.AO_LOG_FORMAT_TELEMEGA: case AltosLib.AO_LOG_FORMAT_TELEMEGA_3: @@ -196,6 +273,10 @@ public class AltosEepromRecordMega extends AltosEepromRecord { } private int mag_through() { + if (sensor_normalized()) { + return norm_mag_through(); + } + return mag_z(); } @@ -240,6 +321,8 @@ public class AltosEepromRecordMega extends AltosEepromRecord { AltosGPS gps; cal_data.set_imu_type(imu_type()); + cal_data.set_imu_model(imu_model()); + cal_data.set_mag_model(mag_model()); switch (cmd()) { case AltosLib.AO_LOG_FLIGHT: