Camera2Device.cpp revision 61ab9f93315ea817cd1ac110e2a95da4dab6b4d1
161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala/* 261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * Copyright (C) 2012 The Android Open Source Project 361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * 461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * Licensed under the Apache License, Version 2.0 (the "License"); 561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * you may not use this file except in compliance with the License. 661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * You may obtain a copy of the License at 761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * 861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * http://www.apache.org/licenses/LICENSE-2.0 961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * 1061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * Unless required by applicable law or agreed to in writing, software 1161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * distributed under the License is distributed on an "AS IS" BASIS, 1261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 1361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * See the License for the specific language governing permissions and 1461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala * limitations under the License. 1561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala */ 1661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 1761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#define LOG_TAG "Camera2Device" 1861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala//#define LOG_NDEBUG 0 1961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 2061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#include <utils/Log.h> 2161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala#include "Camera2Device.h" 2261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 2361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvalanamespace android { 2461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 2561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville TalvalaCamera2Device::Camera2Device(const char *name): 2661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala mName(name), 2761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala mDevice(NULL) 2861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala{ 2961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 3061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala} 3161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 3261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville TalvalaCamera2Device::~Camera2Device() 3361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala{ 3461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala if (mDevice) { 3561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala status_t res; 3661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala res = mDevice->common.close(&mDevice->common); 3761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala if (res != OK) { 3861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala ALOGE("Could not close camera2 %s: %s (%d)", 3961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala mName, strerror(-res), res); 4061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala } 4161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala } 4261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala} 4361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 4461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvalastatus_t Camera2Device::initialize(hw_module_t *module) 4561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala{ 4661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala status_t res; 4761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala res = module->methods->open(module, mName, 4861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala reinterpret_cast<hw_device_t**>(&mDevice)); 4961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 5061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala if (res != OK) { 5161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala ALOGE("Could not open camera %s: %s (%d)", mName, strerror(-res), res); 5261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala return res; 5361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala } 5461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 5561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala if (mDevice->common.version != CAMERA_DEVICE_API_VERSION_2_0) { 5661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala ALOGE("Could not open camera %s: " 5761ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala "Camera device is not version 2.0, reports %x instead", 5861ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala mName, mDevice->common.version); 5961ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala return BAD_VALUE; 6061ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala } 6161ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 6261ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala return OK; 6361ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala} 6461ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 6561ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala 6661ab9f93315ea817cd1ac110e2a95da4dab6b4d1Eino-Ville Talvala}; // namespace android 67