diff options
author | Igor Murashkin <iam@google.com> | 2013-02-20 17:15:11 -0800 |
---|---|---|
committer | Igor Murashkin <iam@google.com> | 2013-02-22 10:50:14 -0800 |
commit | 634a51509ee50475f3e9f8ccf897e90fc72ded31 (patch) | |
tree | 5d9fc437299a8b5adc391eb721d55c9df00afc87 /camera/ICameraService.cpp | |
parent | 1d88023e1de6b9f370eb4be944dd9c4480d01f11 (diff) | |
download | frameworks_av-634a51509ee50475f3e9f8ccf897e90fc72ded31.zip frameworks_av-634a51509ee50475f3e9f8ccf897e90fc72ded31.tar.gz frameworks_av-634a51509ee50475f3e9f8ccf897e90fc72ded31.tar.bz2 |
Camera: Add ProCamera private binder interface for an API2-light functionality
Change-Id: I2af7a807c99df75ea659e6e6acc9c4fca6a56274
Diffstat (limited to 'camera/ICameraService.cpp')
-rw-r--r-- | camera/ICameraService.cpp | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/camera/ICameraService.cpp b/camera/ICameraService.cpp index f2d367e..8237c66 100644 --- a/camera/ICameraService.cpp +++ b/camera/ICameraService.cpp @@ -65,6 +65,17 @@ public: remote()->transact(BnCameraService::CONNECT, data, &reply); return interface_cast<ICamera>(reply.readStrongBinder()); } + + // connect to camera service (pro client) + virtual sp<IProCameraUser> connect(const sp<IProCameraCallbacks>& cameraCb, int cameraId) + { + Parcel data, reply; + data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); + data.writeStrongBinder(cameraCb->asBinder()); + data.writeInt32(cameraId); + remote()->transact(BnCameraService::CONNECT_PRO, data, &reply); + return interface_cast<IProCameraUser>(reply.readStrongBinder()); + } }; IMPLEMENT_META_INTERFACE(CameraService, "android.hardware.ICameraService"); @@ -97,6 +108,13 @@ status_t BnCameraService::onTransact( reply->writeStrongBinder(camera->asBinder()); return NO_ERROR; } break; + case CONNECT_PRO: { + CHECK_INTERFACE(ICameraService, data, reply); + sp<IProCameraCallbacks> cameraClient = interface_cast<IProCameraCallbacks>(data.readStrongBinder()); + sp<IProCameraUser> camera = connect(cameraClient, data.readInt32()); + reply->writeStrongBinder(camera->asBinder()); + return NO_ERROR; + } break; default: return BBinder::onTransact(code, data, reply, flags); } |