summaryrefslogtreecommitdiff
path: root/firmware/os
diff options
context:
space:
mode:
authorBen Fennema <fennema@google.com>2017-02-23 10:35:16 -0800
committerBen Fennema <fennema@google.com>2017-02-23 14:27:48 -0800
commitb0ae54e9a706aa28060b1fdbb8ad19e37c4f4c34 (patch)
tree2fc4baa2c369fe19f4f9c58d81246e206e699deb /firmware/os
parent75d16e01f1236b98ca752f02d78b39f4d4db47be (diff)
downloadcontexthub-b0ae54e9a706aa28060b1fdbb8ad19e37c4f4c34.tar.gz
bmi160: add support for raw mag samples
Bug: 33693823 Test: run mag and verify output data looks correct Change-Id: I756adebd5258b143edb36b7fea320b0a25786339 Signed-off-by: Ben Fennema <fennema@google.com>
Diffstat (limited to 'firmware/os')
-rw-r--r--firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.c2
-rw-r--r--firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.h2
-rw-r--r--firmware/os/drivers/bosch_bmi160/bosch_bmi160.c5
-rw-r--r--firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.c2
-rw-r--r--firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.h2
-rw-r--r--firmware/os/inc/sensType.h2
6 files changed, 9 insertions, 6 deletions
diff --git a/firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.c b/firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.c
index 371f997b..286ff219 100644
--- a/firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.c
+++ b/firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.c
@@ -17,8 +17,6 @@
#include <string.h>
#include "akm_ak09915_slave.h"
-#define kScale_mag 0.15f
-
void parseMagData(struct MagTask *magTask, uint8_t *buf, float *x, float *y, float *z) {
int32_t raw_x = (*(int16_t *)&buf[0]);
int32_t raw_y = (*(int16_t *)&buf[2]);
diff --git a/firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.h b/firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.h
index d7bb12e9..af9d5209 100644
--- a/firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.h
+++ b/firmware/os/drivers/bosch_bmi160/akm_ak09915_slave.h
@@ -25,6 +25,8 @@
extern "C" {
#endif
+#define kScale_mag 0.15f
+
#define AKM_AK09915_DEVICE_ID 0x1048
#define AKM_AK09915_REG_WIA1 0x00
#define AKM_AK09915_REG_DATA 0x11
diff --git a/firmware/os/drivers/bosch_bmi160/bosch_bmi160.c b/firmware/os/drivers/bosch_bmi160/bosch_bmi160.c
index c5477aa1..29e838c9 100644
--- a/firmware/os/drivers/bosch_bmi160/bosch_bmi160.c
+++ b/firmware/os/drivers/bosch_bmi160/bosch_bmi160.c
@@ -675,8 +675,9 @@ static const struct SensorInfo mSensorInfo[NUM_OF_SENSOR] =
{ DEC_INFO_RATE_BIAS("Gyroscope", GyrRates, SENS_TYPE_GYRO, NUM_AXIS_THREE,
NANOHUB_INT_NONWAKEUP, 20, SENS_TYPE_GYRO_BIAS) },
#ifdef MAG_SLAVE_PRESENT
- { DEC_INFO_RATE_BIAS("Magnetometer", MagRates, SENS_TYPE_MAG, NUM_AXIS_THREE,
- NANOHUB_INT_NONWAKEUP, 600, SENS_TYPE_MAG_BIAS) },
+ { DEC_INFO_RATE_RAW_BIAS("Magnetometer", MagRates, SENS_TYPE_MAG, NUM_AXIS_THREE,
+ NANOHUB_INT_NONWAKEUP, 600, SENS_TYPE_MAG_RAW, 1.0/kScale_mag,
+ SENS_TYPE_MAG_BIAS) },
#endif
{ DEC_INFO("Step Detector", SENS_TYPE_STEP_DETECT, NUM_AXIS_EMBEDDED,
NANOHUB_INT_NONWAKEUP, 100) },
diff --git a/firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.c b/firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.c
index 4a223fbd..3f21dc71 100644
--- a/firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.c
+++ b/firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.c
@@ -17,8 +17,6 @@
#include <string.h>
#include "bosch_bmm150_slave.h"
-#define kScale_mag 0.0625f // 1.0f / 16.0f;
-
void bmm150SaveDigData(struct MagTask *magTask, uint8_t *data, size_t offset)
{
// magnetometer temperature calibration data is read in 3 bursts of 8 byte
diff --git a/firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.h b/firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.h
index 59e53fba..abc82a98 100644
--- a/firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.h
+++ b/firmware/os/drivers/bosch_bmi160/bosch_bmm150_slave.h
@@ -25,6 +25,8 @@
extern "C" {
#endif
+#define kScale_mag 0.0625f // 1.0f / 16.0f;
+
#define BMM150_REG_DATA 0x42
#define BMM150_REG_CTRL_1 0x4b
#define BMM150_REG_CTRL_2 0x4c
diff --git a/firmware/os/inc/sensType.h b/firmware/os/inc/sensType.h
index b115467a..4a62b828 100644
--- a/firmware/os/inc/sensType.h
+++ b/firmware/os/inc/sensType.h
@@ -80,6 +80,8 @@ extern "C" {
#define SENS_TYPE_GYRO_TEMP 57
#define SENS_TYPE_MAG_TEMP 58
+#define SENS_TYPE_MAG_RAW 59
+
#define SENS_TYPE_FIRST_USER 64 // event type necessarily begins with UserSensorEventHdr
#define SENS_TYPE_LAST_USER 128