[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