{"id":18234,"url":"https://patchwork.libcamera.org/api/1.1/patches/18234/?format=json","web_url":"https://patchwork.libcamera.org/patch/18234/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/1.1/projects/1/?format=json","name":"libcamera","link_name":"libcamera","list_id":"libcamera_core","list_email":"libcamera-devel@lists.libcamera.org","web_url":"","scm_url":"","webscm_url":""},"msgid":"<20230202111252.3366729-6-matthias.fend@emfend.at>","date":"2023-02-02T11:12:50","name":"[libcamera-devel,RFC,5/7] libcamera: v4l2_device: add function to get a list of volatile control ids","commit_ref":null,"pull_url":null,"state":"new","archived":false,"hash":"523b1558e90294da226ba665d62121a94b1f8618","submitter":{"id":134,"url":"https://patchwork.libcamera.org/api/1.1/people/134/?format=json","name":"Matthias Fend","email":"matthias.fend@emfend.at"},"delegate":null,"mbox":"https://patchwork.libcamera.org/patch/18234/mbox/","series":[{"id":3735,"url":"https://patchwork.libcamera.org/api/1.1/series/3735/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=3735","date":"2023-02-02T11:12:45","name":"add support for more complex optics","version":1,"mbox":"https://patchwork.libcamera.org/series/3735/mbox/"}],"comments":"https://patchwork.libcamera.org/api/patches/18234/comments/","check":"pending","checks":"https://patchwork.libcamera.org/api/patches/18234/checks/","tags":{},"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 5AC61C329E\n\tfor <parsemail@patchwork.libcamera.org>;\n\tThu,  2 Feb 2023 11:13:09 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id 064FF625EB;\n\tThu,  2 Feb 2023 12:13:08 +0100 (CET)","from lx20.hoststar.hosting (lx20.hoststar.hosting [168.119.41.54])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 8FB68625EC\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tThu,  2 Feb 2023 12:13:04 +0100 (CET)","from 194-208-208-245.tele.net ([194.208.208.245]:51050\n\thelo=localhost.localdomain)\n\tby lx20.hoststar.hosting with esmtpsa (TLS1.3) tls\n\tTLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.93)\n\t(envelope-from <matthias.fend@emfend.at>)\n\tid 1pNXWZ-008Uhs-Rb; Thu, 02 Feb 2023 12:13:04 +0100"],"DKIM-Signature":["v=1; a=rsa-sha256; c=relaxed/simple; d=libcamera.org;\n\ts=mail; t=1675336388;\n\tbh=tgUipenE8oUlCb1no8iYRMFLZZ7FJuEt91oSiSk9bu4=;\n\th=To:Date:In-Reply-To:References:Subject:List-Id:List-Unsubscribe:\n\tList-Archive:List-Post:List-Help:List-Subscribe:From:Reply-To:\n\tFrom;\n\tb=GSBitwgor1Yv/FbZ6XkX1B7BM8MiW/scfq+8axqbbT7DJoADJ8+2dXNQIWo6TLH+p\n\toGPY1fjjgnxmL5MRRdvjGsY09daFp+gVBfreFvCY2j9CuvnqC6PpW+X9eXdyE2oJ3P\n\t7hc8ZHLKokoF9n6jGwtVDxIh4z6umjzJQ4efZ8idPOGXDKigurZpf7p1ghvna5I+YE\n\tYgOATLk3ZzWjxpUpMbwyyBca36iVnPPcFfmouYzhjCZdY8CJp23gL59wFWx8zBs4+1\n\t1vznLRSrvoOY2I+iucYcbRZGvHPg7OMHQjyI45wAwnADGgDhg5ux45XzU+gTXhxjUc\n\tDuuzRel6KogqA==","v=1; a=rsa-sha256; q=dns/txt; c=relaxed/relaxed; d=emfend.at;\n\ts=mail;\n\th=Content-Transfer-Encoding:MIME-Version:References:In-Reply-To:\n\tMessage-Id:Date:Subject:Cc:To:From:Sender:Reply-To:Content-Type:Content-ID:\n\tContent-Description:Resent-Date:Resent-From:Resent-Sender:Resent-To:Resent-Cc\n\t:Resent-Message-ID:List-Id:List-Help:List-Unsubscribe:List-Subscribe:\n\tList-Post:List-Owner:List-Archive;\n\tbh=3xGQBeIlosTo1QuMaY675z/EeLWzWhTkVO4YNhiF80M=;\n\tb=X7QnafDy366Si4KVXBdfwv7zds\n\tHzbqF7qxEaIyf9KjsyJJgxq/ivGY9GjVDTzl6em2XvGg3qWD3JfI1bh3zBUHZJzQHSMowMIWDMxDm\n\tkH3N2P2QRmhB8WtXQaxlqu2J7Bony40NDgVmEm3wgLIXD5AoE8HRVxBkRyDe9pDsRtPI=;"],"Authentication-Results":"lancelot.ideasonboard.com; dkim=pass (1024-bit key; \n\tunprotected) header.d=emfend.at header.i=@emfend.at\n\theader.b=\"X7QnafDy\"; dkim-atps=neutral","To":"libcamera-devel@lists.libcamera.org","Date":"Thu,  2 Feb 2023 12:12:50 +0100","Message-Id":"<20230202111252.3366729-6-matthias.fend@emfend.at>","X-Mailer":"git-send-email 2.25.1","In-Reply-To":"<20230202111252.3366729-1-matthias.fend@emfend.at>","References":"<20230202111252.3366729-1-matthias.fend@emfend.at>","MIME-Version":"1.0","Content-Transfer-Encoding":"8bit","X-Spam-Score":"-1.0","X-Spam-Bar":"-","X-Spam-Report":"Spam detection software,\n\trunning on the system \"lx20.hoststar.hosting\", \n\thas NOT identified this incoming email as spam.  The original\n\tmessage has been attached to this so you can view it or label\n\tsimilar future email.  If you have any questions, see\n\tthe administrator of that system for details.\n\tContent preview: This method allows v4l2 controls to be read directly\n\tfrom\n\tthe underlying v4l2 subdevice. Signed-off-by: Matthias Fend\n\t<matthias.fend@emfend.at>\n\t--- include/libcamera/internal/camera_lens.h | 1 +\n\tsrc/libcamera/camera_lens.cpp\n\t| 5 +++++ 2 files changed, 6 insertions(+) \n\tContent analysis details:   (-1.0 points, 5.0 required)\n\tpts rule name              description\n\t---- ----------------------\n\t--------------------------------------------------\n\t-1.0 ALL_TRUSTED Passed through trusted hosts only via SMTP\n\t0.0 TVD_RCVD_IP            Message was received from an IP address\n\t0.0 KAM_DMARC_STATUS Test Rule for DKIM or SPF Failure with Strict\n\tAlignment","Subject":"[libcamera-devel] [RFC PATCH 5/7] libcamera: v4l2_device: add\n\tfunction to get a list of volatile control ids","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>","From":"Matthias Fend via libcamera-devel <libcamera-devel@lists.libcamera.org>","Reply-To":"Matthias Fend <matthias.fend@emfend.at>","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"This method returns all IDs of the v4l2 controls that are marked as\nvolatile.\n\nSigned-off-by: Matthias Fend <matthias.fend@emfend.at>\n---\n include/libcamera/internal/v4l2_device.h |  1 +\n src/libcamera/v4l2_device.cpp            | 15 +++++++++++++++\n 2 files changed, 16 insertions(+)","diff":"diff --git a/include/libcamera/internal/v4l2_device.h b/include/libcamera/internal/v4l2_device.h\nindex 50d4adbc..1c1de64a 100644\n--- a/include/libcamera/internal/v4l2_device.h\n+++ b/include/libcamera/internal/v4l2_device.h\n@@ -36,6 +36,7 @@ public:\n \n \tconst ControlInfoMap &controls() const { return controls_; }\n \n+\tstd::vector<uint32_t> getVolatileControlIds();\n \tControlList getControls(const std::vector<uint32_t> &ids);\n \tint setControls(ControlList *ctrls);\n \ndiff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\nindex 57a88d96..6605d36c 100644\n--- a/src/libcamera/v4l2_device.cpp\n+++ b/src/libcamera/v4l2_device.cpp\n@@ -147,6 +147,21 @@ void V4L2Device::close()\n \tfd_.reset();\n }\n \n+std::vector<uint32_t> V4L2Device::getVolatileControlIds()\n+{\n+\tstd::vector<uint32_t> ids;\n+\n+\tfor (auto &[controlId, controlInfo] : controls_) {\n+\t\tuint32_t id = controlId->id();\n+\t\tconst struct v4l2_query_ext_ctrl &info = controlInfo_[id];\n+\n+\t\tif (info.flags & V4L2_CTRL_FLAG_VOLATILE)\n+\t\t\tids.push_back(id);\n+\t}\n+\n+\treturn ids;\n+}\n+\n /**\n  * \\fn V4L2Device::isOpen()\n  * \\brief Check if the V4L2 device node is open\n","prefixes":["libcamera-devel","RFC","5/7"]}