# Blinker - Po.W.E.R. Synchronization Protocol

The Po.W.E.R. synchronization protocol has been defined for a stage play of BBM (Beobachter der Bediener von Maschinen). Its purpose is to synchronize multiple media players over a local network.

The master sends/broadcasts the current media file name and the position within the media file every 0.1s in a single UDP packet. Both source and destination ports have to be 5740, but Blinker allows to use other values, too.

## UDP packet format

The payload data in each UDP packet is defined as follows:

start |  | length |  | type |  | description
0 |  | 4 |  | ASCII |  | fixed magic, always "PoSy"
4 |  | 4 |  | uint32, big endian |  | bit field for flags
4 |  | 64 |  | UTF-8 string, zero-padded |  | name of the current media piece/file
72 |  | 4 |  | uint32, big endian |  | current position within the media piece in milliseconds

The following flags are defined:

value |  | description
1 |  | pause mode active

Generation of packets has to follow the above specification exactly. Additional fields may be added in later version of the protocol. User-defined extensions are not allowed. Undefined fields in bit fields have to be zero.

On reception, all packets with a smaller length or not starting with the correct magic have to be discarded. Undefined fields of bit fields have to be ignored. Trailing data (i.e. if packet is longer than expected) has to be ignored.