1819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray/* 2819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * Copyright (C) 2013 The Android Open Source Project 3819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * 4819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * Licensed under the Apache License, Version 2.0 (the "License"); 5819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * you may not use this file except in compliance with the License. 6819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * You may obtain a copy of the License at 7819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * 8819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * http://www.apache.org/licenses/LICENSE-2.0 9819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * 10819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * Unless required by applicable law or agreed to in writing, software 11819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * distributed under the License is distributed on an "AS IS" BASIS, 12819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * See the License for the specific language governing permissions and 14819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray * limitations under the License. 15819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray */ 16819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray 17819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray#ifndef CAMERA_HAL_H_ 18819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray#define CAMERA_HAL_H_ 19819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray 20a0ed4bead4d7a9b9031f7cefe0ef49a951443461Alex Ray#include <cutils/bitops.h> 21819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray#include <hardware/hardware.h> 22819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray#include <hardware/camera_common.h> 23b35bee2a909819964b58c00628b433d79b1989d1Ruben Brunk#include <system/camera_vendor_tags.h> 24a0ed4bead4d7a9b9031f7cefe0ef49a951443461Alex Ray#include "Camera.h" 257915e97d637df3ebbdb9fda542a2657236361e14Alex Ray#include "VendorTags.h" 26819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray 27819cfd87bad560fbd89747371088ad35aaef8d43Alex Raynamespace default_camera_hal { 28819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray// CameraHAL contains all module state that isn't specific to an individual 29819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray// camera device. 30819cfd87bad560fbd89747371088ad35aaef8d43Alex Rayclass CameraHAL { 31819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray public: 32928e679cf30d8871b9e00e008e29728b2cccac96Chih-Hung Hsieh explicit CameraHAL(int num_cameras); 33819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray ~CameraHAL(); 34819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray 35819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray // Camera Module Interface (see <hardware/camera_common.h>) 36819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray int getNumberOfCameras(); 37819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray int getCameraInfo(int camera_id, struct camera_info *info); 38819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray int setCallbacks(const camera_module_callbacks_t *callbacks); 397915e97d637df3ebbdb9fda542a2657236361e14Alex Ray void getVendorTagOps(vendor_tag_ops_t* ops); 40819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray 41819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray // Hardware Module Interface (see <hardware/hardware.h>) 42819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray int open(const hw_module_t* mod, const char* name, hw_device_t** dev); 43819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray 44819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray private: 45819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray // Number of cameras 46819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray const int mNumberOfCameras; 47819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray // Callback handle 48819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray const camera_module_callbacks_t *mCallbacks; 49a0ed4bead4d7a9b9031f7cefe0ef49a951443461Alex Ray // Array of camera devices, contains mNumberOfCameras device pointers 50a0ed4bead4d7a9b9031f7cefe0ef49a951443461Alex Ray Camera **mCameras; 51819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray}; 52819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray} // namespace default_camera_hal 53819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray 54819cfd87bad560fbd89747371088ad35aaef8d43Alex Ray#endif // CAMERA_HAL_H_ 55