diff options
Diffstat (limited to 'include/gui')
-rw-r--r-- | include/gui/BitTube.h | 31 | ||||
-rw-r--r-- | include/gui/SensorEventQueue.h | 6 |
2 files changed, 31 insertions, 6 deletions
diff --git a/include/gui/BitTube.h b/include/gui/BitTube.h index 3022d05..d32df84 100644 --- a/include/gui/BitTube.h +++ b/include/gui/BitTube.h @@ -33,30 +33,49 @@ class BitTube : public RefBase { public: - BitTube(); - BitTube(const Parcel& data); + // creates a BitTube with a default (4KB) send buffer + BitTube(); + + // creates a BitTube with a a specified send and receive buffer size + explicit BitTube(size_t bufsize); + + explicit BitTube(const Parcel& data); virtual ~BitTube(); + // check state after construction status_t initCheck() const; - int getFd() const; - ssize_t write(void const* vaddr, size_t size); - ssize_t read(void* vaddr, size_t size); - status_t writeToParcel(Parcel* reply) const; + // get receive file-descriptor + int getFd() const; + // send objects (sized blobs). All objects are guaranteed to be written or the call fails. template <typename T> static ssize_t sendObjects(const sp<BitTube>& tube, T const* events, size_t count) { return sendObjects(tube, events, count, sizeof(T)); } + // receive objects (sized blobs). If the receiving buffer isn't large enough, + // excess messages are silently discarded. template <typename T> static ssize_t recvObjects(const sp<BitTube>& tube, T* events, size_t count) { return recvObjects(tube, events, count, sizeof(T)); } + // parcels this BitTube + status_t writeToParcel(Parcel* reply) const; + private: + void init(size_t rcvbuf, size_t sndbuf); + + // send a message. The write is guaranteed to send the whole message or fail. + ssize_t write(void const* vaddr, size_t size); + + // receive a message. the passed buffer must be at least as large as the + // write call used to send the message, excess data is silently discarded. + ssize_t read(void* vaddr, size_t size); + int mSendFd; mutable int mReceiveFd; diff --git a/include/gui/SensorEventQueue.h b/include/gui/SensorEventQueue.h index 8d8493b..a3a9daa 100644 --- a/include/gui/SensorEventQueue.h +++ b/include/gui/SensorEventQueue.h @@ -49,6 +49,9 @@ class Looper; class SensorEventQueue : public ASensorEventQueue, public RefBase { public: + + enum { MAX_RECEIVE_BUFFER_EVENT_COUNT = 256 }; + SensorEventQueue(const sp<ISensorEventConnection>& connection); virtual ~SensorEventQueue(); virtual void onFirstRef(); @@ -79,6 +82,9 @@ private: sp<BitTube> mSensorChannel; mutable Mutex mLock; mutable sp<Looper> mLooper; + ASensorEvent* mRecBuffer; + size_t mAvailable; + size_t mConsumed; }; // ---------------------------------------------------------------------------- |