config: first version of storing pixel maps and configs in SPIFFS
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
@@ -1,18 +1,29 @@
|
||||
#include "Sequencer.h"
|
||||
#include <MainLoop.h>
|
||||
#include "Static.h"
|
||||
|
||||
Sequencer::Sequencer(std::vector<Sequencer::Scene> &&scenes) :
|
||||
Sequencer::Sequencer() :
|
||||
Task("SceneSequencer"),
|
||||
m_idx(0),
|
||||
m_scenes(std::move(scenes))
|
||||
m_idx(0)
|
||||
{
|
||||
}
|
||||
|
||||
Sequencer::Sequencer(std::vector<Sequencer::Scene> &&scenes, int startIndex) :
|
||||
Task("SceneSequencer"),
|
||||
m_idx(startIndex),
|
||||
m_scenes(std::move(scenes))
|
||||
void
|
||||
Sequencer::Scene::start()
|
||||
{
|
||||
for(const char* pattern : patterns) {
|
||||
Log.verbose("Starting pattern task %s", pattern);
|
||||
MainLoop::instance()->dispatch(InputEvent{InputEvent::StartThing, pattern});
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
Sequencer::Scene::stop()
|
||||
{
|
||||
for(const char* pattern : patterns) {
|
||||
Log.verbose("Stopping pattern task %s", pattern);
|
||||
MainLoop::instance()->dispatch(InputEvent{InputEvent::StopThing, pattern});
|
||||
}
|
||||
}
|
||||
|
||||
void
|
||||
@@ -35,32 +46,35 @@ Sequencer::onStart()
|
||||
{
|
||||
}
|
||||
|
||||
void
|
||||
Sequencer::setScenes(std::vector<Scene> &&scenes)
|
||||
{
|
||||
Log.notice("Updated scenes");
|
||||
m_idx = 0;
|
||||
m_scenes = scenes;
|
||||
}
|
||||
|
||||
void
|
||||
Sequencer::handleEvent(const InputEvent& evt)
|
||||
{
|
||||
if (evt.intent == InputEvent::ReadyToRoll) {
|
||||
Log.notice("Starting pattern %s!", m_scenes[m_idx].name);
|
||||
for(const char* pattern : m_scenes[m_idx].patterns) {
|
||||
Log.verbose("Starting pattern task %s", pattern);
|
||||
MainLoop::instance()->dispatch(InputEvent{InputEvent::StartThing, pattern});
|
||||
}
|
||||
}
|
||||
if (evt.intent == InputEvent::SetPattern && evt.asString() == m_scenes[m_idx].name) {
|
||||
if (evt.intent == InputEvent::ReadyToRoll && !m_scenes.empty()) {
|
||||
Log.notice("Starting pattern %s!", m_scenes[m_idx].name);
|
||||
for(const char* pattern : m_scenes[m_idx].patterns) {
|
||||
Log.verbose("Starting pattern task %s", pattern);
|
||||
MainLoop::instance()->dispatch(InputEvent{InputEvent::StartThing, pattern});
|
||||
}
|
||||
} else if (evt.intent == InputEvent::SetPattern && evt.asString() == m_scenes[m_idx].name) {
|
||||
return;
|
||||
}
|
||||
if (evt.intent == InputEvent::SetPattern || evt.intent == InputEvent::NextPattern || evt.intent == InputEvent::PreviousPattern) {
|
||||
} else if (evt.intent == InputEvent::SetPattern || evt.intent == InputEvent::NextPattern || evt.intent == InputEvent::PreviousPattern) {
|
||||
Log.notice("Switching pattern!");
|
||||
for(const char* pattern : m_scenes[m_idx].patterns) {
|
||||
Log.verbose("Stopping pattern task %s", pattern);
|
||||
MainLoop::instance()->dispatch(InputEvent{InputEvent::StopThing, pattern});
|
||||
}
|
||||
|
||||
m_scenes[m_idx].stop();
|
||||
|
||||
if (evt.intent == InputEvent::NextPattern) {
|
||||
m_idx++;
|
||||
} else if (evt.intent == InputEvent::PreviousPattern) {
|
||||
m_idx--;
|
||||
} else {
|
||||
//m_idx = evt.asInt();
|
||||
for(m_idx = 0; m_idx < m_scenes.size(); m_idx++) {
|
||||
if (!strcmp(evt.asString(), m_scenes[m_idx].name)) {
|
||||
break;
|
||||
@@ -76,9 +90,9 @@ Sequencer::handleEvent(const InputEvent& evt)
|
||||
m_idx = 0;
|
||||
}
|
||||
|
||||
for(const char* pattern : m_scenes[m_idx].patterns) {
|
||||
Log.verbose("Starting pattern task %s", pattern);
|
||||
MainLoop::instance()->dispatch(InputEvent{InputEvent::StartThing, pattern});
|
||||
}
|
||||
m_scenes[m_idx].start();
|
||||
}
|
||||
}
|
||||
|
||||
STATIC_ALLOC(Sequencer);
|
||||
STATIC_TASK(Sequencer);
|
||||
|
Reference in New Issue
Block a user