From ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4 Mon Sep 17 00:00:00 2001 From: Chih-Chung Chang Date: Thu, 10 Jun 2010 13:32:16 +0800 Subject: Change camera interface to support multiple cameras. Change-Id: Ie88fe706d2278acf762eca87780de349434778a4 --- camera/ICameraService.cpp | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) (limited to 'camera/ICameraService.cpp') diff --git a/camera/ICameraService.cpp b/camera/ICameraService.cpp index db1dca6..85f1a29 100644 --- a/camera/ICameraService.cpp +++ b/camera/ICameraService.cpp @@ -43,6 +43,18 @@ public: return reply.readInt32(); } + // get information about a camera + virtual status_t getCameraInfo(int cameraId, + struct CameraInfo* cameraInfo) { + Parcel data, reply; + data.writeInterfaceToken(ICameraService::getInterfaceDescriptor()); + data.writeInt32(cameraId); + remote()->transact(BnCameraService::GET_CAMERA_INFO, data, &reply); + cameraInfo->facing = reply.readInt32(); + cameraInfo->orientation = reply.readInt32(); + return reply.readInt32(); + } + // connect to camera service virtual sp connect(const sp& cameraClient, int cameraId) { @@ -68,6 +80,16 @@ status_t BnCameraService::onTransact( reply->writeInt32(getNumberOfCameras()); return NO_ERROR; } break; + case GET_CAMERA_INFO: { + CHECK_INTERFACE(ICameraService, data, reply); + CameraInfo cameraInfo; + memset(&cameraInfo, 0, sizeof(cameraInfo)); + status_t result = getCameraInfo(data.readInt32(), &cameraInfo); + reply->writeInt32(cameraInfo.facing); + reply->writeInt32(cameraInfo.orientation); + reply->writeInt32(result); + return NO_ERROR; + } break; case CONNECT: { CHECK_INTERFACE(ICameraService, data, reply); sp cameraClient = interface_cast(data.readStrongBinder()); -- cgit v1.1