From patchwork Fri Apr 24 23:42:37 2020 Content-Type: text/plain; charset="utf-8" MIME-Version: 1.0 Content-Transfer-Encoding: 7bit X-Patchwork-Submitter: Laurent Pinchart X-Patchwork-Id: 3533 Return-Path: Received: from perceval.ideasonboard.com (perceval.ideasonboard.com [213.167.242.64]) by lancelot.ideasonboard.com (Postfix) with ESMTPS id 43D6562E67 for ; Sat, 25 Apr 2020 01:42:56 +0200 (CEST) Authentication-Results: lancelot.ideasonboard.com; dkim=pass (1024-bit key; unprotected) header.d=ideasonboard.com header.i=@ideasonboard.com header.b="CC2t049H"; dkim-atps=neutral Received: from pendragon.bb.dnainternet.fi (81-175-216-236.bb.dnainternet.fi [81.175.216.236]) by perceval.ideasonboard.com (Postfix) with ESMTPSA id C5D79528 for ; Sat, 25 Apr 2020 01:42:55 +0200 (CEST) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/simple; d=ideasonboard.com; s=mail; t=1587771775; bh=jyUCf09RAtUkTKbFGBsUykzR71BTvlI4RJ6/g6+jTMk=; h=From:To:Subject:Date:In-Reply-To:References:From; b=CC2t049HFbfHE8keqedheghhlNRwFgTb9MMGmBYz71AfDFnFKUkm6QynMVqBePIaB uXhQt72nwMFScopppb7k2fEQ5QT2MumeZOgq09zU0ehFe/vcvGB/J/qtAmsU1/Pr8W x/nGDIV2XYkaVx9iTM1HLN4uyNhbzBk+n/TJMKto= From: Laurent Pinchart To: libcamera-devel@lists.libcamera.org Date: Sat, 25 Apr 2020 02:42:37 +0300 Message-Id: <20200424234237.19604-2-laurent.pinchart@ideasonboard.com> X-Mailer: git-send-email 2.25.3 In-Reply-To: <20200424234237.19604-1-laurent.pinchart@ideasonboard.com> References: <20200424234237.19604-1-laurent.pinchart@ideasonboard.com> MIME-Version: 1.0 Subject: [libcamera-devel] [PATCH 2/2] cam: Add an option to list camera controls X-BeenThere: libcamera-devel@lists.libcamera.org X-Mailman-Version: 2.1.29 Precedence: list List-Id: List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , X-List-Received-Date: Fri, 24 Apr 2020 23:42:57 -0000 Add a new --list-controls option to print information about all the controls supported by a camera. Signed-off-by: Laurent Pinchart Reviewed-by: Jacopo Mondi --- src/cam/main.cpp | 28 ++++++++++++++++++++++++++++ src/cam/main.h | 1 + 2 files changed, 29 insertions(+) diff --git a/src/cam/main.cpp b/src/cam/main.cpp index 340849e74ddd..ced4f567b8f3 100644 --- a/src/cam/main.cpp +++ b/src/cam/main.cpp @@ -37,6 +37,7 @@ public: private: int parseOptions(int argc, char *argv[]); int prepareConfig(); + int listControls(); int listProperties(); int infoConfiguration(); int run(); @@ -182,6 +183,8 @@ int CamApp::parseOptions(int argc, char *argv[]) parser.addOption(OptInfo, OptionNone, "Display information about stream(s)", "info"); parser.addOption(OptList, OptionNone, "List all cameras", "list"); + parser.addOption(OptListControls, OptionNone, "List cameras controls", + "list-controls"); parser.addOption(OptListProperties, OptionNone, "List cameras properties", "list-properties"); @@ -276,6 +279,25 @@ int CamApp::prepareConfig() return 0; } +int CamApp::listControls() +{ + if (!camera_) { + std::cout << "Cannot list controls without a camera" + << std::endl; + return -EINVAL; + } + + for (const auto &ctrl : camera_->controls()) { + const ControlId *id = ctrl.first; + const ControlInfo &info = ctrl.second; + + std::cout << "Control: " << id->name() << ": " + << info.toString() << std::endl; + } + + return 0; +} + int CamApp::listProperties() { if (!camera_) { @@ -339,6 +361,12 @@ int CamApp::run() } } + if (options_.isSet(OptListControls)) { + ret = listControls(); + if (ret) + return ret; + } + if (options_.isSet(OptListProperties)) { ret = listProperties(); if (ret) diff --git a/src/cam/main.h b/src/cam/main.h index d23c6dfb202e..4a130d8dd290 100644 --- a/src/cam/main.h +++ b/src/cam/main.h @@ -16,6 +16,7 @@ enum { OptList = 'l', OptListProperties = 'p', OptStream = 's', + OptListControls = 256, }; #endif /* __CAM_MAIN_H__ */