summaryrefslogtreecommitdiff
path: root/6515
diff options
context:
space:
mode:
authorNick Vaccaro <nvaccaro@google.com>2014-06-12 08:25:36 -0700
committerNick Vaccaro <nvaccaro@google.com>2014-06-12 08:25:36 -0700
commit9478d39a0d83d276899e3f5c876785c7f14ba497 (patch)
tree927ac4c2e98090a20fc5aa5f8aca00761288fdb3 /6515
parent12c6e53cec1b0b1f5bbfde63724d8ebb72ae936e (diff)
downloadinvensense-9478d39a0d83d276899e3f5c876785c7f14ba497.tar.gz
Invensense: 6515: fix compass data reporting when pedometer on
When step counter is on, no data was reported from compass when magnet is attached (device on charger), causing compass app to freeze. When magnet is attached, compass will now return the last good value it read, keeping the compass app happy. Bug: 15282844 Change-Id: Ib7102aac9d5a04cfdbf253be01809a1a192a81dc
Diffstat (limited to '6515')
-rw-r--r--6515/libsensors_iio/MPLSensor.cpp6
-rw-r--r--6515/libsensors_iio/MPLSensor.h1
2 files changed, 5 insertions, 2 deletions
diff --git a/6515/libsensors_iio/MPLSensor.cpp b/6515/libsensors_iio/MPLSensor.cpp
index d1a9e7a..c63d8b4 100644
--- a/6515/libsensors_iio/MPLSensor.cpp
+++ b/6515/libsensors_iio/MPLSensor.cpp
@@ -2595,7 +2595,7 @@ int MPLSensor::compassHandler(sensors_event_t* s)
s->magnetic.v[0], s->magnetic.v[1], s->magnetic.v[2],
s->timestamp, update);
mCompassAccuracy = s->magnetic.status;
- return update;
+ return update | mCompassOverFlow;
}
int MPLSensor::rawCompassHandler(sensors_event_t* s)
@@ -2620,7 +2620,7 @@ int MPLSensor::rawCompassHandler(sensors_event_t* s)
LOGV_IF(HANDLER_DATA, "HAL:compass raw data: %+f %+f %+f %d -- %lld - %d",
s->uncalibrated_magnetic.uncalib[0], s->uncalibrated_magnetic.uncalib[1],
s->uncalibrated_magnetic.uncalib[2], s->magnetic.status, s->timestamp, update);
- return update;
+ return update | mCompassOverFlow;
}
/*
@@ -3689,6 +3689,7 @@ int MPLSensor::readEvents(sensors_event_t* data, int count)
}
}
}
+ mCompassOverFlow = 0;
return numEventReceived;
}
@@ -3981,6 +3982,7 @@ LOGV_IF(INPUT_DATA,
else if (data_format == DATA_FORMAT_COMPASS_OF) {
LOGV_IF(ENG_VERBOSE && INPUT_DATA, "COMPASS OF DETECTED:0x%x", data_format);
mask |= DATA_FORMAT_COMPASS_OF;
+ mCompassOverFlow = 1;
readCounter -= BYTES_PER_SENSOR;
}
#ifdef ENABLE_PRESSURE
diff --git a/6515/libsensors_iio/MPLSensor.h b/6515/libsensors_iio/MPLSensor.h
index bdaee57..ea45f9b 100644
--- a/6515/libsensors_iio/MPLSensor.h
+++ b/6515/libsensors_iio/MPLSensor.h
@@ -376,6 +376,7 @@ protected:
InputEventCircularReader mAccelInputReader;
InputEventCircularReader mGyroInputReader;
+ int mCompassOverFlow;
bool mFirstRead;
short mTempScale;
short mTempOffset;