X-Git-Url: https://git.gag.com/?a=blobdiff_plain;f=altoslib%2FAltosTelemetryMegaSensor.java;h=749f6bbd30fe9e41bfd4803e4480368ee42695a7;hb=76c5e6bf7ecc30ae77a9744a4af26dca3dc46254;hp=b5e9d13c0f76ed643351c81d1d0d7e496956fb13;hpb=8da38e5217f366a7da24a8af4a5ca620fad35df3;p=fw%2Faltos diff --git a/altoslib/AltosTelemetryMegaSensor.java b/altoslib/AltosTelemetryMegaSensor.java index b5e9d13c..749f6bbd 100644 --- a/altoslib/AltosTelemetryMegaSensor.java +++ b/altoslib/AltosTelemetryMegaSensor.java @@ -16,7 +16,7 @@ * 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA. */ -package org.altusmetrum.altoslib_11; +package org.altusmetrum.altoslib_13; public class AltosTelemetryMegaSensor extends AltosTelemetryStandard { int orient() { return int8(5); } @@ -37,18 +37,35 @@ public class AltosTelemetryMegaSensor extends AltosTelemetryStandard { int mag_z() { return int16(28); } int mag_y() { return int16(30); } - public AltosTelemetryMegaSensor(int[] bytes) throws AltosCRCException { + int imu_type; + + public AltosTelemetryMegaSensor(int[] bytes, int imu_type) throws AltosCRCException { super(bytes); + switch (imu_type) { + case AltosIMU.imu_type_telemega_v1_v2: + case AltosIMU.imu_type_telemega_v3: + if (serial() < 3000) + imu_type = AltosIMU.imu_type_telemega_v1_v2; + else + imu_type = AltosIMU.imu_type_telemega_v3; + break; + default: + break; + } + this.imu_type = imu_type; } - public void provide_data(AltosDataListener listener, AltosCalData cal_data) { - super.provide_data(listener, cal_data); + public void provide_data(AltosDataListener listener) { + super.provide_data(listener); + + AltosCalData cal_data = listener.cal_data(); listener.set_acceleration(cal_data.acceleration(accel())); listener.set_pressure(pres()); listener.set_temperature(temp() / 100.0); listener.set_orient(orient()); + cal_data.set_imu_type(imu_type); /* XXX we have no calibration data for these values */