[libcamera-devel] [PATCH 02/15] libcamera: control_ids: Separate the id numerical space
Jacopo Mondi
jacopo at jmondi.org
Mon Jun 27 18:27:19 CEST 2022
Separate the internal and public control id numerical space by
placing the internal controls at offset 0x1000.
Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois at yoseli.org>
---
utils/gen-controls.py | 10 +++++++---
1 file changed, 7 insertions(+), 3 deletions(-)
diff --git a/utils/gen-controls.py b/utils/gen-controls.py
index 978179f63858..63e888546277 100755
--- a/utils/gen-controls.py
+++ b/utils/gen-controls.py
@@ -118,7 +118,7 @@ ${description}
}
-def generate_h(controls):
+def generate_h(internal, controls):
enum_template_start = string.Template('''enum ${name}Enum {''')
enum_value_template = string.Template('''\t${name} = ${value},''')
enum_values_template = string.Template('''extern const std::array<const ControlValue, ${size}> ${name}Values;''')
@@ -133,7 +133,11 @@ def generate_h(controls):
name, ctrl = ctrl.popitem()
id_name = snake_case(name).upper()
- ids.append('\t' + id_name + ' = ' + str(id_value) + ',')
+ # Separate the internal and public controls id space
+ if internal:
+ ids.append('\t' + id_name + ' = ' + "0x1000 | " + str(id_value) + ',')
+ else:
+ ids.append('\t' + id_name + ' = ' + str(id_value) + ',')
ctrl_type = ctrl['type']
if ctrl_type == 'string':
@@ -218,7 +222,7 @@ def main(argv):
if args.template.endswith('.cpp.in'):
data = generate_cpp(controls)
elif args.template.endswith('.h.in'):
- data = generate_h(controls)
+ data = generate_h(args.internal, controls)
else:
raise RuntimeError('Unknown template type')
--
2.36.1
More information about the libcamera-devel
mailing list