1e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin/* 2e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * Copyright (C) 2013 The Android Open Source Project 3e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * 4e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * Licensed under the Apache License, Version 2.0 (the "License"); 5e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * you may not use this file except in compliance with the License. 6e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * You may obtain a copy of the License at 7e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * 8e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * http://www.apache.org/licenses/LICENSE-2.0 9e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * 10e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * Unless required by applicable law or agreed to in writing, software 11e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * distributed under the License is distributed on an "AS IS" BASIS, 12e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * See the License for the specific language governing permissions and 14e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * limitations under the License. 15e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin */ 16e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 17e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#ifndef ANDROID_HARDWARE_PHOTOGRAPHY_CALLBACKS_H 18e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#define ANDROID_HARDWARE_PHOTOGRAPHY_CALLBACKS_H 19e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 20e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#include <utils/RefBase.h> 21e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#include <binder/IInterface.h> 22e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#include <binder/Parcel.h> 23e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#include <binder/IMemory.h> 24e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#include <utils/Timers.h> 25e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#include <system/camera.h> 26e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 27cb0652e5a850b2fcd919e977247e87239efaf70eJianing Wei#include <camera/CaptureResult.h> 28cb0652e5a850b2fcd919e977247e87239efaf70eJianing Wei 29e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkinnamespace android { 30e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkinclass CameraMetadata; 31e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 32cb0652e5a850b2fcd919e977247e87239efaf70eJianing Wei 33e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkinclass ICameraDeviceCallbacks : public IInterface 34e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin{ 35e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin /** 36e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin * Keep up-to-date with ICameraDeviceCallbacks.aidl in frameworks/base 37e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin */ 38e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkinpublic: 39e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin DECLARE_META_INTERFACE(CameraDeviceCallbacks); 40e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 41f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala /** 42f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala * Error codes for CAMERA_MSG_ERROR 43f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala */ 44f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala enum CameraErrorCode { 451754351d9199721e7e7943461689e399ef015260Eino-Ville Talvala ERROR_CAMERA_INVALID_ERROR = -1, // To indicate all invalid error codes 46f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala ERROR_CAMERA_DISCONNECTED = 0, 47f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala ERROR_CAMERA_DEVICE = 1, 481754351d9199721e7e7943461689e399ef015260Eino-Ville Talvala ERROR_CAMERA_SERVICE = 2, 491754351d9199721e7e7943461689e399ef015260Eino-Ville Talvala ERROR_CAMERA_REQUEST = 3, 501754351d9199721e7e7943461689e399ef015260Eino-Ville Talvala ERROR_CAMERA_RESULT = 4, 511754351d9199721e7e7943461689e399ef015260Eino-Ville Talvala ERROR_CAMERA_BUFFER = 5, 52f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala }; 53f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala 54f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala // One way 55cb0652e5a850b2fcd919e977247e87239efaf70eJianing Wei virtual void onDeviceError(CameraErrorCode errorCode, 56cb0652e5a850b2fcd919e977247e87239efaf70eJianing Wei const CaptureResultExtras& resultExtras) = 0; 57f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala 58f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala // One way 59f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala virtual void onDeviceIdle() = 0; 60f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala 61e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin // One way 62cb0652e5a850b2fcd919e977247e87239efaf70eJianing Wei virtual void onCaptureStarted(const CaptureResultExtras& resultExtras, 63f1e98d857ec377f2c9b916073d40732e6ebb7cedEino-Ville Talvala int64_t timestamp) = 0; 64e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 65e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin // One way 66cb0652e5a850b2fcd919e977247e87239efaf70eJianing Wei virtual void onResultReceived(const CameraMetadata& metadata, 67cb0652e5a850b2fcd919e977247e87239efaf70eJianing Wei const CaptureResultExtras& resultExtras) = 0; 68e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin}; 69e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 70e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin// ---------------------------------------------------------------------------- 71e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 72e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkinclass BnCameraDeviceCallbacks : public BnInterface<ICameraDeviceCallbacks> 73e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin{ 74e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkinpublic: 75e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin virtual status_t onTransact( uint32_t code, 76e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin const Parcel& data, 77e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin Parcel* reply, 78e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin uint32_t flags = 0); 79e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin}; 80e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 81e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin}; // namespace android 82e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin 83e7ee7637747371635a85fedd24d2190bb1f38651Igor Murashkin#endif 84