diff options
-rw-r--r-- | include/libcamera/internal/device_enumerator.h | 1 | ||||
-rw-r--r-- | src/libcamera/device_enumerator.cpp | 14 |
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 */ |