ICameraService.h revision c073ba525404f3416c2824c435d3d926a9892f1b
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;
30c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkin
313cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianclass ICameraService : public IInterface
323cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian{
333cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianpublic:
343cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian    enum {
3535a055b8bfc6f3cbea409b2897caf936654519cbChih-Chung Chang        GET_NUMBER_OF_CAMERAS = IBinder::FIRST_CALL_TRANSACTION,
36ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4Chih-Chung Chang        GET_CAMERA_INFO,
37634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin        CONNECT,
38634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin        CONNECT_PRO
393cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian    };
403cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian
41ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala    enum {
42ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala        USE_CALLING_UID = -1
43ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala    };
44ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala
453cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianpublic:
463cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian    DECLARE_META_INTERFACE(CameraService);
473cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian
4835a055b8bfc6f3cbea409b2897caf936654519cbChih-Chung Chang    virtual int32_t         getNumberOfCameras() = 0;
49ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4Chih-Chung Chang    virtual status_t        getCameraInfo(int cameraId,
50ddbdb35d176266b5ab64c30178f5cb76c5b1b4b4Chih-Chung Chang                                          struct CameraInfo* cameraInfo) = 0;
51ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala    /**
52ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala     * clientPackageName and clientUid are used for permissions checking.  if
53ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala     * clientUid == USE_CALLING_UID, then the calling UID is used instead. Only
54ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala     * trusted callers can set a clientUid other than USE_CALLING_UID.
55ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala     */
56ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala    virtual sp<ICamera> connect(const sp<ICameraClient>& cameraClient,
57ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala            int cameraId,
58ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala            const String16& clientPackageName,
59ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala            int clientUid) = 0;
60634a51509ee50475f3e9f8ccf897e90fc72ded31Igor Murashkin
61ceb388d6c03c38b96dc41c0ea4804b749aa077c4Eino-Ville Talvala    virtual sp<IProCameraUser> connect(const sp<IProCameraCallbacks>& cameraCb,
62c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkin            int cameraId,
63c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkin            const String16& clientPackageName,
64c073ba525404f3416c2824c435d3d926a9892f1bIgor Murashkin            int clientUid) = 0;
653cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian};
663cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian
673cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian// ----------------------------------------------------------------------------
683cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian
693cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianclass BnCameraService: public BnInterface<ICameraService>
703cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian{
713cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopianpublic:
723cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian    virtual status_t    onTransact( uint32_t code,
733cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian                                    const Parcel& data,
743cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian                                    Parcel* reply,
753cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian                                    uint32_t flags = 0);
763cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian};
773cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian
783cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian}; // namespace android
793cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian
803cf613507f1e2f7bd932d921a6e222e426fd3be4Mathias Agopian#endif
81