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>
This commit is contained in:
Niklas Söderlund 2020-08-06 14:24:22 +02:00
parent 93401c036d
commit 78fcf8e17c

View file

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