A very small amount of work on Manager class

This commit is contained in:
2026-08-28 20:41:40 -04:00
parent 54004e4e34
commit b335a63f61
4 changed files with 77 additions and 1 deletions

56
include/Manager.h Normal file
View File

@@ -0,0 +1,56 @@
#ifndef MANAGER_H
#define MANAGER_H
#include <Arduino.h>
#include <LinkedList.h>
#include <LEDHAL.h>
#include <AnimationBase.h>
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<LEDHAL*>
ledHALs;
LinkedList<AnimationBase*>
animations;
};
#endif