17b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin## -*- coding: utf-8 -*-
27b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin/*
37b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Copyright (C) 2012 The Android Open Source Project
47b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin *
57b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Licensed under the Apache License, Version 2.0 (the "License");
67b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * you may not use this file except in compliance with the License.
77b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * You may obtain a copy of the License at
87b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin *
97b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin *      http://www.apache.org/licenses/LICENSE-2.0
107b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin *
117b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Unless required by applicable law or agreed to in writing, software
127b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * distributed under the License is distributed on an "AS IS" BASIS,
137b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
147b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * See the License for the specific language governing permissions and
157b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * limitations under the License.
167b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin */
177b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
187b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin/**
197b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * !! Do not include this file directly !!
207b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin *
217b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Include camera_metadata.h instead.
227b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin */
237b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
247b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin/**
257b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * ! Do not edit this file directly !
267b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin *
277b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Generated automatically from camera_metadata_tags.mako
287b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin */
297b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
30f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala<%!
31f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala  def annotated_type(entry):
32f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala    if entry.enum:
33f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala       type = 'enum'
34f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala    else:
35f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala       type = entry.type
36f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala    if entry.container == 'array':
37f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala       type += '[]'
38f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala
39f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala    return type
40f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala%>\
41f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala\
427b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin/** TODO: Nearly every enum in this file needs a description */
437b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
447b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin/**
457b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Top level hierarchy definitions for camera metadata. *_INFO sections are for
467b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * the static metadata that can be retrived without opening the camera device.
477b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * New sections must be added right before ANDROID_SECTION_COUNT to maintain
487b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * existing enumerations.
497b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin */
507b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkintypedef enum camera_metadata_section {
517b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin  % for i in find_all_sections(metadata):
527b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin    ${path_name(i) | csym},
537b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin  % endfor
547b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin    ANDROID_SECTION_COUNT,
557b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
567b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin    VENDOR_SECTION = 0x8000
577b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin} camera_metadata_section_t;
587b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
597b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin/**
607b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Hierarchy positions in enum space. All vendor extension tags must be
617b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * defined with tag >= VENDOR_SECTION_START
627b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin */
637b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkintypedef enum camera_metadata_section_start {
647b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin  % for i in find_all_sections(metadata):
65da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin    ${path_name(i) + '.start' | csym,ljust(30)} = ${path_name(i) | csym,pad(64)} << 16,
667b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin  % endfor
677b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin    VENDOR_SECTION_START           = VENDOR_SECTION            << 16
687b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin} camera_metadata_section_start_t;
697b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
707b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin/**
717b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Main enum for defining camera metadata tags.  New entries must always go
727b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * before the section _END tag to preserve existing enumeration values.  In
737b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * addition, the name and type of the tag needs to be added to
747b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * system/media/camera/src/camera_metadata_tag_info.c
757b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin */
76e6b664671e35984156e06e17531311a09864ac8bIgor Murashkintypedef enum camera_metadata_tag {
777b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin    % for sec in find_all_sections(metadata):
786c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin      % for idx,entry in enumerate(remove_synthetic(find_unique_entries(sec))):
797b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin        % if idx == 0:
80dafa653b90c8ffff1a14202ee045c6374d737babEino-Ville Talvala    ${entry.name + " = " | csym,ljust(50)}// ${annotated_type(entry) | ljust(12)} | ${entry.applied_visibility | ljust(12)} | HIDL v${entry.hal_major_version}.${entry.hal_minor_version}
81f384f0a06cf156c51c4ca584a4323e132c15f64fEino-Ville Talvala            ${path_name(find_parent_section(entry)) | csym}_START,
827b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin        % else:
83dafa653b90c8ffff1a14202ee045c6374d737babEino-Ville Talvala    ${entry.name + "," | csym,ljust(50)}// ${annotated_type(entry) | ljust(12)} | ${entry.applied_visibility | ljust(12)} | HIDL v${entry.hal_major_version}.${entry.hal_minor_version}
847b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin        % endif
857b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin      % endfor
867b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin    ${path_name(sec) | csym}_END,
877b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
887b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin    %endfor
897b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin} camera_metadata_tag_t;
907b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
917b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin/**
927b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin * Enumeration definitions for the various entries that need them
937b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin */
947b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
957b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin% for sec in find_all_sections(metadata):
966c936c18e02b122baaa3d5056b0555b6cff256f8Igor Murashkin  % for entry in remove_synthetic(find_unique_entries(sec)):
97b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin    % if entry.enum:
987b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin// ${entry.name | csym}
997b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkintypedef enum camera_metadata_enum_${csym(entry.name).lower()} {
1007b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin      % for val in entry.enum.values:
1017b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin        % if val.id is None:
10263674ffbc0e519fdbbcd669ef0ffbff2c1991552Eino-Ville Talvala    ${entry.name | csym}_${val.name | pad(70)}, // HIDL v${val.hal_major_version}.${val.hal_minor_version}
1037b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin        % else:
10463674ffbc0e519fdbbcd669ef0ffbff2c1991552Eino-Ville Talvala    ${'%s_%s'%(csym(entry.name), val.name) | pad(70)} = ${val.id}, // HIDL v${val.hal_major_version}.${val.hal_minor_version}
1057b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin        % endif
1067b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin      % endfor
1077b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin} camera_metadata_enum_${csym(entry.name).lower()}_t;
1087b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
1097b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin    % endif
1107b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin  % endfor
1117b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin
1127b9a2dccf20bac314258708e55d8c75b2ecf892aIgor Murashkin%endfor
113