From 7e1ff7441363c59c659023a3b1e66ea01aca236d Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Tue, 8 Aug 2023 13:34:50 +0200 Subject: libcamera: device_enumerator: Search for USB devices Add support for searching a USBDevice by providing a USBDeviceMatch to the device enumerator. Signed-off-by: Jacopo Mondi --- 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 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 search(const MediaDeviceMatch &dm); + std::shared_ptr 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 DeviceEnumerator::search(const MediaDeviceMatch &dm return nullptr; } +std::shared_ptr DeviceEnumerator::search(const USBDeviceMatch &dm) +{ + for (std::shared_ptr &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 */ -- cgit v1.2.1