1 /* 2 * Copyright (C) 2022 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 #ifndef ANDROID_SERVERS_CAMERA_HAL_CONVERSION_TEMPLATED_H 17 #define ANDROID_SERVERS_CAMERA_HAL_CONVERSION_TEMPLATED_H 18 19 #include "common/CameraProviderManager.h" 20 21 #include <device3/Camera3StreamInterface.h> 22 #include <utils/Utils.h> 23 24 namespace android { 25 26 template <class HalCameraDeviceStatus> mapFrameworkToHalCameraDeviceStatus(const CameraDeviceStatus & s)27HalCameraDeviceStatus mapFrameworkToHalCameraDeviceStatus( 28 const CameraDeviceStatus& s) { 29 switch(s) { 30 case CameraDeviceStatus::PRESENT: 31 return HalCameraDeviceStatus::PRESENT; 32 case CameraDeviceStatus::NOT_PRESENT: 33 return HalCameraDeviceStatus::NOT_PRESENT; 34 case CameraDeviceStatus::ENUMERATING: 35 return HalCameraDeviceStatus::ENUMERATING; 36 } 37 ALOGW("Unexpectedcamera device status code %d", s); 38 return HalCameraDeviceStatus::NOT_PRESENT; 39 } 40 41 template <class HalCameraDeviceStatus> HalToFrameworkCameraDeviceStatus(const HalCameraDeviceStatus & s)42CameraDeviceStatus HalToFrameworkCameraDeviceStatus( 43 const HalCameraDeviceStatus& s) { 44 switch(s) { 45 case HalCameraDeviceStatus::PRESENT: 46 return CameraDeviceStatus::PRESENT; 47 case HalCameraDeviceStatus::NOT_PRESENT: 48 return CameraDeviceStatus::NOT_PRESENT; 49 case HalCameraDeviceStatus::ENUMERATING: 50 return CameraDeviceStatus::ENUMERATING; 51 } 52 ALOGW("Unexpectedcamera device status code %d", eToI(s)); 53 return CameraDeviceStatus::NOT_PRESENT; 54 } 55 56 template <class HalCameraResourceCost> HalToFrameworkResourceCost(const HalCameraResourceCost & s)57CameraResourceCost HalToFrameworkResourceCost( 58 const HalCameraResourceCost& s) { 59 CameraResourceCost internalResourceCost; 60 internalResourceCost.resourceCost = (uint32_t)s.resourceCost; 61 for (const auto device : s.conflictingDevices) { 62 internalResourceCost.conflictingDevices.emplace_back(device.c_str()); 63 } 64 return internalResourceCost; 65 } 66 67 template <class HalTorchModeStatus> HalToFrameworkTorchModeStatus(const HalTorchModeStatus & s)68TorchModeStatus HalToFrameworkTorchModeStatus( 69 const HalTorchModeStatus& s) { 70 switch(s) { 71 case HalTorchModeStatus::NOT_AVAILABLE: 72 return TorchModeStatus::NOT_AVAILABLE; 73 case HalTorchModeStatus::AVAILABLE_OFF: 74 return TorchModeStatus::AVAILABLE_OFF; 75 case HalTorchModeStatus::AVAILABLE_ON: 76 return TorchModeStatus::AVAILABLE_ON; 77 } 78 ALOGW("Unexpectedcamera torch mode status code %d", eToI(s)); 79 return TorchModeStatus::NOT_AVAILABLE; 80 } 81 82 template <class HalCameraDeviceStatus> HalDeviceStatusToString(const HalCameraDeviceStatus & s)83 const char* HalDeviceStatusToString(const HalCameraDeviceStatus& s) { 84 switch(s) { 85 case HalCameraDeviceStatus::NOT_PRESENT: 86 return "NOT_PRESENT"; 87 case HalCameraDeviceStatus::PRESENT: 88 return "PRESENT"; 89 case HalCameraDeviceStatus::ENUMERATING: 90 return "ENUMERATING"; 91 } 92 ALOGW("Unexpected HAL device status code %d", eToI(s)); 93 return "UNKNOWN_STATUS"; 94 } 95 96 } 97 98 #endif 99