Stefan Schuermans commited on 2014-01-03 17:09:12
Showing 9 changed files, with 196 additions and 12 deletions.
| ... | ... |
@@ -114,12 +114,17 @@ |
| 114 | 114 |
<li><a href="udp4phone.html">UDP4 Phone Connector</a></li> |
| 115 | 115 |
<li><a href="udp4receiver.html">UDP4 Receiver</a></li> |
| 116 | 116 |
<li><a href="udp4sender.html">UDP4 Sender</a></li> |
| 117 |
+ <li><a href="udp4syncreceiver.html">UDP4 Synchronization Receiver</a></li> |
|
| 118 |
+ <li><a href="udp6phone.html">UDP6 Phone Connector</a></li> |
|
| 119 |
+ <li><a href="udp6receiver.html">UDP6 Receiver</a></li> |
|
| 120 |
+ <li><a href="udp6sender.html">UDP6 Sender</a></li> |
|
| 121 |
+ <li><a href="udp6syncreceiver.html">UDP6 Synchronization Receiver</a></li> |
|
| 117 | 122 |
</ul> |
| 118 | 123 |
</p> |
| 119 | 124 |
<h2>Copyright / Copyleft</h2> |
| 120 | 125 |
<p> |
| 121 | 126 |
Blinker<br> |
| 122 |
- Copyright 2011 Stefan Schuermans <stefan@blinkenarea.org><br> |
|
| 127 |
+ Copyright 2011-2014 Stefan Schuermans <stefan@blinkenarea.org><br> |
|
| 123 | 128 |
Copyleft GNU public license - http://www.gnu.org/copyleft/gpl.html<br> |
| 124 | 129 |
a blinkenarea.org project |
| 125 | 130 |
</p> |
| ... | ... |
@@ -0,0 +1,85 @@ |
| 1 |
+<html> |
|
| 2 |
+ <head> |
|
| 3 |
+ <title>Blinker - Po.W.E.R. Synchronization Protocol</title> |
|
| 4 |
+ </head> |
|
| 5 |
+ <body> |
|
| 6 |
+ <h1>Blinker - Po.W.E.R. Synchronization Protocol</h1> |
|
| 7 |
+ <p> |
|
| 8 |
+ The Po.W.E.R. synchronization protocol has been defined for a stage |
|
| 9 |
+ play of BBM (Beobachter der Bediener von Maschinen). |
|
| 10 |
+ Its purpose is to synchronize multiple media players over a local |
|
| 11 |
+ network. |
|
| 12 |
+ </p> |
|
| 13 |
+ <p> |
|
| 14 |
+ The master sends/broadcasts the current media file name and the |
|
| 15 |
+ position within the media file every 0.1s in a single UDP packet. |
|
| 16 |
+ Both source and destination ports have to be 5740, but Blinker |
|
| 17 |
+ allows to use other values, too. |
|
| 18 |
+ </p> |
|
| 19 |
+ <h2>UDP packet format</h2> |
|
| 20 |
+ <p> |
|
| 21 |
+ The payload data in each UDP packet is defined as follows: |
|
| 22 |
+ <table> |
|
| 23 |
+ <tr><td><b>start</b></td> |
|
| 24 |
+ <td width="2em"></td> |
|
| 25 |
+ <td><b>length</b></td> |
|
| 26 |
+ <td width="2em"></td> |
|
| 27 |
+ <td><b>type</b></td> |
|
| 28 |
+ <td width="2em"></td> |
|
| 29 |
+ <td><b>description</b></td></tr> |
|
| 30 |
+ <tr><td>0</td> |
|
| 31 |
+ <td></td> |
|
| 32 |
+ <td>4</td> |
|
| 33 |
+ <td></td> |
|
| 34 |
+ <td>ASCII</td> |
|
| 35 |
+ <td></td> |
|
| 36 |
+ <td>fixed magic, always "PoSy"</td></tr> |
|
| 37 |
+ <tr><td>4</td> |
|
| 38 |
+ <td></td> |
|
| 39 |
+ <td>4</td> |
|
| 40 |
+ <td></td> |
|
| 41 |
+ <td>uint32, big endian</td> |
|
| 42 |
+ <td></td> |
|
| 43 |
+ <td>bit field for flags</td></tr> |
|
| 44 |
+ <tr><td>4</td> |
|
| 45 |
+ <td></td> |
|
| 46 |
+ <td>64</td> |
|
| 47 |
+ <td></td> |
|
| 48 |
+ <td>UTF-8 string, zero-padded</td> |
|
| 49 |
+ <td></td> |
|
| 50 |
+ <td>name of the current media piece/file</td></tr> |
|
| 51 |
+ <tr><td>72</td> |
|
| 52 |
+ <td></td> |
|
| 53 |
+ <td>4</td> |
|
| 54 |
+ <td></td> |
|
| 55 |
+ <td>uint32, big endian</td> |
|
| 56 |
+ <td></td> |
|
| 57 |
+ <td>current position within the media piece in milliseconds</td></tr> |
|
| 58 |
+ </table> |
|
| 59 |
+ </p> |
|
| 60 |
+ <p> |
|
| 61 |
+ The following flags are defined: |
|
| 62 |
+ <table> |
|
| 63 |
+ <tr><td><b>value</b></td> |
|
| 64 |
+ <td width="2em"></td> |
|
| 65 |
+ <td><b>description</b></td></tr> |
|
| 66 |
+ <tr><td>1</td> |
|
| 67 |
+ <td></td> |
|
| 68 |
+ <td>pause mode active</td></tr> |
|
| 69 |
+ </table> |
|
| 70 |
+ </p> |
|
| 71 |
+ <p> |
|
| 72 |
+ Generation of packets has to follow the above specification exactly. |
|
| 73 |
+ Additional fields may be added in later version of the protocol. |
|
| 74 |
+ User-defined extensions are not allowed. |
|
| 75 |
+ Undefined fields in bit fields have to be zero. |
|
| 76 |
+ </p> |
|
| 77 |
+ <p> |
|
| 78 |
+ On reception, all packets with a smaller length or not starting with |
|
| 79 |
+ the correct magic have to be discarded. |
|
| 80 |
+ Undefined fields of bit fields have to be ignored. |
|
| 81 |
+ Trailing data (i.e. if packet is longer than expected) has to be ignored. |
|
| 82 |
+ </p> |
|
| 83 |
+ </body> |
|
| 84 |
+</html> |
|
| 85 |
+ |
| ... | ... |
@@ -5,7 +5,7 @@ |
| 5 | 5 |
<body> |
| 6 | 6 |
<h1>Blinker - UDPv4 Receiver</h1> |
| 7 | 7 |
<p> |
| 8 |
- The UDPv4 receiver module reeceives a stream using UDP version 4 across |
|
| 8 |
+ The UDPv4 receiver module receives a stream using UDP version 4 across |
|
| 9 | 9 |
a network. |
| 10 | 10 |
It supports the static and dynamic variants of the BLP, EBLP and MCUF |
| 11 | 11 |
protocols. |
| ... | ... |
@@ -0,0 +1,47 @@ |
| 1 |
+<html> |
|
| 2 |
+ <head> |
|
| 3 |
+ <title>Blinker - UDPv4 Synchronization Receiver</title> |
|
| 4 |
+ </head> |
|
| 5 |
+ <body> |
|
| 6 |
+ <h1>Blinker - UDPv4 Synchronization Receiver</h1> |
|
| 7 |
+ <p> |
|
| 8 |
+ The UDPv4 synchronization receiver module receives a synchronization |
|
| 9 |
+ stream using the |
|
| 10 |
+ <a href="powersync.html">Po.W.E.R. synchronization protocol</a> |
|
| 11 |
+ over UDP version 4 across a network. |
|
| 12 |
+ </p> |
|
| 13 |
+ <h2>Configuration</h2> |
|
| 14 |
+ <p> |
|
| 15 |
+ The configuration of the UDPv4 synchronization receiver module with name |
|
| 16 |
+ <code>NAME</code> is located in the <code>udp4syncreceivers/NAME</code> |
|
| 17 |
+ subdirectory. |
|
| 18 |
+ </p> |
|
| 19 |
+ <h3>Output Synchronization Stream</h3> |
|
| 20 |
+ <p> |
|
| 21 |
+ The file <code>outsync</code> contains the name of the synchronization |
|
| 22 |
+ stream to write the received synchronization information to. |
|
| 23 |
+ </p> |
|
| 24 |
+ <h3>Bind Address</h3> |
|
| 25 |
+ <p> |
|
| 26 |
+ The file <code>bind</code> contains the local address to bind to. |
|
| 27 |
+ It must contain the IP address and the port, i.e. a string |
|
| 28 |
+ <code><IP>:<port></code> (hostnames are not supported). |
|
| 29 |
+ If the local address should be determined automatically, the file |
|
| 30 |
+ can contain <code>0.0.0.0:0</code>. |
|
| 31 |
+ </p> |
|
| 32 |
+ <h3>Source Address</h3> |
|
| 33 |
+ <p> |
|
| 34 |
+ The file <code>source</code> contains the source address |
|
| 35 |
+ as a string <code><IP>:<port></code> |
|
| 36 |
+ (hostnames are not supported). |
|
| 37 |
+ <br> |
|
| 38 |
+ If the source address file exists, only a stream from the specified |
|
| 39 |
+ address is accepted. |
|
| 40 |
+ Otherwise, the stream can be sent from any address. |
|
| 41 |
+ <br> |
|
| 42 |
+ If both the source address and the protocol are given, dynamic |
|
| 43 |
+ stream request packets are sent to the source address. |
|
| 44 |
+ </p> |
|
| 45 |
+ </body> |
|
| 46 |
+</html> |
|
| 47 |
+ |
| ... | ... |
@@ -21,15 +21,15 @@ |
| 21 | 21 |
<h3>Bind Address</h3> |
| 22 | 22 |
<p> |
| 23 | 23 |
The file <code>bind</code> contains the local address to bind to. |
| 24 |
- It must contain the IP address and the port, i.e. a string |
|
| 25 |
- <code><IP>:<port></code> (hostnames are not supported). |
|
| 24 |
+ It must contain the IPv6 address and the port, i.e. a string |
|
| 25 |
+ <code>[<IPv6>]:<port></code> (hostnames are not supported). |
|
| 26 | 26 |
If the local address should be determined automatically, the file |
| 27 | 27 |
can contain <code>[::]:0</code>. |
| 28 | 28 |
</p> |
| 29 | 29 |
<h3>Server Address</h3> |
| 30 | 30 |
<p> |
| 31 | 31 |
The file <code>server</code> contains the address of the EBIP server |
| 32 |
- as a string <code><IP>:<port></code> |
|
| 32 |
+ as a string <code>[<IPv6>]:<port></code> |
|
| 33 | 33 |
(hostnames are not supported). |
| 34 | 34 |
<br> |
| 35 | 35 |
The phone connector module will register with this server and |
| ... | ... |
@@ -5,7 +5,7 @@ |
| 5 | 5 |
<body> |
| 6 | 6 |
<h1>Blinker - UDPv6 Receiver</h1> |
| 7 | 7 |
<p> |
| 8 |
- The UDPv6 receiver module reeceives a stream using UDP version 4 across |
|
| 8 |
+ The UDPv6 receiver module receives a stream using UDP version 4 across |
|
| 9 | 9 |
a network. |
| 10 | 10 |
It supports the static and dynamic variants of the BLP, EBLP and MCUF |
| 11 | 11 |
protocols. |
| ... | ... |
@@ -31,15 +31,15 @@ |
| 31 | 31 |
<h3>Bind Address</h3> |
| 32 | 32 |
<p> |
| 33 | 33 |
The file <code>bind</code> contains the local address to bind to. |
| 34 |
- It must contain the IP address and the port, i.e. a string |
|
| 35 |
- <code><IP>:<port></code> (hostnames are not supported). |
|
| 34 |
+ It must contain the IPv6 address and the port, i.e. a string |
|
| 35 |
+ <code>[<IPv6>]:<port></code> (hostnames are not supported). |
|
| 36 | 36 |
If the local address should be determined automatically, the file |
| 37 | 37 |
can contain <code>[::]:0</code>. |
| 38 | 38 |
</p> |
| 39 | 39 |
<h3>Source Address</h3> |
| 40 | 40 |
<p> |
| 41 | 41 |
The file <code>source</code> contains the source address |
| 42 |
- as a string <code><IP>:<port></code> |
|
| 42 |
+ as a string <code>[<IPv6>]:<port></code> |
|
| 43 | 43 |
(hostnames are not supported). |
| 44 | 44 |
<br> |
| 45 | 45 |
If the source address file exists, only a stream from the specified |
| ... | ... |
@@ -30,8 +30,8 @@ |
| 30 | 30 |
<h3>Bind Address</h3> |
| 31 | 31 |
<p> |
| 32 | 32 |
The file <code>bind</code> contains the local address to bind to. |
| 33 |
- It must contain the IP address and the port, i.e. a string |
|
| 34 |
- <code><IP>:<port></code> (hostnames are not supported). |
|
| 33 |
+ It must contain the IPv6 address and the port, i.e. a string |
|
| 34 |
+ <code>[<IPv6>]:<port></code> (hostnames are not supported). |
|
| 35 | 35 |
If the local address should be determined automatically, the file |
| 36 | 36 |
can contain <code>[::]:0</code>. |
| 37 | 37 |
</p> |
| ... | ... |
@@ -52,7 +52,7 @@ |
| 52 | 52 |
<h4>Destination Address</h4> |
| 53 | 53 |
<p> |
| 54 | 54 |
The file <code>addr</code> contains the destination address |
| 55 |
- as a string <code><IP>:<port></code> |
|
| 55 |
+ as a string <code>[<IPv6>]:<port></code> |
|
| 56 | 56 |
(hostnames are not supported). |
| 57 | 57 |
</p> |
| 58 | 58 |
</body> |
| ... | ... |
@@ -0,0 +1,47 @@ |
| 1 |
+<html> |
|
| 2 |
+ <head> |
|
| 3 |
+ <title>Blinker - UDPv6 Synchronization Receiver</title> |
|
| 4 |
+ </head> |
|
| 5 |
+ <body> |
|
| 6 |
+ <h1>Blinker - UDPv6 Synchronization Receiver</h1> |
|
| 7 |
+ <p> |
|
| 8 |
+ The UDPv6 synchronization receiver module receives a synchronization |
|
| 9 |
+ stream using the |
|
| 10 |
+ <a href="powersync.html">Po.W.E.R. synchronization protocol</a> |
|
| 11 |
+ over UDP version 4 across a network. |
|
| 12 |
+ </p> |
|
| 13 |
+ <h2>Configuration</h2> |
|
| 14 |
+ <p> |
|
| 15 |
+ The configuration of the UDPv6 synchronization receiver module with name |
|
| 16 |
+ <code>NAME</code> is located in the <code>udp4syncreceivers/NAME</code> |
|
| 17 |
+ subdirectory. |
|
| 18 |
+ </p> |
|
| 19 |
+ <h3>Output Synchronization Stream</h3> |
|
| 20 |
+ <p> |
|
| 21 |
+ The file <code>outsync</code> contains the name of the synchronization |
|
| 22 |
+ stream to write the received synchronization information to. |
|
| 23 |
+ </p> |
|
| 24 |
+ <h3>Bind Address</h3> |
|
| 25 |
+ <p> |
|
| 26 |
+ The file <code>bind</code> contains the local address to bind to. |
|
| 27 |
+ It must contain the IPv6 address and the port, i.e. a string |
|
| 28 |
+ <code>[<IPv6>]:<port></code> (hostnames are not supported). |
|
| 29 |
+ If the local address should be determined automatically, the file |
|
| 30 |
+ can contain <code>[::]:0</code>. |
|
| 31 |
+ </p> |
|
| 32 |
+ <h3>Source Address</h3> |
|
| 33 |
+ <p> |
|
| 34 |
+ The file <code>source</code> contains the source address |
|
| 35 |
+ as a string <code>[<IPv6>]:<port></code> |
|
| 36 |
+ (hostnames are not supported). |
|
| 37 |
+ <br> |
|
| 38 |
+ If the source address file exists, only a stream from the specified |
|
| 39 |
+ address is accepted. |
|
| 40 |
+ Otherwise, the stream can be sent from any address. |
|
| 41 |
+ <br> |
|
| 42 |
+ If both the source address and the protocol are given, dynamic |
|
| 43 |
+ stream request packets are sent to the source address. |
|
| 44 |
+ </p> |
|
| 45 |
+ </body> |
|
| 46 |
+</html> |
|
| 47 |
+ |