#include "Usb.hpp" #include #include #include #include namespace ptprnt::driver { Usb::Usb() { spdlog::debug("Usb constructing"); libusb_init(NULL); } Usb::~Usb() { spdlog::debug("Usb destructing"); } std::optional> Usb::getDevices() { libusb_device ** devs; libusb_device *dev; struct libusb_device_descriptor desc; int r,i=0; mDevices.clear(); libusb_get_device_list(NULL, &devs); while ((dev=devs[i++]) != NULL) { UsbDevice newDev; if ((r=libusb_get_device_descriptor(dev, &desc)) < 0) { spdlog::error("failed to open device"); libusb_free_device_list(devs, 1); return std::nullopt; } newDev.vendorId = desc.idVendor; newDev.productId = desc.idProduct; mDevices.push_back(newDev); } return mDevices; } } // namespace ptprnt::driver