From patchwork Wed Aug 3 11:21:43 2022 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Paul Elder X-Patchwork-Id: 16937 Return-Path: X-Original-To: parsemail@patchwork.libcamera.org Delivered-To: parsemail@patchwork.libcamera.org Received: from lancelot.ideasonboard.com (lancelot.ideasonboard.com [92.243.16.209]) by patchwork.libcamera.org (Postfix) with ESMTPS id B9507BE173 for ; Wed, 3 Aug 2022 11:22:05 +0000 (UTC) Received: from lancelot.ideasonboard.com (localhost [IPv6:::1]) by lancelot.ideasonboard.com (Postfix) with ESMTP id D2646603E6; Wed, 3 Aug 2022 13:22:04 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org; s=mail; t=1659525724; bh=a1zdUdGwfXBQbb4g0Vs1xAJ5GlDVFdqWiJB6wDxV0G8=; h=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe: List-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To: From; b=Es0x/UqhSvO1ki9CxsFCVonj8GlrOesHv8iNlvZBhVwuqblJhzkJclHakhMOwxTxC gWXrb7IF/WainnkLE7aCNyNzWZePyC0ZbrL8a8DTSfAPUzSpaaSPAqWijDjuQEAmSd YwvRV/fGc9hs+yHBq4NiduCo4aAfGVRCx7Yw/cAk6GHxH+U9wDMUnKdGk5VcmgXDaX oe5QIoCVrTnKo8ezpGiJJUefgTF4AJ+S8adx7SNG+jMI7WDNt/19X39diSfEHoXcdg VwGiohr2ZYXjQrSQnt2tFB1wAoRh8lvD54GnI6/66tEOBUBPLv3wd5gOk00P/p5FRj J7Zso9fCXXRRg== Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 82C07603E6 for ; Wed, 3 Aug 2022 13:22:03 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="NeC1ahir"; dkim-atps=neutral Received: from pyrite.rasen.tech (h175-177-042-159.catv02.itscom.jp [175.177.42.159]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id 54CA98B; Wed, 3 Aug 2022 13:22:02 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1659525723; bh=a1zdUdGwfXBQbb4g0Vs1xAJ5GlDVFdqWiJB6wDxV0G8=; h=From:To:Cc:Subject:Date:In-Reply-To:References:From; b=NeC1ahirX5iagmOTlt6M2b4vlEgIhQAa+ce9RhVxMtRmz/WgEPjqJc2WuhBl+G9XZ EYA5/hzYtWeJDaKDz5UgXKQnYvoNw9F0lDsPgMEkuHukgme57RKtPKY6x09VyGZu63 t5pt4Jl3DYV9VcxKhsF24FF9+W2v+bStFx+hGm4o= To: libcamera-devel@lists.libcamera.org Date: Wed, 3 Aug 2022 20:21:43 +0900 Message-Id: <20220803112150.3040287-3-paul.elder@ideasonboard.com> X-Mailer: git-send-email 2.30.2 In-Reply-To: <20220803112150.3040287-1-paul.elder@ideasonboard.com> References: <20220803112150.3040287-1-paul.elder@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/9] utils: ipc: Add support for enums in function parameters X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-Patchwork-Original-From: Paul Elder via libcamera-devel From: Paul Elder Reply-To: Paul Elder Errors-To: libcamera-devel-bounces@lists.libcamera.org Sender: "libcamera-devel" There is already support for enums as struct members, but there was no support for enums in function parameters. Add it. This does not add support for returning enums as direct return values. Signed-off-by: Paul Elder Reviewed-by: Laurent Pinchart --- .../libcamera_templates/proxy_functions.tmpl | 13 +++++++++++-- 1 file changed, 11 insertions(+), 2 deletions(-) diff --git a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl index bac826a7..dc35620f 100644 --- a/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl +++ b/utils/ipc/generators/libcamera_templates/proxy_functions.tmpl @@ -59,7 +59,11 @@ {%- else %} std::tie({{param.mojom_name}}Buf, std::ignore) = {%- endif %} +{%- if param|is_enum %} + IPADataSerializer::serialize(static_cast({{param.mojom_name}}) +{%- else %} IPADataSerializer<{{param|name}}>::serialize({{param.mojom_name}} +{% endif -%} {{- ", &controlSerializer_" if param|needs_control_serializer -}} ); {%- endfor %} @@ -97,7 +101,12 @@ # This code is meant to be used by macro deserialize_call. #} {%- macro deserialize_param(param, pointer, loop, buf, fds, iter, data_size) -%} -{{"*" if pointer}}{{param.mojom_name}} = IPADataSerializer<{{param|name}}>::deserialize( +{{"*" if pointer}}{{param.mojom_name}} = +{%- if param|is_enum %} +static_cast<{{param|name_full}}>(IPADataSerializer::deserialize( +{%- else %} +IPADataSerializer<{{param|name}}>::deserialize( +{%- endif %} {{buf}}{{- ".cbegin()" if not iter}} + {{param.mojom_name}}Start, {%- if loop.last and not iter %} {{buf}}.cend() @@ -121,7 +130,7 @@ {%- if param|needs_control_serializer %} &controlSerializer_ {%- endif -%} -); +){{")" if param|is_enum}}; {%- endmacro -%}