[v1] apps: cam: Highlight default enumerator
diff mbox series

Message ID 20250317181141.214118-1-barnabas.pocze@ideasonboard.com
State New
Headers show
Series
  • [v1] apps: cam: Highlight default enumerator
Related show

Commit Message

Barnabás Pőcze March 17, 2025, 6:11 p.m. UTC
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@ideasonboard.com>
---
 src/apps/cam/camera_session.cpp | 11 ++++++++++-
 1 file changed, 10 insertions(+), 1 deletion(-)

Comments

Jacopo Mondi March 17, 2025, 6:56 p.m. UTC | #1
Hi Barnabás

On Mon, Mar 17, 2025 at 07:11:41PM +0100, Barnabás Pőcze wrote:
> 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@ideasonboard.com>

Seems like a nice idea

Reviewed-by: Jacopo Mondi <jacopo.mondi@ideasonboard.com>

Thanks
  j

> ---
>  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
>
Kieran Bingham March 17, 2025, 9:43 p.m. UTC | #2
Quoting Barnabás Pőcze (2025-03-17 18:11:41)
> 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@ideasonboard.com>

I like this!


Reviewed-by: Kieran Bingham <kieran.bingham@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
>

Patch
diff mbox series

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