#ifndef _AO_BMX160_H_
#define _AO_BMX160_H_
+#include <math.h>
+
struct ao_bmx160_sample {
int16_t mag_x;
int16_t mag_y;
#define BMX160_PMU_STATUS_GYR_PMU_STATUS_SUSPEND 0
#define BMX160_PMU_STATUS_GYR_PMU_STATUS_NORMAL 1
#define BMX160_PMU_STATUS_GYR_PMU_STATUS_FAST_START_UP 3
+#define BMX160_PMU_STATUS_GYR_PMU_STATUS_MASK 3
#define BMX160_PMU_STATUS_ACC_PMU_STATUS 4
#define BMX160_PMU_STATUS_ACC_PMU_STATUS_SUSPEND 0
#define BMX160_PMU_STATUS_ACC_PMU_STATUS_NORMAL 1
#define BMX160_PMU_STATUS_ACC_PMU_STATUS_LOW_POWER 2
+#define BMX160_PMU_STATUS_ACC_PMU_STATUS_MASK 3
#define BMX160_DATA_0 0x04
#define BMX160_MAG_X_0_7 0x04
#define BMX160_MAG_X_8_15 0x05
#define BMX160_ACC_RANGE_4G 0x5
#define BMX160_ACC_RANGE_8G 0x8
#define BMX160_ACC_RANGE_16G 0xc
-#define BMX160_ACC_RANGE_
-#define BMX160_ACC_RANGE_
#define BMX160_GYR_CONF 0x42
#define BMX160_GYR_CONF_GYR_ODR 0
#define BMX160_GYR_CONF_GYR_ODR_25 0x6
#define BMM150_REPZ 0x52
#define BMM150_REPZ_VALUE(n) ((n) -1)
+#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));
+}
+
#endif /* _BMX160_H_ */