From 11b342029bc3d6af2ea778de79701ec11ff5b9ff Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?Anian=20B=C3=BChler?=
 <anian.buehler@reutlingen-university.de>
Date: Tue, 4 Jun 2024 12:00:58 +0200
Subject: [PATCH] Updated Readme.MD

---
 README.md | 110 +++++++++++++++++++++++++++++++++++-------------------
 1 file changed, 72 insertions(+), 38 deletions(-)

diff --git a/README.md b/README.md
index bfffaaa..a6de414 100644
--- a/README.md
+++ b/README.md
@@ -4,14 +4,14 @@ Bibliothek zur Implementierung von vereinfachten Netzwerken auf Arduino-Boards.
 Die Funktionalitaeten entsprechen dem Stand der Technik, die Umsetzung ist didaktisch reduziert.
 
 Für eine Nutzung der Bibliothek wird eine drahtlose Schnittstelle benoetigt, wleche sich an der Seriellen Schnittstelle betreiben lässt.
-Wir empfehlen unsere IR-Link-Module, die Sie selbst herstellen koennen (Schaltplan und Layout bei uns anfragen - Kontakt über [letsgoING.org](httsp://letsgoING.org) 
+Wir empfehlen unsere IR-Link-Module, die Sie selbst herstellen koennen (Schaltplan und Layout bei uns anfragen - Kontakt über [letsgoING.org](httsp://letsgoING.org)
 oder z. B. hier erwerben koennen: [Hinweise zur Bestellung bei Aisler](#bestellung-bei-aisler).
 
-
 ## Download
+
 Start download with the button on the right side. Choose the right format and start the download.
 
-![](DownloadButton.png) 
+![](DownloadButton.png)
 
 After download install library:
 https://www.arduino.cc/en/guide/libraries section "Importing a .zip Library"
@@ -21,14 +21,16 @@ https://www.arduino.cc/en/guide/libraries section "Importing a .zip Library"
 ## Beispiele
 
 **Broker:**
-- sPSN_Broker.ino        **->** Broker Applikation (muss nicht angepasst werden)
+
+- sPSN_Broker.ino **->** Broker Applikation (muss nicht angepasst werden)
 
 **Clients:**
-- sPSN_Client1(2).ino    **->** Client Applikationen die sich gegenseitig einen analogen bzw. digtalen Wert senden
+
+- sPSN_Client1(2).ino **->** Client Applikationen die sich gegenseitig einen analogen bzw. digtalen Wert senden
 - sPSN-ClientMinimal.ino **->** Minimal-Code für den einfachen Einstieg
-- sPSN-Chat.ino          **->** Chat-Applikation die Nachrichten unter eigenem Namen austauschen lässt
+- sPSN-Chat.ino **->** Chat-Applikation die Nachrichten unter eigenem Namen austauschen lässt
 
-## Funktionen und Parameter 
+## Funktionen und Parameter
 
 ### Client
 
@@ -56,7 +58,7 @@ int psnClient.subscribe(char* topic);
 int psnClient.subscribe(char* topic, int length);
 // param1: Topic String/char-Array
 // param2: Anzahl Zeichen des Topics
-// return ERROR-Wert: DN_ERROR_NO_ERROR, 
+// return ERROR-Wert: DN_ERROR_NO_ERROR,
 //                    DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten)
 
 #Anzahl der aboonierten Topics ausgeben
@@ -71,62 +73,62 @@ int getSubscribedTopic(char*, int);
 //                    DN_ERROR_NO_TOPIC (Topic unter der angegebenen Nummer nicht verfügbar)
 
 #Topic eines anderen Clients entfernen
-bool psnClient.unsubscribe(char* topic);            
+bool psnClient.unsubscribe(char* topic);
 // param: Topic String/char-Array
 
-bool psnClient.unsubscribe(char* topic, int length); 
+bool psnClient.unsubscribe(char* topic, int length);
 // param1: Topic String/char-Array
 // param2: Anzahl Zeichen des Topics
 // return true wenn Daten versendet / false wenn nicht
 
-#Daten unter Topic veroeffentlichen 
-int psnClient.publish(char* topic, char* payload); 
-// param1: Topic String/char-Array; 
+#Daten unter Topic veroeffentlichen
+int psnClient.publish(char* topic, char* payload);
+// param1: Topic String/char-Array;
 // param2: payload-char-Array
-// return: ERROR-Wert: DN_PUBLISH_SUCCESSULL, 
-//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten), 
+// return: ERROR-Wert: DN_PUBLISH_SUCCESSULL,
+//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten),
 //                     DN_ERROR_PAYLOAD_LEN (Payload zu lange - wird abgeschnitten)
 
-int psnClient.publish(char* topic, bool payload); 
-// param1: Topic String/char-Array; 
+int psnClient.publish(char* topic, bool payload);
+// param1: Topic String/char-Array;
 // param2: payload vom Datentyp bool (wird in char-Array gewandelt)
-// return: ERROR-Wert: DN_PUBLISH_SUCCESSULL, 
-//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten), 
+// return: ERROR-Wert: DN_PUBLISH_SUCCESSULL,
+//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten),
 //                     DN_ERROR_PAYLOAD_LEN (Payload zu lange - wird abgeschnitten)
 
-int psnClient.publish(char* topic, int payload); 
-// param1: Topic String/char-Array; 
+int psnClient.publish(char* topic, int payload);
+// param1: Topic String/char-Array;
 // param2: payload vom Datentyp int (wird in char-Array gewandelt)
-// return: ERROR-Wert: DN_PUBLISH_SUCCESSULL, 
-//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten), 
+// return: ERROR-Wert: DN_PUBLISH_SUCCESSULL,
+//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten),
 //                     DN_ERROR_PAYLOAD_LEN (Payload zu lange - wird abgeschnitten)
 
-int psnClient.publish(char* topic, int topicLength, char* payload, int payloadLength); 
+int psnClient.publish(char* topic, int topicLength, char* payload, int payloadLength);
 // param1: Topic String/char-Array
 // param2: Anzahl Zeichen des Topics
 // param3: payload-char-Array
 // param4: Anzahl Zeichen der Payload
-// return: ERROR-Wert: DN_PUBLISH_SUCCESSULL, 
-//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten), 
+// return: ERROR-Wert: DN_PUBLISH_SUCCESSULL,
+//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten),
 //                     DN_ERROR_PAYLOAD_LEN (Payload zu lange - wird abgeschnitten)
 
 //Daten werden beim Zustandswechsel von payload (0->1 / 1->0) veroeffentlicht
 int psnClient.publishOnChange(char* topic, bool payload);
-// param1: Topic String/char-Array; 
+// param1: Topic String/char-Array;
 // param2: payload vom Datentyp bool (wird in char-Array gewandelt)
 // return: ERROR-Wert: DN_PUBLISH_SUCCESSULL,
-//                     DN_ERROR_NO_ERROR (Keine Daten veroeffentlicht und keine Fehler), 
-//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten), 
+//                     DN_ERROR_NO_ERROR (Keine Daten veroeffentlicht und keine Fehler),
+//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten),
 //                     DN_ERROR_PAYLOAD_LEN (Payload zu lange - wird abgeschnitten)
 
-// Daten werden veroeffentlicht, wenn Veränderung von payload groeßer als threshold ist 
+// Daten werden veroeffentlicht, wenn Veränderung von payload groeßer als threshold ist
 int psnClient.publishOnChange(char* topic, int payload, int threshold);
-// param1: Topic String/char-Array; 
+// param1: Topic String/char-Array;
 // param2: payload vom Datentyp bool (wird in char-Array gewandelt)
-// param1: Topic String/char-Array; 
+// param1: Topic String/char-Array;
 // return: ERROR-Wert: DN_PUBLISH_SUCCESSULL,
-//                     DN_ERROR_NO_ERROR (Keine Daten veroeffentlicht und keine Fehler), 
-//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten), 
+//                     DN_ERROR_NO_ERROR (Keine Daten veroeffentlicht und keine Fehler),
+//                     DN_ERROR_TOPIC_LEN (Topic zu lang - wird abgeschnitten),
 //                     DN_ERROR_PAYLOAD_LEN (Payload zu lange - wird abgeschnitten)
 
 #Callback-Funktion (wird bei neuen Daten aufgerufen)
@@ -149,10 +151,10 @@ void newData(char* topic, int topicLength, char* payload, int payloadLength){...
 #Anlegen der Broker-Instanz
 // Anlegen des Broker-Objekts
 // psnBroker -> moeglicher Name für Objekt
-didacticPSNetBroker psnBroker; 
+didacticPSNetBroker psnBroker;
 
-#Starten der Broker-Instanz 
-void psnBroker.begin(Stream& sSerial); 
+#Starten der Broker-Instanz
+void psnBroker.begin(Stream& sSerial);
 // param: Schnittstelle (Serial | SoftwareSerial)
 
 #Netzwerkverwaltung Broker (Daten senden und Empfangen, Zugriffsregelung)
@@ -161,13 +163,44 @@ bool psnBroker.handleNetwork();
 
 void psnBroker.setInterval(long intervalTime);
 // param: Mindestwartezeit in ms zwischen zwei Sendevorgängen (default 0 ms)
+
+#Broker Verbose-Mode
+//verbose-Ausgabe aktivieren
+void psnBroker.setVerbose(Stream Serial);
+//param: Stream-Port auf dem die Eingehenden Nachrichten ausgegeben werden sollen
+//       möglich: SoftwareSerial-Instanz, Serial, auch Serial1 / Serial2 / ... z. B. mit Mega2560-Boards
+
+//verbose-Ausgabe deaktivieren
+void psnBroker.setNoneVerbose();
+//verbose-Ausgabe deaktivieren
+
 ```
 
 ### Hilfreiche Funktionen
+
 Die Hiflsfunktionen sind als eigenständige Klassen implementiert und koennen so mehrfach (unter verschiedenen Namen) angelegt werden.
 So koennen die Funktionen mehrfach, mit unterschiedlichen Parametern, verwendet werden.
 
 ```cpp
+
+#Vereinfachtes Eingabe-Interface für den SerialMonitor
+// Anlegen des serialMonitorUI-Objekts
+// serialUI -> moeglicher Name für Objekt
+serialMonitorUI serialUI;
+
+bool serialUI.available();
+// return: true -> wenn Eingabe vom SerialMonitor verfügbar ist (Eingabe mit Zeilenumbruch CR am SerialMonitor)
+//         false -> wenn KEINE Eingabe vom SerialMonitor verfügbar ist
+
+//gebe Steuerzeichen aus
+char serialUI.readCommand();
+// return: CHAR an erster Stelle eingegebenes Steuerzeichen
+//         möglich: ! " # $ % & ' ( ) * + , - . / : ; < = > ? @ {
+
+//speichere Eingabe
+void serialUI.readUserInput(char *);
+//param: Array in das die Eingegebenen Zeichen gespeichert werden sollen
+
 #Flankenerkennung z.B. fuer Taster
 // Anlegen des EdgeDetector-Objekts
 // eDetector -> moeglicher Name für Objekt
@@ -211,6 +244,7 @@ int sReader.readSerialData(Stream&, char*, char);
 ### Konstanten
 
 Konstanten aus der Library die fuer die Programmierung genutzt werden und angepasst werden koennen.
+
 ```cpp
 #ASCII Endezeichen
 DN_ASCII_CR "carriage return CR" (int) 13
@@ -260,4 +294,4 @@ CALLBACK_W_LENGTH not defined
 - vor der Bestellung Bauteilliste (Preise) aktualisieren
 - Bestellung der Platinen (Peautiful Boards) und der Bauteile (Precious Parts)
 
-**Hinweis:** Das Projekt letsgoING ist in **keiner Weise** an dem **Verkauf beteiligt**.
\ No newline at end of file
+**Hinweis:** Das Projekt letsgoING ist in **keiner Weise** an dem **Verkauf beteiligt**.
-- 
GitLab