From 5538cffb20335e28c82c787fd01dd9d227a122ff Mon Sep 17 00:00:00 2001 From: Patrick Balsiger Date: Sun, 2 Sep 2018 19:18:43 +0200 Subject: [PATCH] move pixel code to plugin --- src/IlluCat.h | 8 +++----- src/PixelPlugin.h | 44 ++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+), 5 deletions(-) create mode 100644 src/PixelPlugin.h diff --git a/src/IlluCat.h b/src/IlluCat.h index 5ae705f..e228ca5 100644 --- a/src/IlluCat.h +++ b/src/IlluCat.h @@ -15,6 +15,7 @@ #include #include #include +#include "PixelPlugin.h" using namespace std; using namespace std::placeholders; @@ -34,11 +35,8 @@ class IlluCat : public MeshSprocket { addPlugin(new OtaTcpPlugin(otaCfg)); addPlugin(new WebServerPlugin(webCfg, server)); addPlugin(new WebConfigPlugin(server)); - - pixels->begin(); - pixels->setBrightness(pixelConfig.brightness); - animation.set(TASK_MILLISECOND * pixelConfig.updateInterval, TASK_FOREVER, bind(&IlluCat::animate, this)); - addTask(animation); + addPlugin(new PixelPlugin(pixelConfig, pixels)); + scanningAnimation(); } void scanningAnimation() { diff --git a/src/PixelPlugin.h b/src/PixelPlugin.h new file mode 100644 index 0000000..09d33b8 --- /dev/null +++ b/src/PixelPlugin.h @@ -0,0 +1,44 @@ +#ifndef __PIXEL_PLUGIN__ +#define __PIXEL_PLUGIN__ + +#define _TASK_SLEEP_ON_IDLE_RUN +#define _TASK_STD_FUNCTION + +#include "TaskSchedulerDeclarations.h" +#include "MeshNet.h" +#include "Plugin.h" +#include "NeoPattern.cpp" + +using namespace std; +using namespace std::placeholders; + +class PixelPlugin : public Plugin { + private: + NeoPixelConfig pixelConfig; + NeoPattern* pixels; + public: + Task animation; + PixelPlugin(NeoPixelConfig cfg, NeoPattern* neoPattern){ + pixelConfig = cfg; + pixels = neoPattern; + pixels->begin(); + pixels->setBrightness(pixelConfig.brightness); + } + void activate(Scheduler* userScheduler, Network* network){ + animation.set(TASK_MILLISECOND * pixelConfig.updateInterval, TASK_FOREVER, bind(&PixelPlugin::animate, this)); + userScheduler->addTask(animation); + animation.enable(); + Serial.println("NeoPixels activated"); + } + void animate(){ + pixels->Update(); + } + void enable(){ + animation.enable(); + } + void disable(){ + animation.disable(); + } +}; + +#endif \ No newline at end of file