@@ -11,6 +11,24 @@ import string
import sys
import yaml
+class define:
+ doc_template = string.Template('''/**
+ * \\def ${name}
+ * \\brief ${description} */''')
+ def_template = string.Template('''#define ${name} ${value}''')
+
+ def __init__(self, value):
+ self.info = {
+ 'name': value['name'],
+ 'value': value['value'],
+ 'description': value['description']
+ }
+
+ def dumpDoc(self):
+ return self.doc_template.substitute(self.info)
+
+ def dumpDef(self):
+ return self.def_template.substitute(self.info)
def snake_case(s):
return ''.join([c.isupper() and ('_' + c) or c for c in s]).strip('_')
@@ -35,14 +53,23 @@ ${description}
description[0] = '\\brief ' + description[0]
description = '\n'.join([(line and ' * ' or ' *') + line for line in description])
+ try:
+ values = ctrl['values']
+ except KeyError:
+ values = ""
+
info = {
'name': name,
'type': ctrl['type'],
'description': description,
'id_name': id_name,
+ 'values' : values,
}
+ for v in values:
+ ctrls_doc.append(define(v).dumpDoc())
ctrls_doc.append(doc_template.substitute(info))
+
ctrls_def.append(def_template.substitute(info))
ctrls_map.append('\t{ ' + id_name + ', &' + name + ' },')
@@ -66,11 +93,19 @@ def generate_h(controls):
ids.append('\t' + id_name + ' = ' + str(id_value) + ',')
+ try:
+ values = ctrl['values']
+ except KeyError:
+ values = ""
+
info = {
'name': name,
'type': ctrl['type'],
+ 'values' : values,
}
+ for v in values:
+ ctrls.append(define(v).dumpDef())
ctrls.append(template.substitute(info))
id_value += 1
In preparation to add libcamera Camera properties definition, re-using the control generation framework, augment the gen_controls.py script to support parsing possible Control and Properties values defined in the input yaml file. Signed-off-by: Jacopo Mondi <jacopo@jmondi.org> --- src/libcamera/gen-controls.py | 35 +++++++++++++++++++++++++++++++++++ 1 file changed, 35 insertions(+)