hyperion.ng
LedDeviceHyperionUsbasp.h
1 #pragma once
2 
3 // stl includes
4 #include <vector>
5 #include <cstdint>
6 
7 // libusb include
8 #include <libusb.h>
9 
10 // Hyperion includes
11 #include <leddevice/LedDevice.h>
12 
17 {
18 public:
19  // Commands to the Device
20  enum Commands {
21  CMD_WRITE_WS2801 = 10,
22  CMD_WRITE_WS2812 = 11
23  };
24 
30  LedDeviceHyperionUsbasp(const QJsonObject &deviceConfig);
31 
37  bool init(const QJsonObject &deviceConfig);
38 
40  static LedDevice* construct(const QJsonObject &deviceConfig);
41 
45  virtual ~LedDeviceHyperionUsbasp();
46 
52  int open();
53 
54 protected:
62  virtual int write(const std::vector<ColorRgb>& ledValues);
63 
69  int testAndOpen(libusb_device * device);
70 
71  static libusb_device_handle * openDevice(libusb_device * device);
72 
73  static QString getString(libusb_device * device, int stringDescriptorIndex);
74 
77 
79  libusb_context * _libusbContext;
80 
82  libusb_device_handle * _deviceHandle;
83 
85  static uint16_t _usbVendorId;
86  static uint16_t _usbProductId;
87  static QString _usbProductDescription;
88 };
Interface (pure virtual base class) for LedDevices.
Definition: LedDevice.h:32
libusb_device_handle * _deviceHandle
libusb device handle
Definition: LedDeviceHyperionUsbasp.h:82
int open()
Opens and configures the output device.
Definition: LedDeviceHyperionUsbasp.cpp:61
LedDeviceHyperionUsbasp(const QJsonObject &deviceConfig)
Constructs specific LedDevice.
Definition: LedDeviceHyperionUsbasp.cpp:14
static LedDevice * construct(const QJsonObject &deviceConfig)
constructs leddevice
Definition: LedDeviceHyperionUsbasp.cpp:55
uint8_t _writeLedsCommand
command to write the leds
Definition: LedDeviceHyperionUsbasp.h:76
virtual int write(const std::vector< ColorRgb > &ledValues)
Writes the RGB-Color values to the leds.
Definition: LedDeviceHyperionUsbasp.cpp:140
virtual ~LedDeviceHyperionUsbasp()
Destructor of the LedDevice; closes the output device if it is open.
Definition: LedDeviceHyperionUsbasp.cpp:22
LedDevice implementation for a USBasp programmer with modified firmware (https://github.com/poljvd/hyperion-usbasp)
Definition: LedDeviceHyperionUsbasp.h:16
bool init(const QJsonObject &deviceConfig)
Sets configuration.
Definition: LedDeviceHyperionUsbasp.cpp:40
int testAndOpen(libusb_device *device)
Test if the device is a Hyperion Usbasp device.
Definition: LedDeviceHyperionUsbasp.cpp:103
static uint16_t _usbVendorId
Usb device identifiers.
Definition: LedDeviceHyperionUsbasp.h:85
libusb_context * _libusbContext
libusb context
Definition: LedDeviceHyperionUsbasp.h:79