Re-implemented USB device enumeration with new structure

This commit is contained in:
2023-08-26 13:16:09 +02:00
parent 61e2352a3c
commit 779911e97e
8 changed files with 76 additions and 98 deletions

View File

@@ -1,35 +1,52 @@
#include "libusbwrap/UsbDevice.hpp"
#include <stdexcept>
#include "libusb.h"
#include "libusbwrap/interface/IUsbDevice.hpp"
namespace libusbwrap {
UsbDevice::UsbDevice() {}
UsbDevice::UsbDevice(libusb_context* ctx, libusb_device* dev) : mLibusbCtx(ctx), mLibusbDev(dev) {
if (mLibusbCtx == nullptr || mLibusbDev == nullptr) {
throw std::invalid_argument("ctx or device are nullptr");
}
UsbDevice::~UsbDevice() {}
Error UsbDevice::open() {
return Error::SUCCESS;
libusb_get_device_descriptor(dev, &mLibusbDevDesc);
}
void UsbDevice::close() {}
UsbDevice::~UsbDevice() {
// only free the device, not the context, which is shared between every device
// the UsbDeviceFactory will take care of that
if (mIsOpen) {
close();
}
}
Error UsbDevice::open() {
return static_cast<Error>(libusb_open(mLibusbDev, &mLibusbDevHandle));
}
void UsbDevice::close() {
libusb_close(mLibusbDevHandle);
}
const uint16_t UsbDevice::getVid() {
return 0x0000;
return mLibusbDevDesc.idVendor;
}
const uint16_t UsbDevice::getPid() {
return 0x0000;
return mLibusbDevDesc.idProduct;
}
const device::Speed UsbDevice::getSpeed() {
return device::Speed::FULL;
return static_cast<device::Speed>(libusb_get_device_speed(mLibusbDev));
}
const uint8_t UsbDevice::getBusNumber() {
return 0;
return libusb_get_bus_number(mLibusbDev);
}
const uint8_t UsbDevice::getPortNumber() {
return 0;
return libusb_get_port_number(mLibusbDev);
}
} // namespace libusbwrap