[libcamera-devel] [PATCH 1/3] libcamera: control_ids: Add 'internal' argument

Jean-Michel Hautbois jeanmichel.hautbois at yoseli.org
Tue Jun 21 20:21:15 CEST 2022


Hi Jacopo,

Thanks for the patch !

On 21/06/2022 17:03, Jacopo Mondi via libcamera-devel wrote:
> Add to the gen-controls.py script an optional argument '--internal'
> that allows to specify if the generated file targets public or internal
> controls.

I don't have a better name, so let's go for internal :-):
Reviewed-by: Jean-Michel Hautbois <jeanmichel.hautbois at yoseli.org>

> 
> Add two new tags to the .cpp.in and .h.in templates to specify the
> correct inclusion path and the correct namespace.
> 
> Internal controls will be introduced in the next patch.
> 
> Signed-off-by: Jacopo Mondi <jacopo at jmondi.org>
> ---
>   include/libcamera/control_ids.h.in |  6 +++---
>   src/libcamera/control_ids.cpp.in   | 12 ++++++------
>   utils/gen-controls.py              | 14 ++++++++++++++
>   3 files changed, 23 insertions(+), 9 deletions(-)
> 
> diff --git a/include/libcamera/control_ids.h.in b/include/libcamera/control_ids.h.in
> index 0718a8886f6c..410cfb643a0b 100644
> --- a/include/libcamera/control_ids.h.in
> +++ b/include/libcamera/control_ids.h.in
> @@ -2,7 +2,7 @@
>   /*
>    * Copyright (C) 2019, Google Inc.
>    *
> - * control_ids.h - Control ID list
> + * ${include_prefix}control_ids.h - Control ID list
>    *
>    * This file is auto-generated. Do not edit.
>    */
> @@ -16,7 +16,7 @@
>   
>   namespace libcamera {
>   
> -namespace controls {
> +namespace controls${namespace_extension} {
>   
>   enum {
>   ${ids}
> @@ -32,6 +32,6 @@ ${draft_controls}
>   
>   } /* namespace draft */
>   
> -} /* namespace controls */
> +} /* namespace controls${namespace_extension} */
>   
>   } /* namespace libcamera */
> diff --git a/src/libcamera/control_ids.cpp.in b/src/libcamera/control_ids.cpp.in
> index 5fb1c2c30558..e7e1080e9324 100644
> --- a/src/libcamera/control_ids.cpp.in
> +++ b/src/libcamera/control_ids.cpp.in
> @@ -2,17 +2,17 @@
>   /*
>    * Copyright (C) 2019, Google Inc.
>    *
> - * control_ids.cpp : Control ID list
> + * ${include_prefix}control_ids.cpp : Control ID list
>    *
>    * This file is auto-generated. Do not edit.
>    */
>   
> -#include <libcamera/control_ids.h>
> +#include <libcamera/${include_prefix}control_ids.h>
>   #include <libcamera/controls.h>
>   
>   /**
> - * \file control_ids.h
> - * \brief Camera control identifiers
> + * \file libcamera/${include_prefix}control_ids.h
> + * \brief Control identifiers
>    */
>   
>   namespace libcamera {
> @@ -20,7 +20,7 @@ namespace libcamera {
>   /**
>    * \brief Namespace for libcamera controls
>    */
> -namespace controls {
> +namespace controls${namespace_extension} {
>   
>   ${controls_doc}
>   
> @@ -57,6 +57,6 @@ extern const ControlIdMap controls {
>   ${controls_map}
>   };
>   
> -} /* namespace controls */
> +} /* namespace controls${namespace_extension} */
>   
>   } /* namespace libcamera */
> diff --git a/utils/gen-controls.py b/utils/gen-controls.py
> index 3f99b5e2ba7d..978179f63858 100755
> --- a/utils/gen-controls.py
> +++ b/utils/gen-controls.py
> @@ -188,6 +188,17 @@ def fill_template(template, data):
>       return template.substitute(data)
>   
>   
> +def handle_internal_arg(internal, data):
> +
> +    if internal:
> +        data["namespace_extension"] = "::internal"
> +        data["include_prefix"] = "internal/"
> +        return
> +
> +    data["namespace_extension"] = ""
> +    data["include_prefix"] = ""
> +
> +
>   def main(argv):
>   
>       # Parse command line arguments
> @@ -198,6 +209,7 @@ def main(argv):
>                           help='Input file name.')
>       parser.add_argument('template', type=str,
>                           help='Template file name.')
> +    parser.add_argument('--internal', type=bool, default=False)
>       args = parser.parse_args(argv[1:])
>   
>       data = open(args.input, 'rb').read()
> @@ -210,6 +222,8 @@ def main(argv):
>       else:
>           raise RuntimeError('Unknown template type')
>   
> +    handle_internal_arg(args.internal, data)
> +
>       data = fill_template(args.template, data)
>   
>       if args.output:


More information about the libcamera-devel mailing list