MaDeCo: Unterschied zwischen den Versionen
Reini (Diskussion | Beiträge) |
Reini (Diskussion | Beiträge) |
||
| Zeile 23: | Zeile 23: | ||
<Acknowledge> besteht aus dem Header ACK und der zu bestätigenden Sequence Number. | <Acknowledge> besteht aus dem Header ACK und der zu bestätigenden Sequence Number. | ||
<Acknowledge Code> besteht aus den Header ACC und dem Code. | <Acknowledge Code> besteht aus den Header ACC und dem Code. | ||
''Beispiel:'' | |||
SEQ1 | |||
OPMSM | |||
ACK1 | |||
ACC00 | |||
SEQ2 | |||
EOC | |||
ACK2 | |||
ACC00 | |||
=== Commands === | === Commands === | ||
Version vom 28. Februar 2011, 22:10 Uhr
MaDeCo - Protokoll zur Kommunikation im RoLoMa Projekt
MaDeCo ist ein sehr einfaches textbasiertes Protokoll für die Kommunikation zwischen den Beteiligten im RoLoMa Projekt, den NIBObee Einheiten und der Basisstation, dem LPC2478.
Rollen
Es gibt unter den Beteiligten zwei festgelegte Rollen, Sender und Empfänger. Der Sender überträgt Information, der Empfänger hingegen hat eine überwiegend passive Funktion, er quittiert Nachrichten und übermittelt einen Acknowledge Code. Während der Kommunikation werden diese Rollen nicht gewechselt.
Format
Eine Nachricht besteht aus genau zwei Datensätzen, ein Datensatz besteht jeweils aus einem 3 Zeichen breiten Header Teil, und einem 2 Zeichen breiten Datenteil. Für kleinere Datenteile erfolgt ein Padding mit Leerzeichen.
Eine Nachricht, wie sie ein Sender erstellt, besteht aus:
<Sequence> <Command>
<Sequence> besteht aus dem Header SEQ, der Datenteil aus einer Nummer zwischen 1 und 99. <Command> besteht aus dem 3 Zeichen langen Command-Code, und einem entsprechenden Datenteil.
Eine Nachricht muss mit einer Antwort quittiert werden. Diese besteht aus:
<Acknowledge> <Acknowledge Code>
<Acknowledge> besteht aus dem Header ACK und der zu bestätigenden Sequence Number. <Acknowledge Code> besteht aus den Header ACC und dem Code.
Beispiel:
SEQ1 OPMSM ACK1 ACC00 SEQ2 EOC ACK2 ACC00
Commands
EOC ... end of communication, signalisiert das Ende einer Kommunikation OPM ... Operation Mode (siehe Betriebsmodus) WAP ... Waypoint (siehe Wegpunkte) DIR ... Angabe der Richtung im GO Betriebsmodus (siehe Kürzester Weg)
Acknowledge Codes
00 .. OK, Command acknowledged 01 .. unknown Command 02 .. invalid data 11 .. unbekannter Betriebsmodus (e.g. OPMXX) 21 .. Command refused, Labyrinth erkunden (OPMSM) vor eichen (OPMGA)
Ablauf
Im RoLoMa Projekt muss die Kommunikation aus Nachricht-Antwort Sequenzen bestehen. Wird eine gesendete Nachricht nicht bestätigt, erfolgt eine Neuübertragung nach dem RETRANSMISSION_TIMEOUT Interval. Erfolgt auch nach RETRANSMISSION_COUNT Wiederholungen keine Antwort, wird die Übertragung abgebrochen und ein Fehler signalisiert.
Kommunikationen überschneiden sich nicht, das bedeutet, es findet zu jedem Zeitpunkt nur eine Kommunikation zwischen den Beteiligten statt. Daher ist auch zu jedem Zeitpunkt genau ein Teilnehmer der Sender, und ein Teilnehmer der Empfänger.
Betriebsmodus
GA ... Eichen (siehe NIBObee::Eichen) SM ... Labyrinth erkunden GO ... kürzesten Weg nehmen (siehe Kürzester Weg)
Wegpunkte
Die Übertragung eines Wegpunkts erfolgt durch Angabe der Richtung (S,W,N,E), gefolgt von der Anzahl der Streckenteile.
Beispiel: WAPS4 der Wegpunkt befindet sich 4 Streckenteile südlich des zuletzt übertragenen Wegpunkts
Kürzester Weg
Hier werden Richtungsanweisungen übertragen, die es der NIBObee ermöglichen, in einem Labyrinth den kürzesten Weg zu nehmen. Beispiel (ohne ACKs), der kürzeste Weg wird als S(üd)-N(ord)-W(est)-S(üd) angegeben:
SEQ1 OPMGO SEQ2 DIRS SEQ3 DIRN SEQ4 DIRW SEQ5 DIRS SEQ6 EOC