Rename SensorChannel to BitTube

This commit is contained in:
Mathias Agopian 2011-10-20 18:42:02 -07:00
parent 6651db884e
commit 5cae0d0699
7 changed files with 55 additions and 32 deletions

View File

@ -28,14 +28,15 @@ namespace android {
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class Parcel; class Parcel;
class SensorChannel : public RefBase class BitTube : public RefBase
{ {
public: public:
SensorChannel(); BitTube();
SensorChannel(const Parcel& data); BitTube(const Parcel& data);
virtual ~SensorChannel(); virtual ~BitTube();
status_t initCheck() const;
int getFd() const; int getFd() const;
ssize_t write(void const* vaddr, size_t size); ssize_t write(void const* vaddr, size_t size);
ssize_t read(void* vaddr, size_t size); ssize_t read(void* vaddr, size_t size);

View File

@ -28,14 +28,14 @@
namespace android { namespace android {
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
class SensorChannel; class BitTube;
class ISensorEventConnection : public IInterface class ISensorEventConnection : public IInterface
{ {
public: public:
DECLARE_META_INTERFACE(SensorEventConnection); 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 enableDisable(int handle, bool enabled) = 0;
virtual status_t setEventRate(int handle, nsecs_t ns) = 0; virtual status_t setEventRate(int handle, nsecs_t ns) = 0;
}; };

View File

@ -24,7 +24,7 @@
#include <utils/RefBase.h> #include <utils/RefBase.h>
#include <utils/Timers.h> #include <utils/Timers.h>
#include <gui/SensorChannel.h> #include <gui/BitTube.h>
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -71,7 +71,7 @@ public:
private: private:
sp<Looper> getLooper() const; sp<Looper> getLooper() const;
sp<ISensorEventConnection> mSensorEventConnection; sp<ISensorEventConnection> mSensorEventConnection;
sp<SensorChannel> mSensorChannel; sp<BitTube> mSensorChannel;
mutable Mutex mLock; mutable Mutex mLock;
mutable sp<Looper> mLooper; mutable sp<Looper> mLooper;
}; };

View File

@ -2,11 +2,11 @@ LOCAL_PATH:= $(call my-dir)
include $(CLEAR_VARS) include $(CLEAR_VARS)
LOCAL_SRC_FILES:= \ LOCAL_SRC_FILES:= \
BitTube.cpp \
ISensorEventConnection.cpp \ ISensorEventConnection.cpp \
ISensorServer.cpp \ ISensorServer.cpp \
ISurfaceTexture.cpp \ ISurfaceTexture.cpp \
Sensor.cpp \ Sensor.cpp \
SensorChannel.cpp \
SensorEventQueue.cpp \ SensorEventQueue.cpp \
SensorManager.cpp \ SensorManager.cpp \
SurfaceTexture.cpp \ SurfaceTexture.cpp \

View File

@ -24,12 +24,12 @@
#include <binder/Parcel.h> #include <binder/Parcel.h>
#include <gui/SensorChannel.h> #include <gui/BitTube.h>
namespace android { namespace android {
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
SensorChannel::SensorChannel() BitTube::BitTube()
: mSendFd(-1), mReceiveFd(-1) : mSendFd(-1), mReceiveFd(-1)
{ {
int fds[2]; int fds[2];
@ -38,17 +38,26 @@ SensorChannel::SensorChannel()
mSendFd = fds[1]; mSendFd = fds[1];
fcntl(mReceiveFd, F_SETFL, O_NONBLOCK); fcntl(mReceiveFd, F_SETFL, O_NONBLOCK);
fcntl(mSendFd, 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) : mSendFd(-1), mReceiveFd(-1)
{ {
mReceiveFd = dup(data.readFileDescriptor()); mReceiveFd = dup(data.readFileDescriptor());
fcntl(mReceiveFd, F_SETFL, O_NONBLOCK); 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) if (mSendFd >= 0)
close(mSendFd); close(mSendFd);
@ -57,28 +66,41 @@ SensorChannel::~SensorChannel()
close(mReceiveFd); 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; 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); ssize_t err, len;
if (len < 0) do {
return -errno; len = ::write(mSendFd, vaddr, size);
return len; 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); ssize_t err, len;
if (len < 0) do {
return -errno; len = ::read(mReceiveFd, vaddr, size);
return len; 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) if (mReceiveFd < 0)
return -EINVAL; return -EINVAL;

View File

@ -25,7 +25,7 @@
#include <binder/IInterface.h> #include <binder/IInterface.h>
#include <gui/ISensorEventConnection.h> #include <gui/ISensorEventConnection.h>
#include <gui/SensorChannel.h> #include <gui/BitTube.h>
namespace android { namespace android {
// ---------------------------------------------------------------------------- // ----------------------------------------------------------------------------
@ -44,12 +44,12 @@ public:
{ {
} }
virtual sp<SensorChannel> getSensorChannel() const virtual sp<BitTube> getSensorChannel() const
{ {
Parcel data, reply; Parcel data, reply;
data.writeInterfaceToken(ISensorEventConnection::getInterfaceDescriptor()); data.writeInterfaceToken(ISensorEventConnection::getInterfaceDescriptor());
remote()->transact(GET_SENSOR_CHANNEL, data, &reply); remote()->transact(GET_SENSOR_CHANNEL, data, &reply);
return new SensorChannel(reply); return new BitTube(reply);
} }
virtual status_t enableDisable(int handle, bool enabled) virtual status_t enableDisable(int handle, bool enabled)
@ -83,7 +83,7 @@ status_t BnSensorEventConnection::onTransact(
switch(code) { switch(code) {
case GET_SENSOR_CHANNEL: { case GET_SENSOR_CHANNEL: {
CHECK_INTERFACE(ISensorEventConnection, data, reply); CHECK_INTERFACE(ISensorEventConnection, data, reply);
sp<SensorChannel> channel(getSensorChannel()); sp<BitTube> channel(getSensorChannel());
channel->writeToParcel(reply); channel->writeToParcel(reply);
return NO_ERROR; return NO_ERROR;
} break; } break;

View File

@ -24,7 +24,7 @@
#include <utils/Looper.h> #include <utils/Looper.h>
#include <gui/Sensor.h> #include <gui/Sensor.h>
#include <gui/SensorChannel.h> #include <gui/BitTube.h>
#include <gui/SensorEventQueue.h> #include <gui/SensorEventQueue.h>
#include <gui/ISensorEventConnection.h> #include <gui/ISensorEventConnection.h>
@ -104,7 +104,7 @@ status_t SensorEventQueue::waitForEvent() const
do { do {
result = looper->pollOnce(-1); result = looper->pollOnce(-1);
if (result == ALOOPER_EVENT_ERROR) { if (result == ALOOPER_EVENT_ERROR) {
LOGE("SensorChannel::waitForEvent error (errno=%d)", errno); LOGE("SensorEventQueue::waitForEvent error (errno=%d)", errno);
result = -EPIPE; // unknown error, so we make up one result = -EPIPE; // unknown error, so we make up one
break; break;
} }