BlinkenlightsProtocol: Difference between revisions
(New page: <font face="MONOSPACE"> <br> +-----------------------+ <br> | magic | <br> | 0xDE 0xA...) |
m (stream timeout) |
||
(4 intermediate revisions by 3 users not shown) | |||
Line 1: | Line 1: | ||
__NOEDITSECTION__ | |||
+-----------------------+ | {{FlagUK|target=BlinkenlightsProtocolEnglish}} | ||
| magic | ''[[Protokolle|zurück zur Übersicht]]'' | ||
| 0xDE 0xAD 0xBE 0xEF | | |||
+-----------------------+ | == Stream == | ||
| frame number | | |||
| 0x00 0x00 0x00 0x00 | | Das Blinkenlights protocol wird benutzt um schwarz/weisse Blinkenlights-Streams per UDP zu versenden. Es wird dazu einfach für jedes neue Bild ein UDP-Paket gesendet (für über 1 Sekunde andauernde Frames wird das Frame jede Sekunde wiederholt, 5 Sekunden ist das Stream-Timeout): | ||
+-----------+-----------+ | |||
| width | height | | <pre> | ||
| 0x00 0x12 | 0x00 0x08 | | +-----------------------+ | ||
+-----------+-----------+ | | magic | | ||
| pixels | | | 0xDE 0xAD 0xBE 0xEF | | ||
| 0x01 0x01 0x00 0x00 | | +-----------------------+ | ||
| 0x00 0x00 0x01 0x00 | | | frame number | | ||
| ... | | | 0x00 0x00 0x00 0x00 | | ||
| 0x00 0x00 0x00 0x00 | < | +-----------+-----------+ | ||
+-----------------------+ < | | width | height | | ||
</ | | 0x00 0x12 | 0x00 0x08 | | ||
+-----------+-----------+ | |||
| pixels | | |||
| 0x01 0x01 0x00 0x00 | | |||
| 0x00 0x00 0x01 0x00 | | |||
| ... | | |||
| 0x00 0x00 0x00 0x00 | | |||
+-----------------------+ | |||
</pre> | |||
* magic: fester Wert | |||
* frame number: Nummer des Bildes, mit jedem Bild erhöht, Benutzung ist optional | |||
* width: die Breite des Bildes in Pixeln | |||
* height: die Höhe des Bildes in Pixeln | |||
* pixels: die Werte der width * height Pixel | |||
** 0x00 für aus, 0x01 für an, keine anderen Werte erlaubt | |||
** von links nach rechts, dann von oben nach unten (also oberer linker Pixel zuerst, dann der Pixel rechts daneben, ...) | |||
* alle Werte sind in network byte order - big endian - High-Byte zuerst | |||
Der UDP Port sollte auf Server- und Client-Seite konfigurierbar sein. Der Standard-Port ist UDP 2323. | |||
Es ist auch möglich, diese Pakete über Datenströme, wie TCP oder serielle Schnittstellen, zu senden. | |||
== Dynamische Erweiterung == | |||
Die dynamische Erweiterung kann benutzt werden, um einen BLP-Stream dynamisch anzufordern. Ein Anfrage-Paket wird periodisch (alle 10s) zum UDP-Port des Servers gesendet. Der Server antwortet dann mit einem BLP-Stream, gesendet von diesem Port zum Quell-Port des Anfrage-Pakets. Nachdem für eine längere Zeit (30s) kein Anfrage-Paket empfangen wurde, wird das Senden des Streams eingestellt. | |||
Das Format des Anfrage-Pakets ist wie folgt: | |||
<pre> | |||
+-----------------------+ | |||
| magic | | |||
| 0xDE 0xAD 0xBE 0xCD | | |||
+-----------------------+ | |||
| command | | |||
| 'R' 'E' 'F' 'R' | | |||
| 'E' 'S' 'H' | | |||
+-----------------------+ | |||
</pre> | |||
* magic: fester Wert | |||
* command: fester Wert | |||
Es ist auch möglich, dem Server mitzuteilen, dass der Stream nicht länger benötigt wird. Dies passiert, indem man ein Ende-Paket anstelle eines Anfrage-Pakets sendet: | |||
<pre> | |||
+-----------------------+ | |||
| magic | | |||
| 0xDE 0xAD 0xBE 0xCD | | |||
+-----------------------+ | |||
| command | | |||
| 'C' 'L' 'O' 'S' | | |||
| 'E' | | |||
+-----------------------+ | |||
</pre> | |||
* magic: fester Wert | |||
* command: fester Wert | |||
== Zusätzliche Informationen == | |||
Eine weitere Erweiterung erlaubt, zusätzlich zu den Stream-Paketen oder Stream-Anforderungen Informationen zu übertragen. | |||
Diese Informationen haben die folgende Struktur: | |||
<pre> | |||
+-----------------------+ | |||
| magic | | |||
| 0xDE 0xAD 0xBE 0x23 | | |||
+-----------------------+ | |||
| info | | |||
| 0x45 0x4E 0x44 0x00 | | |||
| 0x00 0x00 0x00 0x00 | | |||
+-----------------------+ | |||
</pre> | |||
* magic: fester Wert | |||
* info: 0..8 ASCII-Zeichen, aufgefüllt mit 0x00 bis 8 Bytes Gesamtlänge | |||
** "END", SaE: der Stream ist beendet | |||
* Abkürzungen: | |||
** SaE: Sender an Empfänger, Paket wird in Richtung der Stream-Frames gesendet | |||
** EaS: Empfänger an Sender, Paket wird in Richtung der Stream-Requests gesendet | |||
[[Category:Protokolle]] |
Latest revision as of 21:45, 21 December 2011
Stream
Das Blinkenlights protocol wird benutzt um schwarz/weisse Blinkenlights-Streams per UDP zu versenden. Es wird dazu einfach für jedes neue Bild ein UDP-Paket gesendet (für über 1 Sekunde andauernde Frames wird das Frame jede Sekunde wiederholt, 5 Sekunden ist das Stream-Timeout):
+-----------------------+ | magic | | 0xDE 0xAD 0xBE 0xEF | +-----------------------+ | frame number | | 0x00 0x00 0x00 0x00 | +-----------+-----------+ | width | height | | 0x00 0x12 | 0x00 0x08 | +-----------+-----------+ | pixels | | 0x01 0x01 0x00 0x00 | | 0x00 0x00 0x01 0x00 | | ... | | 0x00 0x00 0x00 0x00 | +-----------------------+
- magic: fester Wert
- frame number: Nummer des Bildes, mit jedem Bild erhöht, Benutzung ist optional
- width: die Breite des Bildes in Pixeln
- height: die Höhe des Bildes in Pixeln
- pixels: die Werte der width * height Pixel
- 0x00 für aus, 0x01 für an, keine anderen Werte erlaubt
- von links nach rechts, dann von oben nach unten (also oberer linker Pixel zuerst, dann der Pixel rechts daneben, ...)
- alle Werte sind in network byte order - big endian - High-Byte zuerst
Der UDP Port sollte auf Server- und Client-Seite konfigurierbar sein. Der Standard-Port ist UDP 2323.
Es ist auch möglich, diese Pakete über Datenströme, wie TCP oder serielle Schnittstellen, zu senden.
Dynamische Erweiterung
Die dynamische Erweiterung kann benutzt werden, um einen BLP-Stream dynamisch anzufordern. Ein Anfrage-Paket wird periodisch (alle 10s) zum UDP-Port des Servers gesendet. Der Server antwortet dann mit einem BLP-Stream, gesendet von diesem Port zum Quell-Port des Anfrage-Pakets. Nachdem für eine längere Zeit (30s) kein Anfrage-Paket empfangen wurde, wird das Senden des Streams eingestellt.
Das Format des Anfrage-Pakets ist wie folgt:
+-----------------------+ | magic | | 0xDE 0xAD 0xBE 0xCD | +-----------------------+ | command | | 'R' 'E' 'F' 'R' | | 'E' 'S' 'H' | +-----------------------+
- magic: fester Wert
- command: fester Wert
Es ist auch möglich, dem Server mitzuteilen, dass der Stream nicht länger benötigt wird. Dies passiert, indem man ein Ende-Paket anstelle eines Anfrage-Pakets sendet:
+-----------------------+ | magic | | 0xDE 0xAD 0xBE 0xCD | +-----------------------+ | command | | 'C' 'L' 'O' 'S' | | 'E' | +-----------------------+
- magic: fester Wert
- command: fester Wert
Zusätzliche Informationen
Eine weitere Erweiterung erlaubt, zusätzlich zu den Stream-Paketen oder Stream-Anforderungen Informationen zu übertragen. Diese Informationen haben die folgende Struktur:
+-----------------------+ | magic | | 0xDE 0xAD 0xBE 0x23 | +-----------------------+ | info | | 0x45 0x4E 0x44 0x00 | | 0x00 0x00 0x00 0x00 | +-----------------------+
- magic: fester Wert
- info: 0..8 ASCII-Zeichen, aufgefüllt mit 0x00 bis 8 Bytes Gesamtlänge
- "END", SaE: der Stream ist beendet
- Abkürzungen:
- SaE: Sender an Empfänger, Paket wird in Richtung der Stream-Frames gesendet
- EaS: Empfänger an Sender, Paket wird in Richtung der Stream-Requests gesendet