diff options
author | KimJeongYeon <see2002@gmail.com> | 2014-02-05 00:38:12 +0900 |
---|---|---|
committer | KimJeongYeon <see2002@gmail.com> | 2014-02-05 00:38:12 +0900 |
commit | 4a94e12986b7f4925b0d457af8c3464ffbef2e2b (patch) | |
tree | edc75c222bd44a92170e6a0c12932266061c5b84 /android/BpAndroidShm.cpp | |
parent | 0742159cfa0cf403d5ba118fbf73bd089e6f10c2 (diff) | |
download | jack2-4a94e12986b7f4925b0d457af8c3464ffbef2e2b.tar.gz |
jack2 supports android devices & rebase current changes to master
Diffstat (limited to 'android/BpAndroidShm.cpp')
-rw-r--r-- | android/BpAndroidShm.cpp | 111 |
1 files changed, 111 insertions, 0 deletions
diff --git a/android/BpAndroidShm.cpp b/android/BpAndroidShm.cpp new file mode 100644 index 00000000..49dc8c47 --- /dev/null +++ b/android/BpAndroidShm.cpp @@ -0,0 +1,111 @@ +#include <binder/Parcel.h> +#include <utils/Log.h> +#include "BpAndroidShm.h" + +namespace android{ + + int BpAndroidShm::sendCommand(const char*command) { + Parcel data, reply; + data.writeInterfaceToken( + IAndroidShm::getInterfaceDescriptor()); + data.writeCString(command); + status_t status = remote()->transact(HW_SENDCOMMAND, data, &reply); + if(status != NO_ERROR) { + ALOGE("print sendCommand error: %s", strerror(-status)); + } else { + status= reply.readInt32(); + } + return status; + } + + sp<IMemoryHeap> BpAndroidShm::getBuffer(int index) { + Parcel data, reply; + sp<IMemoryHeap> memHeap = NULL; + data.writeInterfaceToken(IAndroidShm::getInterfaceDescriptor()); + data.writeInt32(index); + remote()->transact(HW_GETBUFFER, data, &reply); + memHeap = interface_cast<IMemoryHeap> (reply.readStrongBinder()); + return memHeap; + } + + BpAndroidShm::BpAndroidShm( const sp<IBinder>& impl) + : BpInterface<IAndroidShm>(impl) + {} + + BpAndroidShm::~BpAndroidShm() + {} + + int BpAndroidShm::allocShm(const int size) { // if negative return value is error + Parcel data, reply; + data.writeInterfaceToken(IAndroidShm::getInterfaceDescriptor()); + data.writeInt32(size); + status_t status = remote()->transact(HW_ALLOC_SHM, data, &reply); + if(status != NO_ERROR) { + ALOGE("print allocShm error: %s", strerror(-status)); + } else { + status= reply.readInt32(); + } + return status; + } + + int BpAndroidShm::removeShm(const unsigned int index) { // shared memory Á¦°Å + Parcel data, reply; + data.writeInterfaceToken(IAndroidShm::getInterfaceDescriptor()); + data.writeInt32(index); + status_t status = remote()->transact(HW_REMOVE_SHM, data, &reply); + if(status != NO_ERROR) { + ALOGE("print removeShm error: %s", strerror(-status)); + } else { + status= reply.readInt32(); + } + return status; + } + + int BpAndroidShm::isAllocated(const unsigned int index) { // allocated ¿©ºÎ È®ÀÎ + Parcel data, reply; + data.writeInterfaceToken(IAndroidShm::getInterfaceDescriptor()); + data.writeInt32(index); + status_t status = remote()->transact(HW_IS_ALLOCATED, data, &reply); + if(status != NO_ERROR) { + ALOGE("print isAllocated error: %s", strerror(-status)); + } else { + status= reply.readInt32(); + } + return status; + } + + int BpAndroidShm::setRegistryIndex(const unsigned int index) { + Parcel data, reply; + data.writeInterfaceToken(IAndroidShm::getInterfaceDescriptor()); + data.writeInt32(index); + status_t status = remote()->transact(HW_SET_REGISTRY_INDEX, data, &reply); + if(status != NO_ERROR) { + ALOGE("print setRegistryIndex error: %s", strerror(-status)); + } else { + status= reply.readInt32(); + } + return status; + } + + int BpAndroidShm::getRegistryIndex() { + Parcel data, reply; + data.writeInterfaceToken(IAndroidShm::getInterfaceDescriptor()); + status_t status = remote()->transact(HW_GET_REGISTRY_INDEX, data, &reply); + if(status != NO_ERROR) { + ALOGE("print getRegistryIndex error: %s", strerror(-status)); + } else { + status= reply.readInt32(); + } + return status; + } + + sp<IMemoryHeap> BpAndroidShm::InitSemaphore(const char* name) { + Parcel data, reply; + sp<IMemoryHeap> memHeap = NULL; + data.writeInterfaceToken(IAndroidShm::getInterfaceDescriptor()); + data.writeCString(name); + status_t status = remote()->transact(HW_INIT_SEMAPHORE, data, &reply); + memHeap = interface_cast<IMemoryHeap> (reply.readStrongBinder()); + return memHeap; + } +}; |