Loading include/gui/ISensorServer.h +1 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ public: virtual Vector<Sensor> getSensorList(const String16& opPackageName) = 0; virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, int mode, const String16& opPackageName) = 0; virtual status_t enableDataInjection(int enable) = 0; virtual int32_t isDataInjectionEnabled() = 0; }; // ---------------------------------------------------------------------------- Loading include/gui/SensorManager.h +1 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public: ssize_t getSensorList(Sensor const* const** list) const; Sensor const* getDefaultSensor(int type); sp<SensorEventQueue> createEventQueue(String8 packageName = String8(""), int mode = 0); status_t enableDataInjection(bool enable); bool isDataInjectionEnabled(); private: // DeathRecipient interface Loading libs/gui/ISensorServer.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -77,10 +77,9 @@ public: return interface_cast<ISensorEventConnection>(reply.readStrongBinder()); } virtual status_t enableDataInjection(int enable) { virtual int isDataInjectionEnabled() { Parcel data, reply; data.writeInterfaceToken(ISensorServer::getInterfaceDescriptor()); data.writeInt32(enable); remote()->transact(ENABLE_DATA_INJECTION, data, &reply); return reply.readInt32(); } Loading Loading @@ -121,8 +120,7 @@ status_t BnSensorServer::onTransact( } case ENABLE_DATA_INJECTION: { CHECK_INTERFACE(ISensorServer, data, reply); int32_t enable = data.readInt32(); status_t ret = enableDataInjection(enable); int32_t ret = isDataInjectionEnabled(); reply->writeInt32(static_cast<int32_t>(ret)); return NO_ERROR; } Loading libs/gui/SensorEventQueue.cpp +15 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <stdint.h> #include <sys/types.h> #include <sys/socket.h> #include <linux/errno.h> #include <utils/Errors.h> #include <utils/RefBase.h> Loading Loading @@ -150,13 +151,20 @@ status_t SensorEventQueue::setEventRate(Sensor const* sensor, nsecs_t ns) const } status_t SensorEventQueue::injectSensorEvent(const ASensorEvent& event) { do { // Blocking call. ssize_t size = ::send(mSensorChannel->getFd(), &event, sizeof(event), MSG_NOSIGNAL); if (size < 0) { ALOGE("injectSensorEvent failure %zd %d", size, mSensorChannel->getFd()); if (size >= 0) { return NO_ERROR; } else if (size < 0 && errno == EAGAIN) { // If send is returning a "Try again" error, sleep for 100ms and try again. In all // other cases log a failure and exit. usleep(100000); } else { ALOGE("injectSensorEvent failure %s %zd", strerror(errno), size); return INVALID_OPERATION; } return NO_ERROR; } while (true); } void SensorEventQueue::sendAck(const ASensorEvent* events, int count) { Loading libs/gui/SensorManager.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -153,12 +153,12 @@ sp<SensorEventQueue> SensorManager::createEventQueue(String8 packageName, int mo return queue; } status_t SensorManager::enableDataInjection(bool enable) { bool SensorManager::isDataInjectionEnabled() { Mutex::Autolock _l(mLock); if (assertStateLocked() == NO_ERROR) { return mSensorServer->enableDataInjection(enable); return mSensorServer->isDataInjectionEnabled(); } return INVALID_OPERATION; return false; } // ---------------------------------------------------------------------------- Loading Loading
include/gui/ISensorServer.h +1 −1 Original line number Diff line number Diff line Loading @@ -40,7 +40,7 @@ public: virtual Vector<Sensor> getSensorList(const String16& opPackageName) = 0; virtual sp<ISensorEventConnection> createSensorEventConnection(const String8& packageName, int mode, const String16& opPackageName) = 0; virtual status_t enableDataInjection(int enable) = 0; virtual int32_t isDataInjectionEnabled() = 0; }; // ---------------------------------------------------------------------------- Loading
include/gui/SensorManager.h +1 −1 Original line number Diff line number Diff line Loading @@ -107,7 +107,7 @@ public: ssize_t getSensorList(Sensor const* const** list) const; Sensor const* getDefaultSensor(int type); sp<SensorEventQueue> createEventQueue(String8 packageName = String8(""), int mode = 0); status_t enableDataInjection(bool enable); bool isDataInjectionEnabled(); private: // DeathRecipient interface Loading
libs/gui/ISensorServer.cpp +2 −4 Original line number Diff line number Diff line Loading @@ -77,10 +77,9 @@ public: return interface_cast<ISensorEventConnection>(reply.readStrongBinder()); } virtual status_t enableDataInjection(int enable) { virtual int isDataInjectionEnabled() { Parcel data, reply; data.writeInterfaceToken(ISensorServer::getInterfaceDescriptor()); data.writeInt32(enable); remote()->transact(ENABLE_DATA_INJECTION, data, &reply); return reply.readInt32(); } Loading Loading @@ -121,8 +120,7 @@ status_t BnSensorServer::onTransact( } case ENABLE_DATA_INJECTION: { CHECK_INTERFACE(ISensorServer, data, reply); int32_t enable = data.readInt32(); status_t ret = enableDataInjection(enable); int32_t ret = isDataInjectionEnabled(); reply->writeInt32(static_cast<int32_t>(ret)); return NO_ERROR; } Loading
libs/gui/SensorEventQueue.cpp +15 −7 Original line number Diff line number Diff line Loading @@ -20,6 +20,7 @@ #include <stdint.h> #include <sys/types.h> #include <sys/socket.h> #include <linux/errno.h> #include <utils/Errors.h> #include <utils/RefBase.h> Loading Loading @@ -150,13 +151,20 @@ status_t SensorEventQueue::setEventRate(Sensor const* sensor, nsecs_t ns) const } status_t SensorEventQueue::injectSensorEvent(const ASensorEvent& event) { do { // Blocking call. ssize_t size = ::send(mSensorChannel->getFd(), &event, sizeof(event), MSG_NOSIGNAL); if (size < 0) { ALOGE("injectSensorEvent failure %zd %d", size, mSensorChannel->getFd()); if (size >= 0) { return NO_ERROR; } else if (size < 0 && errno == EAGAIN) { // If send is returning a "Try again" error, sleep for 100ms and try again. In all // other cases log a failure and exit. usleep(100000); } else { ALOGE("injectSensorEvent failure %s %zd", strerror(errno), size); return INVALID_OPERATION; } return NO_ERROR; } while (true); } void SensorEventQueue::sendAck(const ASensorEvent* events, int count) { Loading
libs/gui/SensorManager.cpp +3 −3 Original line number Diff line number Diff line Loading @@ -153,12 +153,12 @@ sp<SensorEventQueue> SensorManager::createEventQueue(String8 packageName, int mo return queue; } status_t SensorManager::enableDataInjection(bool enable) { bool SensorManager::isDataInjectionEnabled() { Mutex::Autolock _l(mLock); if (assertStateLocked() == NO_ERROR) { return mSensorServer->enableDataInjection(enable); return mSensorServer->isDataInjectionEnabled(); } return INVALID_OPERATION; return false; } // ---------------------------------------------------------------------------- Loading