Program Listing for File KPSerialInput.hpp¶
↰ Return to documentation for file (src/KPSerialInput.hpp)
#pragma once
#include <KPFoundation.hpp>
#include <KPSubject.hpp>
#include <KPSerialInputObserver.hpp>
#include <vector>
class KPSerialInput : public KPComponent, public KPSubject<KPSerialInputObserver> {
private:
KPStringBuilder<255> input;
public:
using KPComponent::KPComponent;
void update() {
while (Serial.available() > 0) {
char inputChar = Serial.read();
if (inputChar == '\n') {
updateObservers(&KPSerialInputObserver::commandReceived, input, input.size());
input.clear();
return;
}
// Ignore System characters
if (inputChar >= 32) {
input.print(inputChar);
}
}
}
static KPSerialInput & sharedInstance() {
static KPSerialInput serial("shared-serial-input");
return serial;
}
};