Loading include/gui/SensorChannel.h→include/gui/BitTube.h +5 −4 Original line number Diff line number Diff line Loading @@ -28,14 +28,15 @@ namespace android { // ---------------------------------------------------------------------------- class Parcel; class SensorChannel : public RefBase class BitTube : public RefBase { public: SensorChannel(); SensorChannel(const Parcel& data); virtual ~SensorChannel(); BitTube(); BitTube(const Parcel& data); virtual ~BitTube(); status_t initCheck() const; int getFd() const; ssize_t write(void const* vaddr, size_t size); ssize_t read(void* vaddr, size_t size); Loading include/gui/ISensorEventConnection.h +2 −2 Original line number Diff line number Diff line Loading @@ -28,14 +28,14 @@ namespace android { // ---------------------------------------------------------------------------- class SensorChannel; class BitTube; class ISensorEventConnection : public IInterface { public: DECLARE_META_INTERFACE(SensorEventConnection); virtual sp<SensorChannel> getSensorChannel() const = 0; virtual sp<BitTube> getSensorChannel() const = 0; virtual status_t enableDisable(int handle, bool enabled) = 0; virtual status_t setEventRate(int handle, nsecs_t ns) = 0; }; Loading include/gui/SensorEventQueue.h +2 −2 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ #include <utils/RefBase.h> #include <utils/Timers.h> #include <gui/SensorChannel.h> #include <gui/BitTube.h> // ---------------------------------------------------------------------------- Loading Loading @@ -71,7 +71,7 @@ public: private: sp<Looper> getLooper() const; sp<ISensorEventConnection> mSensorEventConnection; sp<SensorChannel> mSensorChannel; sp<BitTube> mSensorChannel; mutable Mutex mLock; mutable sp<Looper> mLooper; }; Loading libs/gui/Android.mk +1 −1 Original line number Diff line number Diff line Loading @@ -2,11 +2,11 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ BitTube.cpp \ ISensorEventConnection.cpp \ ISensorServer.cpp \ ISurfaceTexture.cpp \ Sensor.cpp \ SensorChannel.cpp \ SensorEventQueue.cpp \ SensorManager.cpp \ SurfaceTexture.cpp \ Loading libs/gui/SensorChannel.cpp→libs/gui/BitTube.cpp +39 −17 Original line number Diff line number Diff line Loading @@ -24,12 +24,12 @@ #include <binder/Parcel.h> #include <gui/SensorChannel.h> #include <gui/BitTube.h> namespace android { // ---------------------------------------------------------------------------- SensorChannel::SensorChannel() BitTube::BitTube() : mSendFd(-1), mReceiveFd(-1) { int fds[2]; Loading @@ -38,17 +38,26 @@ SensorChannel::SensorChannel() mSendFd = fds[1]; fcntl(mReceiveFd, F_SETFL, O_NONBLOCK); fcntl(mSendFd, F_SETFL, O_NONBLOCK); } else { mReceiveFd = -errno; LOGE("BitTube: pipe creation failed (%s)", strerror(-mReceiveFd)); } } SensorChannel::SensorChannel(const Parcel& data) BitTube::BitTube(const Parcel& data) : mSendFd(-1), mReceiveFd(-1) { mReceiveFd = dup(data.readFileDescriptor()); if (mReceiveFd >= 0) { fcntl(mReceiveFd, F_SETFL, O_NONBLOCK); } else { mReceiveFd = -errno; LOGE("BitTube(Parcel): can't dup filedescriptor (%s)", strerror(-mReceiveFd)); } } SensorChannel::~SensorChannel() BitTube::~BitTube() { if (mSendFd >= 0) close(mSendFd); Loading @@ -57,28 +66,41 @@ SensorChannel::~SensorChannel() close(mReceiveFd); } int SensorChannel::getFd() const status_t BitTube::initCheck() const { if (mReceiveFd < 0) { return status_t(mReceiveFd); } return NO_ERROR; } int BitTube::getFd() const { return mReceiveFd; } ssize_t SensorChannel::write(void const* vaddr, size_t size) ssize_t BitTube::write(void const* vaddr, size_t size) { ssize_t len = ::write(mSendFd, vaddr, size); if (len < 0) return -errno; return len; ssize_t err, len; do { len = ::write(mSendFd, vaddr, size); err = len < 0 ? errno : 0; } while (err == EINTR); return err == 0 ? len : -err; } ssize_t SensorChannel::read(void* vaddr, size_t size) ssize_t BitTube::read(void* vaddr, size_t size) { ssize_t len = ::read(mReceiveFd, vaddr, size); if (len < 0) return -errno; return len; ssize_t err, len; do { len = ::read(mReceiveFd, vaddr, size); err = len < 0 ? errno : 0; } while (err == EINTR); return err == 0 ? len : -err; } status_t SensorChannel::writeToParcel(Parcel* reply) const status_t BitTube::writeToParcel(Parcel* reply) const { if (mReceiveFd < 0) return -EINVAL; Loading Loading
include/gui/SensorChannel.h→include/gui/BitTube.h +5 −4 Original line number Diff line number Diff line Loading @@ -28,14 +28,15 @@ namespace android { // ---------------------------------------------------------------------------- class Parcel; class SensorChannel : public RefBase class BitTube : public RefBase { public: SensorChannel(); SensorChannel(const Parcel& data); virtual ~SensorChannel(); BitTube(); BitTube(const Parcel& data); virtual ~BitTube(); status_t initCheck() const; int getFd() const; ssize_t write(void const* vaddr, size_t size); ssize_t read(void* vaddr, size_t size); Loading
include/gui/ISensorEventConnection.h +2 −2 Original line number Diff line number Diff line Loading @@ -28,14 +28,14 @@ namespace android { // ---------------------------------------------------------------------------- class SensorChannel; class BitTube; class ISensorEventConnection : public IInterface { public: DECLARE_META_INTERFACE(SensorEventConnection); virtual sp<SensorChannel> getSensorChannel() const = 0; virtual sp<BitTube> getSensorChannel() const = 0; virtual status_t enableDisable(int handle, bool enabled) = 0; virtual status_t setEventRate(int handle, nsecs_t ns) = 0; }; Loading
include/gui/SensorEventQueue.h +2 −2 Original line number Diff line number Diff line Loading @@ -24,7 +24,7 @@ #include <utils/RefBase.h> #include <utils/Timers.h> #include <gui/SensorChannel.h> #include <gui/BitTube.h> // ---------------------------------------------------------------------------- Loading Loading @@ -71,7 +71,7 @@ public: private: sp<Looper> getLooper() const; sp<ISensorEventConnection> mSensorEventConnection; sp<SensorChannel> mSensorChannel; sp<BitTube> mSensorChannel; mutable Mutex mLock; mutable sp<Looper> mLooper; }; Loading
libs/gui/Android.mk +1 −1 Original line number Diff line number Diff line Loading @@ -2,11 +2,11 @@ LOCAL_PATH:= $(call my-dir) include $(CLEAR_VARS) LOCAL_SRC_FILES:= \ BitTube.cpp \ ISensorEventConnection.cpp \ ISensorServer.cpp \ ISurfaceTexture.cpp \ Sensor.cpp \ SensorChannel.cpp \ SensorEventQueue.cpp \ SensorManager.cpp \ SurfaceTexture.cpp \ Loading
libs/gui/SensorChannel.cpp→libs/gui/BitTube.cpp +39 −17 Original line number Diff line number Diff line Loading @@ -24,12 +24,12 @@ #include <binder/Parcel.h> #include <gui/SensorChannel.h> #include <gui/BitTube.h> namespace android { // ---------------------------------------------------------------------------- SensorChannel::SensorChannel() BitTube::BitTube() : mSendFd(-1), mReceiveFd(-1) { int fds[2]; Loading @@ -38,17 +38,26 @@ SensorChannel::SensorChannel() mSendFd = fds[1]; fcntl(mReceiveFd, F_SETFL, O_NONBLOCK); fcntl(mSendFd, F_SETFL, O_NONBLOCK); } else { mReceiveFd = -errno; LOGE("BitTube: pipe creation failed (%s)", strerror(-mReceiveFd)); } } SensorChannel::SensorChannel(const Parcel& data) BitTube::BitTube(const Parcel& data) : mSendFd(-1), mReceiveFd(-1) { mReceiveFd = dup(data.readFileDescriptor()); if (mReceiveFd >= 0) { fcntl(mReceiveFd, F_SETFL, O_NONBLOCK); } else { mReceiveFd = -errno; LOGE("BitTube(Parcel): can't dup filedescriptor (%s)", strerror(-mReceiveFd)); } } SensorChannel::~SensorChannel() BitTube::~BitTube() { if (mSendFd >= 0) close(mSendFd); Loading @@ -57,28 +66,41 @@ SensorChannel::~SensorChannel() close(mReceiveFd); } int SensorChannel::getFd() const status_t BitTube::initCheck() const { if (mReceiveFd < 0) { return status_t(mReceiveFd); } return NO_ERROR; } int BitTube::getFd() const { return mReceiveFd; } ssize_t SensorChannel::write(void const* vaddr, size_t size) ssize_t BitTube::write(void const* vaddr, size_t size) { ssize_t len = ::write(mSendFd, vaddr, size); if (len < 0) return -errno; return len; ssize_t err, len; do { len = ::write(mSendFd, vaddr, size); err = len < 0 ? errno : 0; } while (err == EINTR); return err == 0 ? len : -err; } ssize_t SensorChannel::read(void* vaddr, size_t size) ssize_t BitTube::read(void* vaddr, size_t size) { ssize_t len = ::read(mReceiveFd, vaddr, size); if (len < 0) return -errno; return len; ssize_t err, len; do { len = ::read(mReceiveFd, vaddr, size); err = len < 0 ? errno : 0; } while (err == EINTR); return err == 0 ? len : -err; } status_t SensorChannel::writeToParcel(Parcel* reply) const status_t BitTube::writeToParcel(Parcel* reply) const { if (mReceiveFd < 0) return -EINVAL; Loading