[libcamera-devel] [RFC 7/9] libcamera: device_enumerator: Search for USB devices
Jacopo Mondi
jacopo.mondi at ideasonboard.com
Tue Aug 8 14:52:26 CEST 2023
Add support for searching a USBDevice by providing a USBDeviceMatch
to the device enumerator.
Signed-off-by: Jacopo Mondi <jacopo.mondi at ideasonboard.com>
---
include/libcamera/internal/device_enumerator.h | 1 +
src/libcamera/device_enumerator.cpp | 14 ++++++++++++++
2 files changed, 15 insertions(+)
diff --git a/include/libcamera/internal/device_enumerator.h b/include/libcamera/internal/device_enumerator.h
index 1d6dbcb104b8..f4ee349906f2 100644
--- a/include/libcamera/internal/device_enumerator.h
+++ b/include/libcamera/internal/device_enumerator.h
@@ -31,6 +31,7 @@ public:
virtual int enumerate() = 0;
std::shared_ptr<MediaDevice> search(const MediaDeviceMatch &dm);
+ std::shared_ptr<USBDevice> search(const USBDeviceMatch &dm);
Signal<> devicesAdded;
diff --git a/src/libcamera/device_enumerator.cpp b/src/libcamera/device_enumerator.cpp
index 1fde7367cfa8..0d983032e2c6 100644
--- a/src/libcamera/device_enumerator.cpp
+++ b/src/libcamera/device_enumerator.cpp
@@ -271,4 +271,18 @@ std::shared_ptr<MediaDevice> DeviceEnumerator::search(const MediaDeviceMatch &dm
return nullptr;
}
+std::shared_ptr<USBDevice> DeviceEnumerator::search(const USBDeviceMatch &dm)
+{
+ for (std::shared_ptr<USBDevice> &usb : usbDevices_) {
+ if (dm.match(usb.get())) {
+ LOG(DeviceEnumerator, Debug)
+ << "Successful match for USB device "
+ << usb->vid() << "-" << usb->pid();
+ return usb;
+ }
+ }
+
+ return nullptr;
+}
+
} /* namespace libcamera */
--
2.40.1
More information about the libcamera-devel
mailing list