xref: /aosp_15_r20/system/media/camera/docs/metadata_enums.py (revision b9df5ad1c9ac98a7fefaac271a55f7ae3db05414)
1*b9df5ad1SAndroid Build Coastguard Worker#
2*b9df5ad1SAndroid Build Coastguard Worker# Copyright (C) 2022 The Android Open Source Project
3*b9df5ad1SAndroid Build Coastguard Worker#
4*b9df5ad1SAndroid Build Coastguard Worker# Licensed under the Apache License, Version 2.0 (the "License");
5*b9df5ad1SAndroid Build Coastguard Worker# you may not use this file except in compliance with the License.
6*b9df5ad1SAndroid Build Coastguard Worker# You may obtain a copy of the License at
7*b9df5ad1SAndroid Build Coastguard Worker#
8*b9df5ad1SAndroid Build Coastguard Worker#      http://www.apache.org/licenses/LICENSE-2.0
9*b9df5ad1SAndroid Build Coastguard Worker#
10*b9df5ad1SAndroid Build Coastguard Worker# Unless required by applicable law or agreed to in writing, software
11*b9df5ad1SAndroid Build Coastguard Worker# distributed under the License is distributed on an "AS IS" BASIS,
12*b9df5ad1SAndroid Build Coastguard Worker# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13*b9df5ad1SAndroid Build Coastguard Worker# See the License for the specific language governing permissions and
14*b9df5ad1SAndroid Build Coastguard Worker# limitations under the License.
15*b9df5ad1SAndroid Build Coastguard Worker#
16*b9df5ad1SAndroid Build Coastguard Worker
17*b9df5ad1SAndroid Build Coastguard Worker"""
18*b9df5ad1SAndroid Build Coastguard WorkerGenerates aidl files for enums needed by camera metadata keys
19*b9df5ad1SAndroid Build Coastguard Worker"""
20*b9df5ad1SAndroid Build Coastguard Worker
21*b9df5ad1SAndroid Build Coastguard Workerimport sys
22*b9df5ad1SAndroid Build Coastguard Workerfrom datetime import datetime
23*b9df5ad1SAndroid Build Coastguard Workerfrom metadata_helpers import *
24*b9df5ad1SAndroid Build Coastguard Workerfrom metadata_parser_xml import *
25*b9df5ad1SAndroid Build Coastguard Workerfrom os.path import relpath
26*b9df5ad1SAndroid Build Coastguard Workerfrom os import getcwd
27*b9df5ad1SAndroid Build Coastguard Worker
28*b9df5ad1SAndroid Build Coastguard Workerif __name__ == "__main__":
29*b9df5ad1SAndroid Build Coastguard Worker  if len(sys.argv) <= 4:
30*b9df5ad1SAndroid Build Coastguard Worker    print("Usage: %s <filename.xml> <template_name> <output_directory> [<copyright_year>]"
31*b9df5ad1SAndroid Build Coastguard Worker          % (sys.argv[0]), file=sys.stderr)
32*b9df5ad1SAndroid Build Coastguard Worker    sys.exit(1)
33*b9df5ad1SAndroid Build Coastguard Worker
34*b9df5ad1SAndroid Build Coastguard Worker  file_name = sys.argv[1]
35*b9df5ad1SAndroid Build Coastguard Worker  template_name = sys.argv[2]
36*b9df5ad1SAndroid Build Coastguard Worker  output_dir = sys.argv[3]
37*b9df5ad1SAndroid Build Coastguard Worker  copyright_year = sys.argv[4] if len(sys.argv) > 4 else str(datetime.now().year)
38*b9df5ad1SAndroid Build Coastguard Worker
39*b9df5ad1SAndroid Build Coastguard Worker  parser = MetadataParserXml.create_from_file(file_name)
40*b9df5ad1SAndroid Build Coastguard Worker  metadata = parser.metadata
41*b9df5ad1SAndroid Build Coastguard Worker
42*b9df5ad1SAndroid Build Coastguard Worker  for sec in find_all_sections(metadata):
43*b9df5ad1SAndroid Build Coastguard Worker    for entry in remove_hal_non_visible(find_unique_entries(sec)):
44*b9df5ad1SAndroid Build Coastguard Worker      if entry.enum:
45*b9df5ad1SAndroid Build Coastguard Worker        enum_name = entry.name.removeprefix("android.")
46*b9df5ad1SAndroid Build Coastguard Worker        s = enum_name.split(".")
47*b9df5ad1SAndroid Build Coastguard Worker        s = [x[0].capitalize() + x[1:] for x in s]
48*b9df5ad1SAndroid Build Coastguard Worker        enum_name = ''.join(s)
49*b9df5ad1SAndroid Build Coastguard Worker        output_name = output_dir + "/" + enum_name + ".aidl"
50*b9df5ad1SAndroid Build Coastguard Worker        parser.render(template_name, output_name, entry.name, copyright_year)
51*b9df5ad1SAndroid Build Coastguard Worker        print("OK: Generated " + relpath(output_name, getcwd()))
52*b9df5ad1SAndroid Build Coastguard Worker
53*b9df5ad1SAndroid Build Coastguard Worker  sys.exit(0)
54