Merge "[GyroCal/OTC-Gyro] Algorithm Sync for MR1" into oc-mr1-dev
diff --git a/firmware/os/core/sensors.c b/firmware/os/core/sensors.c
index d96fdc6..307b897 100644
--- a/firmware/os/core/sensors.c
+++ b/firmware/os/core/sensors.c
@@ -526,6 +526,7 @@
if (s && s->currentRate != SENSOR_RATE_OFF && s->currentRate < SENSOR_RATE_POWERING_ON) {
s->currentRate = evt->value1;
s->currentLatency = evt->value2;
+ sensorReconfig(s, sensorCalcHwRate(s, 0, 0), sensorCalcHwLatency(s));
osEnqueueEvtOrFree(sensorGetMyCfgEventType(s->si->sensorType), evt, sensorInternalEvtFreeF);
} else {
slabAllocatorFree(mInternalEvents, evt);
diff --git a/sensorhal/hubconnection.cpp b/sensorhal/hubconnection.cpp
index 01b95df..0025b40 100644
--- a/sensorhal/hubconnection.cpp
+++ b/sensorhal/hubconnection.cpp
@@ -1438,9 +1438,6 @@
ev.sensor = 0;
ev.meta_data.what = META_DATA_FLUSH_COMPLETE;
ev.meta_data.sensor = flush.handle;
- if (mSensorState[flush.handle].enable) {
- updateSampleRate(flush.handle, CONFIG_CMD_FLUSH);
- }
if (flush.internal) {
if (flush.handle == COMMS_SENSOR_ACCEL_WRIST_AWARE)
@@ -1756,12 +1753,14 @@
initConfigCmd(&cmd, handle);
ret = TEMP_FAILURE_RETRY(::write(mFd, &cmd, sizeof(cmd)));
- if (ret == sizeof(cmd))
+ if (ret == sizeof(cmd)) {
+ updateSampleRate(handle, CONFIG_CMD_ENABLE); // batch uses CONFIG_CMD_ENABLE command
ALOGV("queueBatch: sensor=%d, handle=%d, period=%" PRId64 ", latency=%" PRId64,
cmd.sensorType, handle, sampling_period_ns, max_report_latency_ns);
- else
+ } else {
ALOGW("queueBatch: failed to send command: sensor=%d, handle=%d, period=%" PRId64 ", latency=%" PRId64,
cmd.sensorType, handle, sampling_period_ns, max_report_latency_ns);
+ }
} else {
ALOGV("queueBatch: unhandled handle=%d, period=%" PRId64 ", latency=%" PRId64,
handle, sampling_period_ns, max_report_latency_ns);
@@ -2208,13 +2207,7 @@
}
switch (reason) {
- case CONFIG_CMD_ENABLE:
- // filter out duplicated enable
- if (mSensorState[handle].desiredTSample != INT64_MAX) {
- break;
- }
- // fall through
- case CONFIG_CMD_FLUSH: {
+ case CONFIG_CMD_ENABLE: {
constexpr uint64_t PERIOD_800HZ = 1250000;
uint64_t period_multiplier =
(frequency_q10_to_period_ns(mSensorState[handle].rate) + PERIOD_800HZ / 2)