From b94d1200e845c4060e40995cc387e0cf68fa1210 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anian=20B=C3=BChler?=
 <anian.buehler@reutlingen-university.de>
Date: Wed, 20 Oct 2021 16:11:32 +0200
Subject: [PATCH] changed classnames to UpperCase + updated examples

---
 examples/sPSN_Broker/sPSN_Broker.ino          |   2 +-
 examples/sPSN_Chat/sPSN_Chat.ino              |   8 +-
 examples/sPSN_Client1/sPSN_Client1.ino        |  32 +++---
 examples/sPSN_Client2/sPSN_Client2.ino        |  34 +++---
 .../sPSN_ClientMinimal/sPSN_ClientMinimal.ino |  15 +--
 src/didacticNet.cpp                           | 102 +++++++++---------
 src/didacticNet.h                             |  28 ++---
 7 files changed, 105 insertions(+), 116 deletions(-)

diff --git a/examples/sPSN_Broker/sPSN_Broker.ino b/examples/sPSN_Broker/sPSN_Broker.ino
index 1aec4de..e2d142d 100644
--- a/examples/sPSN_Broker/sPSN_Broker.ino
+++ b/examples/sPSN_Broker/sPSN_Broker.ino
@@ -38,7 +38,7 @@
 SoftwareSerial sSerial(10, 11);
 
 //Erzeuge Broker-Instanz
-didacticPSNetBroker psnBroker;
+DidacticPSNetBroker psnBroker;
 
 void setup() {
   //Starte Serielle Schnittstelle (zum PC)
diff --git a/examples/sPSN_Chat/sPSN_Chat.ino b/examples/sPSN_Chat/sPSN_Chat.ino
index d480f6a..e7b228b 100644
--- a/examples/sPSN_Chat/sPSN_Chat.ino
+++ b/examples/sPSN_Chat/sPSN_Chat.ino
@@ -44,7 +44,8 @@ void clientCallback(char* mTopic, int mToLength, char* mData, int mDaLength) {
 
 SoftwareSerial sSerial(10, 11); // SoftwareSerial an Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
 
-didacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz
+DidacticPSNetClient psnClient; //Erzeuge PubSub-Client-Instanz
+SerialReader sReader;
 
 
 void setup() {
@@ -54,6 +55,7 @@ void setup() {
   sSerial.begin(SERIAL_BAUD); //Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen)
 
   psnClient.begin(sSerial, clientCallback); //Starte PubSubClient mit SoftwareSerial und Callbackfunktion "clientCallback"
+  sReader.begin(Serial);
 
   //AUSGABE INFOTEXT
   Serial.print("Bitte den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> ");
@@ -72,7 +74,7 @@ void loop() {
 
   psnClient.handleNetwork();  //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
 
-  int nrOfAscii = psnClient.readSerialData(Serial, readData, DN_ASCII_CR); //Einlesen der Nutzereingabe am SerialMonitor (Rueckgabewert = Anzahl der gelesenen Zeichen)
+  int nrOfAscii = sReader.readSerialData(readData, DN_ASCII_CR); //Einlesen der Nutzereingabe am SerialMonitor (Rueckgabewert = Anzahl der gelesenen Zeichen)
 
   if (nrOfAscii > 0) { //Wenn Daten fertig eingelesen wurden
 
@@ -85,7 +87,7 @@ void loop() {
       Serial.println(" abonniert.");
     }
     else if (readData[0] == '!') {         //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren)
-      strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '@')
+      strcpy(readData, &readData[1]); //verschiebe um ein Zeichen (entferne '!')
       psnClient.unsubscribe(readData);  //Lege fest zu welchem Topic Daten empfangen werden sollen (den Namen des Chatpartners)
 
       Serial.print("Nachrichten von "); //Ausgabe welches Topic abonniert wurde
diff --git a/examples/sPSN_Client1/sPSN_Client1.ino b/examples/sPSN_Client1/sPSN_Client1.ino
index 249b4c3..5fe0983 100644
--- a/examples/sPSN_Client1/sPSN_Client1.ino
+++ b/examples/sPSN_Client1/sPSN_Client1.ino
@@ -32,28 +32,30 @@
 #define THRESHOLD   10  //Schwellwert für min. Wertänderung
 #define SEND_DELAY 500  //Mindestwarezeit zwischen zwei Sendevorgängen
 
-char topicPublish[MAX_LEN_TOPICS]   = "potiVal";    //Topic für zu sendende (eigene) Daten
-char topicSubscribe[MAX_LEN_TOPICS] = "buttonVal"; //Topic für zu empfangende Daten (von anderem TN)
+char topicPublish[MAX_LEN_TOPICS]   = "potiVal";  //Topic unter dem (eigene) Daten veröffentlicht werden
+char topicSubscribe[MAX_LEN_TOPICS] = "btnState"; //Topic (von anderem TN) das abboniert werden soll
 
 char payload[MAX_LEN_PAYLOAD] = {0};
-boolean newData = false;
 
 SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
 
-didacticPSNetClient psnClient;  //Erzeuge PubSub-Client-Instanz
+DidacticPSNetClient psnClient;  //Erzeuge PubSub-Client-Instanz
 
 
 //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
 void clientCallback(char* mTopic, int mToLength, char* mData, int mDaLength) {
   Serial.print("CB: ");
   Serial.print(mTopic);
-  Serial.print(" - ");
+  Serial.print(" | ");
   Serial.println(mData);
 
-  boolean stateLED = bool(atoi(mData));         //wandle ASCII-Zeichen in Wert
-  //Alternativ: sscanf(mData, "%d", &stateLED); //wandle ASCII-Zeichen in Wert
-  Serial.print(stateLED);
-  digitalWrite(LED_PIN, stateLED);              //Setze Ausgang entsprechend dem empfangenen Wert
+  boolean static stateLED = false;
+  
+  if(bool(atoi(mData)) == true){
+    stateLED = !stateLED;
+    Serial.print(stateLED);
+    digitalWrite(LED_PIN, stateLED);              //Setze Ausgang entsprechend dem empfangenen Wert
+  }        
 }
 
 
@@ -75,15 +77,7 @@ void loop() {
   psnClient.handleNetwork();               //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
 
   int currentValue = analogRead(POTI_PIN); //lese Poti ein und speichere Wert
-
-  if(psnClient.valueChanged(currentValue, THRESHOLD)){
-    itoa(currentValue, payload, 10);                    //wandle Wert in ASCII-Zeichen
-    //Alternativ: sprintf(payload, "%d", currentValue); //wandle Wert in ASCII-Zeichen
-    newData = true;                                     //Flag: neue Daten zum Senden
-  }
-  if(psnClient.timeElapsed(SEND_DELAY) && newData){     //Sende neue Daten wenn Mindestwaretzeit abgelaufen
-    psnClient.publish(topicPublish, payload); //bereite Topic und Nutzdaten zum senden vor
-    newData = false;                          //Flag: keine neuen Daten vorhanden
-  }
+  psnClient.publishOnChange(topicPublish, currentValue, THRESHOLD)
+  
 }
 
diff --git a/examples/sPSN_Client2/sPSN_Client2.ino b/examples/sPSN_Client2/sPSN_Client2.ino
index ad31487..4667b1e 100644
--- a/examples/sPSN_Client2/sPSN_Client2.ino
+++ b/examples/sPSN_Client2/sPSN_Client2.ino
@@ -24,12 +24,11 @@
 #define SERIAL_BAUD 2400 //lege Geschwindigkeit für serielle Schnittstellen fest
 
 #define LED_PIN    5
+#define LED2_PIN    6
 #define BUTTON_PIN 2
 
-#define SEND_DELAY 500  //Mindestwarezeit zwischen zwei Sendevorgängen
-
-char topicPublish[MAX_LEN_TOPICS]   = "buttonVal";    //Topic für zu sendende (eigene) Daten
-char topicSubscribe[MAX_LEN_TOPICS] = "potiVal"; //Topic für zu empfangende Daten (von anderem TN)
+char topicPublish[MAX_LEN_TOPICS]   = "btnState";   //Topic unter dem (eigene) Daten veröffentlicht werden
+char topicSubscribe[MAX_LEN_TOPICS] = "potiVal";    //Topic (von anderem TN) das abboniert werden soll
 
 char payload[MAX_LEN_PAYLOAD] = {0};
 boolean newData  = false;
@@ -37,21 +36,24 @@ boolean ledState = false;
 
 SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
 
-didacticPSNetClient psnClient;  //Erzeuge PubSub-Client-Instanz
+DidacticPSNetClient psnClient;  //Erzeuge PubSub-Client-Instanz
+UnblockingTimer uTimer;
 
 
 //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
 void clientCallback(char* mTopic, int mToLength, char* mData, int mDaLength) {
   Serial.print("CB: ");
   Serial.print(mTopic);
-  Serial.print(" - ");
+  Serial.print(" | ");
   Serial.println(mData);
 
-  int valueLED = atoi(mData);                                      //wandle ASCII-Zeichen in Wert
-  valueLED = constrain(map(valueLED, 0, 1023, 0, 255), 0, 255); //passe analogRead-Wert für analogWrite an
+  int valuePoti = atoi(mData);  //wandle ASCII-Zeichen in Wert
   //Alternativ: sscanf(mData, "%d", &stateLED); //wandle ASCII-Zeichen in Wert
 
-  analogWrite(LED_PIN, valueLED);              //Setze Ausgang entsprechend dem empfangenen Wert
+  int valueLED = constrain(map(valuePoti, 0, 1023, 0, 255), 0, 255); //passe analogRead-Wert für analogWrite an
+  
+  analogWrite(LED_PIN, valueLED);        //Setze Ausgang entsprechend dem empfangenen Wert
+  analogWrite(LED2_PIN, 255-valueLED);   //Setze Ausgang invertiert zum empfangenen Wert
 }
 
 
@@ -70,17 +72,7 @@ void loop() {
 
   psnClient.handleNetwork();               //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
 
-  boolean buttonState = digitalRead(BUTTON_PIN); //lese Poti ein und speichere Wert
-
-  if(psnClient.edgeDetected(buttonState) == RISING){
-    ledState = !ledState;                               //Invertiere zu sendenden Wert "LED-Zustand"
-    itoa(ledState, payload, 10);                        //wandle Wert in ASCII-Zeichen
-    //Alternativ: sprintf(payload, "%d", currentValue); //wandle Wert in ASCII-Zeichen 
-    newData = true;                                     //Flag: neue Daten zum Senden
-  }
-  if(psnClient.timeElapsed(SEND_DELAY) && newData){     //Sende neue Daten wenn Mindestwaretzeit abgelaufen
-    psnClient.publish(topicPublish, payload); //bereite Topic und Nutzdaten zum senden vor
-    newData = false;                          //Flag: keine neuen Daten vorhanden
-  }
+  boolean buttonState = digitalRead(BUTTON_PIN); //lese Taster ein und speichere Wert
+  psnClient.publishOnChange(topicPublish, buttonState, CHANGE); //bereite Topic und Nutzdaten zum senden vor, wenn sich buttonState ändert
 }
 
diff --git a/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino b/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino
index 0e58d6b..1805cb5 100644
--- a/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino
+++ b/examples/sPSN_ClientMinimal/sPSN_ClientMinimal.ino
@@ -25,8 +25,8 @@
 
 SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender
 
-didacticPSNetClient psnClient;  //Erzeuge PubSub-Client-Instanz
-
+DidacticPSNetClient psnClient;  //Erzeuge PubSub-Client-Instanz
+UnblockingTimer uTimer;
 
 //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
 void clientCallback(char* mTopic, int mToLength, char* mPayload, int mPayloadLength) {
@@ -53,13 +53,8 @@ void loop() {
   psnClient.handleNetwork();         //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
 
   int currentValue = analogRead(A0); //lese Poti ein und speichere Wert
-
-  char payload[5];
-  itoa(currentValue, payload, 10);
-
-  if(psnClient.timeElapsed(1000)){      //Sende neue Daten wenn Mindestwaretzeit 1 Sekunde abgelaufen
-    //Hier SENDE-TOPIC ANPASSEN -> default "client1"
-    psnClient.publish("client1", payload); //bereite Topic und Nutzdaten zum senden vor
-  }
+  
+  //Hier SENDE-TOPIC ANPASSEN -> default "client1"
+  psnClient.publish("client1", currentValue);
 }
 
diff --git a/src/didacticNet.cpp b/src/didacticNet.cpp
index 4003039..669b06a 100644
--- a/src/didacticNet.cpp
+++ b/src/didacticNet.cpp
@@ -11,29 +11,29 @@
 //**************************************************************************
 //ROOT
 //**************************************************************************
-didacticPSNet::didacticPSNet(){}
+DidacticPSNet::DidacticPSNet(){}
 
-didacticPSNet::~didacticPSNet(){}
+DidacticPSNet::~DidacticPSNet(){}
 
-void didacticPSNet::begin(Stream& _port){
+void DidacticPSNet::begin(Stream& _port){
   setStream(_port);
 }
 
-void didacticPSNet::begin(Stream& _port, PSNET_CALLBACK_SIGNATURE){
+void DidacticPSNet::begin(Stream& _port, PSNET_CALLBACK_SIGNATURE){
   setStream(_port);
   setCallback(callback);
 }
 
-didacticPSNet& didacticPSNet::setCallback(PSNET_CALLBACK_SIGNATURE){
+DidacticPSNet& DidacticPSNet::setCallback(PSNET_CALLBACK_SIGNATURE){
     this->callback = callback;
     return *this;
 }
 
-void didacticPSNet::setStream(Stream& stream){
+void DidacticPSNet::setStream(Stream& stream){
     _port = &stream;
 }
 
-bool didacticPSNet::handleNetwork(){
+bool DidacticPSNet::handleNetwork(){
   //if(_waitingTime <= millis()){
   	if(checkData()){
   		if(recieveData()){
@@ -65,11 +65,11 @@ bool didacticPSNet::handleNetwork(){
 	return true;
 }
 
-bool didacticPSNet::isDataToSend(){
+bool DidacticPSNet::isDataToSend(){
   return _dataToSend;
 }
 
-bool didacticPSNet::sendData(){
+bool DidacticPSNet::sendData(){
 	int counter = 0;
   bool messageSent = false;
 	while(!messageSent){
@@ -88,7 +88,7 @@ bool didacticPSNet::sendData(){
 	return true;
 }
 
-int didacticPSNet::extractData(int startCounter, int maxLength, char* buffer, char limiter){
+int DidacticPSNet::extractData(int startCounter, int maxLength, char* buffer, char limiter){
 	int counter = startCounter;
 	while(_readBufferMessage[counter]!= limiter){
 		buffer[counter-startCounter] = _readBufferMessage[counter];
@@ -102,11 +102,11 @@ int didacticPSNet::extractData(int startCounter, int maxLength, char* buffer, ch
 	return counter-startCounter; //length
 }
 
-int didacticPSNet::checkData(){
+int DidacticPSNet::checkData(){
 	return (int)_port->available();
 }
 
-bool  didacticPSNet::recieveData() {
+bool  DidacticPSNet::recieveData() {
 	static int msgCounter = 0;
 	static int topicCounter = 0;
 	static int payloadCounter = 0;
@@ -141,7 +141,7 @@ bool  didacticPSNet::recieveData() {
 	return false;
 }
 
-		void  didacticPSNet::setInterval(long intervalTime){
+		void  DidacticPSNet::setInterval(long intervalTime){
       _intervalTime = intervalTime;
     }
 
@@ -149,17 +149,17 @@ bool  didacticPSNet::recieveData() {
 //**************************************************************************
 // CLIENT
 //**************************************************************************
-didacticPSNetClient::didacticPSNetClient(){
+DidacticPSNetClient::DidacticPSNetClient(){
   _intervalTime = INTERVAL_CLIENT;
 }
 
-didacticPSNetClient::~didacticPSNetClient(){}
+DidacticPSNetClient::~DidacticPSNetClient(){}
 
-int didacticPSNetClient::publish(char* topic,  char* payload){
+int DidacticPSNetClient::publish(char* topic,  char* payload){
 	return publish(topic, strlen(topic), payload, strlen(payload));
 }
 
-int didacticPSNetClient::publish(char* topic, int topicLength, char* payload , int payloadLength){
+int DidacticPSNetClient::publish(char* topic, int topicLength, char* payload , int payloadLength){
 	int error = DN_PUBLISH_SUCCESSULL;
   
   _sendBufferMessage[0] = MSG_PRELIMITER;
@@ -190,39 +190,39 @@ int didacticPSNetClient::publish(char* topic, int topicLength, char* payload , i
 }
 
 //TODO: TEST TEST TEST
-int didacticPSNetClient::publish(char* topic,  int data){
+int DidacticPSNetClient::publish(char* topic,  int data){
   char sendPayload[MAX_LEN_PAYLOAD];
   itoa(data, sendPayload, 10);
 
 	return publish(topic, sendPayload);
 }
 
-int didacticPSNetClient::publish(char* topic,  bool data){
+int DidacticPSNetClient::publish(char* topic,  bool data){
   char sendPayload[2];
   itoa(data, sendPayload, 10);
 
 	return publish(topic, sendPayload);
 }
 
-int didacticPSNetClient::publishOnChange(char* topic, bool input){
+int DidacticPSNetClient::publishOnChange(char* topic, bool input){
   if(edgeDetected(input)){
     return publish(topic, input);
   }
   return DN_ERROR_NO_ERROR;
 }
 
-int didacticPSNetClient::publishOnChange(char* topic, int input, int threshold){
+int DidacticPSNetClient::publishOnChange(char* topic, int input, int threshold){
   if(valueChanged(input, threshold)){
     return publish(topic, input);
   }
   return DN_ERROR_NO_ERROR;
 }
 
-int didacticPSNetClient::subscribe(char* topic){
+int DidacticPSNetClient::subscribe(char* topic){
 	return subscribe(topic, strlen(topic));
 }
 
-int didacticPSNetClient::subscribe(char* topic, int topicLength){
+int DidacticPSNetClient::subscribe(char* topic, int topicLength){
    int error = DN_ERROR_NO_ERROR;
 
    if( topicLength > MAX_LEN_TOPICS){
@@ -263,11 +263,11 @@ int didacticPSNetClient::subscribe(char* topic, int topicLength){
 }
 
 
-bool didacticPSNetClient::unsubscribe(char* topic){
+bool DidacticPSNetClient::unsubscribe(char* topic){
   return unsubscribe(topic, strlen(topic));
 }
 
-bool didacticPSNetClient::unsubscribe(char* topic, int topicLength){
+bool DidacticPSNetClient::unsubscribe(char* topic, int topicLength){
   int topicNumber = getTopicNr(topic);
   if(topicNumber >= 0){
     _topic[topicNumber][0]='\0';
@@ -276,16 +276,16 @@ bool didacticPSNetClient::unsubscribe(char* topic, int topicLength){
   return false;
 }
 
-bool didacticPSNetClient::getMessageFilter(char messageType){
+bool DidacticPSNetClient::getMessageFilter(char messageType){
   return messageType == MSG_UPDATE;
 }
 
-bool didacticPSNetClient::savePayload(char* buffer, int position){
+bool DidacticPSNetClient::savePayload(char* buffer, int position){
   strcpy(_payload[position], buffer);
   return true;
 }
 
-bool didacticPSNetClient::handleData(){
+bool DidacticPSNetClient::handleData(){
   int currentTopicNr = 0;
   int topicLength = 0;
   int payloadLength = 0;
@@ -301,7 +301,7 @@ bool didacticPSNetClient::handleData(){
   return true;
 }
 
-int didacticPSNetClient::getTopicNr(char* topic){
+int DidacticPSNetClient::getTopicNr(char* topic){
 	for (int i = 0; i < MAX_NR_TOPICS_CLIENT; i++) {
     if (strcmp(_topic[i], topic) == 0 || _topic[i][0] == MSG_TOPIC_MULTI) { //TODO: check ... or equal MSG_TOPIC_MULTI
       return i;
@@ -310,7 +310,7 @@ int didacticPSNetClient::getTopicNr(char* topic){
  return -1;
 }
 
-int didacticPSNetClient::getFreeTopicNr() {
+int DidacticPSNetClient::getFreeTopicNr() {
   for (int i = 0; i < MAX_NR_TOPICS_CLIENT; i++) {
     if (strcmp(_topic[i], "") == 0) {
       return i;
@@ -319,7 +319,7 @@ int didacticPSNetClient::getFreeTopicNr() {
   return -1;
 }
 
-int didacticPSNetClient::edgeDetected(bool edCurrentState){
+int DidacticPSNetClient::edgeDetected(bool edCurrentState){
   static bool edLastState = false;
   int edEdge = 0;
 
@@ -333,7 +333,7 @@ int didacticPSNetClient::edgeDetected(bool edCurrentState){
   return edEdge;
 }
 
-bool didacticPSNetClient::valueChanged(int vcValue, int vcThreshold){
+bool DidacticPSNetClient::valueChanged(int vcValue, int vcThreshold){
   static int vcLastValue = 0;
 
   if(abs(vcValue-vcLastValue) > vcThreshold){
@@ -347,30 +347,30 @@ bool didacticPSNetClient::valueChanged(int vcValue, int vcThreshold){
 //**************************************************************************
 //Broker
 //**************************************************************************
-didacticPSNetBroker::didacticPSNetBroker(){
+DidacticPSNetBroker::DidacticPSNetBroker(){
     _intervalTime = INTERVAL_BROKER;
 }
 
-didacticPSNetBroker::~didacticPSNetBroker(){}
+DidacticPSNetBroker::~DidacticPSNetBroker(){}
 
 
-bool didacticPSNetBroker::getMessageFilter(char messageType){
+bool DidacticPSNetBroker::getMessageFilter(char messageType){
   return (messageType == MSG_PUBLISH || messageType == MSG_SUBSCRIBE);
 }
 
-bool didacticPSNetBroker::savePayload(char* buffer, int position){
+bool DidacticPSNetBroker::savePayload(char* buffer, int position){
   strcpy(_data[position], buffer);
   return true;
 }
 
-void didacticPSNetBroker::writeDataToTopic(int topicNumber, char* usedTopic, char* newData) {
+void DidacticPSNetBroker::writeDataToTopic(int topicNumber, char* usedTopic, char* newData) {
     if(strcmp(_topic[topicNumber], "") == 0){
       strcpy(_topic[topicNumber], usedTopic);
     }
       strcpy(_data[topicNumber], newData);
 }
 
-bool didacticPSNetBroker::handleData(){
+bool DidacticPSNetBroker::handleData(){
   int currentTopicNr = 0;
   int topicLength = 0;
   int dataLength = 0;
@@ -397,7 +397,7 @@ bool didacticPSNetBroker::handleData(){
 return true;
 }
 
-bool didacticPSNetBroker::update(char* topic, int topicLength, char* data , int dataLength){
+bool DidacticPSNetBroker::update(char* topic, int topicLength, char* data , int dataLength){
 	_sendBufferMessage[0] = MSG_PRELIMITER;
 	_sendBufferMessage[1] = MSG_UPDATE;
 	_sendBufferMessage[2+topicLength] = MSG_SEPARATOR;
@@ -424,7 +424,7 @@ bool didacticPSNetBroker::update(char* topic, int topicLength, char* data , int
 	return true;
 }
 
-int didacticPSNetBroker::getTopicNr(char* topic){
+int DidacticPSNetBroker::getTopicNr(char* topic){
 	for (int i = 0; i < MAX_NR_TOPICS_BROKER; i++) {
   if (strcmp(_topic[i], topic) == 0) {
       return i;
@@ -433,7 +433,7 @@ int didacticPSNetBroker::getTopicNr(char* topic){
  return	getFreeTopicNr();
 }
 
-int didacticPSNetBroker::getFreeTopicNr() {
+int DidacticPSNetBroker::getFreeTopicNr() {
   for (int i = 0; i < MAX_NR_TOPICS_BROKER; i++) {
     if (strcmp(_topic[i], "") == 0) {
       return i;
@@ -447,10 +447,10 @@ int didacticPSNetBroker::getFreeTopicNr() {
 //LITTLE HELPERS FOR CLIENTS ;-)
 //*************************************************************************
 
-unblockingTimer::unblockingTimer(){}
-unblockingTimer::~unblockingTimer(){}
+UnblockingTimer::UnblockingTimer(){}
+UnblockingTimer::~UnblockingTimer(){}
 
-bool unblockingTimer::timeElapsed(long delayTime){
+bool UnblockingTimer::timeElapsed(long delayTime){
   long currentTime = millis();
 
   if(lastTime + (delayTime-1) < currentTime){
@@ -460,13 +460,17 @@ bool unblockingTimer::timeElapsed(long delayTime){
   return false;
 }
 
-serialReader::serialReader(){}
-serialReader::~serialReader(){}
+SerialReader::SerialReader(){}
+SerialReader::~SerialReader(){}
 
-int serialReader::readSerialData(Stream& rsStream, char* rsDataArray, char rsEndSign) {
+void SerialReader::begin(Stream& rsStream){
+  _port = &rsStream;
+}
+
+int SerialReader::readSerialData(char* rsDataArray, char rsEndSign) {
 
-  if (rsStream.available()) {
-    char charBuffer = rsStream.read();
+  if (_port->available()) {
+    char charBuffer = _port->read();
     rsDataArray[charCounter] = charBuffer;
 
     if (charBuffer == rsEndSign) {
diff --git a/src/didacticNet.h b/src/didacticNet.h
index 63f1d6d..40ae71c 100644
--- a/src/didacticNet.h
+++ b/src/didacticNet.h
@@ -49,7 +49,7 @@
 #define DN_ASCII_CR 13
 #define DN_ASCII_NL 10
 
-class didacticPSNet
+class DidacticPSNet
 {
 	protected:
 		Stream* _port;
@@ -67,7 +67,7 @@ class didacticPSNet
 		int _currentTopicLength = 0;
 		int _currentPayloadLength  = 0;
 
-		didacticPSNet& setCallback(PSNET_CALLBACK_SIGNATURE);
+		DidacticPSNet& setCallback(PSNET_CALLBACK_SIGNATURE);
 		void setStream(Stream& _port);
 
 		int checkData();
@@ -82,8 +82,8 @@ class didacticPSNet
 		virtual bool handleData()=0;
 
 	public:
-		didacticPSNet();
-		~didacticPSNet();
+		DidacticPSNet();
+		~DidacticPSNet();
 
 		void begin(Stream& _port);
 		void begin(Stream& _port, PSNET_CALLBACK_SIGNATURE);
@@ -94,7 +94,7 @@ class didacticPSNet
 
 };
 
-class didacticPSNetClient : public  didacticPSNet
+class DidacticPSNetClient : public  DidacticPSNet
 {
 	private:
 	char _topic[MAX_NR_TOPICS_CLIENT][MAX_LEN_TOPICS+1] = { { 0 } };
@@ -110,8 +110,8 @@ class didacticPSNetClient : public  didacticPSNet
 	bool valueChanged(int, int);
 
 	public:
-	didacticPSNetClient();
-	~didacticPSNetClient();
+	DidacticPSNetClient();
+	~DidacticPSNetClient();
 
 	int publish(char*, char*);
 	int publish(char*, int, char*, int);
@@ -126,7 +126,7 @@ class didacticPSNetClient : public  didacticPSNet
 };
 
 
-class didacticPSNetBroker: public  didacticPSNet
+class DidacticPSNetBroker: public  DidacticPSNet
 {
 	private:
 	char _topic[MAX_NR_TOPICS_BROKER][MAX_LEN_TOPICS+1] = { { 0 } };
@@ -140,8 +140,8 @@ class didacticPSNetBroker: public  didacticPSNet
 	int getFreeTopicNr();
 
 	public:
-	didacticPSNetBroker();
-	~didacticPSNetBroker();
+	DidacticPSNetBroker();
+	~DidacticPSNetBroker();
 
 	bool update(char*, int, char*, int);
 
@@ -149,7 +149,7 @@ class didacticPSNetBroker: public  didacticPSNet
 };
 
 
-class unblockingTimer
+class UnblockingTimer
 {
 	private:
 		long lastTime = 0L;
@@ -158,13 +158,15 @@ class unblockingTimer
 		bool timeElapsed(long);
 
 };
-class serialReader
+class SerialReader
 {
 	private:
+		Stream* _port;
 		int charCounter = 0;
 
 	public:
-		int readSerialData(Stream&, char*, char);
+		void begin(Stream&);
+		int readSerialData(char*, char);
 
 };
 #endif
-- 
GitLab