1*e01b6f76SAndroid Build Coastguard Worker /* 2*e01b6f76SAndroid Build Coastguard Worker * Copyright (C) 2013 The Android Open Source Project 3*e01b6f76SAndroid Build Coastguard Worker * 4*e01b6f76SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License"); 5*e01b6f76SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License. 6*e01b6f76SAndroid Build Coastguard Worker * You may obtain a copy of the License at 7*e01b6f76SAndroid Build Coastguard Worker * 8*e01b6f76SAndroid Build Coastguard Worker * http://www.apache.org/licenses/LICENSE-2.0 9*e01b6f76SAndroid Build Coastguard Worker * 10*e01b6f76SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software 11*e01b6f76SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS, 12*e01b6f76SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13*e01b6f76SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and 14*e01b6f76SAndroid Build Coastguard Worker * limitations under the License. 15*e01b6f76SAndroid Build Coastguard Worker */ 16*e01b6f76SAndroid Build Coastguard Worker 17*e01b6f76SAndroid Build Coastguard Worker #ifndef __ANDROID_HAL_CAMERA3_TEST_COMMON__ 18*e01b6f76SAndroid Build Coastguard Worker #define __ANDROID_HAL_CAMERA3_TEST_COMMON__ 19*e01b6f76SAndroid Build Coastguard Worker 20*e01b6f76SAndroid Build Coastguard Worker #include <gtest/gtest.h> 21*e01b6f76SAndroid Build Coastguard Worker #include <hardware/hardware.h> 22*e01b6f76SAndroid Build Coastguard Worker #include <hardware/camera3.h> 23*e01b6f76SAndroid Build Coastguard Worker 24*e01b6f76SAndroid Build Coastguard Worker namespace tests { 25*e01b6f76SAndroid Build Coastguard Worker 26*e01b6f76SAndroid Build Coastguard Worker static const int kMmaxCams = 2; 27*e01b6f76SAndroid Build Coastguard Worker static const uint16_t kVersion3_0 = HARDWARE_MODULE_API_VERSION(3, 0); 28*e01b6f76SAndroid Build Coastguard Worker 29*e01b6f76SAndroid Build Coastguard Worker class Camera3Module : public testing::Test { 30*e01b6f76SAndroid Build Coastguard Worker public: Camera3Module()31*e01b6f76SAndroid Build Coastguard Worker Camera3Module() : 32*e01b6f76SAndroid Build Coastguard Worker num_cams_(0), 33*e01b6f76SAndroid Build Coastguard Worker cam_module_(NULL) {} ~Camera3Module()34*e01b6f76SAndroid Build Coastguard Worker ~Camera3Module() {} 35*e01b6f76SAndroid Build Coastguard Worker protected: SetUp()36*e01b6f76SAndroid Build Coastguard Worker virtual void SetUp() { 37*e01b6f76SAndroid Build Coastguard Worker const hw_module_t *hw_module = NULL; 38*e01b6f76SAndroid Build Coastguard Worker ASSERT_EQ(0, hw_get_module(CAMERA_HARDWARE_MODULE_ID, &hw_module)) 39*e01b6f76SAndroid Build Coastguard Worker << "Can't get camera module"; 40*e01b6f76SAndroid Build Coastguard Worker ASSERT_TRUE(NULL != hw_module) 41*e01b6f76SAndroid Build Coastguard Worker << "hw_get_module didn't return a valid camera module"; 42*e01b6f76SAndroid Build Coastguard Worker 43*e01b6f76SAndroid Build Coastguard Worker cam_module_ = reinterpret_cast<const camera_module_t*>(hw_module); 44*e01b6f76SAndroid Build Coastguard Worker ASSERT_TRUE(NULL != cam_module_->get_number_of_cameras) 45*e01b6f76SAndroid Build Coastguard Worker << "get_number_of_cameras is not implemented"; 46*e01b6f76SAndroid Build Coastguard Worker num_cams_ = cam_module_->get_number_of_cameras(); 47*e01b6f76SAndroid Build Coastguard Worker } num_cams()48*e01b6f76SAndroid Build Coastguard Worker int num_cams() { return num_cams_; } cam_module()49*e01b6f76SAndroid Build Coastguard Worker const camera_module_t * cam_module() { return cam_module_; } 50*e01b6f76SAndroid Build Coastguard Worker private: 51*e01b6f76SAndroid Build Coastguard Worker int num_cams_; 52*e01b6f76SAndroid Build Coastguard Worker const camera_module_t *cam_module_; 53*e01b6f76SAndroid Build Coastguard Worker }; 54*e01b6f76SAndroid Build Coastguard Worker 55*e01b6f76SAndroid Build Coastguard Worker class Camera3Device : public Camera3Module { 56*e01b6f76SAndroid Build Coastguard Worker public: Camera3Device()57*e01b6f76SAndroid Build Coastguard Worker Camera3Device() : 58*e01b6f76SAndroid Build Coastguard Worker cam_device_(NULL) {} ~Camera3Device()59*e01b6f76SAndroid Build Coastguard Worker ~Camera3Device() {} 60*e01b6f76SAndroid Build Coastguard Worker protected: SetUp()61*e01b6f76SAndroid Build Coastguard Worker virtual void SetUp() { 62*e01b6f76SAndroid Build Coastguard Worker Camera3Module::SetUp(); 63*e01b6f76SAndroid Build Coastguard Worker hw_device_t *device = NULL; 64*e01b6f76SAndroid Build Coastguard Worker ASSERT_TRUE(NULL != cam_module()->common.methods->open) 65*e01b6f76SAndroid Build Coastguard Worker << "Camera open() is unimplemented"; 66*e01b6f76SAndroid Build Coastguard Worker ASSERT_EQ(0, cam_module()->common.methods->open( 67*e01b6f76SAndroid Build Coastguard Worker (const hw_module_t*)cam_module(), "0", &device)) 68*e01b6f76SAndroid Build Coastguard Worker << "Can't open camera device"; 69*e01b6f76SAndroid Build Coastguard Worker ASSERT_TRUE(NULL != device) 70*e01b6f76SAndroid Build Coastguard Worker << "Camera open() returned a NULL device"; 71*e01b6f76SAndroid Build Coastguard Worker ASSERT_LE(kVersion3_0, device->version) 72*e01b6f76SAndroid Build Coastguard Worker << "The device does not support HAL3"; 73*e01b6f76SAndroid Build Coastguard Worker cam_device_ = reinterpret_cast<camera3_device_t*>(device); 74*e01b6f76SAndroid Build Coastguard Worker } cam_device()75*e01b6f76SAndroid Build Coastguard Worker camera3_device_t* cam_device() { return cam_device_; } 76*e01b6f76SAndroid Build Coastguard Worker private: 77*e01b6f76SAndroid Build Coastguard Worker camera3_device *cam_device_; 78*e01b6f76SAndroid Build Coastguard Worker }; 79*e01b6f76SAndroid Build Coastguard Worker 80*e01b6f76SAndroid Build Coastguard Worker } // namespace tests 81*e01b6f76SAndroid Build Coastguard Worker 82*e01b6f76SAndroid Build Coastguard Worker #endif // __ANDROID_HAL_CAMERA3_TEST_COMMON__ 83