1bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin/* 2bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * Copyright (C) 2013 The Android Open Source Project 3bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * 4bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * Licensed under the Apache License, Version 2.0 (the "License"); 5bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * you may not use this file except in compliance with the License. 6bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * You may obtain a copy of the License at 7bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * 8bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * http://www.apache.org/licenses/LICENSE-2.0 9bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * 10bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * Unless required by applicable law or agreed to in writing, software 11bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * distributed under the License is distributed on an "AS IS" BASIS, 12bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * See the License for the specific language governing permissions and 14bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin * limitations under the License. 15bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin */ 16bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 17bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin#ifndef ANDROID_HARDWARE_ICAMERASERVICE_LISTENER_H 18bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin#define ANDROID_HARDWARE_ICAMERASERVICE_LISTENER_H 19bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 20bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin#include <utils/RefBase.h> 21bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin#include <binder/IInterface.h> 22bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin#include <binder/Parcel.h> 23bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin#include <hardware/camera_common.h> 24bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 25bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkinnamespace android { 26bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 27bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkinclass ICameraServiceListener : public IInterface 28bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin{ 29bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin /** 30bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin * Keep up-to-date with ICameraServiceListener.aidl in frameworks/base 31bef3f23f16f2fc575b3f425febcfcc436a7db70fIgor Murashkin */ 32bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkinpublic: 33bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 34b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin /** 35b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * Initial status will be transmitted with onStatusChange immediately 36b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * after this listener is added to the service listener list. 37b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * 38b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * Allowed transitions: 39b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * 40b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * (Any) -> NOT_PRESENT 41b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * NOT_PRESENT -> PRESENT 42b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * NOT_PRESENT -> ENUMERATING 43b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * ENUMERATING -> PRESENT 44cba2c163555cd329f49d40658ea3ee902e94dda3Igor Murashkin * PRESENT -> NOT_AVAILABLE 45cba2c163555cd329f49d40658ea3ee902e94dda3Igor Murashkin * NOT_AVAILABLE -> PRESENT 46b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * 47b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin * A state will never immediately transition back to itself. 48b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin */ 49bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin enum Status { 50bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin // Device physically unplugged 51bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin STATUS_NOT_PRESENT = CAMERA_DEVICE_STATUS_NOT_PRESENT, 52b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin // Device physically has been plugged in 53cba2c163555cd329f49d40658ea3ee902e94dda3Igor Murashkin // and the camera can be used exlusively 54b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin STATUS_PRESENT = CAMERA_DEVICE_STATUS_PRESENT, 55b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin // Device physically has been plugged in 56b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin // but it will not be connect-able until enumeration is complete 57b652df67cbdc2a92825144b23ea47eba4c276eddIgor Murashkin STATUS_ENUMERATING = CAMERA_DEVICE_STATUS_ENUMERATING, 58bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 59bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin // Camera can be used exclusively 60cba2c163555cd329f49d40658ea3ee902e94dda3Igor Murashkin STATUS_AVAILABLE = STATUS_PRESENT, // deprecated, will be removed 61cba2c163555cd329f49d40658ea3ee902e94dda3Igor Murashkin 62bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin // Camera is in use by another app and cannot be used exclusively 63cba2c163555cd329f49d40658ea3ee902e94dda3Igor Murashkin STATUS_NOT_AVAILABLE = 0x80000000, 64bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 65bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin // Use to initialize variables only 66bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin STATUS_UNKNOWN = 0xFFFFFFFF, 67bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin }; 68bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 69bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin DECLARE_META_INTERFACE(CameraServiceListener); 70bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 71bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin virtual void onStatusChanged(Status status, int32_t cameraId) = 0; 72bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin}; 73bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 74bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin// ---------------------------------------------------------------------------- 75bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 76bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkinclass BnCameraServiceListener : public BnInterface<ICameraServiceListener> 77bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin{ 78bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkinpublic: 79bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin virtual status_t onTransact( uint32_t code, 80bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin const Parcel& data, 81bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin Parcel* reply, 82bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin uint32_t flags = 0); 83bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin}; 84bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 85bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin}; // namespace android 86bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin 87bfc9915f482520eb9676c6d2dbf7f1ac078d937dIgor Murashkin#endif 88