46 lines
922 B
C++
46 lines
922 B
C++
#include "Usb.hpp"
|
|
|
|
#include <iostream>
|
|
#include <iomanip>
|
|
#include <optional>
|
|
#include <spdlog/spdlog.h>
|
|
|
|
namespace ptprnt::driver {
|
|
|
|
Usb::Usb() {
|
|
spdlog::debug("Usb constructing");
|
|
libusb_init(NULL);
|
|
}
|
|
Usb::~Usb() {
|
|
spdlog::debug("Usb destructing");
|
|
}
|
|
|
|
std::optional<std::vector<UsbDevice>> 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
|