summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNiklas Söderlund <niklas.soderlund@ragnatech.se>2020-08-06 14:24:22 +0200
committerNiklas Söderlund <niklas.soderlund@ragnatech.se>2020-10-02 15:04:41 +0200
commit78fcf8e17c84c79385af1b0943b83bef9327b355 (patch)
tree743145eb75af36c42f141382a0c9396dc9a574ea
parent93401c036dd9ca166b26ff589c79d2645e0998f0 (diff)
cam: Print user-friendly camera names
Instead of only printing the camera ID which is not intended for humans to read and parse create a more user-friendly string when printing camera names. The ID is still printed as it is one option used to select camera using the --camera option. Signed-off-by: Niklas Söderlund <niklas.soderlund@ragnatech.se> Reviewed-by: Kieran Bingham <kieran.bingham@ideasonboard.com> Reviewed-by: Umang Jain <email@uajain.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
-rw-r--r--src/cam/main.cpp28
1 files changed, 27 insertions, 1 deletions
diff --git a/src/cam/main.cpp b/src/cam/main.cpp
index 244720b4..b3a8d94f 100644
--- a/src/cam/main.cpp
+++ b/src/cam/main.cpp
@@ -45,6 +45,8 @@ private:
int infoConfiguration();
int run();
+ std::string const cameraName(const Camera *camera);
+
static CamApp *app_;
OptionsParser::Options options_;
CameraManager *cm_;
@@ -340,7 +342,7 @@ int CamApp::run()
unsigned int index = 1;
for (const std::shared_ptr<Camera> &cam : cm_->cameras()) {
- std::cout << index << ": " << cam->id() << std::endl;
+ std::cout << index << ": " << cameraName(cam.get()) << std::endl;
index++;
}
}
@@ -378,6 +380,30 @@ int CamApp::run()
return 0;
}
+std::string const CamApp::cameraName(const Camera *camera)
+{
+ const ControlList &props = camera->properties();
+ std::string name;
+
+ switch (props.get(properties::Location)) {
+ case properties::CameraLocationFront:
+ name = "Internal front camera";
+ break;
+ case properties::CameraLocationBack:
+ name = "Internal back camera";
+ break;
+ case properties::CameraLocationExternal:
+ name = "External camera";
+ if (props.contains(properties::Model))
+ name += " '" + props.get(properties::Model) + "'";
+ break;
+ }
+
+ name += " (" + camera->id() + ")";
+
+ return name;
+}
+
void signalHandler([[maybe_unused]] int signal)
{
std::cout << "Exiting" << std::endl;