Patch Detail
Show a patch.
GET /api/1.1/patches/8850/?format=api
{ "id": 8850, "url": "https://patchwork.libcamera.org/api/1.1/patches/8850/?format=api", "web_url": "https://patchwork.libcamera.org/patch/8850/", "project": { "id": 1, "url": "https://patchwork.libcamera.org/api/1.1/projects/1/?format=api", "name": "libcamera", "link_name": "libcamera", "list_id": "libcamera_core", "list_email": "libcamera-devel@lists.libcamera.org", "web_url": "", "scm_url": "", "webscm_url": "" }, "msgid": "<20200718132324.867815-2-niklas.soderlund@ragnatech.se>", "date": "2020-07-18T13:23:16", "name": "[libcamera-devel,1/9] libcamera: v4l2_device: Add method to lookup device path", "commit_ref": null, "pull_url": null, "state": "accepted", "archived": false, "hash": "8e71cf3fc5f14e1e4620c08a83d5c12ba8ed2557", "submitter": { "id": 5, "url": "https://patchwork.libcamera.org/api/1.1/people/5/?format=api", "name": "Niklas Söderlund", "email": "niklas.soderlund@ragnatech.se" }, "delegate": null, "mbox": "https://patchwork.libcamera.org/patch/8850/mbox/", "series": [ { "id": 1115, "url": "https://patchwork.libcamera.org/api/1.1/series/1115/?format=api", "web_url": "https://patchwork.libcamera.org/project/libcamera/list/?series=1115", "date": "2020-07-18T13:23:15", "name": "libcamera: camera: Add camera ID", "version": 1, "mbox": "https://patchwork.libcamera.org/series/1115/mbox/" } ], "comments": "https://patchwork.libcamera.org/api/patches/8850/comments/", "check": "pending", "checks": "https://patchwork.libcamera.org/api/patches/8850/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 82C30C0109\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSat, 18 Jul 2020 13:23:36 +0000 (UTC)", "from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id E0D13605A8;\n\tSat, 18 Jul 2020 15:23:34 +0200 (CEST)", "from vsp-unauthed02.binero.net (vsp-unauthed02.binero.net\n\t[195.74.38.227])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 6C3426053A\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSat, 18 Jul 2020 15:23:32 +0200 (CEST)", "from bismarck.berto.se (p4fca2eca.dip0.t-ipconnect.de\n\t[79.202.46.202]) by bin-vsp-out-01.atm.binero.net (Halon) with ESMTPA\n\tid df249a00-c8f9-11ea-933e-005056917a89;\n\tSat, 18 Jul 2020 15:23:30 +0200 (CEST)" ], "X-Halon-ID": "df249a00-c8f9-11ea-933e-005056917a89", "Authorized-sender": "niklas@soderlund.pp.se", "From": "=?utf-8?q?Niklas_S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>", "To": "libcamera-devel@lists.libcamera.org", "Date": "Sat, 18 Jul 2020 15:23:16 +0200", "Message-Id": "<20200718132324.867815-2-niklas.soderlund@ragnatech.se>", "X-Mailer": "git-send-email 2.27.0", "In-Reply-To": "<20200718132324.867815-1-niklas.soderlund@ragnatech.se>", "References": "<20200718132324.867815-1-niklas.soderlund@ragnatech.se>", "MIME-Version": "1.0", "Subject": "[libcamera-devel] [PATCH 1/9] libcamera: v4l2_device: Add method to\n\tlookup device path", "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>", "Content-Type": "text/plain; charset=\"utf-8\"", "Content-Transfer-Encoding": "base64", "Errors-To": "libcamera-devel-bounces@lists.libcamera.org", "Sender": "\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>" }, "content": "Add a method to lookup a V4L2 devices path in sysfs. The device path\ndescribes the bus and device backing the V4L2 device and is guaranteed\nto be unique in the system and is persistent between reboots of the\nsystem.\n\nSigned-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n---\n include/libcamera/internal/v4l2_device.h | 1 +\n src/libcamera/v4l2_device.cpp | 27 ++++++++++++++++++++++++\n 2 files changed, 28 insertions(+)", "diff": "diff --git a/include/libcamera/internal/v4l2_device.h b/include/libcamera/internal/v4l2_device.h\nindex bf643f2ec966bb33..3b605aab343b3b94 100644\n--- a/include/libcamera/internal/v4l2_device.h\n+++ b/include/libcamera/internal/v4l2_device.h\n@@ -30,6 +30,7 @@ public:\n \tint setControls(ControlList *ctrls);\n \n \tconst std::string &deviceNode() const { return deviceNode_; }\n+\tstd::string devicePath() const;\n \n protected:\n \tV4L2Device(const std::string &deviceNode);\ndiff --git a/src/libcamera/v4l2_device.cpp b/src/libcamera/v4l2_device.cpp\nindex 56ea1ddda2c1425f..2f95e45261463f34 100644\n--- a/src/libcamera/v4l2_device.cpp\n+++ b/src/libcamera/v4l2_device.cpp\n@@ -9,6 +9,7 @@\n \n #include <fcntl.h>\n #include <iomanip>\n+#include <limits.h>\n #include <string.h>\n #include <sys/ioctl.h>\n #include <sys/syscall.h>\n@@ -350,6 +351,32 @@ int V4L2Device::setControls(ControlList *ctrls)\n \treturn ret;\n }\n \n+/**\n+ * \\brief Retrieve the device path\n+ *\n+ * The device path describes the bus and device backing the V4L2 device and is\n+ * guaranteed to be unique in the system and is persistent between reboots of\n+ * the system.\n+ *\n+ * The path is located by utilising that every V4L2 device have an entry under\n+ * /sys/class/video4linux/ that contains a symlink the device backing it.\n+ *\n+ * \\todo When switching to C++17 use std::filesystem:: in the implementation.\n+ *\n+ * \\return The device path\n+ */\n+std::string V4L2Device::devicePath() const\n+{\n+\tstd::string vdev = basename(deviceNode_.c_str());\n+\tstd::string sysfs = \"/sys/class/video4linux/\" + vdev + \"/device\";\n+\n+\tchar path[PATH_MAX];\n+\tif (!realpath(sysfs.c_str(), path))\n+\t\tLOG(V4L2, Fatal) << \"Can not resolve path for \" << deviceNode_;\n+\n+\treturn path;\n+}\n+\n /**\n * \\brief Perform an IOCTL system call on the device node\n * \\param[in] request The IOCTL request code\n", "prefixes": [ "libcamera-devel", "1/9" ] }