MicroControllerUnitFrameEnglish

From BlinkenArea Wiki
Revision as of 20:05, 28 September 2007 by JulianePilster (talk | contribs) (New page: __NOEDITSECTION__ {{FlagDe|target=MicroControllerUnitFrame}} ''back to summary'' The microcontroller unit frame protocol is used to transmit grayscale or colored Blinkenligh...)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to: navigation, search
Zur deutschsprachigen Version dieser Seite

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:

+-----------------------+
| 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 dynamic extension can be used to request a MCUF stream dynamically. A request packet is sent periodically (e.g. 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 (e.g. 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

The UDP port should be configurable at server and client side. The standard port is UDP 2323.