xref: /aosp_15_r20/frameworks/av/services/camera/libcameraservice/common/HalConversionsTemplated.h (revision ec779b8e0859a360c3d303172224686826e6e0e1)
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)27 HalCameraDeviceStatus 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)42 CameraDeviceStatus 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)57 CameraResourceCost 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)68 TorchModeStatus 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