#ifndef usbController_H #define usbController_H #include #include #include #include #include #include #include #include #include #if defined(USB_CONTROLLER) && QT_VERSION < QT_VERSION_CHECK(6,0,0) #include #endif #if defined(USB_CONTROLLER) #ifndef Q_OS_WIN #include "hidapi/hidapi.h" #else #include "hidapi.h" #endif #ifdef HID_API_VERSION_MAJOR #ifndef HID_API_MAKE_VERSION #define HID_API_MAKE_VERSION(mj, mn, p) (((mj) << 24) | ((mn) << 8) | (p)) #endif #ifndef HID_API_VERSION #define HID_API_VERSION HID_API_MAKE_VERSION(HID_API_VERSION_MAJOR, HID_API_VERSION_MINOR, HID_API_VERSION_PATCH) #endif #if defined(__APPLE__) && HID_API_VERSION >= HID_API_MAKE_VERSION(0, 12, 0) #include #endif #if defined(USING_HIDAPI_LIBUSB) && HID_API_VERSION >= HID_API_MAKE_VERSION(0, 12, 0) #include #endif #endif #endif #ifndef Q_OS_WIN #include #endif // Include these so we have the various enums #include "rigidentities.h" using namespace std; #define HIDDATALENGTH 64 #define MAX_STR 255 struct COMMAND { COMMAND() {} COMMAND(int index, QString text, int command, char suffix) : index(index), text(text), command(command), suffix(suffix) {} COMMAND(int index, QString text, int command, availableBands band) : index(index), text(text), command(command), band(band) {} COMMAND(int index, QString text, int command, mode_kind mode) : index(index), text(text), command(command), mode(mode) {} int index=0; QString text; int command=0; unsigned char suffix=0x0; availableBands band=bandGen; mode_kind mode=modeLSB; }; struct BUTTON { BUTTON() {} BUTTON(quint8 dev, int num, QRect pos, const QColor textColour, COMMAND* on, COMMAND* off) : dev(dev), num(num), name(""), pos(pos), textColour(textColour), onCommand(on), offCommand(off) {} BUTTON(quint8 dev, QString name, QRect pos, const QColor textColour, COMMAND* on, COMMAND* off) : dev(dev), num(-1), name(name), pos(pos), textColour(textColour), onCommand(on), offCommand(off) {} quint8 dev; int num; QString name; QRect pos; QColor textColour; int onEvent = 0; int offEvent = 0; const COMMAND* onCommand=Q_NULLPTR; const COMMAND* offCommand=Q_NULLPTR; QGraphicsTextItem* onText; QGraphicsTextItem* offText; }; #if defined(USB_CONTROLLER) class usbController : public QObject { Q_OBJECT public: usbController(); ~usbController(); public slots: void init(int sens); void run(); void runTimer(); void ledControl(bool on, unsigned char num); void receiveCommands(QVector*); void receiveButtons(QVector