ICameraService.h revision 8fdfbe27acd157d58fa35a849ec50c82464062f0
1dd17394d225b06376e9ae1d23f36cec463fdef01Chris Lattner/* 2ef8225444452a1486bd721f3285301fe84643b00Stephen Hines * Copyright (C) 2008 The Android Open Source Project 3ef8225444452a1486bd721f3285301fe84643b00Stephen Hines * 482287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * Licensed under the Apache License, Version 2.0 (the "License"); 582287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * you may not use this file except in compliance with the License. 682287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * You may obtain a copy of the License at 782287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * 882287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * http://www.apache.org/licenses/LICENSE-2.0 982287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * 1082287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * Unless required by applicable law or agreed to in writing, software 1182287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * distributed under the License is distributed on an "AS IS" BASIS, 1282287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1382287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * See the License for the specific language governing permissions and 1482287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson * limitations under the License. 1582287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson */ 1682287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson 1782287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson#ifndef ANDROID_HARDWARE_ICAMERASERVICE_H 18788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner#define ANDROID_HARDWARE_ICAMERASERVICE_H 19788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner 20788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner#include <utils/RefBase.h> 2182287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson#include <binder/IInterface.h> 2282287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson#include <binder/Parcel.h> 2382287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson 2482287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonnamespace android { 2582287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson 2682287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonclass ICamera; 2782287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonclass ICameraClient; 2882287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonclass IProCameraUser; 2982287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonclass IProCameraCallbacks; 3082287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonclass ICameraServiceListener; 3182287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson 3282287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonclass ICameraService : public IInterface 3382287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson{ 3482287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonpublic: 3582287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson enum { 3682287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson GET_NUMBER_OF_CAMERAS = IBinder::FIRST_CALL_TRANSACTION, 3782287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson GET_CAMERA_INFO, 3882287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson CONNECT, 3982287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson CONNECT_PRO, 40788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner ADD_LISTENER, 41788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner REMOVE_LISTENER, 42788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner }; 4382287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson 4482287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson enum { 4582287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson USE_CALLING_UID = -1 4682287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson }; 4782287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson 4882287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompsonpublic: 49e12a779bbecb46b7287a87e0ff441e32147d10bbChris Lattner DECLARE_META_INTERFACE(CameraService); 50e12a779bbecb46b7287a87e0ff441e32147d10bbChris Lattner 5182287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson virtual int32_t getNumberOfCameras() = 0; 52ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner virtual status_t getCameraInfo(int cameraId, 53ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner struct CameraInfo* cameraInfo) = 0; 54ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner 55ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner // Returns 'OK' if operation succeeded 56ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner // - Errors: ALREADY_EXISTS if the listener was already added 57ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner virtual status_t addListener(const sp<ICameraServiceListener>& listener) 58ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner = 0; 59ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner // Returns 'OK' if operation succeeded 60ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner // - Errors: BAD_VALUE if specified listener was not in the listener list 61ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner virtual status_t removeListener(const sp<ICameraServiceListener>& listener) 62ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner = 0; 63ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner /** 64ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner * clientPackageName and clientUid are used for permissions checking. if 65ffaf4c5eb68718841399fc4396f6d53fedad24e2Chris Lattner * clientUid == USE_CALLING_UID, then the calling UID is used instead. Only 66788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner * trusted callers can set a clientUid other than USE_CALLING_UID. 6782287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson */ 6882287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, 69788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner int cameraId, 70788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner const String16& clientPackageName, 71788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner int clientUid) = 0; 72788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner 73788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner virtual sp<IProCameraUser> connect(const sp<IProCameraCallbacks>& cameraCb, 74788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner int cameraId, 75788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner const String16& clientPackageName, 76788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner int clientUid) = 0; 77788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner}; 78788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner 79788b0fd67e1992f23555454efcdb16a19dfefac3Chris Lattner// ---------------------------------------------------------------------------- 8082287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson 81f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smithclass BnCameraService: public BnInterface<ICameraService> 82f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smith{ 83f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smithpublic: 84f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smith virtual status_t onTransact( uint32_t code, 85f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smith const Parcel& data, 86f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smith Parcel* reply, 87f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smith uint32_t flags = 0); 88f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smith}; 89f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smith 90f63eee78a3ed50a974d0963623a06888ecd4ef6bRichard Smith}; // namespace android 9182287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson 9282287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson#endif 9382287d19ded35248c4ce6a425ce74116a13ce44eJohn Thompson