From 0f61d8f14aa368c9cd7076528e8096e10ed100a0 Mon Sep 17 00:00:00 2001 From: Ruben Brunk Date: Thu, 8 Aug 2013 13:07:18 -0700 Subject: Refactor CameraService to handle errors properly. Bug: 10361136 -Connect calls now return status_t error flags. Change-Id: Idca453b111e5df31327f6c99ebe853bb2e332b95 --- include/camera/Camera.h | 6 ++++++ include/camera/CameraBase.h | 7 ++++--- include/camera/ICameraService.h | 18 ++++++++++++------ include/camera/ProCamera.h | 7 +++++++ 4 files changed, 29 insertions(+), 9 deletions(-) (limited to 'include/camera') diff --git a/include/camera/Camera.h b/include/camera/Camera.h index c34b3ea..81848b3 100644 --- a/include/camera/Camera.h +++ b/include/camera/Camera.h @@ -51,8 +51,14 @@ struct CameraTraits typedef CameraListener TCamListener; typedef ICamera TCamUser; typedef ICameraClient TCamCallbacks; + typedef status_t (ICameraService::*TCamConnectService)(const sp&, + int, const String16&, int, + /*out*/ + sp&); + static TCamConnectService fnConnectService; }; + class Camera : public CameraBase, public BnCameraClient diff --git a/include/camera/CameraBase.h b/include/camera/CameraBase.h index 9b08c0f..1b93157 100644 --- a/include/camera/CameraBase.h +++ b/include/camera/CameraBase.h @@ -54,9 +54,10 @@ template > class CameraBase : public IBinder::DeathRecipient { public: - typedef typename TCamTraits::TCamListener TCamListener; - typedef typename TCamTraits::TCamUser TCamUser; - typedef typename TCamTraits::TCamCallbacks TCamCallbacks; + typedef typename TCamTraits::TCamListener TCamListener; + typedef typename TCamTraits::TCamUser TCamUser; + typedef typename TCamTraits::TCamCallbacks TCamCallbacks; + typedef typename TCamTraits::TCamConnectService TCamConnectService; static sp connect(int cameraId, const String16& clientPackageName, diff --git a/include/camera/ICameraService.h b/include/camera/ICameraService.h index fa715b7..0e10699 100644 --- a/include/camera/ICameraService.h +++ b/include/camera/ICameraService.h @@ -71,21 +71,27 @@ public: * clientUid == USE_CALLING_UID, then the calling UID is used instead. Only * trusted callers can set a clientUid other than USE_CALLING_UID. */ - virtual sp connect(const sp& cameraClient, + virtual status_t connect(const sp& cameraClient, int cameraId, const String16& clientPackageName, - int clientUid) = 0; + int clientUid, + /*out*/ + sp& device) = 0; - virtual sp connect(const sp& cameraCb, + virtual status_t connectPro(const sp& cameraCb, int cameraId, const String16& clientPackageName, - int clientUid) = 0; + int clientUid, + /*out*/ + sp& device) = 0; - virtual sp connect( + virtual status_t connectDevice( const sp& cameraCb, int cameraId, const String16& clientPackageName, - int clientUid) = 0; + int clientUid, + /*out*/ + sp& device) = 0; }; // ---------------------------------------------------------------------------- diff --git a/include/camera/ProCamera.h b/include/camera/ProCamera.h index 3d1652f..d9ee662 100644 --- a/include/camera/ProCamera.h +++ b/include/camera/ProCamera.h @@ -25,6 +25,7 @@ #include #include #include +#include #include #include @@ -87,8 +88,14 @@ struct CameraTraits typedef ProCameraListener TCamListener; typedef IProCameraUser TCamUser; typedef IProCameraCallbacks TCamCallbacks; + typedef status_t (ICameraService::*TCamConnectService)(const sp&, + int, const String16&, int, + /*out*/ + sp&); + static TCamConnectService fnConnectService; }; + class ProCamera : public CameraBase, public BnProCameraCallbacks -- cgit v1.1