*
* This program is free software; you can redistribute it and/or modify
* it under the terms of the GNU General Public License as published by
- * the Free Software Foundation; version 2 of the License.
+ * the Free Software Foundation; either version 2 of the License, or
+ * (at your option) any later version.
*
* This program is distributed in the hope that it will be useful, but
* WITHOUT ANY WARRANTY; without even the implied warranty of
* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altoslib_2;
+package org.altusmetrum.altoslib_11;
public class AltosTelemetryMegaSensor extends AltosTelemetryStandard {
- int accel;
- int pres;
- int temp;
+ int orient() { return int8(5); }
- int accel_x;
- int accel_y;
- int accel_z;
+ int accel() { return int16(6); }
+ int pres() { return int32(8); }
+ int temp() { return int16(12); }
- int gyro_x;
- int gyro_y;
- int gyro_z;
+ int accel_x() { return int16(14); }
+ int accel_y() { return int16(16); }
+ int accel_z() { return int16(18); }
- int mag_x;
- int mag_y;
- int mag_z;
+ int gyro_x() { return int16(20); }
+ int gyro_y() { return int16(22); }
+ int gyro_z() { return int16(24); }
- int orient;
+ int mag_x() { return int16(26); }
+ int mag_y() { return int16(28); }
+ int mag_z() { return int16(30); }
- public AltosTelemetryMegaSensor(int[] bytes) {
+ public AltosTelemetryMegaSensor(int[] bytes) throws AltosCRCException {
super(bytes);
-
- orient = int8(5);
- accel = int16(6);
- pres = int32(8);
- temp = int16(12);
-
- accel_x = int16(14);
- accel_y = int16(16);
- accel_z = int16(18);
-
- gyro_x = int16(20);
- gyro_y = int16(22);
- gyro_z = int16(24);
-
- mag_x = int16(26);
- mag_y = int16(28);
- mag_z = int16(30);
}
public void update_state(AltosState state) {
super.update_state(state);
- state.set_accel(accel);
- state.set_pressure(pres);
- state.set_temperature(temp / 100.0);
-
- state.set_orient(orient);
-
- AltosIMU imu = new AltosIMU();
-
- imu.accel_x = AltosIMU.convert_accel(accel_x);
- imu.accel_y = AltosIMU.convert_accel(accel_y);
- imu.accel_z = AltosIMU.convert_accel(accel_z);
-
- imu.gyro_x = AltosIMU.convert_gyro(gyro_x);
- imu.gyro_y = AltosIMU.convert_gyro(gyro_y);
- imu.gyro_z = AltosIMU.convert_gyro(gyro_z);
-
- state.imu = imu;
+ state.set_accel(accel());
+ state.set_pressure(pres());
+ state.set_temperature(temp() / 100.0);
- AltosMag mag = new AltosMag();
+ state.set_orient(orient());
- mag.x = AltosMag.convert_gauss(mag_x);
- mag.y = AltosMag.convert_gauss(mag_y);
- mag.z = AltosMag.convert_gauss(mag_z);
+ state.set_imu(new AltosIMU(accel_y(), /* along */
+ accel_x(), /* across */
+ accel_z(), /* through */
+ gyro_y(), /* along */
+ gyro_x(), /* across */
+ gyro_z())); /* through */
- state.mag = mag;
+ state.set_mag(new AltosMag(mag_x(), mag_y(), mag_z()));
}
}