blob: a6709f08832161d3fbbaadf33f0e5148dcf076b0 [file] [log] [blame]
## -*- coding: utf-8 -*-
/*
* Copyright (C) 2012 The Android Open Source Project
*
* Licensed under the Apache License, Version 2.0 (the "License");
* you may not use this file except in compliance with the License.
* You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an "AS IS" BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License for the specific language governing permissions and
* limitations under the License.
*/
/**
* !! Do not reference this file directly !!
*
* It is logically a part of camera_metadata.c. It is broken out for ease of
* maintaining the tag info.
*
* Array assignments are done using specified-index syntax to keep things in
* sync with camera_metadata_tags.h
*/
/**
* ! Do not edit this file directly !
*
* Generated automatically from camera_metadata_tag_info.mako
*/
const char *camera_metadata_section_names[ANDROID_SECTION_COUNT] = {
% for i in find_all_sections(metadata):
${"[%s]" %(path_name(i)) | csym,pad(36)} = "${path_name(i)}",
% endfor
};
unsigned int camera_metadata_section_bounds[ANDROID_SECTION_COUNT][2] = {
% for i in find_all_sections(metadata):
${"[%s]" %(path_name(i)) | csym,pad(36)} = { ${path_name(i) | csym}_START,
${path_name(i) | csym}_END },
% endfor
};
% for sec in find_all_sections(metadata):
static tag_info_t ${path_name(sec) | csyml}[${path_name(sec) | csym}_END -
${path_name(sec) | csym}_START] = {
% for entry in remove_synthetic(find_unique_entries(sec)):
[ ${entry.name | csym} - ${path_name(sec) | csym}_START ] =
{ ${'"%s",' %(entry.name_short) | pad(40)} ${entry.type | ctype_enum,ljust(11)} },
% endfor
};
% endfor
tag_info_t *tag_info[ANDROID_SECTION_COUNT] = {
% for i in find_all_sections(metadata):
${path_name(i) | csyml},
% endfor
};
static int32_t tag_permission_needed[${permission_needed_count(metadata)}] = {
% for sec in find_all_sections(metadata):
% for entry in remove_synthetic(filter_has_permission_needed(find_unique_entries(sec))):
${entry.name | csym},
% endfor
% endfor
};
int camera_metadata_enum_snprint(uint32_t tag,
uint32_t value,
char *dst,
size_t size) {
const char *msg = "error: not an enum";
int ret = -1;
switch(tag) {
% for sec in find_all_sections(metadata):
% for idx,entry in enumerate(remove_synthetic(find_unique_entries(sec))):
case ${entry.name | csym}: {
% if entry.enum:
switch (value) {
% for val in entry.enum.values:
case ${entry.name | csym}_${val.name}:
msg = "${val.name}";
ret = 0;
break;
% endfor
default:
msg = "error: enum value out of range";
}
% endif
break;
}
% endfor
%endfor
}
strncpy(dst, msg, size - 1);
dst[size - 1] = '\0';
return ret;
}
int camera_metadata_enum_value(uint32_t tag,
const char *name,
size_t size,
uint32_t *value) {
if ((name == NULL) || (value == NULL)) {
return -1;
}
const char *enumName = NULL;
int ret = -1;
switch(tag) {
% for sec in find_all_sections(metadata):
% for idx,entry in enumerate(remove_synthetic(find_unique_entries(sec))):
case ${entry.name | csym}: {
% if entry.enum:
% for val in entry.enum.values:
enumName = "${val.name}";
if (strncmp(name, enumName, size) == 0) {
*value = ${entry.name | csym}_${val.name};
ret = 0;
break;
}
% endfor
% endif
break;
}
% endfor
%endfor
}
return ret;
}
<%
find_values = lambda x: isinstance(x, metadata_model.EnumValue)
enum_values = metadata.find_all(find_values)
enum_value_max_len = max([len(value.name) for value in enum_values]) + 1
%>
#define CAMERA_METADATA_ENUM_STRING_MAX_SIZE ${enum_value_max_len}