X-Git-Url: https://git.gag.com/?p=fw%2Faltos;a=blobdiff_plain;f=altoslib%2FAltosIMU.java;h=20a2a413da4f9499a7f1ce052dd52f882440b0c9;hp=df6c4ed36fbc08c7d2d77cdbe56f06886cdc7eeb;hb=78b4bf77fca96bef2cce443ad4c9544ae83f0acc;hpb=b1a90adac9f6e2a609ce1ccd6749462bb5c9adbe diff --git a/altoslib/AltosIMU.java b/altoslib/AltosIMU.java index df6c4ed3..20a2a413 100644 --- a/altoslib/AltosIMU.java +++ b/altoslib/AltosIMU.java @@ -3,7 +3,8 @@ * * 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 @@ -20,7 +21,7 @@ package org.altusmetrum.altoslib_11; import java.util.concurrent.*; import java.io.*; -public class AltosIMU implements Cloneable, AltosHashable { +public class AltosIMU implements Cloneable { public int accel_along; public int accel_across; public int accel_through; @@ -32,7 +33,7 @@ public class AltosIMU implements Cloneable, AltosHashable { public static final double counts_per_g = 2048.0; public static double convert_accel(double counts) { - return counts / counts_per_g * (-AltosConvert.GRAVITATIONAL_ACCELERATION); + return counts / counts_per_g * AltosConvert.gravity; } public static final double counts_per_degsec = 16.4; @@ -71,12 +72,18 @@ public class AltosIMU implements Cloneable, AltosHashable { return n; } - static public void update_state(AltosState state, AltosLink link, AltosConfigData config_data) throws InterruptedException { + static public void provide_data(AltosDataListener listener, AltosLink link, AltosCalData cal_data) throws InterruptedException { try { AltosIMU imu = new AltosIMU(link); - if (imu != null) - state.set_imu(imu); + if (imu != null) { + listener.set_accel(cal_data.accel_along(imu.accel_along), + cal_data.accel_across(imu.accel_across), + cal_data.accel_through(imu.accel_through)); + listener.set_gyro(cal_data.gyro_roll(imu.gyro_roll), + cal_data.gyro_pitch(imu.gyro_pitch), + cal_data.gyro_yaw(imu.gyro_yaw)); + } } catch (TimeoutException te) { } } @@ -115,35 +122,4 @@ public class AltosIMU implements Cloneable, AltosHashable { break; } } - - public AltosIMU (AltosHashSet h) { - this(); - - accel_along = h.getInt("accel_along", accel_along); - accel_across = h.getInt("accel_across", accel_across); - accel_through = h.getInt("accel_through", accel_through); - - gyro_roll = h.getInt("gyro_roll", gyro_roll); - gyro_pitch = h.getInt("gyro_pitch", gyro_pitch); - gyro_yaw = h.getInt("gyro_yaw", gyro_yaw); - } - - static public AltosIMU fromHashSet(AltosHashSet h, AltosIMU def) { - if (h == null) - return def; - return new AltosIMU(h); - } - - public AltosHashSet hashSet() { - AltosHashSet h = new AltosHashSet(); - - h.putInt("accel_along", accel_along); - h.putInt("accel_across", accel_across); - h.putInt("accel_through", accel_through); - - h.putInt("gyro_roll", gyro_roll); - h.putInt("gyro_pitch", gyro_pitch); - h.putInt("gyro_yaw", gyro_yaw); - return h; - } }