#pragma once #include "libusbwrap/interface/IUsbDeviceFactory.hpp" namespace libusbwrap { class UsbDeviceFactory : public IUsbDeviceFactory { public: UsbDeviceFactory(); ~UsbDeviceFactory(); bool init(); /** * @brief Gets all devices that are detected by libusb. Will allocate a shared_ptr for each Device * * @return std::vector> Vector of all detected USB devices */ std::vector> findAllDevices() override; /** * @brief Gets all devices with certain vid/pid combination. * If only one device of certain type is connected, vector is usually only one element * * @param vid VendorId of the devices to find * @param pid ProductId of the devices to find * @return std::vector> Vector of detected USB devices based on vid/pid */ std::vector> findDevices(uint16_t vid, uint16_t pid) override; private: // methods int refreshDeviceList(); // members libusb_context* mLibusbCtx{nullptr}; libusb_device** mLibusbDeviceList; }; } // namespace libusbwrap