G.U.L.L.S/include/LEDHAL.h

50 lines
1004 B
C++

#ifndef LEDHAL_H
#define LEDHAL_H
#include "FastLED.h"
class LEDHAL {
public:
LEDHAL(char* _ledName, bool _isPhysical) :
ledName(_ledName), isPhysical(_isPhysical), showRequested(false) {}
virtual ~LEDHAL() { delete ledName; }
virtual char* getLEDName() { return ledName; }
virtual uint16_t getNumLEDs() = 0;
virtual bool getIsPhysical() { return isPhysical; }
virtual CRGB getColor(int16_t pixel) = 0;
virtual void setColor(int16_t pixel, CRGB color) = 0;
virtual void requestShow() { showRequested = true; }
//TODO UnifiedColor should have constants
virtual void clearLEDs() {
for(uint16_t i = 0; i < getNumLEDs(); i++) {
setColor(i, CRGB(0, 0, 0));
}
};
void show() {
if(showRequested) {
updateLEDs();
showRequested = false;
}
}
protected:
virtual void updateLEDs() {};
private:
char*
ledName;
bool
isPhysical,
showRequested;
};
#endif