xref: /aosp_15_r20/system/media/camera/docs/HidlMetadata.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  def annotated_type(entry):
19*b9df5ad1SAndroid Build Coastguard Worker    if entry.enum:
20*b9df5ad1SAndroid Build Coastguard Worker       type = 'enum'
21*b9df5ad1SAndroid Build Coastguard Worker    else:
22*b9df5ad1SAndroid Build Coastguard Worker       type = entry.type
23*b9df5ad1SAndroid Build Coastguard Worker    if entry.container == 'array':
24*b9df5ad1SAndroid Build Coastguard Worker       type += '[]'
25*b9df5ad1SAndroid Build Coastguard Worker
26*b9df5ad1SAndroid Build Coastguard Worker    return type
27*b9df5ad1SAndroid Build Coastguard Worker
28*b9df5ad1SAndroid Build Coastguard Worker  def annotated_enum_type(entry):
29*b9df5ad1SAndroid Build Coastguard Worker    if entry.type == 'int64' and entry.container == 'array':
30*b9df5ad1SAndroid Build Coastguard Worker       type = ' int64_t'
31*b9df5ad1SAndroid Build Coastguard Worker    else:
32*b9df5ad1SAndroid Build Coastguard Worker       type = ' uint32_t'
33*b9df5ad1SAndroid Build Coastguard Worker
34*b9df5ad1SAndroid Build Coastguard Worker    return type
35*b9df5ad1SAndroid Build Coastguard Worker%>\
36*b9df5ad1SAndroid Build Coastguard Worker
37*b9df5ad1SAndroid Build Coastguard Worker/*
38*b9df5ad1SAndroid Build Coastguard Worker * Autogenerated from camera metadata definitions in
39*b9df5ad1SAndroid Build Coastguard Worker * /system/media/camera/docs/metadata_definitions.xml
40*b9df5ad1SAndroid Build Coastguard Worker * *** DO NOT EDIT BY HAND ***
41*b9df5ad1SAndroid Build Coastguard Worker */
42*b9df5ad1SAndroid Build Coastguard Worker
43*b9df5ad1SAndroid Build Coastguard Workerpackage android.hardware.camera.metadata@${hal_major_version()}.${hal_minor_version()};
44*b9df5ad1SAndroid Build Coastguard Worker
45*b9df5ad1SAndroid Build Coastguard Worker% if first_hal_minor_version(hal_major_version()) != hal_minor_version():
46*b9df5ad1SAndroid Build Coastguard Worker  % for i in range(first_hal_minor_version(hal_major_version()),hal_minor_version()):
47*b9df5ad1SAndroid Build Coastguard Workerimport android.hardware.camera.metadata@${hal_major_version()}.${i};
48*b9df5ad1SAndroid Build Coastguard Worker  % endfor
49*b9df5ad1SAndroid Build Coastguard Worker
50*b9df5ad1SAndroid Build Coastguard Worker% endif
51*b9df5ad1SAndroid Build Coastguard Worker<%    gotSections = False %>\
52*b9df5ad1SAndroid Build Coastguard Worker<%    gotFirstNewSection = False %>\
53*b9df5ad1SAndroid Build Coastguard Worker% for idx, section in enumerate(find_all_sections_added_in_hal(metadata, hal_major_version(), hal_minor_version())):
54*b9df5ad1SAndroid Build Coastguard Worker  % if idx == 0:
55*b9df5ad1SAndroid Build Coastguard Worker<%    gotSections = True %>\
56*b9df5ad1SAndroid Build Coastguard Worker/**
57*b9df5ad1SAndroid Build Coastguard Worker * Top level hierarchy definitions for camera metadata. *_INFO sections are for
58*b9df5ad1SAndroid Build Coastguard Worker * the static metadata that can be retrived without opening the camera device.
59*b9df5ad1SAndroid Build Coastguard Worker */
60*b9df5ad1SAndroid Build Coastguard Workerenum CameraMetadataSection : ${'uint32_t' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '@%d.%d::CameraMetadataSection' % (hal_major_version(), hal_minor_version()-1)} {
61*b9df5ad1SAndroid Build Coastguard Worker  % endif
62*b9df5ad1SAndroid Build Coastguard Worker  % if first_hal_minor_version(hal_major_version()) != hal_minor_version() and not gotFirstNewSection:
63*b9df5ad1SAndroid Build Coastguard Worker    ${path_name(section) | csym} =
64*b9df5ad1SAndroid Build Coastguard Worker        android.hardware.camera.metadata@${hal_major_version()}.${hal_minor_version()-1}::CameraMetadataSection:ANDROID_SECTION_COUNT,
65*b9df5ad1SAndroid Build Coastguard Worker<% gotFirstNewSection = True %>\
66*b9df5ad1SAndroid Build Coastguard Worker  % else:
67*b9df5ad1SAndroid Build Coastguard Worker    ${path_name(section) | csym},
68*b9df5ad1SAndroid Build Coastguard Worker  % endif
69*b9df5ad1SAndroid Build Coastguard Worker
70*b9df5ad1SAndroid Build Coastguard Worker% endfor
71*b9df5ad1SAndroid Build Coastguard Worker% if gotSections:
72*b9df5ad1SAndroid Build Coastguard Worker    ANDROID_SECTION_COUNT${'' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '_%d_%d' % (hal_major_version(),hal_minor_version())},
73*b9df5ad1SAndroid Build Coastguard Worker
74*b9df5ad1SAndroid Build Coastguard Worker    VENDOR_SECTION${'' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '_%d_%d' % (hal_major_version(),hal_minor_version())} = 0x8000,
75*b9df5ad1SAndroid Build Coastguard Worker
76*b9df5ad1SAndroid Build Coastguard Worker};
77*b9df5ad1SAndroid Build Coastguard Worker
78*b9df5ad1SAndroid Build Coastguard Worker/**
79*b9df5ad1SAndroid Build Coastguard Worker * Hierarchy positions in enum space. All vendor extension sections must be
80*b9df5ad1SAndroid Build Coastguard Worker * defined with tag >= VENDOR_SECTION_START
81*b9df5ad1SAndroid Build Coastguard Worker */
82*b9df5ad1SAndroid Build Coastguard Workerenum CameraMetadataSectionStart : ${'uint32_t' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else 'android.hardware.camera.metadata@%d.%d::CameraMetadataSectionStart' % (hal_major_version(), hal_minor_version()-1)} {
83*b9df5ad1SAndroid Build Coastguard Worker  % for i in find_all_sections_added_in_hal(metadata, hal_major_version(), hal_minor_version()):
84*b9df5ad1SAndroid Build Coastguard Worker    ${path_name(i) + '.start' | csym} = CameraMetadataSection:${path_name(i) | csym} << 16,
85*b9df5ad1SAndroid Build Coastguard Worker
86*b9df5ad1SAndroid Build Coastguard Worker  % endfor
87*b9df5ad1SAndroid Build Coastguard Worker  % if first_hal_minor_version(hal_major_version()) != hal_minor_version() :
88*b9df5ad1SAndroid Build Coastguard Worker    VENDOR_SECTION_START${'_%d_%d' % (hal_major_version(),hal_minor_version())} = CameraMetadataSection:VENDOR_SECTION${'_%d_%d' % (hal_major_version(),hal_minor_version())} << 16,
89*b9df5ad1SAndroid Build Coastguard Worker  % else:
90*b9df5ad1SAndroid Build Coastguard Worker    VENDOR_SECTION_START = CameraMetadataSection:VENDOR_SECTION << 16,
91*b9df5ad1SAndroid Build Coastguard Worker  % endif
92*b9df5ad1SAndroid Build Coastguard Worker
93*b9df5ad1SAndroid Build Coastguard Worker};
94*b9df5ad1SAndroid Build Coastguard Worker
95*b9df5ad1SAndroid Build Coastguard Worker% else:
96*b9df5ad1SAndroid Build Coastguard Worker// No new metadata sections added in this revision
97*b9df5ad1SAndroid Build Coastguard Worker
98*b9df5ad1SAndroid Build Coastguard Worker% endif
99*b9df5ad1SAndroid Build Coastguard Worker/**
100*b9df5ad1SAndroid Build Coastguard Worker * Main enumeration for defining camera metadata tags added in this revision
101*b9df5ad1SAndroid Build Coastguard Worker *
102*b9df5ad1SAndroid Build Coastguard Worker * <p>Partial documentation is included for each tag; for complete documentation, reference
103*b9df5ad1SAndroid Build Coastguard Worker * '/system/media/camera/docs/docs.html' in the corresponding Android source tree.</p>
104*b9df5ad1SAndroid Build Coastguard Worker */
105*b9df5ad1SAndroid Build Coastguard Workerenum CameraMetadataTag : ${'uint32_t' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '@%d.%d::CameraMetadataTag' % (hal_major_version(), hal_minor_version()-1)} {
106*b9df5ad1SAndroid Build Coastguard Worker    % for sec in find_all_sections(metadata):
107*b9df5ad1SAndroid Build Coastguard Worker<%    gotEntries = False %>\
108*b9df5ad1SAndroid Build Coastguard Worker      % for idx,entry in enumerate(filter_added_in_hal_version(remove_hal_non_visible(find_unique_entries(sec)), hal_major_version(), hal_minor_version())):
109*b9df5ad1SAndroid Build Coastguard Worker<%      gotEntries = True %>\
110*b9df5ad1SAndroid Build Coastguard Worker    /** ${entry.name} [${entry.kind}, ${annotated_type(entry)}, ${entry.applied_visibility}]
111*b9df5ad1SAndroid Build Coastguard Worker        % if entry.description:
112*b9df5ad1SAndroid Build Coastguard Worker     *
113*b9df5ad1SAndroid Build Coastguard Worker${entry.description | hidldoc(metadata)}\
114*b9df5ad1SAndroid Build Coastguard Worker        % endif
115*b9df5ad1SAndroid Build Coastguard Worker     */
116*b9df5ad1SAndroid Build Coastguard Worker        % if idx == 0:
117*b9df5ad1SAndroid Build Coastguard Worker          % if find_first_older_used_hal_version(sec, hal_major_version(), hal_minor_version()) == (0, 0):
118*b9df5ad1SAndroid Build Coastguard Worker    ${entry.name + " =" | csym} CameraMetadataSectionStart:${path_name(find_parent_section(entry)) | csym}_START,
119*b9df5ad1SAndroid Build Coastguard Worker          % else:
120*b9df5ad1SAndroid Build Coastguard Worker<%      prevVersion = find_first_older_used_hal_version(sec, hal_major_version(), hal_minor_version()) %>\
121*b9df5ad1SAndroid Build Coastguard Worker    ${entry.name + " =" | csym} ${'android.hardware.camera.metadata@%d.%d' % prevVersion}::CameraMetadataTag:${path_name(find_parent_section(entry)) | csym}${'_END' if prevVersion[1] == first_hal_minor_version(hal_major_version()) else '_END_%d_%d' % prevVersion},
122*b9df5ad1SAndroid Build Coastguard Worker          % endif
123*b9df5ad1SAndroid Build Coastguard Worker        % else:
124*b9df5ad1SAndroid Build Coastguard Worker    ${entry.name + "," | csym}
125*b9df5ad1SAndroid Build Coastguard Worker        % endif
126*b9df5ad1SAndroid Build Coastguard Worker
127*b9df5ad1SAndroid Build Coastguard Worker      % endfor
128*b9df5ad1SAndroid Build Coastguard Worker      % if gotEntries:
129*b9df5ad1SAndroid Build Coastguard Worker    ${path_name(sec) | csym}${'_END' if first_hal_minor_version(hal_major_version()) == hal_minor_version() else '_END_%d_%d' % (hal_major_version(),hal_minor_version())},
130*b9df5ad1SAndroid Build Coastguard Worker
131*b9df5ad1SAndroid Build Coastguard Worker      % endif
132*b9df5ad1SAndroid Build Coastguard Worker    %endfor
133*b9df5ad1SAndroid Build Coastguard Worker};
134*b9df5ad1SAndroid Build Coastguard Worker
135*b9df5ad1SAndroid Build Coastguard Worker/*
136*b9df5ad1SAndroid Build Coastguard Worker * Enumeration definitions for the various entries that need them
137*b9df5ad1SAndroid Build Coastguard Worker */
138*b9df5ad1SAndroid Build Coastguard Worker% for sec in find_all_sections(metadata):
139*b9df5ad1SAndroid Build Coastguard Worker  % for entry in filter_has_enum_values_added_in_hal_version(remove_hal_non_visible(find_unique_entries(sec)), hal_major_version(), hal_minor_version()):
140*b9df5ad1SAndroid Build Coastguard Worker    % if entry.enum:
141*b9df5ad1SAndroid Build Coastguard Worker
142*b9df5ad1SAndroid Build Coastguard Worker<%    isFirstValue = True %>\
143*b9df5ad1SAndroid Build Coastguard Worker<%    prevValue = None %>\
144*b9df5ad1SAndroid Build Coastguard Worker      % for val in entry.enum.values:
145*b9df5ad1SAndroid Build Coastguard Worker        % if val.hal_major_version == hal_major_version() and val.hal_minor_version == hal_minor_version():
146*b9df5ad1SAndroid Build Coastguard Worker          % if isFirstValue:
147*b9df5ad1SAndroid Build Coastguard Worker              % if prevValue is None:
148*b9df5ad1SAndroid Build Coastguard Worker/** ${entry.name} enumeration values
149*b9df5ad1SAndroid Build Coastguard Worker              % else:
150*b9df5ad1SAndroid Build Coastguard Worker/** ${entry.name} enumeration values added since v${prevValue.hal_major_version}.${prevValue.hal_minor_version}
151*b9df5ad1SAndroid Build Coastguard Worker              % endif
152*b9df5ad1SAndroid Build Coastguard Worker * @see ${entry.name | csym}
153*b9df5ad1SAndroid Build Coastguard Worker */
154*b9df5ad1SAndroid Build Coastguard Workerenum CameraMetadataEnum${entry.name | pascal_case} :${annotated_enum_type(entry) if prevValue is None else '\n        @%d.%d::CameraMetadataEnum%s' % (prevValue.hal_major_version, prevValue.hal_minor_version, pascal_case(entry.name))} {
155*b9df5ad1SAndroid Build Coastguard Worker          % endif
156*b9df5ad1SAndroid Build Coastguard Worker          % if val.id is None:
157*b9df5ad1SAndroid Build Coastguard Worker    ${entry.name | csym}_${val.name},
158*b9df5ad1SAndroid Build Coastguard Worker          % else:
159*b9df5ad1SAndroid Build Coastguard Worker    ${'%s_%s'%(csym(entry.name), val.name) | pad(65)} = ${val.id},
160*b9df5ad1SAndroid Build Coastguard Worker          % endif
161*b9df5ad1SAndroid Build Coastguard Worker<%        isFirstValue = False %>\
162*b9df5ad1SAndroid Build Coastguard Worker        % else:
163*b9df5ad1SAndroid Build Coastguard Worker<%        prevValue = val %>\
164*b9df5ad1SAndroid Build Coastguard Worker        % endif
165*b9df5ad1SAndroid Build Coastguard Worker      % endfor
166*b9df5ad1SAndroid Build Coastguard Worker};
167*b9df5ad1SAndroid Build Coastguard Worker    % endif
168*b9df5ad1SAndroid Build Coastguard Worker  % endfor
169*b9df5ad1SAndroid Build Coastguard Worker% endfor
170