LibreVNA/Software/PC_Application/LibreVNA-GUI/Util/usbinbuffer.h

42 lines
865 B
C
Raw Normal View History

#ifndef USBINBUFFER_H
#define USBINBUFFER_H
2024-11-03 13:48:17 +01:00
#include <qglobal.h>
2024-11-03 13:43:00 +01:00
#ifdef Q_OS_MACOS
#include <libusb.h>
#else
#include <libusb-1.0/libusb.h>
2024-11-03 13:43:00 +01:00
#endif
#include <condition_variable>
#include <QObject>
class USBInBuffer : public QObject {
Q_OBJECT
public:
USBInBuffer(libusb_device_handle *handle, unsigned char endpoint, int buffer_size);
~USBInBuffer();
void removeBytes(int handled_bytes);
int getReceived() const;
uint8_t *getBuffer() const;
signals:
void DataReceived();
void TransferError();
private:
void Callback(libusb_transfer *transfer);
static void LIBUSB_CALL CallbackTrampoline(libusb_transfer *transfer);
libusb_transfer *transfer;
unsigned char *buffer;
int buffer_size;
int received_size;
bool inCallback;
bool cancelling;
std::condition_variable cv;
};
#endif // USBINBUFFER_H