48 lines
1.0 KiB
C++
48 lines
1.0 KiB
C++
#ifndef LIBUSBWRAPPER_H
|
|
#define LIBUSBWRAPPER_H
|
|
|
|
#include <stdint.h>
|
|
#include <vector>
|
|
#include <string>
|
|
#include <libusb.h>
|
|
#include <memory>
|
|
|
|
void LibUsbInit();
|
|
void LibUsbDeInit();
|
|
|
|
class UsbDeviceHandle {
|
|
public:
|
|
UsbDeviceHandle(libusb_device_handle *handle);
|
|
~UsbDeviceHandle();
|
|
libusb_device_handle *m_handle;
|
|
};
|
|
|
|
class UsbDevice {
|
|
public:
|
|
UsbDevice(libusb_device *device);
|
|
UsbDevice(const UsbDevice &d) = default;
|
|
UsbDevice(UsbDevice &&d);
|
|
~UsbDevice();
|
|
static std::vector<UsbDevice> find_devices(uint16_t vendor_id, uint16_t product_id);
|
|
|
|
bool opened();
|
|
int open();
|
|
uint16_t get_vendor_id();
|
|
uint16_t get_product_id();
|
|
int control_transfer(uint8_t request_type, uint8_t bRequest, uint16_t wValue, uint16_t wIndex,
|
|
unsigned char *data, uint16_t wLength, unsigned int timeout);
|
|
const std::string &get_serial_number();
|
|
|
|
private:
|
|
std::shared_ptr<UsbDeviceHandle> device_handle;
|
|
libusb_device *dev;
|
|
uint16_t vendor_id;
|
|
uint16_t product_id;
|
|
std::string serial;
|
|
struct libusb_device_descriptor devdesc;
|
|
|
|
};
|
|
|
|
|
|
#endif // LIBUSBWRAPPER_H
|