ICameraService.h revision e7ee7637747371635a85fedd24d2190bb1f38651
13cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian/* 23cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * Copyright (C) 2008 The Android Open Source Project 33cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * 43cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * Licensed under the Apache License, Version 2.0 (the "License"); 53cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * you may not use this file except in compliance with the License. 63cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * You may obtain a copy of the License at 73cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * 83cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * http://www.apache.org/licenses/LICENSE-2.0 93cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * 103cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * Unless required by applicable law or agreed to in writing, software 113cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * distributed under the License is distributed on an "AS IS" BASIS, 123cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 133cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * See the License for the specific language governing permissions and 143cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian * limitations under the License. 153cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian */ 163cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 173cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian#ifndef ANDROID_HARDWARE_ICAMERASERVICE_H 183cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian#define ANDROID_HARDWARE_ICAMERASERVICE_H 193cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 203cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian#include <utils/RefBase.h> 213cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian#include <binder/IInterface.h> 223cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian#include <binder/Parcel.h> 233cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 243cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopiannamespace android { 253cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 26c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkinclass ICamera; 27c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkinclass ICameraClient; 28c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkinclass IProCameraUser; 29c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkinclass IProCameraCallbacks; 30bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkinclass ICameraServiceListener; 31e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkinclass ICameraDeviceUser; 32e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkinclass ICameraDeviceCallbacks; 33c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkin 343cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianclass ICameraService : public IInterface 353cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian{ 363cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianpublic: 37bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin /** 38bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin * Keep up-to-date with ICameraService.aidl in frameworks/base 39bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin */ 403cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian enum { 4135a055b8bfc6f3cbea409b2897caf936654519cbChih-Chung Chang GET_NUMBER_OF_CAMERAS = IBinder::FIRST_CALL_TRANSACTION, 42ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4Chih-Chung Chang GET_CAMERA_INFO, 43634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin CONNECT, 44bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin CONNECT_PRO, 45e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin CONNECT_DEVICE, 46bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin ADD_LISTENER, 47bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin REMOVE_LISTENER, 483cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian }; 493cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 50ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala enum { 51ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala USE_CALLING_UID = -1 52ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala }; 53ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala 543cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianpublic: 553cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian DECLARE_META_INTERFACE(CameraService); 563cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 57bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin virtual int32_t getNumberOfCameras() = 0; 58bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin virtual status_t getCameraInfo(int cameraId, 59ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4Chih-Chung Chang struct CameraInfo* cameraInfo) = 0; 60bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 61bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin // Returns 'OK' if operation succeeded 62bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin // - Errors: ALREADY_EXISTS if the listener was already added 63bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin virtual status_t addListener(const sp<ICameraServiceListener>& listener) 64bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin = 0; 65bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin // Returns 'OK' if operation succeeded 66bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin // - Errors: BAD_VALUE if specified listener was not in the listener list 67bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin virtual status_t removeListener(const sp<ICameraServiceListener>& listener) 68bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin = 0; 69ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala /** 70ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala * clientPackageName and clientUid are used for permissions checking. if 71ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala * clientUid == USE_CALLING_UID, then the calling UID is used instead. Only 72ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala * trusted callers can set a clientUid other than USE_CALLING_UID. 73ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala */ 74ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient, 75ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala int cameraId, 76ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala const String16& clientPackageName, 77ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala int clientUid) = 0; 78634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin 79ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala virtual sp<IProCameraUser> connect(const sp<IProCameraCallbacks>& cameraCb, 80c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkin int cameraId, 81c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkin const String16& clientPackageName, 82c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkin int clientUid) = 0; 83e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 84e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin virtual sp<ICameraDeviceUser> connect( 85e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin const sp<ICameraDeviceCallbacks>& cameraCb, 86e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin int cameraId, 87e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin const String16& clientPackageName, 88e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin int clientUid) = 0; 893cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian}; 903cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 913cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian// ---------------------------------------------------------------------------- 923cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 933cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianclass BnCameraService: public BnInterface<ICameraService> 943cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian{ 953cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianpublic: 963cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian virtual status_t onTransact( uint32_t code, 973cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian const Parcel& data, 983cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian Parcel* reply, 993cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian uint32_t flags = 0); 1003cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian}; 1013cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 1023cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian}; // namespace android 1033cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian 1043cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian#endif 105