public static final double counts_per_g_mpu = 2048.0;
public static final double counts_per_g_bmx = 2048.0;
+ public static final double counts_per_g_adxl = 20.5;
private static double counts_per_g(int imu_type) {
switch (imu_type) {
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;
+ case imu_type_easymotor_v2:
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;
case imu_type_easymega_v2:
return counts_per_gauss_mpu;
case imu_type_telemega_v4:
+ case imu_type_easytimer_v1:
return 100.0;
default:
return AltosLib.MISSING;
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 */
+
+ public static final int imu_type_easymotor_v2 = 6; /* ADXL375 (accel only) */
+
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;
+ case imu_type_easymotor_v2:
+ 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;
+ case imu_type_easymotor_v2:
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;
cal_data.set_imu_type(imu_type);
if (imu != null) {
- listener.set_gyro(cal_data.gyro_roll(imu.gyro_roll(imu_type)),
- cal_data.gyro_pitch(imu.gyro_pitch(imu_type)),
- cal_data.gyro_yaw(imu.gyro_yaw(imu_type)));
+ if (imu.gyro_x != AltosLib.MISSING) {
+ listener.set_gyro(cal_data.gyro_roll(imu.gyro_roll(imu_type)),
+ cal_data.gyro_pitch(imu.gyro_pitch(imu_type)),
+ cal_data.gyro_yaw(imu.gyro_yaw(imu_type)));
+ }
listener.set_accel_ground(cal_data.accel_along(imu.accel_along(imu_type)),
cal_data.accel_across(imu.accel_across(imu_type)),
cal_data.accel_through(imu.accel_through(imu_type)));