[libcamera-devel] [PATCH v2 11/13] libcamera: Add ControlValidator

Niklas Söderlund niklas.soderlund at ragnatech.se
Thu Oct 3 21:44:42 CEST 2019


Hi Laurent,

Thanks for your work.

On 2019-09-29 22:02:52 +0300, Laurent Pinchart wrote:
> The new abstract ControlValidator class defines an interface that will
> be used by the ControlList class to validate controls. This will allow
> controls to the validated against different object types, such as Camera
> and V4L2Device.
> 
> Signed-off-by: Laurent Pinchart <laurent.pinchart at ideasonboard.com>

Reviewed-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>

> ---
>  src/libcamera/control_validator.cpp       | 45 +++++++++++++++++++++++
>  src/libcamera/include/control_validator.h | 27 ++++++++++++++
>  src/libcamera/include/meson.build         |  1 +
>  src/libcamera/meson.build                 |  1 +
>  4 files changed, 74 insertions(+)
>  create mode 100644 src/libcamera/control_validator.cpp
>  create mode 100644 src/libcamera/include/control_validator.h
> 
> diff --git a/src/libcamera/control_validator.cpp b/src/libcamera/control_validator.cpp
> new file mode 100644
> index 000000000000..8e5cf3c3e3ee
> --- /dev/null
> +++ b/src/libcamera/control_validator.cpp
> @@ -0,0 +1,45 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2019, Google Inc.
> + *
> + * control_validator.cpp - Control validator
> + */
> +
> +#include "control_validator.h"
> +
> +/**
> + * \file control_validator.h
> + * \brief Abstract control validator
> + */
> +
> +namespace libcamera {
> +
> +/**
> + * \class ControlValidator
> + * \brief Interface for the control validator
> + *
> + * The ControlValidator class is used by the ControlList class to validate
> + * controls added to the list. It is an abstract class providing an interface
> + * for object-specific control validation, such a Camera controls and V4L2
> + * controls.
> + */
> +
> +/**
> + * \fn ControlValidator::name()
> + * \brief Retrieve the name of the object associated with the validator
> + * \return The name of the object associated with the validator
> + */
> +
> +/**
> + * \fn ControlValidator::validate()
> + * \brief Validate a control
> + * \param[in] id The control ID
> + *
> + * This method validates the control \a id against the object corresponding to
> + * the validator. It shall at least validate that the control is applicable to
> + * the object instance, and may perform additional checks.
> + *
> + * \return True if the control is valid, false otherwise
> + */
> +
> +} /* namespace libcamera */
> diff --git a/src/libcamera/include/control_validator.h b/src/libcamera/include/control_validator.h
> new file mode 100644
> index 000000000000..3598b18f2f26
> --- /dev/null
> +++ b/src/libcamera/include/control_validator.h
> @@ -0,0 +1,27 @@
> +/* SPDX-License-Identifier: LGPL-2.1-or-later */
> +/*
> + * Copyright (C) 2019, Google Inc.
> + *
> + * control_validator.h - Control validator
> + */
> +#ifndef __LIBCAMERA_CONTROL_VALIDATOR_H__
> +#define __LIBCAMERA_CONTROL_VALIDATOR_H__
> +
> +#include <string>
> +
> +namespace libcamera {
> +
> +class ControlId;
> +
> +class ControlValidator
> +{
> +public:
> +	virtual ~ControlValidator() {}
> +
> +	virtual const std::string &name() const = 0;
> +	virtual bool validate(const ControlId &id) const = 0;
> +};
> +
> +} /* namespace libcamera */
> +
> +#endif /* __LIBCAMERA_CONTROL_VALIDATOR_H__ */
> diff --git a/src/libcamera/include/meson.build b/src/libcamera/include/meson.build
> index 933be8543a8d..1cf47204f2b5 100644
> --- a/src/libcamera/include/meson.build
> +++ b/src/libcamera/include/meson.build
> @@ -1,5 +1,6 @@
>  libcamera_headers = files([
>      'camera_sensor.h',
> +    'control_validator.h',
>      'device_enumerator.h',
>      'device_enumerator_sysfs.h',
>      'device_enumerator_udev.h',
> diff --git a/src/libcamera/meson.build b/src/libcamera/meson.build
> index 6df48365266d..c8a66cfc93d5 100644
> --- a/src/libcamera/meson.build
> +++ b/src/libcamera/meson.build
> @@ -5,6 +5,7 @@ libcamera_sources = files([
>      'camera_manager.cpp',
>      'camera_sensor.cpp',
>      'controls.cpp',
> +    'control_validator.cpp',
>      'device_enumerator.cpp',
>      'device_enumerator_sysfs.cpp',
>      'event_dispatcher.cpp',
> -- 
> Regards,
> 
> Laurent Pinchart
> 
> _______________________________________________
> libcamera-devel mailing list
> libcamera-devel at lists.libcamera.org
> https://lists.libcamera.org/listinfo/libcamera-devel

-- 
Regards,
Niklas Söderlund


More information about the libcamera-devel mailing list