| 
							- #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);
 -         }
 -     }
 - };
 
 
  |