Re-implemented USB device enumeration with new structure
This commit is contained in:
@@ -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
|
||||
Reference in New Issue
Block a user