{"id":10471,"url":"https://patchwork.libcamera.org/api/covers/10471/?format=json","web_url":"https://patchwork.libcamera.org/cover/10471/","project":{"id":1,"url":"https://patchwork.libcamera.org/api/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":"<20201123164319.152742-1-kieran.bingham@ideasonboard.com>","date":"2020-11-23T16:43:11","name":"[libcamera-devel,RFC,0/8] Configuration files and parsing","submitter":{"id":4,"url":"https://patchwork.libcamera.org/api/people/4/?format=json","name":"Kieran Bingham","email":"kieran.bingham@ideasonboard.com"},"mbox":"https://patchwork.libcamera.org/cover/10471/mbox/","series":[{"id":1477,"url":"https://patchwork.libcamera.org/api/series/1477/?format=json","web_url":"https://patchwork.libcamera.org/project/libcamera/list/?series=1477","date":"2020-11-23T16:43:11","name":"Configuration files and parsing","version":1,"mbox":"https://patchwork.libcamera.org/series/1477/mbox/"}],"comments":"https://patchwork.libcamera.org/api/covers/10471/comments/","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 5E549BE08A\n\tfor <parsemail@patchwork.libcamera.org>;\n\tMon, 23 Nov 2020 16:44:59 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id D0822633F4;\n\tMon, 23 Nov 2020 17:44:58 +0100 (CET)","from perceval.ideasonboard.com (perceval.ideasonboard.com\n\t[IPv6:2001:4b98:dc2:55:216:3eff:fef7:d647])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTPS id 2D4E7631D0\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tMon, 23 Nov 2020 17:44:58 +0100 (CET)","from Q.local (cpc89244-aztw30-2-0-cust3082.18-1.cable.virginm.net\n\t[86.31.172.11])\n\tby perceval.ideasonboard.com (Postfix) with ESMTPSA id 9C7A171;\n\tMon, 23 Nov 2020 17:44:57 +0100 (CET)"],"Authentication-Results":"lancelot.ideasonboard.com;\n\tdkim=fail reason=\"signature verification failed\" (1024-bit key;\n\tunprotected) header.d=ideasonboard.com header.i=@ideasonboard.com\n\theader.b=\"iDuoHs8T\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1606149897;\n\tbh=AZIPJgI//FwvVMTdAorcRFS6xZjo4BESd/6WAKRgIbY=;\n\th=From:To:Cc:Subject:Date:From;\n\tb=iDuoHs8Twj6XtieCGzmNe1KlZf8UIoRiNswt58JosTsdBYGsu2TkOb/de7RZsIW+X\n\tEh7QZq7CRbmpE54/DDNmS2hAPgYArmqi3lkKWF3FMdh1pnXlYZF2uydHlgidbGPaUs\n\tm7dmZZjqp79X1PRBv1SZE2cgn89N7pnfE7dh/V1g=","From":"Kieran Bingham <kieran.bingham@ideasonboard.com>","To":"libcamera devel <libcamera-devel@lists.libcamera.org>","Date":"Mon, 23 Nov 2020 16:43:11 +0000","Message-Id":"<20201123164319.152742-1-kieran.bingham@ideasonboard.com>","X-Mailer":"git-send-email 2.25.1","MIME-Version":"1.0","Subject":"[libcamera-devel] [RFC PATCH 0/8] Configuration files and parsing","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=\"us-ascii\"","Content-Transfer-Encoding":"7bit","Errors-To":"libcamera-devel-bounces@lists.libcamera.org","Sender":"\"libcamera-devel\" <libcamera-devel-bounces@lists.libcamera.org>"},"content":"A preliminary posting of a series which allows me to parse controls on a\nCameraSensor from a json file which overrides the location and rotation\nproperties.\n\nFor example, creating a camera_sensor.json file within the libcamera\nsysconf paths, with the following content can manually set the\nproperties:\n\npi@mercury:~/libcamera $ cat /usr/local/etc/libcamera/camera_sensor.json \n{\n  \"/base/soc/i2c0mux/i2c@1/imx219@10\": {\n\t\"properties\": {\n\t\t\"Rotation\" : 270,\n\t\t\"Location\" : 0\n\t}\n  }\n}\n\n\nThis implementation exposes the nlohmann json library to libcamera\ninternals rather than wrapping it and re-encoding a generic any-type\ninto another type.\n\nThe series starts out by cleaning up our meson files to easily obtain\nand parse the system paths from our config.h and cleans up the IPA meson\nto re-use those new variables.\n\nThe Configuration class instance itself is really only about finding and\nparsing the configuration files, and how the data is parsed is up to the\ninternal code that needs to use the files.\n\n\nKieran Bingham (8):\n  meson: Simplify pkg_mod.generate\n  src: meson: Re-order subdir layout\n  src: meson: Simplify v4l2 enablement\n  src: meson: Define system paths\n  src: ipa: meson: Re-use existing system paths\n  libcamera: Add configuration interface\n  test: Add configuration parser tests\n  libcamera: camera_sensor: Parse configuration properties\n\n README.rst                                 |   2 +-\n include/libcamera/internal/camera_sensor.h |   1 +\n include/libcamera/internal/configuration.h |  37 ++++++++\n meson.build                                |   3 +-\n src/ipa/meson.build                        |  16 ++--\n src/libcamera/camera_sensor.cpp            |  50 ++++++++++\n src/libcamera/configuration.cpp            |  91 ++++++++++++++++++\n src/libcamera/meson.build                  |   1 +\n src/meson.build                            |  23 ++++-\n src/v4l2/meson.build                       |   4 +\n test/configuration.cpp                     | 105 +++++++++++++++++++++\n test/data/test_configuration.json          |  15 +++\n test/data/unparsable.json                  |   7 ++\n test/meson.build                           |   1 +\n 14 files changed, 339 insertions(+), 17 deletions(-)\n create mode 100644 include/libcamera/internal/configuration.h\n create mode 100644 src/libcamera/configuration.cpp\n create mode 100644 test/configuration.cpp\n create mode 100644 test/data/test_configuration.json\n create mode 100644 test/data/unparsable.json"}