Read Sensor Events from Event FMQ
Read sensor events from the Event FMQ whenever the READ_AND_PROCESS
bitmask is set from the Sensors HAL on the Event FMQ.
Bug: 111070257
Test: Compile, configured system to use sensors@2.0 and ensured that
a_sns_test received events
Change-Id: Iad6b9ef2dc691b8d4f8ba4ae294c1371273be0ba
diff --git a/services/sensorservice/SensorDevice.h b/services/sensorservice/SensorDevice.h
index 1b2d908..2caebf9 100644
--- a/services/sensorservice/SensorDevice.h
+++ b/services/sensorservice/SensorDevice.h
@@ -22,12 +22,14 @@
#include "SensorsWrapper.h"
#include <fmq/MessageQueue.h>
+#include <sensor/SensorEventQueue.h>
#include <sensor/Sensor.h>
#include <stdint.h>
#include <sys/types.h>
#include <utils/KeyedVector.h>
#include <utils/Singleton.h>
#include <utils/String8.h>
+#include <utils/Timers.h>
#include <string>
#include <unordered_map>
@@ -69,6 +71,8 @@
int mCount; // number of transport errors observed
};
+ ~SensorDevice();
+
ssize_t getSensorList(sensor_t const** list);
void handleDynamicSensorConnection(int handle, bool connected);
@@ -173,6 +177,9 @@
HalConnectionStatus connectHidlServiceV1_0();
HalConnectionStatus connectHidlServiceV2_0();
+ ssize_t pollHal(sensors_event_t* buffer, size_t count);
+ ssize_t pollFmq(sensors_event_t* buffer, size_t count);
+
static void handleHidlDeath(const std::string &detail);
template<typename T>
static Return<T> checkReturn(Return<T> &&ret) {
@@ -203,6 +210,10 @@
typedef hardware::MessageQueue<uint32_t, hardware::kSynchronizedReadWrite> WakeLockQueue;
std::unique_ptr<EventMessageQueue> mEventQueue;
std::unique_ptr<WakeLockQueue> mWakeLockQueue;
+
+ hardware::EventFlag* mEventQueueFlag;
+
+ std::array<Event, SensorEventQueue::MAX_RECEIVE_BUFFER_EVENT_COUNT> mEventBuffer;
};
// ---------------------------------------------------------------------------