summaryrefslogtreecommitdiff
path: root/src/libcamera/device_enumerator.cpp
diff options
context:
space:
mode:
authorPaul Elder <paul.elder@ideasonboard.com>2019-05-02 16:50:49 -0400
committerPaul Elder <paul.elder@ideasonboard.com>2019-05-03 16:31:10 -0400
commit977cfbd526f2da1cfce5c5c2b187c83af3d3efdc (patch)
treebc80ecc5b23a7a78c1c019b31aff0ad62600339a /src/libcamera/device_enumerator.cpp
parent05ff3d56e04a33756a679d24fe5542e9e50935b4 (diff)
libcamera: device_enumerator: add DeviceEnumeratorSysfs class
A udev-based device enumerator is not sufficient, since libudev is an optional dependency, or udev might fail. In these cases, we should fall back to using sysfs to enumerate devices. Add a DeviceEnumeratorSysfs class which is a specialization of DeviceEnumerator that uses sysfs to enumerate media devices on the system. Signed-off-by: Paul Elder <paul.elder@ideasonboard.com> Reviewed-by: Laurent Pinchart <laurent.pinchart@ideasonboard.com>
Diffstat (limited to 'src/libcamera/device_enumerator.cpp')
-rw-r--r--src/libcamera/device_enumerator.cpp6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp
index f6878b3d..259eec41 100644
--- a/src/libcamera/device_enumerator.cpp
+++ b/src/libcamera/device_enumerator.cpp
@@ -6,6 +6,7 @@
*/
#include "device_enumerator.h"
+#include "device_enumerator_sysfs.h"
#include "device_enumerator_udev.h"
#include <string.h>
@@ -153,8 +154,9 @@ std::unique_ptr<DeviceEnumerator> DeviceEnumerator::create()
* Either udev is not available or udev initialization failed. Fall back
* on the sysfs enumerator.
*/
-
- /** \todo Add a sysfs-based enumerator. */
+ enumerator = utils::make_unique<DeviceEnumeratorSysfs>();
+ if (!enumerator->init())
+ return enumerator;
return nullptr;
}