+/* Trim Extended Registers */
+#define BMM150_DIG_X1 0x5D
+#define BMM150_DIG_Y1 0x5E
+#define BMM150_DIG_Z4_LSB 0x62
+#define BMM150_DIG_Z4_MSB 0x63
+#define BMM150_DIG_X2 0x64
+#define BMM150_DIG_Y2 0x65
+#define BMM150_DIG_Z2_LSB 0x68
+#define BMM150_DIG_Z2_MSB 0x69
+#define BMM150_DIG_Z1_LSB 0x6A
+#define BMM150_DIG_Z1_MSB 0x6B
+#define BMM150_DIG_XYZ1_LSB 0x6C
+#define BMM150_DIG_XYZ1_MSB 0x6D
+#define BMM150_DIG_Z3_LSB 0x6E
+#define BMM150_DIG_Z3_MSB 0x6F
+#define BMM150_DIG_XY2 0x70
+#define BMM150_DIG_XY1 0x71
+
+#define BMM150_XYAXES_FLIP_OVERFLOW_ADCVAL -4096
+#define BMM150_ZAXIS_HALL_OVERFLOW_ADCVAL -16384
+#define BMM150_OVERFLOW_OUTPUT -32768
+#define BMM150_NEGATIVE_SATURATION_Z -32767
+#define BMM150_POSITIVE_SATURATION_Z 32767
+
+#define BMX160_GYRO_FULLSCALE ((float) 2000 * M_PI/180.0)
+
+static inline float
+ao_bmx160_gyro(float sensor) {
+ return sensor * ((float) (BMX160_GYRO_FULLSCALE / 32767.0));
+}
+
+#define BMX160_ACCEL_FULLSCALE 16
+
+static inline float
+ao_bmx160_accel(int16_t sensor) {
+ return (float) sensor * ((float) (BMX160_ACCEL_FULLSCALE * GRAVITY / 32767.0));
+}
+
+#define ao_bmx_accel_to_sample(accel) ((accel_t) (accel) * (32767.0f / (BMX160_ACCEL_FULLSCALE * GRAVITY)))
+