Merge "Add WakeLockQueueFlagBits to Sensors 2.0"

This commit is contained in:
TreeHugger Robot
2019-01-11 03:08:23 +00:00
committed by Android (Google) Code Review
3 changed files with 21 additions and 6 deletions

View File

@@ -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.

View File

@@ -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);
}
}

View File

@@ -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,
};