From 2855c178b0457405f3b8bb6dfa4c7ebd0450b652 Mon Sep 17 00:00:00 2001 From: Jacopo Mondi Date: Tue, 8 Aug 2023 13:13:17 +0200 Subject: libcamera: device_match: Introduce USBDeviceMatch Introduce a USB-specific DeviceMatch derived class. Generalize the DeviceMatch::match() function by making its only parameter a CameraDevice instance and dynamically cast to the correct derived class in the overloaded match() functions. Signed-off-by: Jacopo Mondi --- include/libcamera/internal/device_match.h | 21 ++++++++++++++++++--- 1 file changed, 18 insertions(+), 3 deletions(-) (limited to 'include') diff --git a/include/libcamera/internal/device_match.h b/include/libcamera/internal/device_match.h index 6df7dece..e6608cac 100644 --- a/include/libcamera/internal/device_match.h +++ b/include/libcamera/internal/device_match.h @@ -12,12 +12,12 @@ namespace libcamera { -class MediaDevice; +class CameraDevice; class DeviceMatch { public: - virtual bool match(const MediaDevice *device) const = 0; + virtual bool match(const CameraDevice *device) const = 0; }; class MediaDeviceMatch : public DeviceMatch @@ -26,11 +26,26 @@ public: void add(const std::string &entity); MediaDeviceMatch(const std::string &driver); - bool match(const MediaDevice *device) const override; + bool match(const CameraDevice *device) const override; private: std::string driver_; std::vector entities_; }; +class USBDeviceMatch : public DeviceMatch +{ +public: + USBDeviceMatch(const std::string &vid, const std::string &pid) + : vid_(vid), pid_(pid) + { + } + + bool match(const CameraDevice *device) const override; + +private: + std::string vid_; + std::string pid_; +}; + }; /* namespace libcamera */ -- cgit v1.2.1