From c69a674cb25b7ee569466e0b494317df77408098 Mon Sep 17 00:00:00 2001 From: Armando Visconti Date: Tue, 4 Jul 2017 18:30:08 +0200 Subject: nanohub: drivers/st_mag40: Discard samples generated during sensor turn-on time Change-Id: Id5759ff759b49b34f77ed79fe89da48db6ce7c2c Signed-off-by: Armando Visconti --- firmware/os/drivers/st_mag40/st_mag40.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/firmware/os/drivers/st_mag40/st_mag40.c b/firmware/os/drivers/st_mag40/st_mag40.c index 70242d17..bdc874aa 100644 --- a/firmware/os/drivers/st_mag40/st_mag40.c +++ b/firmware/os/drivers/st_mag40/st_mag40.c @@ -215,6 +215,7 @@ struct st_mag40_Task { uint8_t subState; /* sensor flags */ + uint8_t samplesToDiscard; uint32_t rate; uint64_t latency; bool magOn; @@ -484,6 +485,7 @@ static bool magSetRate(uint32_t rate, uint64_t latency, void *cookie) mTask.currentODR = st_mag40_regVal[num]; mTask.rate = rate; mTask.latency = latency; + mTask.samplesToDiscard = 2; if (trySwitchState(SENSOR_MAG_CONFIGURATION)) { mTask.subState = CONFIG_SET_RATE; @@ -699,6 +701,12 @@ static void parseRawData(uint8_t *raw) float xi, yi, zi; #endif + /* Discard samples generated during sensor turn-on time */ + if (mTask.samplesToDiscard > 0) { + mTask.samplesToDiscard--; + return; + } + /* in uT */ xs = (float)raw_x * kScale_mag; ys = (float)raw_y * kScale_mag; -- cgit v1.2.3