mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
7551a06cf4
I have removed the 'hack' that allowed to use APA102 with original version of adalight. I have modified adalight code and placed it into dependencies folder. This change is not backward compatible, so it won't work with original adalight code. The reason for the change is that last leds were not acting as they should (last led red). Additionally with this change and new arduino code, performance is lot better and lights change much smoother. I have also changed switchOff method that requires different data sent to apa102 to turn all leds off. Enjoy :) Jacek Former-commit-id: 624fe6c429aee896b150d23289f0be19e040474d
51 lines
1.3 KiB
C++
51 lines
1.3 KiB
C++
#pragma once
|
|
|
|
// STL includes
|
|
#include <string>
|
|
|
|
// Qt includes
|
|
#include <QTimer>
|
|
|
|
// hyperion incluse
|
|
#include "LedDeviceAdalight.h"
|
|
|
|
///
|
|
/// Implementation of the LedDevice interface for writing to an Adalight led device for APA102.
|
|
///
|
|
class LedDeviceAdalightApa102 : public LedDeviceAdalight
|
|
{
|
|
Q_OBJECT
|
|
|
|
public:
|
|
///
|
|
/// Constructs the LedDevice for attached Adalight device
|
|
///
|
|
/// @param outputDevice The name of the output device (eg '/dev/ttyS0')
|
|
/// @param baudrate The used baudrate for writing to the output device
|
|
///
|
|
LedDeviceAdalightApa102(const std::string& outputDevice, const unsigned baudrate, int delayAfterConnect_ms);
|
|
|
|
///
|
|
/// Writes the led color values to the led-device
|
|
///
|
|
/// @param ledValues The color-value per led
|
|
/// @return Zero on succes else negative
|
|
///
|
|
virtual int write(const std::vector<ColorRgb> & ledValues);
|
|
virtual int switchOff();
|
|
|
|
|
|
private slots:
|
|
/// Write the last data to the leds again
|
|
void rewriteLeds();
|
|
|
|
private:
|
|
/// The buffer containing the packed RGB values
|
|
std::vector<uint8_t> _ledBuffer;
|
|
unsigned int ledCount;
|
|
/// Timer object which makes sure that led data is written at a minimum rate
|
|
/// The Adalight device will switch off when it does not receive data at least
|
|
/// every 15 seconds
|
|
QTimer _timer;
|
|
};
|