[{"id":12026,"web_url":"https://patchwork.libcamera.org/comment/12026/","msgid":"<20200816132047.GH32174@pendragon.ideasonboard.com>","date":"2020-08-16T13:20:47","subject":"Re: [libcamera-devel] [PATCH v4 6/7] cam: Print user-friendly\n\tcamera names","submitter":{"id":2,"url":"https://patchwork.libcamera.org/api/people/2/","name":"Laurent Pinchart","email":"laurent.pinchart@ideasonboard.com"},"content":"Hi Niklas,\n\nReviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>\n\nOn Fri, Aug 14, 2020 at 12:37:21AM +0200, Niklas Söderlund wrote:\n> Instead of only printing the camera ID which is not intended for humans\n> to read and parse create a more user friendly string when printing\n> camera names. The ID is still printed as it is one option used to select\n> camera using the --camera option.\n> \n> Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se>\n> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com>\n> ---\n> * Changes since v1\n> - Only print user-friendly names when listing cameras.\n> - Update format of user-friendly names printed.\n> - Update commit message.\n> ---\n>  src/cam/main.cpp | 33 ++++++++++++++++++++++++++++++++-\n>  1 file changed, 32 insertions(+), 1 deletion(-)\n> \n> diff --git a/src/cam/main.cpp b/src/cam/main.cpp\n> index cc3facd5a5b22092..57f8c79b21090ece 100644\n> --- a/src/cam/main.cpp\n> +++ b/src/cam/main.cpp\n> @@ -21,6 +21,37 @@\n>  \n>  using namespace libcamera;\n>  \n> +std::string cameraName(const Camera *camera)\n> +{\n> +\tconst ControlList &props = camera->properties();\n> +\tstd::string name;\n> +\n> +\t/* Use camera model as fallback name if available. */\n> +\tif (props.contains(properties::Model))\n> +\t\tname = props.get(properties::Model);\n> +\telse\n> +\t\tname = \"Unknown camera\";\n\nDo we need this, given that the Location property is supposed to be\nmandatory ? With Umang's patch that hardcodes CameraLocationExternal in\nthe UVC pipeline handler, do we still have cases where Location isn't\nreported ?\n\n> +\n> +\t/* If camera location is available use it as highest priority name. */\n> +\tif (props.contains(properties::Location)) {\n> +\t\tswitch (props.get(properties::Location)) {\n> +\t\tcase properties::CameraLocationFront:\n> +\t\t\tname = \"Internal front camera\";\n> +\t\t\tbreak;\n> +\t\tcase properties::CameraLocationBack:\n> +\t\t\tname = \"Internal back camera\";\n> +\t\t\tbreak;\n> +\t\tcase properties::CameraLocationExternal:\n> +\t\t\tname = \"External camera\";\n> +\t\t\tbreak;\n> +\t\t}\n> +\t}\n> +\n> +\tname += \" (\" + camera->id() + \")\";\n> +\n> +\treturn name;\n> +}\n\nCan you make this a member of the CamApp class ?\n\n> +\n>  class CamApp\n>  {\n>  public:\n> @@ -340,7 +371,7 @@ int CamApp::run()\n>  \n>  \t\tunsigned int index = 1;\n>  \t\tfor (const std::shared_ptr<Camera> &cam : cm_->cameras()) {\n> -\t\t\tstd::cout << index << \": \" << cam->id() << std::endl;\n> +\t\t\tstd::cout << index << \": \" << cameraName(cam.get()) << std::endl;\n>  \t\t\tindex++;\n>  \t\t}\n>  \t}","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 69157BD87C\n\tfor <parsemail@patchwork.libcamera.org>;\n\tSun, 16 Aug 2020 13:21:05 +0000 (UTC)","from lancelot.ideasonboard.com (localhost [IPv6:::1])\n\tby lancelot.ideasonboard.com (Postfix) with ESMTP id C1CB461767;\n\tSun, 16 Aug 2020 15:21:04 +0200 (CEST)","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 C436560918\n\tfor <libcamera-devel@lists.libcamera.org>;\n\tSun, 16 Aug 2020 15:21:03 +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 357FAF9;\n\tSun, 16 Aug 2020 15:21:03 +0200 (CEST)"],"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=\"lVvtd0qO\"; dkim-atps=neutral","DKIM-Signature":"v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com;\n\ts=mail; t=1597584063;\n\tbh=Wnlj/2hmwb0x7gzuocM0++KjqFMgLxYoBYdaqKalkIE=;\n\th=Date:From:To:Cc:Subject:References:In-Reply-To:From;\n\tb=lVvtd0qOwS9Tkka6dVOj8FOhRpiX/CqCW4+u7nc0Y8ndylNBkzu3AUDqW7KUarI4d\n\tD27RXjYklFWRA1nA5Hdl+8x/Nm4HSdjqgWcMc6ZKJn8VrKJ1QzulLNkFc66G/ixHpd\n\tq7r04SthQpkD7XHlQUsr7g4vO5Af7/wpfqFEsI8c=","Date":"Sun, 16 Aug 2020 16:20:47 +0300","From":"Laurent Pinchart <laurent.pinchart@ideasonboard.com>","To":"Niklas =?utf-8?q?S=C3=B6derlund?= <niklas.soderlund@ragnatech.se>","Message-ID":"<20200816132047.GH32174@pendragon.ideasonboard.com>","References":"<20200813223722.4050835-1-niklas.soderlund@ragnatech.se>\n\t<20200813223722.4050835-7-niklas.soderlund@ragnatech.se>","MIME-Version":"1.0","Content-Disposition":"inline","In-Reply-To":"<20200813223722.4050835-7-niklas.soderlund@ragnatech.se>","Subject":"Re: [libcamera-devel] [PATCH v4 6/7] cam: Print user-friendly\n\tcamera names","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","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>"}}]