Loading sensors/2.0/ISensors.hal +9 −5 Original line number Original line Diff line number Diff line Loading @@ -95,11 +95,15 @@ interface ISensors { * The Wake Lock FMQ is used by the framework to notify the HAL when it is * 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 * 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 * 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 * framework must write the number of WAKE_UP events processed to the Wake * of WAKE_UP events processed. When the HAL reads the WakeLockEvent from * Lock FMQ. When the HAL reads the data from the Wake Lock FMQ, the HAL * the Wake Lock FMQ, the HAL should decrement its current count of * decrements its current count of unprocessed WAKE_UP events and releases * unprocessed WAKE_UP events and release its wake_lock if the current * its wake_lock if the current count of unprocessed WAKE_UP events is * count of unprocessed WAKE_UP events is zero. * 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 * The ISensorsCallback is used by the HAL to notify the framework of * asynchronous events, such as a dynamic sensor connection. * asynchronous events, such as a dynamic sensor connection. Loading sensors/2.0/default/Sensors.cpp +4 −1 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ using ::android::hardware::sensors::V1_0::RateLevel; using ::android::hardware::sensors::V1_0::Result; using ::android::hardware::sensors::V1_0::Result; using ::android::hardware::sensors::V1_0::SharedMemInfo; using ::android::hardware::sensors::V1_0::SharedMemInfo; using ::android::hardware::sensors::V2_0::SensorTimeout; using ::android::hardware::sensors::V2_0::SensorTimeout; using ::android::hardware::sensors::V2_0::WakeLockQueueFlagBits; constexpr const char* kWakeLockName = "SensorsHAL_WAKEUP"; constexpr const char* kWakeLockName = "SensorsHAL_WAKEUP"; Loading Loading @@ -215,7 +216,9 @@ void Sensors::readWakeLockFMQ() { // Read events from the Wake Lock FMQ. Timeout after a reasonable amount of time to ensure // 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. // 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); updateWakeLock(0 /* eventsWritten */, eventsHandled); } } } } Loading sensors/2.0/types.hal +8 −0 Original line number Original line Diff line number Diff line Loading @@ -40,3 +40,11 @@ enum EventQueueFlagBits : uint32_t { */ */ EVENTS_READ = 1 << 1, 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, }; Loading
sensors/2.0/ISensors.hal +9 −5 Original line number Original line Diff line number Diff line Loading @@ -95,11 +95,15 @@ interface ISensors { * The Wake Lock FMQ is used by the framework to notify the HAL when it is * 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 * 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 * 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 * framework must write the number of WAKE_UP events processed to the Wake * of WAKE_UP events processed. When the HAL reads the WakeLockEvent from * Lock FMQ. When the HAL reads the data from the Wake Lock FMQ, the HAL * the Wake Lock FMQ, the HAL should decrement its current count of * decrements its current count of unprocessed WAKE_UP events and releases * unprocessed WAKE_UP events and release its wake_lock if the current * its wake_lock if the current count of unprocessed WAKE_UP events is * count of unprocessed WAKE_UP events is zero. * 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 * The ISensorsCallback is used by the HAL to notify the framework of * asynchronous events, such as a dynamic sensor connection. * asynchronous events, such as a dynamic sensor connection. Loading
sensors/2.0/default/Sensors.cpp +4 −1 Original line number Original line Diff line number Diff line Loading @@ -31,6 +31,7 @@ using ::android::hardware::sensors::V1_0::RateLevel; using ::android::hardware::sensors::V1_0::Result; using ::android::hardware::sensors::V1_0::Result; using ::android::hardware::sensors::V1_0::SharedMemInfo; using ::android::hardware::sensors::V1_0::SharedMemInfo; using ::android::hardware::sensors::V2_0::SensorTimeout; using ::android::hardware::sensors::V2_0::SensorTimeout; using ::android::hardware::sensors::V2_0::WakeLockQueueFlagBits; constexpr const char* kWakeLockName = "SensorsHAL_WAKEUP"; constexpr const char* kWakeLockName = "SensorsHAL_WAKEUP"; Loading Loading @@ -215,7 +216,9 @@ void Sensors::readWakeLockFMQ() { // Read events from the Wake Lock FMQ. Timeout after a reasonable amount of time to ensure // 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. // 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); updateWakeLock(0 /* eventsWritten */, eventsHandled); } } } } Loading
sensors/2.0/types.hal +8 −0 Original line number Original line Diff line number Diff line Loading @@ -40,3 +40,11 @@ enum EventQueueFlagBits : uint32_t { */ */ EVENTS_READ = 1 << 1, 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, };