[{"id":18066,"web_url":"https://patchwork.libcamera.org/comment/18066/","msgid":"<20210709161351.sqfvd5zx6zexwz6g@uno.localdomain>","date":"2021-07-09T16:13:51","subject":"Re: [libcamera-devel] [PATCH v6 3/8] ipa: raspberrypi: Add an\n\toperator<< to struct DeviceStatus","submitter":{"id":3,"url":"https://patchwork.libcamera.org/api/people/3/","name":"Jacopo Mondi","email":"jacopo@jmondi.org"},"content":"Hi Naush,\n\nOn Fri, Jul 09, 2021 at 03:58:20PM +0100, Naushir Patuck wrote:\n> Add an operator<< overload to log all fields in DeviceStatus, and remove the\n> manual logging statements in the IPA and CamHelper.\n\nLibrary-wide we prefer the usage of toString() in order not to\noverload operator<< in a non-trvial way (although this might be\nconsidered trivial, as redirecting a variable to a stream has the\npredictable effect of printing it out :)\n\nHowever, this lives in your IPA, so up to you!\n\nReviewed-by: Jacopo Mondi <jacopo@jmondi.org>\n\nThanks\n   j\n\n>\n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> ---\n>  src/ipa/raspberrypi/cam_helper.cpp             |  5 +----\n>  src/ipa/raspberrypi/controller/device_status.h | 15 +++++++++++++++\n>  src/ipa/raspberrypi/raspberrypi.cpp            |  5 +----\n>  3 files changed, 17 insertions(+), 8 deletions(-)\n>\n> diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/raspberrypi/cam_helper.cpp\n> index e6d2258c66d7..1ec3f03e1aa3 100644\n> --- a/src/ipa/raspberrypi/cam_helper.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper.cpp\n> @@ -188,10 +188,7 @@ void CamHelper::parseEmbeddedData(Span<const uint8_t> buffer,\n>  \tdeviceStatus.shutter_speed = parsedDeviceStatus.shutter_speed;\n>  \tdeviceStatus.analogue_gain = parsedDeviceStatus.analogue_gain;\n>\n> -\tLOG(IPARPI, Debug) << \"Metadata updated - Exposure : \"\n> -\t\t\t   << deviceStatus.shutter_speed\n> -\t\t\t   << \" Gain : \"\n> -\t\t\t   << deviceStatus.analogue_gain;\n> +\tLOG(IPARPI, Debug) << \"Metadata updated - \" << deviceStatus;\n>\n>  \tmetadata.Set(\"device.status\", deviceStatus);\n>  }\n> diff --git a/src/ipa/raspberrypi/controller/device_status.h b/src/ipa/raspberrypi/controller/device_status.h\n> index 73df7ce228dd..e2511d19b96d 100644\n> --- a/src/ipa/raspberrypi/controller/device_status.h\n> +++ b/src/ipa/raspberrypi/controller/device_status.h\n> @@ -6,6 +6,8 @@\n>   */\n>  #pragma once\n>\n> +#include <iostream>\n> +\n>  #include <libcamera/base/utils.h>\n>\n>  /*\n> @@ -20,6 +22,19 @@ struct DeviceStatus {\n>  \t{\n>  \t}\n>\n> +\tfriend std::ostream &operator<<(std::ostream &out, const DeviceStatus &d)\n> +\t{\n> +\t\tusing namespace libcamera; /* for the Duration operator<< overload */\n> +\n> +\t\tout << \"Exposure: \" << d.shutter_speed\n> +\t\t    << \" Gain: \" << d.analogue_gain\n> +\t\t    << \" Aperture: \" << d.aperture\n> +\t\t    << \" Lens: \" << d.lens_position\n> +\t\t    << \" Flash: \" << d.flash_intensity;\n> +\n> +\t\treturn out;\n> +\t}\n> +\n>  \t/* time shutter is open */\n>  \tlibcamera::utils::Duration shutter_speed;\n>  \tdouble analogue_gain;\n> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\n> index 4d09a84f6532..f51c970befb5 100644\n> --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> @@ -1019,10 +1019,7 @@ void IPARPi::fillDeviceStatus(const ControlList &sensorControls)\n>  \tdeviceStatus.shutter_speed = helper_->Exposure(exposureLines);\n>  \tdeviceStatus.analogue_gain = helper_->Gain(gainCode);\n>\n> -\tLOG(IPARPI, Debug) << \"Metadata - Exposure : \"\n> -\t\t\t   << deviceStatus.shutter_speed\n> -\t\t\t   << \" Gain : \"\n> -\t\t\t   << deviceStatus.analogue_gain;\n> +\tLOG(IPARPI, Debug) << \"Metadata - \" << deviceStatus;\n>\n>  \trpiMetadata_.Set(\"device.status\", deviceStatus);\n>  }\n> --\n> 2.25.1\n>","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 5B4E2C3224\n\tfor <parsemail@patchwork.libcamera.org>;\n\tFri,  9 Jul 2021 16:13:06 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id CF71F6851D;\n\tFri,  9 Jul 2021 18:13:05 +0200 (CEST)","from relay4-d.mail.gandi.net (relay4-d.mail.gandi.net\n\t[217.70.183.196])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 60DFC605AC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tFri,  9 Jul 2021 18:13:04 +0200 (CEST)","(Authenticated sender: jacopo@jmondi.org)\n\tby relay4-d.mail.gandi.net (Postfix) with ESMTPSA id C5521E000B;\n\tFri,  9 Jul 2021 16:13:03 +0000 (UTC)"],"Date":"Fri, 9 Jul 2021 18:13:51 +0200","From":"Jacopo Mondi <jacopo@jmondi.org>","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<20210709161351.sqfvd5zx6zexwz6g@uno.localdomain>","References":"<20210709145825.2943443-1-naush@raspberrypi.com>\n\t<20210709145825.2943443-4-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210709145825.2943443-4-naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH v6 3/8] ipa: raspberrypi: Add an\n\toperator<< to struct DeviceStatus","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18078,"web_url":"https://patchwork.libcamera.org/comment/18078/","msgid":"<YOs+IYNexXQnOqqr@pendragon.ideasonboard.com>","date":"2021-07-11T18:53:21","subject":"Re: [libcamera-devel] [PATCH v6 3/8] ipa: raspberrypi: Add an\n\toperator<< to struct DeviceStatus","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Naush,\n\nThank you for the patch.\n\nOn Fri, Jul 09, 2021 at 03:58:20PM +0100, Naushir Patuck wrote:\n> Add an operator<< overload to log all fields in DeviceStatus, and remove the\n> manual logging statements in the IPA and CamHelper.\n> \n> Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> ---\n>  src/ipa/raspberrypi/cam_helper.cpp             |  5 +----\n>  src/ipa/raspberrypi/controller/device_status.h | 15 +++++++++++++++\n>  src/ipa/raspberrypi/raspberrypi.cpp            |  5 +----\n>  3 files changed, 17 insertions(+), 8 deletions(-)\n> \n> diff --git a/src/ipa/raspberrypi/cam_helper.cpp b/src/ipa/raspberrypi/cam_helper.cpp\n> index e6d2258c66d7..1ec3f03e1aa3 100644\n> --- a/src/ipa/raspberrypi/cam_helper.cpp\n> +++ b/src/ipa/raspberrypi/cam_helper.cpp\n> @@ -188,10 +188,7 @@ void CamHelper::parseEmbeddedData(Span<const uint8_t> buffer,\n>  \tdeviceStatus.shutter_speed = parsedDeviceStatus.shutter_speed;\n>  \tdeviceStatus.analogue_gain = parsedDeviceStatus.analogue_gain;\n>  \n> -\tLOG(IPARPI, Debug) << \"Metadata updated - Exposure : \"\n> -\t\t\t   << deviceStatus.shutter_speed\n> -\t\t\t   << \" Gain : \"\n> -\t\t\t   << deviceStatus.analogue_gain;\n> +\tLOG(IPARPI, Debug) << \"Metadata updated - \" << deviceStatus;\n>  \n>  \tmetadata.Set(\"device.status\", deviceStatus);\n>  }\n> diff --git a/src/ipa/raspberrypi/controller/device_status.h b/src/ipa/raspberrypi/controller/device_status.h\n> index 73df7ce228dd..e2511d19b96d 100644\n> --- a/src/ipa/raspberrypi/controller/device_status.h\n> +++ b/src/ipa/raspberrypi/controller/device_status.h\n> @@ -6,6 +6,8 @@\n>   */\n>  #pragma once\n>  \n> +#include <iostream>\n> +\n>  #include <libcamera/base/utils.h>\n>  \n>  /*\n> @@ -20,6 +22,19 @@ struct DeviceStatus {\n>  \t{\n>  \t}\n>  \n> +\tfriend std::ostream &operator<<(std::ostream &out, const DeviceStatus &d)\n> +\t{\n> +\t\tusing namespace libcamera; /* for the Duration operator<< overload */\n> +\n> +\t\tout << \"Exposure: \" << d.shutter_speed\n> +\t\t    << \" Gain: \" << d.analogue_gain\n> +\t\t    << \" Aperture: \" << d.aperture\n> +\t\t    << \" Lens: \" << d.lens_position\n> +\t\t    << \" Flash: \" << d.flash_intensity;\n> +\n> +\t\treturn out;\n> +\t}\n\nDoes this function need to be inline ? Moving it to a new\ndevice_status.cpp file would avoid duplicating the implementation in\nmultiple object files.\n\n> +\n>  \t/* time shutter is open */\n>  \tlibcamera::utils::Duration shutter_speed;\n>  \tdouble analogue_gain;\n> diff --git a/src/ipa/raspberrypi/raspberrypi.cpp b/src/ipa/raspberrypi/raspberrypi.cpp\n> index 4d09a84f6532..f51c970befb5 100644\n> --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> @@ -1019,10 +1019,7 @@ void IPARPi::fillDeviceStatus(const ControlList &sensorControls)\n>  \tdeviceStatus.shutter_speed = helper_->Exposure(exposureLines);\n>  \tdeviceStatus.analogue_gain = helper_->Gain(gainCode);\n>  \n> -\tLOG(IPARPI, Debug) << \"Metadata - Exposure : \"\n> -\t\t\t   << deviceStatus.shutter_speed\n> -\t\t\t   << \" Gain : \"\n> -\t\t\t   << deviceStatus.analogue_gain;\n> +\tLOG(IPARPI, Debug) << \"Metadata - \" << deviceStatus;\n>  \n>  \trpiMetadata_.Set(\"device.status\", deviceStatus);\n>  }","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 3200ABD794\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 11 Jul 2021 18:54:10 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 81E056851B;\n\tSun, 11 Jul 2021 20:54:09 +0200 (CEST)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[213.167.242.64])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 3E5DE68519\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 11 Jul 2021 20:54:07 +0200 (CEST)","from pendragon.ideasonboard.com (62-78-145-57.bb.dnainternet.fi\n\t[62.78.145.57])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id B1D77CC;\n\tSun, 11 Jul 2021 20:54:06 +0200 (CEST)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"Ku9cf01f\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1626029646;\n\tbh=0o1EF4gakJxZlLfz4G8byhFNmo8FXDdmnh2HJChaVIg=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=Ku9cf01fSaENvdPUBq0tODuqyCmMzA1DuVOyBv3+c+hKPYPqt0VY7/HrF+WxNRcNS\n\tFZs6FkLw8pzvAIQgm5M1jqYTKHu6aUoyEa1LP9t7Pzi2UW61NnEN4LNTGpS/Pxb7Sz\n\tSj3IEzVg/vtvvkgeHNkp6WuQrsUYozhg53koGMS8=","Date":"Sun, 11 Jul 2021 21:53:21 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Naushir Patuck <naush@raspberrypi.com>","Message-ID":"<YOs+IYNexXQnOqqr@pendragon.ideasonboard.com>","References":"<20210709145825.2943443-1-naush@raspberrypi.com>\n\t<20210709145825.2943443-4-naush@raspberrypi.com>","MIME-Version":"1.0","Content-Type":"text/plain; charset=utf-8","Content-Disposition":"inline","In-Reply-To":"<20210709145825.2943443-4-naush@raspberrypi.com>","Subject":"Re: [libcamera-devel] [PATCH v6 3/8] ipa: raspberrypi: Add an\n\toperator<< to struct DeviceStatus","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>","Cc":"libcamera-devel@lists.libcamera.org","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}},{"id":18106,"web_url":"https://patchwork.libcamera.org/comment/18106/","msgid":"<CAEmqJPqWAA+pnHDjxrS0V6LrF32jeF18KpEmZ5HV6EFDLs4Zsg@mail.gmail.com>","date":"2021-07-12T08:59:34","subject":"Re: [libcamera-devel] [PATCH v6 3/8] ipa: raspberrypi: Add an\n\toperator<< to struct DeviceStatus","submitter":{"id":34,"url":"https://patchwork.libcamera.org/api/people/34/","name":"Naushir Patuck","email":"naush@raspberrypi.com"},"content":"Hi Laurent,\n\nThank you for your review feedback.\n\nOn Sun, 11 Jul 2021 at 19:54, Laurent Pinchart <\nlaurent.pinchart@ideasonboard.com> wrote:\n\n> Hi Naush,\n>\n> Thank you for the patch.\n>\n> On Fri, Jul 09, 2021 at 03:58:20PM +0100, Naushir Patuck wrote:\n> > Add an operator<< overload to log all fields in DeviceStatus, and remove\n> the\n> > manual logging statements in the IPA and CamHelper.\n> >\n> > Signed-off-by: Naushir Patuck <naush@raspberrypi.com>\n> > Reviewed-by: David Plowman <david.plowman@raspberrypi.com>\n> > ---\n> >  src/ipa/raspberrypi/cam_helper.cpp             |  5 +----\n> >  src/ipa/raspberrypi/controller/device_status.h | 15 +++++++++++++++\n> >  src/ipa/raspberrypi/raspberrypi.cpp            |  5 +----\n> >  3 files changed, 17 insertions(+), 8 deletions(-)\n> >\n> > diff --git a/src/ipa/raspberrypi/cam_helper.cpp\n> b/src/ipa/raspberrypi/cam_helper.cpp\n> > index e6d2258c66d7..1ec3f03e1aa3 100644\n> > --- a/src/ipa/raspberrypi/cam_helper.cpp\n> > +++ b/src/ipa/raspberrypi/cam_helper.cpp\n> > @@ -188,10 +188,7 @@ void CamHelper::parseEmbeddedData(Span<const\n> uint8_t> buffer,\n> >       deviceStatus.shutter_speed = parsedDeviceStatus.shutter_speed;\n> >       deviceStatus.analogue_gain = parsedDeviceStatus.analogue_gain;\n> >\n> > -     LOG(IPARPI, Debug) << \"Metadata updated - Exposure : \"\n> > -                        << deviceStatus.shutter_speed\n> > -                        << \" Gain : \"\n> > -                        << deviceStatus.analogue_gain;\n> > +     LOG(IPARPI, Debug) << \"Metadata updated - \" << deviceStatus;\n> >\n> >       metadata.Set(\"device.status\", deviceStatus);\n> >  }\n> > diff --git a/src/ipa/raspberrypi/controller/device_status.h\n> b/src/ipa/raspberrypi/controller/device_status.h\n> > index 73df7ce228dd..e2511d19b96d 100644\n> > --- a/src/ipa/raspberrypi/controller/device_status.h\n> > +++ b/src/ipa/raspberrypi/controller/device_status.h\n> > @@ -6,6 +6,8 @@\n> >   */\n> >  #pragma once\n> >\n> > +#include <iostream>\n> > +\n> >  #include <libcamera/base/utils.h>\n> >\n> >  /*\n> > @@ -20,6 +22,19 @@ struct DeviceStatus {\n> >       {\n> >       }\n> >\n> > +     friend std::ostream &operator<<(std::ostream &out, const\n> DeviceStatus &d)\n> > +     {\n> > +             using namespace libcamera; /* for the Duration operator<<\n> overload */\n> > +\n> > +             out << \"Exposure: \" << d.shutter_speed\n> > +                 << \" Gain: \" << d.analogue_gain\n> > +                 << \" Aperture: \" << d.aperture\n> > +                 << \" Lens: \" << d.lens_position\n> > +                 << \" Flash: \" << d.flash_intensity;\n> > +\n> > +             return out;\n> > +     }\n>\n> Does this function need to be inline ? Moving it to a new\n> device_status.cpp file would avoid duplicating the implementation in\n> multiple object files.\n>\n\nNot necessary to be inline, but it was small enough that I did not think it\nwould\nmatter.\n\nI will send an update with this in its own cpp file.  Will also address\nyour other\nfeedback comments in the next update.\n\nRegards,\nNaush\n\n\n> > +\n> >       /* time shutter is open */\n> >       libcamera::utils::Duration shutter_speed;\n> >       double analogue_gain;\n> > diff --git a/src/ipa/raspberrypi/raspberrypi.cpp\n> b/src/ipa/raspberrypi/raspberrypi.cpp\n> > index 4d09a84f6532..f51c970befb5 100644\n> > --- a/src/ipa/raspberrypi/raspberrypi.cpp\n> > +++ b/src/ipa/raspberrypi/raspberrypi.cpp\n> > @@ -1019,10 +1019,7 @@ void IPARPi::fillDeviceStatus(const ControlList\n> &sensorControls)\n> >       deviceStatus.shutter_speed = helper_->Exposure(exposureLines);\n> >       deviceStatus.analogue_gain = helper_->Gain(gainCode);\n> >\n> > -     LOG(IPARPI, Debug) << \"Metadata - Exposure : \"\n> > -                        << deviceStatus.shutter_speed\n> > -                        << \" Gain : \"\n> > -                        << deviceStatus.analogue_gain;\n> > +     LOG(IPARPI, Debug) << \"Metadata - \" << deviceStatus;\n> >\n> >       rpiMetadata_.Set(\"device.status\", deviceStatus);\n> >  }\n>\n> --\n> Regards,\n>\n> Laurent Pinchart\n>","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 BB699C3224\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 12 Jul 2021 08:59:53 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 3FBD968524;\n\tMon, 12 Jul 2021 10:59:53 +0200 (CEST)","from mail-lj1-x22d.google.com (mail-lj1-x22d.google.com\n\t[IPv6:2a00:1450:4864:20::22d])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8D5AC68506\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jul 2021 10:59:51 +0200 (CEST)","by mail-lj1-x22d.google.com with SMTP id e20so22972796ljn.8\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 12 Jul 2021 01:59:51 -0700 (PDT)"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (2048-bit key;\n\tunprotected) header.d=raspberrypi.com header.i=@raspberrypi.com\n\theader.b=\"XXmBr4aq\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=raspberrypi.com; s=google;\n\th=mime-version:references:in-reply-to:from:date:message-id:subject:to\n\t:cc; bh=cNEFaLXuKD8E/TAGfniIosYpwocg6JcRbj2rYK9l8oA=;\n\tb=XXmBr4aqIWIs5nksaBWES3mMHRsxRi4ZmTZuV4r6r864C2YeYWHW54dBEE+9bel9Qf\n\tTQWv5qY8zjQ1+D3aIBy2iLqB5NEOmbOcLwVguVukpMxtdXeERpFh0E5EjaUO1HNFMTv0\n\t2CofcI/pY1s82cLge6B9CX7rvAWxjPKRbDGw9cuTDD+sCDbffINwM7GmxQibhS+fkerP\n\t1nTBfEbHEf4BOkLO1B6jXZHtpDwtiSRaPz9IX2GtjYTqs5C+LM2p6hXwF60zTQi5f8af\n\tXT594qzoK54uGIqL89/T4rxgXDLhK+WHzbbjSjxMNtI9QIm+Ez/+uU4wfRGwozi/mim5\n\tDu4w==","X-Google-DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/relaxed;\n\td=1e100.net; s=20161025;\n\th=x-gm-message-state:mime-version:references:in-reply-to:from:date\n\t:message-id:subject:to:cc;\n\tbh=cNEFaLXuKD8E/TAGfniIosYpwocg6JcRbj2rYK9l8oA=;\n\tb=BCpa6DdfH/Sk4/q/wBRRJdRXXBZHq1Ht2wVK5WF86eS7owZ6IE0vXolU6pTyhUqHgB\n\ti274IbUjVvNyvLmp2RZOykBuH4ye2L0uL5iarjF6qp6bOe03yjZVInfDGNyVEvG+Olvj\n\tP7Xq8CC5JuKOObbwfwpmD0yvIGOLcdGCeraAeR9XGwFqRkpaGiC+A1PE88OAsACtiohd\n\tBDlqQsbw6Z3qNlBCVPDEeBN8pyaoVsRQWR4l8XUuwDBMZEq7FCgEsTh9wVqc6VShEjzY\n\t8yk+e628NKsEXfMNiB+q8DWfmmcv4q8gPH2qKaa0krGH9TEtsIsPxhLU2DJHrefz6+HG\n\tp7gw==","X-Gm-Message-State":"AOAM533fGhKVZymkXAINBHfqVvaY8pe/clzzxaAzoGbr8F+59h1dqgIN\n\tweMAga6zijA4bltYeB7vAPtHmREVwfHglZQKM6H6gDjXgH0=","X-Google-Smtp-Source":"ABdhPJxa3re8O1RqdaDQzoOi8p0zCeiiq53wmUyFkMuoO33ANA+k5+BNSpBSSCmLyZImQBNV3Yd7um4EkmLW/fDGIFo=","X-Received":"by 2002:a2e:5816:: with SMTP id\n\tm22mr16225270ljb.329.1626080390904; \n\tMon, 12 Jul 2021 01:59:50 -0700 (PDT)","MIME-Version":"1.0","References":"<20210709145825.2943443-1-naush@raspberrypi.com>\n\t<20210709145825.2943443-4-naush@raspberrypi.com>\n\t<YOs+IYNexXQnOqqr@pendragon.ideasonboard.com>","In-Reply-To":"<YOs+IYNexXQnOqqr@pendragon.ideasonboard.com>","From":"Naushir Patuck <naush@raspberrypi.com>","Date":"Mon, 12 Jul 2021 09:59:34 +0100","Message-ID":"<CAEmqJPqWAA+pnHDjxrS0V6LrF32jeF18KpEmZ5HV6EFDLs4Zsg@mail.gmail.com>","To":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","Content-Type":"multipart/alternative; boundary=\"00000000000013919005c6e95809\"","Subject":"Re: [libcamera-devel] [PATCH v6 3/8] ipa: raspberrypi: Add an\n\toperator<< to struct DeviceStatus","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>","Cc":"libcamera devel <libcamera-devel@lists.libcamera.org>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"}}]