#pragma once #include // libusb include #include // Leddevice includes #include /// /// The ProviderHID implements an abstract base-class for LedDevices using an HID-device. /// class ProviderHID : public LedDevice { Q_OBJECT public: /// /// Constructs specific LedDevice /// ProviderHID(); /// /// Destructor of the LedDevice; closes the output device if it is open /// virtual ~ProviderHID() override; /// /// Sets configuration /// /// @param deviceConfig the json device config /// @return true if success virtual bool init(const QJsonObject &deviceConfig) override; public slots: /// /// Closes the output device. /// Includes switching-off the device and stopping refreshes /// virtual void close() override; protected: /// /// Opens and configures the output device /// /// @return Zero on succes else negative /// int open() override; /** * Writes the given bytes to the HID-device and * * @param[in] size The length of the data * @param[in] data The data * * @return Zero on succes else negative */ int writeBytes(const unsigned size, const uint8_t *data); // HID VID and PID unsigned short _VendorId; unsigned short _ProductId; bool _useFeature; /// libusb device handle hid_device * _deviceHandle; /// Sleep after the connect before continuing int _delayAfterConnect_ms; bool _blockedForDelay; private slots: /// Unblock the device after a connection delay void unblockAfterDelay(); };