[libcamera-devel,09/11] libcamera: v4l2_controls: Support U8 array controls

Message ID 20200309162414.720306-10-jacopo@jmondi.org
State Accepted
Headers show
Series
  • Adda support for V4L2 array control and strings
Related show

Commit Message

Jacopo Mondi March 9, 2020, 4:24 p.m. UTC
Add support for array controls of type V4L2_CTRL_TYPE_U8.

Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>
---
 src/libcamera/v4l2_controls.cpp | 9 +++++++++
 1 file changed, 9 insertions(+)

Comments

Laurent Pinchart March 20, 2020, 9:39 p.m. UTC | #1
Hi Jacopo,

Thank you for the patch.

On Mon, Mar 09, 2020 at 05:24:12PM +0100, Jacopo Mondi wrote:
> Add support for array controls of type V4L2_CTRL_TYPE_U8.
> 
> Signed-off-by: Jacopo Mondi <jacopo@jmondi.org>

Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>

> ---
>  src/libcamera/v4l2_controls.cpp | 9 +++++++++
>  1 file changed, 9 insertions(+)
> 
> diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp
> index 4861f9778df3..8e2415f2a6df 100644
> --- a/src/libcamera/v4l2_controls.cpp
> +++ b/src/libcamera/v4l2_controls.cpp
> @@ -60,6 +60,9 @@ std::string v4l2_ctrl_name(const struct v4l2_query_ext_ctrl &ctrl)
>  ControlType v4l2_ctrl_type(const struct v4l2_query_ext_ctrl &ctrl)
>  {
>  	switch (ctrl.type) {
> +	case V4L2_CTRL_TYPE_U8:
> +		return ControlTypeByte;
> +
>  	case V4L2_CTRL_TYPE_BOOLEAN:
>  		return ControlTypeBool;
>  
> @@ -119,6 +122,12 @@ V4L2ControlId::V4L2ControlId(const struct v4l2_query_ext_ctrl &ctrl)
>  V4L2ControlInfo::V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl)
>  {
>  	switch (ctrl.type) {
> +	case V4L2_CTRL_TYPE_U8:
> +		ControlInfo::operator=(ControlInfo(static_cast<uint8_t>(ctrl.minimum),
> +						   static_cast<uint8_t>(ctrl.maximum),
> +						   static_cast<uint8_t>(ctrl.default_value)));
> +		break;
> +
>  	case V4L2_CTRL_TYPE_BOOLEAN:
>  		ControlInfo::operator=(ControlInfo(static_cast<bool>(ctrl.minimum),
>  						   static_cast<bool>(ctrl.maximum),

Patch

diff --git a/src/libcamera/v4l2_controls.cpp b/src/libcamera/v4l2_controls.cpp
index 4861f9778df3..8e2415f2a6df 100644
--- a/src/libcamera/v4l2_controls.cpp
+++ b/src/libcamera/v4l2_controls.cpp
@@ -60,6 +60,9 @@  std::string v4l2_ctrl_name(const struct v4l2_query_ext_ctrl &ctrl)
 ControlType v4l2_ctrl_type(const struct v4l2_query_ext_ctrl &ctrl)
 {
 	switch (ctrl.type) {
+	case V4L2_CTRL_TYPE_U8:
+		return ControlTypeByte;
+
 	case V4L2_CTRL_TYPE_BOOLEAN:
 		return ControlTypeBool;
 
@@ -119,6 +122,12 @@  V4L2ControlId::V4L2ControlId(const struct v4l2_query_ext_ctrl &ctrl)
 V4L2ControlInfo::V4L2ControlInfo(const struct v4l2_query_ext_ctrl &ctrl)
 {
 	switch (ctrl.type) {
+	case V4L2_CTRL_TYPE_U8:
+		ControlInfo::operator=(ControlInfo(static_cast<uint8_t>(ctrl.minimum),
+						   static_cast<uint8_t>(ctrl.maximum),
+						   static_cast<uint8_t>(ctrl.default_value)));
+		break;
+
 	case V4L2_CTRL_TYPE_BOOLEAN:
 		ControlInfo::operator=(ControlInfo(static_cast<bool>(ctrl.minimum),
 						   static_cast<bool>(ctrl.maximum),