[{"id":32377,"web_url":"https://patchwork.libcamera.org/comment/32377/","msgid":"<20241125230656.GZ19381@pendragon.ideasonboard.com>","date":"2024-11-25T23:06:56","subject":"Re: [PATCH 2/4] utils: codegen: controls.py: Parse direction\n\tinformation","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Paul,\n\nThank you for the patch.\n\nOn Tue, Nov 26, 2024 at 12:30:01AM +0900, Paul Elder wrote:\n> In preparation for adding support for querying direction information\n> from controls, parse the direction information from control ID\n> definitions. This can later be plugged in directly to the IPA code\n> generators simply by using ctrl.direction.\n> \n> Signed-off-by: Paul Elder <paul.elder@ideasonboard.com>\n> ---\n>  utils/codegen/controls.py | 21 +++++++++++++++++++++\n>  1 file changed, 21 insertions(+)\n> \n> diff --git a/utils/codegen/controls.py b/utils/codegen/controls.py\n> index 03c77cc64abe..bc1c655f1b9b 100644\n> --- a/utils/codegen/controls.py\n> +++ b/utils/codegen/controls.py\n> @@ -60,6 +60,15 @@ class Control(object):\n>  \n>              self.__size = num_elems\n>  \n> +        direction = self.__data.get('direction')\n> +        if direction is not None:\n> +            valid_values = ['in', 'out', 'inout']\n> +            if direction not in valid_values:\n\nYou can also write\n\n            if direction not in ['in', 'out', 'inout']:\n\nUp to you. With the changes proposed in a response to the cover letter,\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\n> +                raise RuntimeError(f'Control `{self.__name}` direction `{direction}` is invalid; must be one of `in`, `out`, or `inout`')\n> +            self.__direction = direction\n> +        else:\n> +            self.__direction = 'inout'\n> +\n>      @property\n>      def description(self):\n>          \"\"\"The control description\"\"\"\n> @@ -111,6 +120,18 @@ class Control(object):\n>          else:\n>              return f\"Span<const {typ}>\"\n>  \n> +    @property\n> +    def direction(self):\n> +        in_flag = 'static_cast<ControlId::DirectionFlags>(ControlId::Direction::In)'\n> +        out_flag = 'static_cast<ControlId::DirectionFlags>(ControlId::Direction::Out)'\n> +\n> +        if self.__direction == 'inout':\n> +            return f'{in_flag} | {out_flag}'\n> +        if self.__direction == 'in':\n> +            return in_flag\n> +        if self.__direction == 'out':\n> +            return out_flag\n> +\n>      @property\n>      def element_type(self):\n>          return self.__data.get('type')","headers":{"Return-Path":"<libcamera-devel-bounces@lists.libcamera.org>","X-Original-To":"parsemail@patchwork.libcamera.org","Delivered-To":"parsemail@patchwork.libcamera.org","Received":["from lancelot.ideasonboard.com (lancelot.ideasonboard.com\n\t[92.243.16.209])\n\tby patchwork.libcamera.org (Postfix) with ESMTPS id 860D5BD16B\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 25 Nov 2024 23:07:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 94C126605B;\n\tTue, 26 Nov 2024 00:07:08 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id E7C2465FF5\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tTue, 26 Nov 2024 00:07:06 +0100 (CET)","from pendragon.ideasonboard.com (81-175-209-231.bb.dnainternet.fi\n\t[81.175.209.231])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B9567526;\n\tTue, 26 Nov 2024 00:06:44 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"wSbK9jSI\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1732576004;\n\tbh=FVkvoHbjvEecFJIyk18LXE5osUwFKSRkc+05pJkjhPM=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=wSbK9jSI+Occ65F72fsj/mEsvXqtvWLTbHnwx+HrcFbvTUwDnfZUVArl5K3sFceKo\n\tYxE9krYCsFzNs66HrtsY40y90BtF3o9rgyLfU8NAUKzMUzNkVGvHn9grMU4x8PdGIk\n\tEehukPn0v8pylQpEQrJKgO64qu5a/mn0lv/9xH+E=","Date":"Tue, 26 Nov 2024 01:06:56 +0200","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Paul Elder <paul.elder@ideasonboard.com>","Cc":"libcamera-devel@lists.libcamera.org","Subject":"Re: [PATCH 2/4] utils: codegen: controls.py: Parse direction\n\tinformation","Message-ID":"<20241125230656.GZ19381@pendragon.ideasonboard.com>","References":"<20241125153003.3309066-1-paul.elder@ideasonboard.com>\n\t<20241125153003.3309066-3-paul.elder@ideasonboard.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20241125153003.3309066-3-paul.elder@ideasonboard.com>","X-BeenThere":"libcamera-devel@lists.libcamera.org","X-Mailman-Version":"2.1.29","Precedence":"list","List-Id":"<libcamera-devel.lists.libcamera.org>","List-Unsubscribe":"<https://lists.libcamera.org/options/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=unsubscribe>","List-Archive":"<https://lists.libcamera.org/pipermail/libcamera-devel/>","List-Post":"<mailto:libcamera-devel@lists.libcamera.org>","List-Help":"<mailto:libcamera-devel-request@lists.libcamera.org?subject=help>","List-Subscribe":"<https://lists.libcamera.org/listinfo/libcamera-devel>,\n\t<mailto:libcamera-devel-request@lists.libcamera.org?subject=subscribe>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]