* 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA.
*/
-package org.altusmetrum.altoslib_13;
+package org.altusmetrum.altoslib_14;
import java.util.concurrent.*;
import java.io.*;
public static final double counts_per_g_mpu = 2048.0;
public static final double counts_per_g_bmx = 2048.0;
+ int pad_orientation;
+
private static double counts_per_g(int imu_type) {
switch (imu_type) {
case imu_type_telemega_v1_v2:
case imu_type_easymega_v2:
return counts_per_g_mpu;
case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return counts_per_g_bmx;
default:
return AltosLib.MISSING;
case imu_type_easymega_v1:
case imu_type_easymega_v2:
return counts_per_degree_mpu;
- case imu_type_telemega_v4:
+ case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return counts_per_degree_bmx;
default:
return AltosLib.MISSING;
public static final double MAG_COUNTS_MPU = 32767.0;
public static final double counts_per_gauss_mpu = MAG_COUNTS_MPU / MAG_FULLSCALE_GAUSS_MPU;
- public static final double MAG_FULLSCALE_GAUSS_BMX_XY = 11.50; /* 1150µT */
- public static final double MAG_FULLSCALE_GAUSS_BMX_Z = 25.00; /* 2500µT */
- public static final double MAG_COUNTS_BMX = 32767.0;
- public static final double counts_per_gauss_bmx_xy = MAG_COUNTS_BMX / MAG_FULLSCALE_GAUSS_BMX_XY;
- public static final double counts_per_gauss_bmx_z = MAG_COUNTS_BMX / MAG_FULLSCALE_GAUSS_BMX_Z;
+ public static final double counts_per_gauss_bmx = 100.0; /* BMX driver converts to µT */
public static double counts_per_gauss(int imu_type, int axis) {
switch(imu_type) {
case imu_type_easymega_v2:
return counts_per_gauss_mpu;
case imu_type_telemega_v4:
- switch (axis) {
- case imu_axis_x:
- case imu_axis_y:
- return counts_per_gauss_bmx_xy;
- case imu_axis_z:
- return counts_per_gauss_bmx_z;
- }
- /* fall through */
+ case imu_type_easytimer_v1:
+ return 100.0;
default:
return AltosLib.MISSING;
}
return counts / counts_per_gauss(imu_type, imu_axis);
}
- public boolean parse_string(String line) {
+ public boolean parse_string(String line, AltosLink link) {
if (!line.startsWith("Accel:"))
return false;
- String[] items = line.split("\\s+");
+ try {
+ pad_orientation = link.config_data().pad_orientation;
+ } catch (Exception e) {
+ return false;
+ }
- System.out.printf("length %d\n", items.length);
+ String[] items = line.split("\\s+");
if (items.length >= 8) {
accel_x = Integer.parseInt(items[1]);
public static final int imu_type_easymega_v1 = 3; /* MPU6000 */
public static final int imu_type_easymega_v2 = 4; /* MPU9250 */
+ public static final int imu_type_easytimer_v1 = 5; /* BMX160 */
+
private int accel_across(int imu_type) {
switch (imu_type) {
case imu_type_telemega_v1_v2:
return accel_x;
case imu_type_easymega_v2:
return -accel_y;
- case imu_type_telemega_v4:
+ case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return -accel_y;
default:
return AltosLib.MISSING;
return accel_y;
case imu_type_easymega_v2:
case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return accel_x;
default:
return AltosLib.MISSING;
return gyro_y;
case imu_type_easymega_v2:
case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return gyro_x;
default:
return AltosLib.MISSING;
case imu_type_easymega_v2:
return -gyro_y;
case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return -gyro_y;
default:
return AltosLib.MISSING;
case imu_type_telemega_v3:
case imu_type_easymega_v1:
return imu_axis_x;
- case imu_type_telemega_v4:
case imu_type_easymega_v2:
+ case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return imu_axis_y;
default:
return AltosLib.MISSING;
case imu_type_easymega_v2:
return -mag_y;
case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return mag_y;
default:
return AltosLib.MISSING;
return imu_axis_y;
case imu_type_easymega_v2:
case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return imu_axis_x;
default:
return AltosLib.MISSING;
return mag_y;
case imu_type_easymega_v2:
case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return mag_x;
default:
return AltosLib.MISSING;
if (line == null) {
throw new TimeoutException();
}
- if (parse_string(line))
+ if (parse_string(line, link))
break;
}
}