[libcamera-devel] [PATCH 07/12] libcamera: deviceenumerator: add factory for DeviceEnumerators

Laurent Pinchart laurent.pinchart at ideasonboard.com
Sat Dec 29 00:30:20 CET 2018


Hi Niklas,

Thank you for the patch.

On Sunday, 23 December 2018 01:00:36 EET Niklas Söderlund wrote:
> Provide a factory for DeviceEnumerator objects. Depending on which
> libraries are available there will be different ways to enumerate
> information in the system. This factory hides this from the rest of the
> library.
> 
> Currently udev enumeration is the only supported implementation, a sysfs
> implementation is another method that surely will be added in the
> future.
> 
> Signed-off-by: Niklas Söderlund <niklas.soderlund at ragnatech.se>
> ---
>  src/libcamera/deviceenumerator.cpp       | 17 +++++++++++++++++
>  src/libcamera/include/deviceenumerator.h |  2 ++
>  2 files changed, 19 insertions(+)
> 
> diff --git a/src/libcamera/deviceenumerator.cpp
> b/src/libcamera/deviceenumerator.cpp index
> f4c40bf0376ab453..6d675fc78af8e586 100644
> --- a/src/libcamera/deviceenumerator.cpp
> +++ b/src/libcamera/deviceenumerator.cpp
> @@ -138,6 +138,23 @@ bool DeviceMatch::matchEntities(const
> std::vector<std::string> &entities) const * Enumerator Base
>   */
> 
> +DeviceEnumerator *DeviceEnumerator::create()
> +{
> +	DeviceEnumerator *enumerator;
> +
> +	/* TODO: add compile time checks to only try udev enumerator if libudev is
> available */
> +	enumerator = new DeviceEnumeratorUdev();
> +	if (!enumerator->init())
> +		return enumerator;
> +
> +	/* NOTE: Either udev is not available or initialization of it
> +	 * failed, use/fallback on sysfs enumerator */

Please have /* and */ on a line of their own.

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

> +
> +	/* TODO: add a sysfs based enumerator */
> +
> +	return NULL;
> +}
> +
>  DeviceEnumerator::~DeviceEnumerator()
>  {
>  	for (DeviceInfo *dev : devices_) {
> diff --git a/src/libcamera/include/deviceenumerator.h
> b/src/libcamera/include/deviceenumerator.h index
> 2c7ff3f336ba127d..6aa6e59d4a8a9729 100644
> --- a/src/libcamera/include/deviceenumerator.h
> +++ b/src/libcamera/include/deviceenumerator.h
> @@ -59,6 +59,8 @@ private:
>  class DeviceEnumerator
>  {
>  public:
> +	static DeviceEnumerator *create();
> +
>  	virtual ~DeviceEnumerator();
> 
>  	virtual int init() = 0;

-- 
Regards,

Laurent Pinchart





More information about the libcamera-devel mailing list