Skip to content
Snippets Groups Projects
Commit b94d1200 authored by Anian Bühler's avatar Anian Bühler
Browse files

changed classnames to UpperCase + updated examples

parent 1ee009e7
No related branches found
No related tags found
1 merge request!4Dev to Master
...@@ -38,7 +38,7 @@ ...@@ -38,7 +38,7 @@
SoftwareSerial sSerial(10, 11); SoftwareSerial sSerial(10, 11);
//Erzeuge Broker-Instanz //Erzeuge Broker-Instanz
didacticPSNetBroker psnBroker; DidacticPSNetBroker psnBroker;
void setup() { void setup() {
//Starte Serielle Schnittstelle (zum PC) //Starte Serielle Schnittstelle (zum PC)
......
...@@ -44,7 +44,8 @@ void clientCallback(char* mTopic, int mToLength, char* mData, int mDaLength) { ...@@ -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 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() { void setup() {
...@@ -54,6 +55,7 @@ void setup() { ...@@ -54,6 +55,7 @@ void setup() {
sSerial.begin(SERIAL_BAUD); //Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen) sSerial.begin(SERIAL_BAUD); //Starte SoftwareSerielle Schnittstelle (zu IR-Link-Modulen)
psnClient.begin(sSerial, clientCallback); //Starte PubSubClient mit SoftwareSerial und Callbackfunktion "clientCallback" psnClient.begin(sSerial, clientCallback); //Starte PubSubClient mit SoftwareSerial und Callbackfunktion "clientCallback"
sReader.begin(Serial);
//AUSGABE INFOTEXT //AUSGABE INFOTEXT
Serial.print("Bitte den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> "); Serial.print("Bitte den eigenen Namen mit einem # eingeben\nund mit Enter bestaetigen. -> ");
...@@ -72,7 +74,7 @@ void loop() { ...@@ -72,7 +74,7 @@ void loop() {
psnClient.handleNetwork(); //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten 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 if (nrOfAscii > 0) { //Wenn Daten fertig eingelesen wurden
...@@ -85,7 +87,7 @@ void loop() { ...@@ -85,7 +87,7 @@ void loop() {
Serial.println(" abonniert."); Serial.println(" abonniert.");
} }
else if (readData[0] == '!') { //Wenn '@' vorne steht, dann neuer Chatpartner anlegen (neues Topic abonnieren) 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) 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 Serial.print("Nachrichten von "); //Ausgabe welches Topic abonniert wurde
......
...@@ -32,28 +32,30 @@ ...@@ -32,28 +32,30 @@
#define THRESHOLD 10 //Schwellwert für min. Wertänderung #define THRESHOLD 10 //Schwellwert für min. Wertänderung
#define SEND_DELAY 500 //Mindestwarezeit zwischen zwei Sendevorgängen #define SEND_DELAY 500 //Mindestwarezeit zwischen zwei Sendevorgängen
char topicPublish[MAX_LEN_TOPICS] = "potiVal"; //Topic für zu sendende (eigene) Daten char topicPublish[MAX_LEN_TOPICS] = "potiVal"; //Topic unter dem (eigene) Daten veröffentlicht werden
char topicSubscribe[MAX_LEN_TOPICS] = "buttonVal"; //Topic für zu empfangende Daten (von anderem TN) char topicSubscribe[MAX_LEN_TOPICS] = "btnState"; //Topic (von anderem TN) das abboniert werden soll
char payload[MAX_LEN_PAYLOAD] = {0}; char payload[MAX_LEN_PAYLOAD] = {0};
boolean newData = false;
SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender 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 //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
void clientCallback(char* mTopic, int mToLength, char* mData, int mDaLength) { void clientCallback(char* mTopic, int mToLength, char* mData, int mDaLength) {
Serial.print("CB: "); Serial.print("CB: ");
Serial.print(mTopic); Serial.print(mTopic);
Serial.print(" - "); Serial.print(" | ");
Serial.println(mData); Serial.println(mData);
boolean stateLED = bool(atoi(mData)); //wandle ASCII-Zeichen in Wert boolean static stateLED = false;
//Alternativ: sscanf(mData, "%d", &stateLED); //wandle ASCII-Zeichen in Wert
Serial.print(stateLED); if(bool(atoi(mData)) == true){
digitalWrite(LED_PIN, stateLED); //Setze Ausgang entsprechend dem empfangenen Wert stateLED = !stateLED;
Serial.print(stateLED);
digitalWrite(LED_PIN, stateLED); //Setze Ausgang entsprechend dem empfangenen Wert
}
} }
...@@ -75,15 +77,7 @@ void loop() { ...@@ -75,15 +77,7 @@ void loop() {
psnClient.handleNetwork(); //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten 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 int currentValue = analogRead(POTI_PIN); //lese Poti ein und speichere Wert
psnClient.publishOnChange(topicPublish, currentValue, THRESHOLD)
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
}
} }
...@@ -24,12 +24,11 @@ ...@@ -24,12 +24,11 @@
#define SERIAL_BAUD 2400 //lege Geschwindigkeit für serielle Schnittstellen fest #define SERIAL_BAUD 2400 //lege Geschwindigkeit für serielle Schnittstellen fest
#define LED_PIN 5 #define LED_PIN 5
#define LED2_PIN 6
#define BUTTON_PIN 2 #define BUTTON_PIN 2
#define SEND_DELAY 500 //Mindestwarezeit zwischen zwei Sendevorgängen 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 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 payload[MAX_LEN_PAYLOAD] = {0}; char payload[MAX_LEN_PAYLOAD] = {0};
boolean newData = false; boolean newData = false;
...@@ -37,21 +36,24 @@ boolean ledState = false; ...@@ -37,21 +36,24 @@ boolean ledState = false;
SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender 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 //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
void clientCallback(char* mTopic, int mToLength, char* mData, int mDaLength) { void clientCallback(char* mTopic, int mToLength, char* mData, int mDaLength) {
Serial.print("CB: "); Serial.print("CB: ");
Serial.print(mTopic); Serial.print(mTopic);
Serial.print(" - "); Serial.print(" | ");
Serial.println(mData); Serial.println(mData);
int valueLED = atoi(mData); //wandle ASCII-Zeichen in Wert int valuePoti = atoi(mData); //wandle ASCII-Zeichen in Wert
valueLED = constrain(map(valueLED, 0, 1023, 0, 255), 0, 255); //passe analogRead-Wert für analogWrite an
//Alternativ: sscanf(mData, "%d", &stateLED); //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() { ...@@ -70,17 +72,7 @@ void loop() {
psnClient.handleNetwork(); //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten 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 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
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
}
} }
...@@ -25,8 +25,8 @@ ...@@ -25,8 +25,8 @@
SoftwareSerial sSerial(10, 11); //Erzeuge SoftwareSerial-Instanz mit Rx = Pin10 -> Empfänger | Tx = Pin11 -> Sender 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 //Callback-Funktion - wird beim Empfang neuer Daten aufgerufen
void clientCallback(char* mTopic, int mToLength, char* mPayload, int mPayloadLength) { void clientCallback(char* mTopic, int mToLength, char* mPayload, int mPayloadLength) {
...@@ -53,13 +53,8 @@ void loop() { ...@@ -53,13 +53,8 @@ void loop() {
psnClient.handleNetwork(); //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten psnClient.handleNetwork(); //Verarbeiten der Daten, prüfen ob Netzwerk frei und versenden der Daten
int currentValue = analogRead(A0); //lese Poti ein und speichere Wert int currentValue = analogRead(A0); //lese Poti ein und speichere Wert
char payload[5]; //Hier SENDE-TOPIC ANPASSEN -> default "client1"
itoa(currentValue, payload, 10); psnClient.publish("client1", currentValue);
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
}
} }
...@@ -11,29 +11,29 @@ ...@@ -11,29 +11,29 @@
//************************************************************************** //**************************************************************************
//ROOT //ROOT
//************************************************************************** //**************************************************************************
didacticPSNet::didacticPSNet(){} DidacticPSNet::DidacticPSNet(){}
didacticPSNet::~didacticPSNet(){} DidacticPSNet::~DidacticPSNet(){}
void didacticPSNet::begin(Stream& _port){ void DidacticPSNet::begin(Stream& _port){
setStream(_port); setStream(_port);
} }
void didacticPSNet::begin(Stream& _port, PSNET_CALLBACK_SIGNATURE){ void DidacticPSNet::begin(Stream& _port, PSNET_CALLBACK_SIGNATURE){
setStream(_port); setStream(_port);
setCallback(callback); setCallback(callback);
} }
didacticPSNet& didacticPSNet::setCallback(PSNET_CALLBACK_SIGNATURE){ DidacticPSNet& DidacticPSNet::setCallback(PSNET_CALLBACK_SIGNATURE){
this->callback = callback; this->callback = callback;
return *this; return *this;
} }
void didacticPSNet::setStream(Stream& stream){ void DidacticPSNet::setStream(Stream& stream){
_port = &stream; _port = &stream;
} }
bool didacticPSNet::handleNetwork(){ bool DidacticPSNet::handleNetwork(){
//if(_waitingTime <= millis()){ //if(_waitingTime <= millis()){
if(checkData()){ if(checkData()){
if(recieveData()){ if(recieveData()){
...@@ -65,11 +65,11 @@ bool didacticPSNet::handleNetwork(){ ...@@ -65,11 +65,11 @@ bool didacticPSNet::handleNetwork(){
return true; return true;
} }
bool didacticPSNet::isDataToSend(){ bool DidacticPSNet::isDataToSend(){
return _dataToSend; return _dataToSend;
} }
bool didacticPSNet::sendData(){ bool DidacticPSNet::sendData(){
int counter = 0; int counter = 0;
bool messageSent = false; bool messageSent = false;
while(!messageSent){ while(!messageSent){
...@@ -88,7 +88,7 @@ bool didacticPSNet::sendData(){ ...@@ -88,7 +88,7 @@ bool didacticPSNet::sendData(){
return true; 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; int counter = startCounter;
while(_readBufferMessage[counter]!= limiter){ while(_readBufferMessage[counter]!= limiter){
buffer[counter-startCounter] = _readBufferMessage[counter]; buffer[counter-startCounter] = _readBufferMessage[counter];
...@@ -102,11 +102,11 @@ int didacticPSNet::extractData(int startCounter, int maxLength, char* buffer, ch ...@@ -102,11 +102,11 @@ int didacticPSNet::extractData(int startCounter, int maxLength, char* buffer, ch
return counter-startCounter; //length return counter-startCounter; //length
} }
int didacticPSNet::checkData(){ int DidacticPSNet::checkData(){
return (int)_port->available(); return (int)_port->available();
} }
bool didacticPSNet::recieveData() { bool DidacticPSNet::recieveData() {
static int msgCounter = 0; static int msgCounter = 0;
static int topicCounter = 0; static int topicCounter = 0;
static int payloadCounter = 0; static int payloadCounter = 0;
...@@ -141,7 +141,7 @@ bool didacticPSNet::recieveData() { ...@@ -141,7 +141,7 @@ bool didacticPSNet::recieveData() {
return false; return false;
} }
void didacticPSNet::setInterval(long intervalTime){ void DidacticPSNet::setInterval(long intervalTime){
_intervalTime = intervalTime; _intervalTime = intervalTime;
} }
...@@ -149,17 +149,17 @@ bool didacticPSNet::recieveData() { ...@@ -149,17 +149,17 @@ bool didacticPSNet::recieveData() {
//************************************************************************** //**************************************************************************
// CLIENT // CLIENT
//************************************************************************** //**************************************************************************
didacticPSNetClient::didacticPSNetClient(){ DidacticPSNetClient::DidacticPSNetClient(){
_intervalTime = INTERVAL_CLIENT; _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)); 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; int error = DN_PUBLISH_SUCCESSULL;
_sendBufferMessage[0] = MSG_PRELIMITER; _sendBufferMessage[0] = MSG_PRELIMITER;
...@@ -190,39 +190,39 @@ int didacticPSNetClient::publish(char* topic, int topicLength, char* payload , i ...@@ -190,39 +190,39 @@ int didacticPSNetClient::publish(char* topic, int topicLength, char* payload , i
} }
//TODO: TEST TEST TEST //TODO: TEST TEST TEST
int didacticPSNetClient::publish(char* topic, int data){ int DidacticPSNetClient::publish(char* topic, int data){
char sendPayload[MAX_LEN_PAYLOAD]; char sendPayload[MAX_LEN_PAYLOAD];
itoa(data, sendPayload, 10); itoa(data, sendPayload, 10);
return publish(topic, sendPayload); return publish(topic, sendPayload);
} }
int didacticPSNetClient::publish(char* topic, bool data){ int DidacticPSNetClient::publish(char* topic, bool data){
char sendPayload[2]; char sendPayload[2];
itoa(data, sendPayload, 10); itoa(data, sendPayload, 10);
return publish(topic, sendPayload); return publish(topic, sendPayload);
} }
int didacticPSNetClient::publishOnChange(char* topic, bool input){ int DidacticPSNetClient::publishOnChange(char* topic, bool input){
if(edgeDetected(input)){ if(edgeDetected(input)){
return publish(topic, input); return publish(topic, input);
} }
return DN_ERROR_NO_ERROR; 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)){ if(valueChanged(input, threshold)){
return publish(topic, input); return publish(topic, input);
} }
return DN_ERROR_NO_ERROR; return DN_ERROR_NO_ERROR;
} }
int didacticPSNetClient::subscribe(char* topic){ int DidacticPSNetClient::subscribe(char* topic){
return subscribe(topic, strlen(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; int error = DN_ERROR_NO_ERROR;
if( topicLength > MAX_LEN_TOPICS){ if( topicLength > MAX_LEN_TOPICS){
...@@ -263,11 +263,11 @@ int didacticPSNetClient::subscribe(char* topic, int topicLength){ ...@@ -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)); return unsubscribe(topic, strlen(topic));
} }
bool didacticPSNetClient::unsubscribe(char* topic, int topicLength){ bool DidacticPSNetClient::unsubscribe(char* topic, int topicLength){
int topicNumber = getTopicNr(topic); int topicNumber = getTopicNr(topic);
if(topicNumber >= 0){ if(topicNumber >= 0){
_topic[topicNumber][0]='\0'; _topic[topicNumber][0]='\0';
...@@ -276,16 +276,16 @@ bool didacticPSNetClient::unsubscribe(char* topic, int topicLength){ ...@@ -276,16 +276,16 @@ bool didacticPSNetClient::unsubscribe(char* topic, int topicLength){
return false; return false;
} }
bool didacticPSNetClient::getMessageFilter(char messageType){ bool DidacticPSNetClient::getMessageFilter(char messageType){
return messageType == MSG_UPDATE; return messageType == MSG_UPDATE;
} }
bool didacticPSNetClient::savePayload(char* buffer, int position){ bool DidacticPSNetClient::savePayload(char* buffer, int position){
strcpy(_payload[position], buffer); strcpy(_payload[position], buffer);
return true; return true;
} }
bool didacticPSNetClient::handleData(){ bool DidacticPSNetClient::handleData(){
int currentTopicNr = 0; int currentTopicNr = 0;
int topicLength = 0; int topicLength = 0;
int payloadLength = 0; int payloadLength = 0;
...@@ -301,7 +301,7 @@ bool didacticPSNetClient::handleData(){ ...@@ -301,7 +301,7 @@ bool didacticPSNetClient::handleData(){
return true; return true;
} }
int didacticPSNetClient::getTopicNr(char* topic){ int DidacticPSNetClient::getTopicNr(char* topic){
for (int i = 0; i < MAX_NR_TOPICS_CLIENT; i++) { 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 if (strcmp(_topic[i], topic) == 0 || _topic[i][0] == MSG_TOPIC_MULTI) { //TODO: check ... or equal MSG_TOPIC_MULTI
return i; return i;
...@@ -310,7 +310,7 @@ int didacticPSNetClient::getTopicNr(char* topic){ ...@@ -310,7 +310,7 @@ int didacticPSNetClient::getTopicNr(char* topic){
return -1; return -1;
} }
int didacticPSNetClient::getFreeTopicNr() { int DidacticPSNetClient::getFreeTopicNr() {
for (int i = 0; i < MAX_NR_TOPICS_CLIENT; i++) { for (int i = 0; i < MAX_NR_TOPICS_CLIENT; i++) {
if (strcmp(_topic[i], "") == 0) { if (strcmp(_topic[i], "") == 0) {
return i; return i;
...@@ -319,7 +319,7 @@ int didacticPSNetClient::getFreeTopicNr() { ...@@ -319,7 +319,7 @@ int didacticPSNetClient::getFreeTopicNr() {
return -1; return -1;
} }
int didacticPSNetClient::edgeDetected(bool edCurrentState){ int DidacticPSNetClient::edgeDetected(bool edCurrentState){
static bool edLastState = false; static bool edLastState = false;
int edEdge = 0; int edEdge = 0;
...@@ -333,7 +333,7 @@ int didacticPSNetClient::edgeDetected(bool edCurrentState){ ...@@ -333,7 +333,7 @@ int didacticPSNetClient::edgeDetected(bool edCurrentState){
return edEdge; return edEdge;
} }
bool didacticPSNetClient::valueChanged(int vcValue, int vcThreshold){ bool DidacticPSNetClient::valueChanged(int vcValue, int vcThreshold){
static int vcLastValue = 0; static int vcLastValue = 0;
if(abs(vcValue-vcLastValue) > vcThreshold){ if(abs(vcValue-vcLastValue) > vcThreshold){
...@@ -347,30 +347,30 @@ bool didacticPSNetClient::valueChanged(int vcValue, int vcThreshold){ ...@@ -347,30 +347,30 @@ bool didacticPSNetClient::valueChanged(int vcValue, int vcThreshold){
//************************************************************************** //**************************************************************************
//Broker //Broker
//************************************************************************** //**************************************************************************
didacticPSNetBroker::didacticPSNetBroker(){ DidacticPSNetBroker::DidacticPSNetBroker(){
_intervalTime = INTERVAL_BROKER; _intervalTime = INTERVAL_BROKER;
} }
didacticPSNetBroker::~didacticPSNetBroker(){} DidacticPSNetBroker::~DidacticPSNetBroker(){}
bool didacticPSNetBroker::getMessageFilter(char messageType){ bool DidacticPSNetBroker::getMessageFilter(char messageType){
return (messageType == MSG_PUBLISH || messageType == MSG_SUBSCRIBE); 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); strcpy(_data[position], buffer);
return true; 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){ if(strcmp(_topic[topicNumber], "") == 0){
strcpy(_topic[topicNumber], usedTopic); strcpy(_topic[topicNumber], usedTopic);
} }
strcpy(_data[topicNumber], newData); strcpy(_data[topicNumber], newData);
} }
bool didacticPSNetBroker::handleData(){ bool DidacticPSNetBroker::handleData(){
int currentTopicNr = 0; int currentTopicNr = 0;
int topicLength = 0; int topicLength = 0;
int dataLength = 0; int dataLength = 0;
...@@ -397,7 +397,7 @@ bool didacticPSNetBroker::handleData(){ ...@@ -397,7 +397,7 @@ bool didacticPSNetBroker::handleData(){
return true; 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[0] = MSG_PRELIMITER;
_sendBufferMessage[1] = MSG_UPDATE; _sendBufferMessage[1] = MSG_UPDATE;
_sendBufferMessage[2+topicLength] = MSG_SEPARATOR; _sendBufferMessage[2+topicLength] = MSG_SEPARATOR;
...@@ -424,7 +424,7 @@ bool didacticPSNetBroker::update(char* topic, int topicLength, char* data , int ...@@ -424,7 +424,7 @@ bool didacticPSNetBroker::update(char* topic, int topicLength, char* data , int
return true; return true;
} }
int didacticPSNetBroker::getTopicNr(char* topic){ int DidacticPSNetBroker::getTopicNr(char* topic){
for (int i = 0; i < MAX_NR_TOPICS_BROKER; i++) { for (int i = 0; i < MAX_NR_TOPICS_BROKER; i++) {
if (strcmp(_topic[i], topic) == 0) { if (strcmp(_topic[i], topic) == 0) {
return i; return i;
...@@ -433,7 +433,7 @@ int didacticPSNetBroker::getTopicNr(char* topic){ ...@@ -433,7 +433,7 @@ int didacticPSNetBroker::getTopicNr(char* topic){
return getFreeTopicNr(); return getFreeTopicNr();
} }
int didacticPSNetBroker::getFreeTopicNr() { int DidacticPSNetBroker::getFreeTopicNr() {
for (int i = 0; i < MAX_NR_TOPICS_BROKER; i++) { for (int i = 0; i < MAX_NR_TOPICS_BROKER; i++) {
if (strcmp(_topic[i], "") == 0) { if (strcmp(_topic[i], "") == 0) {
return i; return i;
...@@ -447,10 +447,10 @@ int didacticPSNetBroker::getFreeTopicNr() { ...@@ -447,10 +447,10 @@ int didacticPSNetBroker::getFreeTopicNr() {
//LITTLE HELPERS FOR CLIENTS ;-) //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(); long currentTime = millis();
if(lastTime + (delayTime-1) < currentTime){ if(lastTime + (delayTime-1) < currentTime){
...@@ -460,13 +460,17 @@ bool unblockingTimer::timeElapsed(long delayTime){ ...@@ -460,13 +460,17 @@ bool unblockingTimer::timeElapsed(long delayTime){
return false; 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()) { if (_port->available()) {
char charBuffer = rsStream.read(); char charBuffer = _port->read();
rsDataArray[charCounter] = charBuffer; rsDataArray[charCounter] = charBuffer;
if (charBuffer == rsEndSign) { if (charBuffer == rsEndSign) {
......
...@@ -49,7 +49,7 @@ ...@@ -49,7 +49,7 @@
#define DN_ASCII_CR 13 #define DN_ASCII_CR 13
#define DN_ASCII_NL 10 #define DN_ASCII_NL 10
class didacticPSNet class DidacticPSNet
{ {
protected: protected:
Stream* _port; Stream* _port;
...@@ -67,7 +67,7 @@ class didacticPSNet ...@@ -67,7 +67,7 @@ class didacticPSNet
int _currentTopicLength = 0; int _currentTopicLength = 0;
int _currentPayloadLength = 0; int _currentPayloadLength = 0;
didacticPSNet& setCallback(PSNET_CALLBACK_SIGNATURE); DidacticPSNet& setCallback(PSNET_CALLBACK_SIGNATURE);
void setStream(Stream& _port); void setStream(Stream& _port);
int checkData(); int checkData();
...@@ -82,8 +82,8 @@ class didacticPSNet ...@@ -82,8 +82,8 @@ class didacticPSNet
virtual bool handleData()=0; virtual bool handleData()=0;
public: public:
didacticPSNet(); DidacticPSNet();
~didacticPSNet(); ~DidacticPSNet();
void begin(Stream& _port); void begin(Stream& _port);
void begin(Stream& _port, PSNET_CALLBACK_SIGNATURE); void begin(Stream& _port, PSNET_CALLBACK_SIGNATURE);
...@@ -94,7 +94,7 @@ class didacticPSNet ...@@ -94,7 +94,7 @@ class didacticPSNet
}; };
class didacticPSNetClient : public didacticPSNet class DidacticPSNetClient : public DidacticPSNet
{ {
private: private:
char _topic[MAX_NR_TOPICS_CLIENT][MAX_LEN_TOPICS+1] = { { 0 } }; char _topic[MAX_NR_TOPICS_CLIENT][MAX_LEN_TOPICS+1] = { { 0 } };
...@@ -110,8 +110,8 @@ class didacticPSNetClient : public didacticPSNet ...@@ -110,8 +110,8 @@ class didacticPSNetClient : public didacticPSNet
bool valueChanged(int, int); bool valueChanged(int, int);
public: public:
didacticPSNetClient(); DidacticPSNetClient();
~didacticPSNetClient(); ~DidacticPSNetClient();
int publish(char*, char*); int publish(char*, char*);
int publish(char*, int, char*, int); int publish(char*, int, char*, int);
...@@ -126,7 +126,7 @@ class didacticPSNetClient : public didacticPSNet ...@@ -126,7 +126,7 @@ class didacticPSNetClient : public didacticPSNet
}; };
class didacticPSNetBroker: public didacticPSNet class DidacticPSNetBroker: public DidacticPSNet
{ {
private: private:
char _topic[MAX_NR_TOPICS_BROKER][MAX_LEN_TOPICS+1] = { { 0 } }; char _topic[MAX_NR_TOPICS_BROKER][MAX_LEN_TOPICS+1] = { { 0 } };
...@@ -140,8 +140,8 @@ class didacticPSNetBroker: public didacticPSNet ...@@ -140,8 +140,8 @@ class didacticPSNetBroker: public didacticPSNet
int getFreeTopicNr(); int getFreeTopicNr();
public: public:
didacticPSNetBroker(); DidacticPSNetBroker();
~didacticPSNetBroker(); ~DidacticPSNetBroker();
bool update(char*, int, char*, int); bool update(char*, int, char*, int);
...@@ -149,7 +149,7 @@ class didacticPSNetBroker: public didacticPSNet ...@@ -149,7 +149,7 @@ class didacticPSNetBroker: public didacticPSNet
}; };
class unblockingTimer class UnblockingTimer
{ {
private: private:
long lastTime = 0L; long lastTime = 0L;
...@@ -158,13 +158,15 @@ class unblockingTimer ...@@ -158,13 +158,15 @@ class unblockingTimer
bool timeElapsed(long); bool timeElapsed(long);
}; };
class serialReader class SerialReader
{ {
private: private:
Stream* _port;
int charCounter = 0; int charCounter = 0;
public: public:
int readSerialData(Stream&, char*, char); void begin(Stream&);
int readSerialData(char*, char);
}; };
#endif #endif
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment