[libcamera-devel] [PATCH 2/2] cam: Add an option to list camera controls
Laurent Pinchart
laurent.pinchart at ideasonboard.com
Sat Apr 25 01:42:37 CEST 2020
Add a new --list-controls option to print information about all the
controls supported by a camera.
Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>
---
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__ */
--
Regards,
Laurent Pinchart
More information about the libcamera-devel
mailing list