84 lines
2.7 KiB
C++
84 lines
2.7 KiB
C++
#include "BnAndroidShm.h"
|
|
#include <binder/Parcel.h>
|
|
|
|
namespace android {
|
|
status_t BnAndroidShm::onTransact( uint32_t code,
|
|
const Parcel &data,
|
|
Parcel *reply,
|
|
uint32_t flags)
|
|
{
|
|
switch(code) {
|
|
case HW_SENDCOMMAND:{
|
|
CHECK_INTERFACE(IAndroidShm, data, reply);
|
|
const char *str;
|
|
str = data.readCString();
|
|
reply->writeInt32(sendCommand(str));
|
|
return NO_ERROR;
|
|
}break;
|
|
|
|
case HW_GETBUFFER:{
|
|
CHECK_INTERFACE(IAndroidShm, data, reply);
|
|
int32_t index;
|
|
data.readInt32(&index);
|
|
sp<IMemoryHeap> Data = getBuffer(index);
|
|
if(Data != NULL){
|
|
reply->writeStrongBinder(Data->asBinder());
|
|
}
|
|
return NO_ERROR;
|
|
}break;
|
|
|
|
case HW_ALLOC_SHM:{
|
|
CHECK_INTERFACE(IAndroidShm, data, reply);
|
|
int32_t size;
|
|
data.readInt32(&size);
|
|
reply->writeInt32(allocShm(size));
|
|
return NO_ERROR;
|
|
}break;
|
|
|
|
case HW_REMOVE_SHM:{
|
|
CHECK_INTERFACE(IAndroidShm, data, reply);
|
|
int32_t index;
|
|
data.readInt32(&index);
|
|
reply->writeInt32(removeShm(index));
|
|
return NO_ERROR;
|
|
}break;
|
|
|
|
case HW_IS_ALLOCATED:{
|
|
CHECK_INTERFACE(IAndroidShm, data, reply);
|
|
int32_t index;
|
|
data.readInt32(&index);
|
|
reply->writeInt32(isAllocated(index));
|
|
return NO_ERROR;
|
|
}break;
|
|
|
|
case HW_SET_REGISTRY_INDEX:{
|
|
CHECK_INTERFACE(IAndroidShm, data, reply);
|
|
int32_t index;
|
|
data.readInt32(&index);
|
|
reply->writeInt32(setRegistryIndex(index));
|
|
return NO_ERROR;
|
|
}break;
|
|
|
|
case HW_GET_REGISTRY_INDEX:{
|
|
CHECK_INTERFACE(IAndroidShm, data, reply);
|
|
reply->writeInt32(getRegistryIndex());
|
|
return NO_ERROR;
|
|
}break;
|
|
|
|
case HW_INIT_SEMAPHORE:{
|
|
CHECK_INTERFACE(IAndroidShm, data, reply);
|
|
const char *name;
|
|
name = data.readCString();
|
|
sp<IMemoryHeap> Data = InitSemaphore(name);
|
|
if(Data != NULL){
|
|
reply->writeStrongBinder(Data->asBinder());
|
|
}
|
|
return NO_ERROR;
|
|
}break;
|
|
|
|
default:
|
|
return BBinder::onTransact(code, data, reply, flags);
|
|
}
|
|
}
|
|
};
|