===========
Ein sehr einfach gehaltenes Kommunikationsprotokoll. Das Protokoll wird für schulische Zwecke genutzt und dient zum lernen.
Des Prtokoll ist wie folgt aufgebaut:
- Entweder kann man einfach einen Command senden
| 1 Byte | |
|---|---|
| 1 | initialisierung |
| 2 | Ziel ID |
| 3 | Source ID |
| 4 | command (max 127) |
| 5 | Checksumme |
- Oder einen Text übermitteln
| 1 Byte | |
|---|---|
| 1 | Initialisierung |
| 2 | Ziel ID |
| 3 | Source ID |
| 4 | command(text) + textlänge |
| 5 | TEXT (max 128byte) |
| 6 | Checksumme |
Bei keiner Überittlung wird die Verbindung immer auf 1 gehalten. Wichtig beim lesen und schreiben von Nachrichten muss dieser Wert umgekehrt (1 auf 0) gesetzt werden. Bei dieser Dokumentation wird davon ausgegangen, dass das ausgehende oder eingehende Byte bereits umgekehrt, also 0 bei keinem Senden erhält.
Um zu erkennen, dass eine Nachricht übermittelt wird, wird ein Initialisierungs Byte genutzt. Dieses muss immer 1010 1010 betragen. Dies wird einheitlich bei allen Kontrollern, die dieses Protokoll nutzen.
Die Ziel ID ist eine 1 Byte grosse Zahl, die genutzt wird um zu erkennen, an wen man die Nachticht senden möchte.
Die Source ID wird genutzt um zu erkenne, von wem die Nachricht ist und an wen man antworten sollte, sollte eine Antwort benötigt werden.
Beim Command übermitteln wird bei dem command byte(4) das erste byte auf 0 gesetzt. Die restlichen können zur übermittlung des Commands genutzt werden.
Hier eine kurze liste der haupt commands. Das Protokoll wurde dafür gebaut, damit man jederzeit eigene commands hinzufügen kann.
| byte | name |
|---|---|
| [0]000 0001 | Okey |
| [0]000 0010 | Fehler: Neu senden |
| [0]001 xxxx | Tastencommand senden / empfangen |
Der Tastencommand beginnt mit den bits 0001 als "Highernibble". xxxx Definiert den Tastencode.
Beim Übermitteln eines Textes wird beim command byte(4) des erste byte auf 1 gesetzt und die restlichen bytes dafür genutzt, um die grösse der kommenden Nachricht zu übermitteln. Setzt man den rest auf 0 wird eine Byte als Text übertragen. Setzt man alle restlichen 7 bits auf 1, dann werden 128 Bytes übertragen. Das heisst die der digitale Wert der letzten sieben Bytes + 1 ergeben die Nachrichtenlänge in Bytes. Dadurch ist es möglich zwischen 1 - 128 Byte grosse Nachricht in einem Packet zu versenden.
| Byte | Grösse |
|---|---|
| [1]000 0000 | 1 Byte |
| [1]nnn nnnn | n + 1 Byte |
| [1]111 1111 | 128 Byte |
Wird benötigt um die erhaltenen bytes zu kontrollieren. Die checksumme ermöglicht es zu erkennen, ob ein fehler bei der Übermittlung entschaden ist.
Die Checksumme wird erstellt indem man alle zuvor gesendeten bytes(inklusiv erstem Byte '10101010') XOR miteinander verknüpft.
Das structure chart aller Funktionen:
Alle Struktogramme:
co_io - funktionen
co_read
-- co_write - funktionen
co_isr
co_lib - funktionen
Die Funktionsbeschreibungen und Dokumentation ist unter folgendem link zu finden: http://bigz94.github.io/comprotocol/doc/doxy/html/index.html
