xref: /aosp_15_r20/system/media/camera/docs/camera_metadata_asserts.mako (revision b9df5ad1c9ac98a7fefaac271a55f7ae3db05414)
1*b9df5ad1SAndroid Build Coastguard Worker## -*- coding: utf-8 -*-
2*b9df5ad1SAndroid Build Coastguard Worker/*
3*b9df5ad1SAndroid Build Coastguard Worker * Copyright (C) ${copyright_year()} The Android Open Source Project
4*b9df5ad1SAndroid Build Coastguard Worker *
5*b9df5ad1SAndroid Build Coastguard Worker * Licensed under the Apache License, Version 2.0 (the "License");
6*b9df5ad1SAndroid Build Coastguard Worker * you may not use this file except in compliance with the License.
7*b9df5ad1SAndroid Build Coastguard Worker * You may obtain a copy of the License at
8*b9df5ad1SAndroid Build Coastguard Worker *
9*b9df5ad1SAndroid Build Coastguard Worker *      http://www.apache.org/licenses/LICENSE-2.0
10*b9df5ad1SAndroid Build Coastguard Worker *
11*b9df5ad1SAndroid Build Coastguard Worker * Unless required by applicable law or agreed to in writing, software
12*b9df5ad1SAndroid Build Coastguard Worker * distributed under the License is distributed on an "AS IS" BASIS,
13*b9df5ad1SAndroid Build Coastguard Worker * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14*b9df5ad1SAndroid Build Coastguard Worker * See the License for the specific language governing permissions and
15*b9df5ad1SAndroid Build Coastguard Worker * limitations under the License.
16*b9df5ad1SAndroid Build Coastguard Worker */
17*b9df5ad1SAndroid Build Coastguard Worker
18*b9df5ad1SAndroid Build Coastguard Worker/**
19*b9df5ad1SAndroid Build Coastguard Worker * ! Do not edit this file directly !
20*b9df5ad1SAndroid Build Coastguard Worker *
21*b9df5ad1SAndroid Build Coastguard Worker * Generated automatically from camera_metadata_asserts.mako
22*b9df5ad1SAndroid Build Coastguard Worker */
23*b9df5ad1SAndroid Build Coastguard Worker<%
24*b9df5ad1SAndroid Build Coastguard Workerdef annotated_enum_type(entry):
25*b9df5ad1SAndroid Build Coastguard Worker  if entry.type == 'int64' and entry.container == 'array':
26*b9df5ad1SAndroid Build Coastguard Worker    type = 'int64_t'
27*b9df5ad1SAndroid Build Coastguard Worker  else:
28*b9df5ad1SAndroid Build Coastguard Worker    type = 'int32_t'
29*b9df5ad1SAndroid Build Coastguard Worker  return type
30*b9df5ad1SAndroid Build Coastguard Worker
31*b9df5ad1SAndroid Build Coastguard Workerdef aidl_namespace(path):
32*b9df5ad1SAndroid Build Coastguard Worker  return "::aidl::android::hardware::camera::metadata::" + path
33*b9df5ad1SAndroid Build Coastguard Worker
34*b9df5ad1SAndroid Build Coastguard Workerdef aidl_camera_metadata_section(id):
35*b9df5ad1SAndroid Build Coastguard Worker  return aidl_namespace("CameraMetadataSection::" + id)
36*b9df5ad1SAndroid Build Coastguard Worker
37*b9df5ad1SAndroid Build Coastguard Workerdef aidl_camera_metadata_section_start(id):
38*b9df5ad1SAndroid Build Coastguard Worker  return aidl_namespace("CameraMetadataSectionStart::" + id)
39*b9df5ad1SAndroid Build Coastguard Worker
40*b9df5ad1SAndroid Build Coastguard Workerdef aidl_camera_metadata_tag(id):
41*b9df5ad1SAndroid Build Coastguard Worker  return aidl_namespace("CameraMetadataTag::" + id)
42*b9df5ad1SAndroid Build Coastguard Worker
43*b9df5ad1SAndroid Build Coastguard Workerdef aidl_enum_name(entry):
44*b9df5ad1SAndroid Build Coastguard Worker  enum_name = entry.name.removeprefix("android.")
45*b9df5ad1SAndroid Build Coastguard Worker  s = enum_name.split(".")
46*b9df5ad1SAndroid Build Coastguard Worker  s = [x[0].capitalize() + x[1:] for x in s]
47*b9df5ad1SAndroid Build Coastguard Worker  return ''.join(s)
48*b9df5ad1SAndroid Build Coastguard Worker%>
49*b9df5ad1SAndroid Build Coastguard Worker#include <aidl/android/hardware/camera/metadata/CameraMetadataSection.h>
50*b9df5ad1SAndroid Build Coastguard Worker#include <aidl/android/hardware/camera/metadata/CameraMetadataSectionStart.h>
51*b9df5ad1SAndroid Build Coastguard Worker#include <aidl/android/hardware/camera/metadata/CameraMetadataTag.h>
52*b9df5ad1SAndroid Build Coastguard Worker% for sec in find_all_sections_filtered(metadata, ('extension')):
53*b9df5ad1SAndroid Build Coastguard Worker  % for entry in remove_hal_non_visible(find_unique_entries(sec)):
54*b9df5ad1SAndroid Build Coastguard Worker    % if entry.enum:
55*b9df5ad1SAndroid Build Coastguard Worker#include <aidl/android/hardware/camera/metadata/${aidl_enum_name(entry)}.h>
56*b9df5ad1SAndroid Build Coastguard Worker    % endif
57*b9df5ad1SAndroid Build Coastguard Worker  % endfor
58*b9df5ad1SAndroid Build Coastguard Worker% endfor
59*b9df5ad1SAndroid Build Coastguard Worker
60*b9df5ad1SAndroid Build Coastguard Worker#include <system/camera_metadata_tags.h>
61*b9df5ad1SAndroid Build Coastguard Worker
62*b9df5ad1SAndroid Build Coastguard Worker% for sec in find_all_sections_filtered(metadata, ('extension')):
63*b9df5ad1SAndroid Build Coastguard Workerstatic_assert(static_cast<int>(${path_name(sec) | csym})
64*b9df5ad1SAndroid Build Coastguard Worker        == static_cast<int>(${aidl_camera_metadata_section(csym(path_name(sec)))}));
65*b9df5ad1SAndroid Build Coastguard Worker% endfor
66*b9df5ad1SAndroid Build Coastguard Workerstatic_assert(static_cast<int>(VENDOR_SECTION)
67*b9df5ad1SAndroid Build Coastguard Worker        == static_cast<int>(${aidl_camera_metadata_section("VENDOR_SECTION")}));
68*b9df5ad1SAndroid Build Coastguard Worker
69*b9df5ad1SAndroid Build Coastguard Worker% for sec in find_all_sections_filtered(metadata, ('extension')):
70*b9df5ad1SAndroid Build Coastguard Workerstatic_assert(static_cast<int>(${path_name(sec) + '.start' | csym})
71*b9df5ad1SAndroid Build Coastguard Worker        == static_cast<int>(${aidl_camera_metadata_section_start(csym(path_name(sec) + '.start'))}));
72*b9df5ad1SAndroid Build Coastguard Worker% endfor
73*b9df5ad1SAndroid Build Coastguard Workerstatic_assert(static_cast<int>(VENDOR_SECTION_START)
74*b9df5ad1SAndroid Build Coastguard Worker        == static_cast<int>(${aidl_camera_metadata_section_start("VENDOR_SECTION_START")}));
75*b9df5ad1SAndroid Build Coastguard Worker
76*b9df5ad1SAndroid Build Coastguard Worker% for sec in find_all_sections_filtered(metadata, ('extension')):
77*b9df5ad1SAndroid Build Coastguard Worker  % for idx,entry in enumerate(remove_hal_non_visible(find_unique_entries(sec))):
78*b9df5ad1SAndroid Build Coastguard Workerstatic_assert(static_cast<int>(${csym(entry.name)})
79*b9df5ad1SAndroid Build Coastguard Worker        == static_cast<int>(${aidl_camera_metadata_tag(csym(entry.name))}));
80*b9df5ad1SAndroid Build Coastguard Worker  % endfor
81*b9df5ad1SAndroid Build Coastguard Worker% endfor
82*b9df5ad1SAndroid Build Coastguard Worker% for sec in find_all_sections_filtered(metadata, ('extension')):
83*b9df5ad1SAndroid Build Coastguard Worker  % for entry in remove_hal_non_visible(find_unique_entries(sec)):
84*b9df5ad1SAndroid Build Coastguard Worker    % if entry.enum:
85*b9df5ad1SAndroid Build Coastguard Worker
86*b9df5ad1SAndroid Build Coastguard Worker      % for val in aidl_enum_values(entry):
87*b9df5ad1SAndroid Build Coastguard Workerstatic_assert(static_cast<${annotated_enum_type(entry)}>(${csym(entry.name)}_${val.name})
88*b9df5ad1SAndroid Build Coastguard Worker        == static_cast<${annotated_enum_type(entry)}>(${aidl_namespace(aidl_enum_name(entry) + "::" + aidl_enum_value_name(csym(entry.name) + "_" + val.name))}));
89*b9df5ad1SAndroid Build Coastguard Worker      % endfor
90*b9df5ad1SAndroid Build Coastguard Worker    % endif
91*b9df5ad1SAndroid Build Coastguard Worker  % endfor
92*b9df5ad1SAndroid Build Coastguard Worker% endfor