<div dir="ltr"><div dir="ltr">Hi Laurent,<div><br></div><div>Thank you for your patch.</div></div><br><div class="gmail_quote"><div dir="ltr" class="gmail_attr">On Tue, 2 Mar 2021 at 15:05, Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com">laurent.pinchart@ideasonboard.com</a>> wrote:<br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">It can be useful for pipeline handlers to pass additional parameters to<br>
the IPA init() method. Allow doing so.<br>
<br>
Signed-off-by: Laurent Pinchart <<a href="mailto:laurent.pinchart@ideasonboard.com" target="_blank">laurent.pinchart@ideasonboard.com</a>><br>
---<br>
.../libcamera_templates/module_ipa_proxy.cpp.tmpl | 2 +-<br>
.../generators/libcamera_templates/proxy_functions.tmpl | 8 ++++++--<br>
utils/ipc/generators/mojom_libcamera_generator.py | 3 ---<br>
3 files changed, 7 insertions(+), 6 deletions(-)<br>
<br>
diff --git a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl b/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl<br>
index d451fab35e83..f2f9128b056c 100644<br>
--- a/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl<br>
+++ b/utils/ipc/generators/libcamera_templates/module_ipa_proxy.cpp.tmpl<br>
@@ -142,7 +142,7 @@ void {{proxy_name}}::recvMessage(const IPCMessage &data)<br>
{{proxy_funcs.func_sig(proxy_name, method, "Thread")}}<br>
{<br>
{%- if method.mojom_name == "init" %}<br>
- {{proxy_funcs.init_thread_body()}}<br>
+ {{proxy_funcs.init_thread_body(method)}}<br>
{%- elif method.mojom_name == "stop" %}<br>
{{proxy_funcs.stop_thread_body()}}<br>
{%- elif method.mojom_name == "start" %}<br>
diff --git a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl<br>
index 40611feb179b..222a2a63764d 100644<br>
--- a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl<br>
+++ b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl<br>
@@ -22,8 +22,12 @@<br>
{#<br>
# \brief Generate function body for IPA init() function for thread<br>
#}<br>
-{%- macro init_thread_body() -%}<br>
- int ret = ipa_->init(settings);<br>
+{%- macro init_thread_body(method) -%}<br>
+ int ret = ipa_->init(<br>
+ {%- for param in method|method_param_names -%}<br>
+ {{param}}{{- ", " if not loop.last}}<br>
+ {%- endfor -%}<br>
+);<br>
if (ret)<br>
return ret;<br>
<br>
diff --git a/utils/ipc/generators/mojom_libcamera_generator.py b/utils/ipc/generators/mojom_libcamera_generator.py<br>
index 438e41c649ad..2bfc4af23231 100644<br>
--- a/utils/ipc/generators/mojom_libcamera_generator.py<br>
+++ b/utils/ipc/generators/mojom_libcamera_generator.py<br>
@@ -346,10 +346,7 @@ def ValidateInterfaces(interfaces):<br>
f_stop = f_stop[0]<br>
<br>
# Validate parameters to init()<br>
- ValidateSingleLength(f_init.parameters, 'input parameter to init()')<br>
ValidateSingleLength(f_init.response_parameters, 'output parameter from init()')<br>
- if f_init.parameters[0].kind.mojom_name != 'IPASettings':<br>
- raise Exception('init() must have single IPASettings input parameter')<br>
if f_init.response_parameters[0].kind.spec != 'i32':<br>
raise Exception('init() must have single int32 output parameter')<br></blockquote><div><br></div><div>As discussed, it would be really useful if the restriction on the return value from init() could be relaxed as well.</div><div>Hopefully this will not be too complicated to achieve :-)</div><div><br></div><div>Regards,</div><div>Naush</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
-- <br>
Regards,<br>
<br>
Laurent Pinchart<br>
<br>
</blockquote></div></div>