mirror of
https://github.com/Evolution-X/hardware_interfaces
synced 2026-02-01 22:04:26 +00:00
Merge "Add WakeLockQueueFlagBits to Sensors 2.0"
This commit is contained in:
committed by
Android (Google) Code Review
commit
0fffa374e3
@@ -95,11 +95,15 @@ interface ISensors {
|
||||
* The Wake Lock FMQ is used by the framework to notify the HAL when it is
|
||||
* safe to release its wake_lock. When the framework receives WAKE_UP events
|
||||
* from the Event FMQ and the framework has acquired a wake_lock, the
|
||||
* framework must write a WakeLockEvent to the Wake Lock FMQ with the number
|
||||
* of WAKE_UP events processed. When the HAL reads the WakeLockEvent from
|
||||
* the Wake Lock FMQ, the HAL should decrement its current count of
|
||||
* unprocessed WAKE_UP events and release its wake_lock if the current
|
||||
* count of unprocessed WAKE_UP events is zero.
|
||||
* framework must write the number of WAKE_UP events processed to the Wake
|
||||
* Lock FMQ. When the HAL reads the data from the Wake Lock FMQ, the HAL
|
||||
* decrements its current count of unprocessed WAKE_UP events and releases
|
||||
* its wake_lock if the current count of unprocessed WAKE_UP events is
|
||||
* zero.
|
||||
*
|
||||
* The framework must use the WakeLockQueueFlagBits::DATA_WRITTEN value to
|
||||
* notify the HAL that data has been written to the Wake Lock FMQ and must
|
||||
* be read by HAL.
|
||||
*
|
||||
* The ISensorsCallback is used by the HAL to notify the framework of
|
||||
* asynchronous events, such as a dynamic sensor connection.
|
||||
|
||||
@@ -31,6 +31,7 @@ using ::android::hardware::sensors::V1_0::RateLevel;
|
||||
using ::android::hardware::sensors::V1_0::Result;
|
||||
using ::android::hardware::sensors::V1_0::SharedMemInfo;
|
||||
using ::android::hardware::sensors::V2_0::SensorTimeout;
|
||||
using ::android::hardware::sensors::V2_0::WakeLockQueueFlagBits;
|
||||
|
||||
constexpr const char* kWakeLockName = "SensorsHAL_WAKEUP";
|
||||
|
||||
@@ -215,7 +216,9 @@ void Sensors::readWakeLockFMQ() {
|
||||
|
||||
// Read events from the Wake Lock FMQ. Timeout after a reasonable amount of time to ensure
|
||||
// that any held wake lock is able to be released if it is held for too long.
|
||||
mWakeLockQueue->readBlocking(&eventsHandled, 1 /* count */, kReadTimeoutNs);
|
||||
mWakeLockQueue->readBlocking(&eventsHandled, 1 /* count */, 0 /* readNotification */,
|
||||
static_cast<uint32_t>(WakeLockQueueFlagBits::DATA_WRITTEN),
|
||||
kReadTimeoutNs);
|
||||
updateWakeLock(0 /* eventsWritten */, eventsHandled);
|
||||
}
|
||||
}
|
||||
|
||||
@@ -40,3 +40,11 @@ enum EventQueueFlagBits : uint32_t {
|
||||
*/
|
||||
EVENTS_READ = 1 << 1,
|
||||
};
|
||||
|
||||
enum WakeLockQueueFlagBits : uint32_t {
|
||||
/**
|
||||
* Used to notify the HAL that the framework has written data to the Wake
|
||||
* Lock FMQ.
|
||||
*/
|
||||
DATA_WRITTEN = 1 << 0,
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user