diff --git a/include/LEDHAL.h b/include/LEDHAL.h index 6f8393b..35670c2 100644 --- a/include/LEDHAL.h +++ b/include/LEDHAL.h @@ -21,7 +21,6 @@ class LEDHAL { 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)); diff --git a/include/Manager.h b/include/Manager.h new file mode 100644 index 0000000..9437c74 --- /dev/null +++ b/include/Manager.h @@ -0,0 +1,56 @@ +#ifndef MANAGER_H +#define MANAGER_H + +#include +#include +#include +#include + +class Manager { + public: + Manager() {} + virtual ~Manager() {} // TODO Cleanup linked lists? + + void addLEDs(LEDHAL* hal) { + // TODO Duplicate name checks + + ledHALs.add(hal); + } + + LEDHAL* removeLEDsByName(char* name) { + for(uint16_t i = 0; i < ledHALs.size(); i++) { + if(strcmp(ledHALs.get(i)->getLEDName(), name) == 0) { + return ledHALs.remove(i); + } + } + } + + void addAnimation(AnimationBase* animation) { + // TODO Duplicate name checks + + animations.add(animation); + } + + AnimationBase* removeAnimationByName(char* name) { + for(uint16_t i = 0; i < animations.size(); i++) { + return animations.remove(i); + } + } + + void update() { + for(uint16_t i = 0; i < animations.size(); i++) { + animations.get(i)->update(); + } + + for(uint16_t i = 0; i < ledHALs.size(); i++) { + ledHALs.get(i)->show(); + } + } + private: + LinkedList + ledHALs; + LinkedList + animations; +}; + +#endif \ No newline at end of file diff --git a/include/TerribleMap.h b/include/TerribleMap.h new file mode 100644 index 0000000..bba51ac --- /dev/null +++ b/include/TerribleMap.h @@ -0,0 +1,18 @@ +#ifndef TERRIBLEMAP_H +#define TERRIBLEMAP_H + +#include + +template +struct Entry { + K key; + V value; +}; + +template +class TerribleMap { + private: + LinkedList> mapList; +}; + +#endif \ No newline at end of file diff --git a/platformio.ini b/platformio.ini index 0692e36..a62ce06 100644 --- a/platformio.ini +++ b/platformio.ini @@ -21,6 +21,7 @@ lib_deps = adafruit/Adafruit GFX Library@^1.11.9 arduino-libraries/SD@^1.3.0 apechinsky/MemoryFree@^0.3.0 + ivanseidel/LinkedList@0.0.0-alpha+sha.dac3874d28 [env:mega] platform = atmelavr @@ -32,6 +33,7 @@ lib_deps = adafruit/Adafruit GFX Library@^1.11.9 arduino-libraries/SD@^1.3.0 apechinsky/MemoryFree@^0.3.0 + ivanseidel/LinkedList@0.0.0-alpha+sha.dac3874d28 [common] @@ -45,3 +47,4 @@ lib_deps = pfeerick/elapsedMillis@^1.0.6 adafruit/Adafruit GFX Library@^1.11.9 apechinsky/MemoryFree@^0.3.0 + ivanseidel/LinkedList@0.0.0-alpha+sha.dac3874d28