Generate events for default Sensors 2.0
Adds the ability for default Sensors 2.0 implementation to generate
sensor events.
Bug: 111070257
Test: Builds
Change-Id: I98f04dbac5370cc6fc3be43468ba43b6476b4515
diff --git a/sensors/2.0/default/Sensors.cpp b/sensors/2.0/default/Sensors.cpp
index 29721fa..f0b02c3 100644
--- a/sensors/2.0/default/Sensors.cpp
+++ b/sensors/2.0/default/Sensors.cpp
@@ -100,12 +100,12 @@
Return<Result> Sensors::batch(int32_t sensorHandle, int64_t samplingPeriodNs,
int64_t /* maxReportLatencyNs */) {
- Result result = Result::BAD_VALUE;
auto sensor = mSensors.find(sensorHandle);
- if (sensor != mSensors.end() && sensor->second->batch(samplingPeriodNs)) {
- result = Result::OK;
+ if (sensor != mSensors.end()) {
+ sensor->second->batch(samplingPeriodNs);
+ return Result::OK;
}
- return result;
+ return Result::BAD_VALUE;
}
Return<Result> Sensors::flush(int32_t /* sensorHandle */) {
@@ -134,6 +134,17 @@
return Return<void>();
}
+void Sensors::postEvents(const std::vector<Event>& events) {
+ std::lock_guard<std::mutex> l(mLock);
+
+ // TODO: read events from the Wake Lock FMQ in the right place
+ std::vector<uint32_t> tmp(mWakeLockQueue->availableToRead());
+ mWakeLockQueue->read(tmp.data(), mWakeLockQueue->availableToRead());
+
+ mEventQueue->write(events.data(), events.size());
+ mEventQueueFlag->wake(static_cast<uint32_t>(EventQueueFlagBits::READ_AND_PROCESS));
+}
+
void Sensors::deleteEventFlag() {
status_t status = EventFlag::deleteEventFlag(&mEventQueueFlag);
if (status != OK) {