diff --git a/src/inputs/Serial.cpp b/src/inputs/Serial.cpp new file mode 100644 index 0000000..2358665 --- /dev/null +++ b/src/inputs/Serial.cpp @@ -0,0 +1,34 @@ +#include "Serial.h" + +InputEvent +Serial::read() +{ + while (Serial.available() > 0) { + char nextChar = Serial.read(); + if (nextChar == '\n') { + doCommand(); + m_buf = ""; + } else { + m_buf += nextChar; + } + } +} + +void +Serial::doCommand() { + if (command == "tasks") { + Serial.println("Tasks:"); + auto sched = MainLoop::instance()->scheduler; + for(auto task : sched.tasks) { + bool isFigment = task->isFigment(); + if (isFigment) { + Serial.println("F " + task->name); + } else { + Serial.println("T " + task->name); + } + } + } +} + +STATIC_ALLOC(SerialInput); +STATIC_TASK(SerialInput); diff --git a/src/inputs/Serial.h b/src/inputs/Serial.h index 36fae7f..dfc2a65 100644 --- a/src/inputs/Serial.h +++ b/src/inputs/Serial.h @@ -1,12 +1,17 @@ +#pragma once #include "Particle.h" #include "../Figments/Figments.h" class SerialInput: public InputSource { public: - void onAttach() override { + void onStart() override { //Serial.begin(); } - InputEvent read() { - } + InputEvent read(); + +private: + String m_buf; + void doCommand(); + }