Loading services/sensorservice/SensorDevice.cpp +21 −4 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ using namespace android::hardware::sensors::V1_0; using namespace android::hardware::sensors::V1_0::implementation; using android::hardware::sensors::V2_0::ISensorsCallback; using android::hardware::sensors::V2_0::EventQueueFlagBits; using android::hardware::sensors::V2_0::WakeLockQueueFlagBits; using android::hardware::hidl_vec; using android::hardware::Return; using android::SensorDeviceUtils::HidlServiceRegistrationWaiter; Loading Loading @@ -94,6 +95,8 @@ struct SensorsCallback : public ISensorsCallback { SensorDevice::SensorDevice() : mHidlTransportErrors(20), mRestartWaiter(new HidlServiceRegistrationWaiter()), mEventQueueFlag(nullptr), mWakeLockQueueFlag(nullptr), mReconnecting(false) { if (!connectHidlService()) { return; Loading Loading @@ -137,6 +140,11 @@ SensorDevice::~SensorDevice() { hardware::EventFlag::deleteEventFlag(&mEventQueueFlag); mEventQueueFlag = nullptr; } if (mWakeLockQueueFlag != nullptr) { hardware::EventFlag::deleteEventFlag(&mWakeLockQueueFlag); mWakeLockQueueFlag = nullptr; } } bool SensorDevice::connectHidlService() { Loading Loading @@ -198,10 +206,16 @@ SensorDevice::HalConnectionStatus SensorDevice::connectHidlServiceV2_0() { SensorEventQueue::MAX_RECEIVE_BUFFER_EVENT_COUNT, true /* configureEventFlagWord */); hardware::EventFlag::deleteEventFlag(&mEventQueueFlag); hardware::EventFlag::createEventFlag(mEventQueue->getEventFlagWord(), &mEventQueueFlag); hardware::EventFlag::deleteEventFlag(&mWakeLockQueueFlag); hardware::EventFlag::createEventFlag(mWakeLockQueue->getEventFlagWord(), &mWakeLockQueueFlag); CHECK(mSensors != nullptr && mEventQueue != nullptr && mWakeLockQueue != nullptr && mEventQueueFlag != nullptr); mWakeLockQueue != nullptr && mEventQueueFlag != nullptr && mWakeLockQueueFlag != nullptr); status_t status = StatusFromResult(checkReturn(mSensors->initialize( *mEventQueue->getDesc(), Loading Loading @@ -512,11 +526,14 @@ Return<void> SensorDevice::onDynamicSensorsDisconnected( } void SensorDevice::writeWakeLockHandled(uint32_t count) { if (mSensors != nullptr && mSensors->supportsMessageQueues() && !mWakeLockQueue->write(&count)) { if (mSensors != nullptr && mSensors->supportsMessageQueues()) { if (mWakeLockQueue->write(&count)) { mWakeLockQueueFlag->wake(asBaseType(WakeLockQueueFlagBits::DATA_WRITTEN)); } else { ALOGW("Failed to write wake lock handled"); } } } void SensorDevice::autoDisable(void *ident, int handle) { Mutex::Autolock _l(mLock); Loading services/sensorservice/SensorDevice.h +1 −0 Original line number Diff line number Diff line Loading @@ -238,6 +238,7 @@ private: std::unique_ptr<WakeLockQueue> mWakeLockQueue; hardware::EventFlag* mEventQueueFlag; hardware::EventFlag* mWakeLockQueueFlag; std::array<Event, SensorEventQueue::MAX_RECEIVE_BUFFER_EVENT_COUNT> mEventBuffer; Loading Loading
services/sensorservice/SensorDevice.cpp +21 −4 Original line number Diff line number Diff line Loading @@ -35,6 +35,7 @@ using namespace android::hardware::sensors::V1_0; using namespace android::hardware::sensors::V1_0::implementation; using android::hardware::sensors::V2_0::ISensorsCallback; using android::hardware::sensors::V2_0::EventQueueFlagBits; using android::hardware::sensors::V2_0::WakeLockQueueFlagBits; using android::hardware::hidl_vec; using android::hardware::Return; using android::SensorDeviceUtils::HidlServiceRegistrationWaiter; Loading Loading @@ -94,6 +95,8 @@ struct SensorsCallback : public ISensorsCallback { SensorDevice::SensorDevice() : mHidlTransportErrors(20), mRestartWaiter(new HidlServiceRegistrationWaiter()), mEventQueueFlag(nullptr), mWakeLockQueueFlag(nullptr), mReconnecting(false) { if (!connectHidlService()) { return; Loading Loading @@ -137,6 +140,11 @@ SensorDevice::~SensorDevice() { hardware::EventFlag::deleteEventFlag(&mEventQueueFlag); mEventQueueFlag = nullptr; } if (mWakeLockQueueFlag != nullptr) { hardware::EventFlag::deleteEventFlag(&mWakeLockQueueFlag); mWakeLockQueueFlag = nullptr; } } bool SensorDevice::connectHidlService() { Loading Loading @@ -198,10 +206,16 @@ SensorDevice::HalConnectionStatus SensorDevice::connectHidlServiceV2_0() { SensorEventQueue::MAX_RECEIVE_BUFFER_EVENT_COUNT, true /* configureEventFlagWord */); hardware::EventFlag::deleteEventFlag(&mEventQueueFlag); hardware::EventFlag::createEventFlag(mEventQueue->getEventFlagWord(), &mEventQueueFlag); hardware::EventFlag::deleteEventFlag(&mWakeLockQueueFlag); hardware::EventFlag::createEventFlag(mWakeLockQueue->getEventFlagWord(), &mWakeLockQueueFlag); CHECK(mSensors != nullptr && mEventQueue != nullptr && mWakeLockQueue != nullptr && mEventQueueFlag != nullptr); mWakeLockQueue != nullptr && mEventQueueFlag != nullptr && mWakeLockQueueFlag != nullptr); status_t status = StatusFromResult(checkReturn(mSensors->initialize( *mEventQueue->getDesc(), Loading Loading @@ -512,11 +526,14 @@ Return<void> SensorDevice::onDynamicSensorsDisconnected( } void SensorDevice::writeWakeLockHandled(uint32_t count) { if (mSensors != nullptr && mSensors->supportsMessageQueues() && !mWakeLockQueue->write(&count)) { if (mSensors != nullptr && mSensors->supportsMessageQueues()) { if (mWakeLockQueue->write(&count)) { mWakeLockQueueFlag->wake(asBaseType(WakeLockQueueFlagBits::DATA_WRITTEN)); } else { ALOGW("Failed to write wake lock handled"); } } } void SensorDevice::autoDisable(void *ident, int handle) { Mutex::Autolock _l(mLock); Loading
services/sensorservice/SensorDevice.h +1 −0 Original line number Diff line number Diff line Loading @@ -238,6 +238,7 @@ private: std::unique_ptr<WakeLockQueue> mWakeLockQueue; hardware::EventFlag* mEventQueueFlag; hardware::EventFlag* mWakeLockQueueFlag; std::array<Event, SensorEventQueue::MAX_RECEIVE_BUFFER_EVENT_COUNT> mEventBuffer; Loading