BLP - Blinkenlights protocol |
|
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:
+-----------------------+
| 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
Die dynamische Erweiterung kann benutzt werden, um einen BLP-Stream dynamisch anzufordern. Ein Anfrage-Paket wird periodisch (z.B. 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 (z.B. 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
Der UDP Port sollte auf Server- und Client-Seite konfigurierbar sein. Der Standard-Port ist UDP 2323.
--
StefanSchuermans - 06 Jun 2004