BlinkenlightsProtocol: Difference between revisions

From BlinkenArea Wiki
Jump to: navigation, search
(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:
<font face="MONOSPACE">  <br>
__NOEDITSECTION__
+-----------------------+ <br>
{{FlagUK|target=BlinkenlightsProtocolEnglish}}
| magic&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;| <br>
''[[Protokolle|zurück zur Übersicht]]''
| 0xDE 0xAD  0xBE 0xEF | <br>
 
+-----------------------+ <br>
== Stream ==
| frame number          | <br>
 
| 0x00 0x00  0x00 0x00 | <br>
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):
+-----------+-----------+ <br>
 
| width    | height    | <br>
<pre>
| 0x00 0x12 | 0x00 0x08 | <br>
+-----------------------+
+-----------+-----------+ <br>
| magic                 |
| pixels                | <br>
| 0xDE 0xAD  0xBE 0xEF |
| 0x01 0x01  0x00 0x00 | <br>
+-----------------------+
| 0x00 0x00  0x01 0x00 | <br>
| frame number          |
| ...                  | <br>
| 0x00 0x00  0x00 0x00 |
| 0x00 0x00  0x00 0x00 | <br>
+-----------+-----------+
+-----------------------+ <br>
| width    | height    |
</font>
| 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

English Version of this Page

zurück zur Übersicht

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