Add templates to mojo to generate code for the IPC mechanism. These templates generate: - module header - module serializer - IPA proxy cpp, header, and worker Given an input data definition mojom file for a pipeline. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Acked-by: Jacopo Mondi <jacopo@jmondi.org> Acked-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
87 lines
2.1 KiB
Cheetah
87 lines
2.1 KiB
Cheetah
{#-
|
|
# SPDX-License-Identifier: LGPL-2.1-or-later
|
|
# Copyright (C) 2020, Google Inc.
|
|
-#}
|
|
{%- import "definition_functions.tmpl" as funcs -%}
|
|
/* SPDX-License-Identifier: LGPL-2.1-or-later */
|
|
/*
|
|
* Copyright (C) 2020, Google Inc.
|
|
*
|
|
* {{module_name}}_ipa_interface.h - Image Processing Algorithm interface for {{module_name}}
|
|
*
|
|
* This file is auto-generated. Do not edit.
|
|
*/
|
|
|
|
#ifndef __LIBCAMERA_IPA_INTERFACE_{{module_name|upper}}_GENERATED_H__
|
|
#define __LIBCAMERA_IPA_INTERFACE_{{module_name|upper}}_GENERATED_H__
|
|
|
|
#include <libcamera/ipa/core_ipa_interface.h>
|
|
#include <libcamera/ipa/ipa_interface.h>
|
|
|
|
{% if has_map %}#include <map>{% endif %}
|
|
{% if has_array %}#include <vector>{% endif %}
|
|
|
|
namespace libcamera {
|
|
{%- if has_namespace %}
|
|
{% for ns in namespace %}
|
|
namespace {{ns}} {
|
|
{% endfor %}
|
|
{%- endif %}
|
|
|
|
{% for const in consts %}
|
|
const {{const.kind|name}} {{const.mojom_name}} = {{const.value}};
|
|
{% endfor %}
|
|
|
|
enum class {{cmd_enum_name}} {
|
|
Exit = 0,
|
|
{%- for method in interface_main.methods %}
|
|
{{method.mojom_name|cap}} = {{loop.index}},
|
|
{%- endfor %}
|
|
};
|
|
|
|
enum class {{cmd_event_enum_name}} {
|
|
{%- for method in interface_event.methods %}
|
|
{{method.mojom_name|cap}} = {{loop.index}},
|
|
{%- endfor %}
|
|
};
|
|
|
|
{% for enum in enums %}
|
|
{{funcs.define_enum(enum)}}
|
|
{% endfor %}
|
|
|
|
{%- for struct in structs_nonempty %}
|
|
{{funcs.define_struct(struct)}}
|
|
{% endfor %}
|
|
|
|
{#-
|
|
Any consts or #defines should be moved to the mojom file.
|
|
#}
|
|
class {{interface_name}} : public IPAInterface
|
|
{
|
|
public:
|
|
{% for method in interface_main.methods %}
|
|
virtual {{method|method_return_value}} {{method.mojom_name}}(
|
|
{%- for param in method|method_parameters %}
|
|
{{param}}{{- "," if not loop.last}}
|
|
{%- endfor -%}
|
|
) = 0;
|
|
{% endfor %}
|
|
|
|
{%- for method in interface_event.methods %}
|
|
Signal<
|
|
{%- for param in method.parameters -%}
|
|
{{"const " if not param|is_pod}}{{param|name}}{{" &" if not param|is_pod}}
|
|
{{- ", " if not loop.last}}
|
|
{%- endfor -%}
|
|
> {{method.mojom_name}};
|
|
{% endfor -%}
|
|
};
|
|
|
|
{%- if has_namespace %}
|
|
{% for ns in namespace|reverse %}
|
|
} /* namespace {{ns}} */
|
|
{% endfor %}
|
|
{%- endif %}
|
|
} /* namespace libcamera */
|
|
|
|
#endif /* __LIBCAMERA_IPA_INTERFACE_{{module_name|upper}}_GENERATED_H__ */
|