Files
ptouch-prnt/src/Usb.cpp

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