cam: Add an option to list camera controls

Add a new --list-controls option to print information about all the
controls supported by a camera.

Signed-off-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
This commit is contained in:
Laurent Pinchart 2020-04-24 20:46:33 +03:00
parent 36ab14e12d
commit 175cd10611
2 changed files with 29 additions and 0 deletions

View file

@ -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)