[PATCH v1] apps: cam: Highlight default enumerator

Barnabás Pőcze barnabas.pocze at ideasonboard.com
Mon Mar 17 19:11:41 CET 2025


Print "[default]" after the default enumerator when listing controls.

Example:

  $ cam -c 1 --list-controls
  [...]
  Control: [inout] libcamera::ExposureTimeMode:
    - ExposureTimeModeAuto (0) [default]
    - ExposureTimeModeManual (1)

Signed-off-by: Barnabás Pőcze <barnabas.pocze at ideasonboard.com>
---
 src/apps/cam/camera_session.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

diff --git a/src/apps/cam/camera_session.cpp b/src/apps/cam/camera_session.cpp
index 9e9348277..8a555339c 100644
--- a/src/apps/cam/camera_session.cpp
+++ b/src/apps/cam/camera_session.cpp
@@ -8,6 +8,7 @@
 #include <iomanip>
 #include <iostream>
 #include <limits.h>
+#include <optional>
 #include <sstream>
 
 #include <libcamera/control_ids.h>
@@ -173,6 +174,11 @@ void CameraSession::listControls() const
 			std::cout << "Control: " << io.str()
 				  << id->vendor() << "::" << id->name() << ":"
 				  << std::endl;
+
+			std::optional<int32_t> def;
+			if (!info.def().isNone())
+				def = info.def().get<int32_t>();
+
 			for (const auto &value : info.values()) {
 				int32_t val = value.get<int32_t>();
 				const auto &it = id->enumerators().find(val);
@@ -182,7 +188,10 @@ void CameraSession::listControls() const
 					std::cout << "UNKNOWN";
 				else
 					std::cout << it->second;
-				std::cout << " (" << val << ")" << std::endl;
+
+				std::cout << " (" << val << ")"
+					  << (val == def ? " [default]" : "")
+					  << std::endl;
 			}
 		}
 
-- 
2.49.0



More information about the libcamera-devel mailing list