1da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin## -*- coding: utf-8 -*- 2da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin/* 3da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * Copyright (C) 2012 The Android Open Source Project 4da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * 5da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * Licensed under the Apache License, Version 2.0 (the "License"); 6da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * you may not use this file except in compliance with the License. 7da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * You may obtain a copy of the License at 8da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * 9da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * http://www.apache.org/licenses/LICENSE-2.0 10da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * 11da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * Unless required by applicable law or agreed to in writing, software 12da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * distributed under the License is distributed on an "AS IS" BASIS, 13da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 14da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * See the License for the specific language governing permissions and 15da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * limitations under the License. 16da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin */ 17da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin 18da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin/** 19da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * !! Do not reference this file directly !! 20da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * 21da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * It is logically a part of camera_metadata.c. It is broken out for ease of 22da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * maintaining the tag info. 23da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * 24da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * Array assignments are done using specified-index syntax to keep things in 25da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * sync with camera_metadata_tags.h 26da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin */ 27da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin 28da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin/** 29da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * ! Do not edit this file directly ! 30da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * 31da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin * Generated automatically from camera_metadata_tag_info.mako 32da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin */ 33da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin 34da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkinconst char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = { 35da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin % for i in find_all_sections(metadata): 36da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin ${"[%s]" %(path_name(i)) | csym,pad(36)} = "${path_name(i)}", 37da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin % endfor 38da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin}; 39da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin 40da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkinunsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = { 41da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin % for i in find_all_sections(metadata): 42da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin ${"[%s]" %(path_name(i)) | csym,pad(36)} = { ${path_name(i) | csym}_START, 43da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin ${path_name(i) | csym}_END }, 44da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin % endfor 45da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin}; 46da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin 47da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin% for sec in find_all_sections(metadata): 48da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkinstatic tag_info_t ${path_name(sec) | csyml}[${path_name(sec) | csym}_END - 49da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin ${path_name(sec) | csym}_START] = { 50da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin % for entry in find_unique_entries(sec): 51da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin [ ${entry.name | csym} - ${path_name(sec) | csym}_START ] = 52da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin { ${'"%s",' %(entry.name_short) | pad(40)} ${entry.type | ctype_enum,ljust(11)} }, 53da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin % endfor 54da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin}; 55da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin 56da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin% endfor 57da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin 58da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkintag_info_t *tag_info[ANDROID_SECTION_COUNT] = { 59da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin % for i in find_all_sections(metadata): 60da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin ${path_name(i) | csyml}, 61da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin % endfor 62da1c314e080d33eb6b93a1d3da070c99b41e7b22Igor Murashkin}; 63eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin 64eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkinint camera_metadata_enum_snprint(uint32_t tag, 65eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin uint32_t value, 66eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin char *dst, 67eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin size_t size) { 68eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin const char *msg = "error: not an enum"; 69eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin int ret = -1; 70eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin 71eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin switch(tag) { 72eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin % for sec in find_all_sections(metadata): 73eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin % for idx,entry in enumerate(find_unique_entries(sec)): 74eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin case ${entry.name | csym}: { 75b556bc47068d816cb319a5d0e2f6841b007b38f2Igor Murashkin % if entry.enum: 76eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin switch (value) { 77eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin % for val in entry.enum.values: 78eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin case ${entry.name | csym}_${val.name}: 79eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin msg = "${val.name}"; 80eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin ret = 0; 81eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin break; 82eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin % endfor 83eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin default: 84eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin msg = "error: enum value out of range"; 85eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin } 86eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin % endif 87eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin break; 88eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin } 89eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin % endfor 90eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin 91eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin %endfor 92eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin } 93eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin 94eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin strncpy(dst, msg, size - 1); 95eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin dst[size - 1] = '\0'; 96eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin 97eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin return ret; 98eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin} 99eaddcd48df722556c1bd541a37e4b2cc1391e9aeIgor Murashkin 100375cfd3889aa72160273af802370c8f47f5c64d1Igor Murashkin<% 101375cfd3889aa72160273af802370c8f47f5c64d1Igor Murashkin find_values = lambda x: isinstance(x, metadata_model.EnumValue) 102375cfd3889aa72160273af802370c8f47f5c64d1Igor Murashkin enum_values = metadata.find_all(find_values) 103375cfd3889aa72160273af802370c8f47f5c64d1Igor Murashkin enum_value_max_len = max([len(value.name) for value in enum_values]) + 1 104375cfd3889aa72160273af802370c8f47f5c64d1Igor Murashkin%> 105375cfd3889aa72160273af802370c8f47f5c64d1Igor Murashkin#define CAMERA_METADATA_ENUM_STRING_MAX_SIZE ${enum_value_max_len} 106