summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--include/libcamera/internal/device_enumerator.h1
-rw-r--r--src/libcamera/device_enumerator.cpp14
2 files changed, 15 insertions, 0 deletions
diff --git a/include/libcamera/internal/device_enumerator.h b/include/libcamera/internal/device_enumerator.h
index 1d6dbcb1..f4ee3499 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 1fde7367..0d983032 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 */