diff options
author | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2018-12-21 02:45:14 +0100 |
---|---|---|
committer | Niklas Söderlund <niklas.soderlund@ragnatech.se> | 2018-12-31 00:58:23 +0100 |
commit | 06e2ac2e2f5798463676f7d46dae7fcb67fc62da (patch) | |
tree | f812d81280cb7bcbf58f6c01e251d6746b38a89d | |
parent | 4db38e82a371b4a38955f74358b35d646123e928 (diff) |
libcamera: device_enumerator: add factory for DeviceEnumerators
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@ragnatech.se>
Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Reviewed-by: Jacopo Mondi <jacopo@jmondi.org>
-rw-r--r-- | src/libcamera/device_enumerator.cpp | 19 | ||||
-rw-r--r-- | src/libcamera/include/device_enumerator.h | 2 |
2 files changed, 21 insertions, 0 deletions
diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp index 8e8b280f..4373fdf0 100644 --- a/src/libcamera/device_enumerator.cpp +++ b/src/libcamera/device_enumerator.cpp @@ -121,6 +121,25 @@ bool DeviceMatch::match(const DeviceInfo *info) 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 + */ + + /* TODO: add a sysfs based enumerator */ + + return nullptr; +} + DeviceEnumerator::~DeviceEnumerator() { for (DeviceInfo *dev : devices_) { diff --git a/src/libcamera/include/device_enumerator.h b/src/libcamera/include/device_enumerator.h index 5348e6cf..24bca0e3 100644 --- a/src/libcamera/include/device_enumerator.h +++ b/src/libcamera/include/device_enumerator.h @@ -56,6 +56,8 @@ private: class DeviceEnumerator { public: + static DeviceEnumerator *create(); + virtual ~DeviceEnumerator(); virtual int init() = 0; |