MicroControllerUnitFrameEnglish: Difference between revisions
No edit summary |
m (stream timeout) |
||
(2 intermediate revisions by the same user not shown) | |||
Line 3: | Line 3: | ||
''[[Protocols|back to summary]]'' | ''[[Protocols|back to summary]]'' | ||
The microcontroller unit frame protocol is used to transmit grayscale or colored Blinkenlights streams using UDP packets. Simply, a UDP packet is sent for every new frame: | == Stream == | ||
The microcontroller unit frame protocol is used to transmit grayscale or colored Blinkenlights streams using UDP packets. Simply, a UDP packet is sent for every new frame (frames lasting more than one second are repeated every second, 5 seconds is the stream timeout): | |||
<pre> | <pre> | ||
Line 34: | Line 36: | ||
* all values are in network byte order - big endian - highbyte first | * all values are in network byte order - big endian - highbyte first | ||
The dynamic extension can be used to request a MCUF stream dynamically. A request packet is sent periodically ( | The UDP port should be configurable at server and client side. The standard port is UDP 2323. | ||
It is also possible to send those packets over stream-like connections, like TCP or serial ports. | |||
== Dynamic Extension == | |||
The dynamic extension can be used to request a MCUF stream dynamically. A request packet is sent periodically (every 10s) to the UDP port of the server. The server then replys with a MCUF stream sent from this port to the source port of the request packet. After no request packet has been received for a longer time (30s), the stream is no longer sent. This dynamic extension is also known as the Blinkenproxy protocol. | |||
The format of the request packet is as follows: | The format of the request packet is as follows: | ||
Line 68: | Line 76: | ||
* reserved: fixed value for now | * reserved: fixed value for now | ||
== Additional Information == | |||
A further extension allows to transmit information in addition to | |||
the stream packets or the request packets of the dynamic extension. | |||
Those information packets have the following structure: | |||
<pre> | |||
+-----------------------+ | |||
| magic | | |||
| 0x42 0x42 0x42 0x23 | | |||
+-----------------------+ | |||
| info | | |||
| 0x45 0x4E 0x44 0x00 | | |||
| 0x00 0x00 0x00 0x00 | | |||
+-----------------------+ | |||
</pre> | |||
* magic: fixed value | |||
* info: 0..8 ASCII characters, padded with 0x00 to 8 bytes in total | |||
** "END", S2R: the stream has ended | |||
* abbreviations: | |||
** S2R: sender to receiver, packet is sent in same direction as stream frames | |||
** R2S: receiver to sender, packet is sent in same direction as stream requests | |||
[[Category: Protocols]] | [[Category: Protocols]] |
Latest revision as of 21:47, 21 December 2011
Stream
The microcontroller unit frame protocol is used to transmit grayscale or colored Blinkenlights streams using UDP packets. Simply, a UDP packet is sent for every new frame (frames lasting more than one second are repeated every second, 5 seconds is the stream timeout):
+-----------------------+ | magic | | 0x23 0x54 0x26 0x66 | +-----------+-----------+ | height | width | | 0x00 0x14 | 0x00 0x1A | +-----------+-----------+ | channels | maxval | | 0x00 0x01 | 0x00 0xFF | +-----------+-----------+ | pixels | | 0xFF 0xCC 0x99 0x66 | | 0x33 0x00 0x00 0x00 | | ... | | 0x00 0x00 0x00 0x00 | +-----------------------+
- magic: fixed value
- height: the height of the image in pixels
- width: the width of the image in pixels
- channels: the number of channels of the image, 1 for grayscales, 3 for RGB
- maxval: the maximum pixel value used in the pixel data
- pixels: the value of the channels * width * height pixels
- 0 for off, maxval for on, values between 0 and maxval for grayscales
- from left to right, then from top to bottom (i.e. channels of top left pixel first, pixel right to it next, ...)
- all values are in network byte order - big endian - highbyte first
The UDP port should be configurable at server and client side. The standard port is UDP 2323.
It is also possible to send those packets over stream-like connections, like TCP or serial ports.
Dynamic Extension
The dynamic extension can be used to request a MCUF stream dynamically. A request packet is sent periodically (every 10s) to the UDP port of the server. The server then replys with a MCUF stream sent from this port to the source port of the request packet. After no request packet has been received for a longer time (30s), the stream is no longer sent. This dynamic extension is also known as the Blinkenproxy protocol.
The format of the request packet is as follows:
+-----------------------+ | magic | | 0x42 0x42 0x42 0x42 | +-----------------------+ | reserved | | 0x00 0x00 0x00 0x00 | | 0x00 0x00 0x00 0x00 | +-----------------------+
- magic: fixed value
- reserved: fixed value for now
It is also possible to tell the server that the stream is no longer needed. This happens by sending a close packet instead of a request packet:
+-----------------------+ | magic | | 0x42 0x42 0x42 0x43 | +-----------------------+ | reserved | | 0x00 0x00 0x00 0x00 | | 0x00 0x00 0x00 0x00 | +-----------------------+
- magic: fixed value
- reserved: fixed value for now
Additional Information
A further extension allows to transmit information in addition to the stream packets or the request packets of the dynamic extension. Those information packets have the following structure:
+-----------------------+ | magic | | 0x42 0x42 0x42 0x23 | +-----------------------+ | info | | 0x45 0x4E 0x44 0x00 | | 0x00 0x00 0x00 0x00 | +-----------------------+
- magic: fixed value
- info: 0..8 ASCII characters, padded with 0x00 to 8 bytes in total
- "END", S2R: the stream has ended
- abbreviations:
- S2R: sender to receiver, packet is sent in same direction as stream frames
- R2S: receiver to sender, packet is sent in same direction as stream requests