RFC : Multi-BroadCast Protocol (MBCP) ------------------------------------- In the case of TEST : nothing to say... In the case of ABCAST : the first datagram (from emiter) contains the real message the second datagram (from sites) contains the type/timestamp of the first datagram and the new timestamp in the message part the last datagram (from emiter) contains the type/timestamp of the first datagram and the final official timestamp in the message part Datagrams : ~~~~~~~~~~~ |------|-----------|---------| | Type | Timestamp | Message | |------|-----------|---------| Type = unsigned char : ~~~~~~~~~~~~~~~~~~~~~~ Values: - 'T' for test messages - 'A' for ABCAST messages - 'C' for CBCAST messages - _ for unknown messages Timestamp : ~~~~~~~~~~~ If Type == 'T' then No timestamp, empty block, null size... If Type == 'A' then |------------|-------------| | Site index | Clock value | |------------|-------------| If Type == 'C' then |------------|------------|-------------| | Site_index | Clock_size | Clock_value | |------------|------------|-------------| If Type is unknown then can't be read, drop packet Site_index : unsigned short (16 bits) ~~~~~~~~~~~~ Site indexes start at index = 0 Clock_size : same size than "Site index" (unsigned short 16 bits) ~~~~~~~~~~~~ Clock_value : ~~~~~~~~~~~~~ If Type = 'A' then unsigned short (16 bits) If Type = 'C' then array of unsigned shorts (16 bits * Clock_size) Message : ~~~~~~~~~ |--------------|--------------| | Message_size | Message_data | |--------------|--------------| Message_size : unsigned short (16 bits) ~~~~~~~~~~~~~~ Message_data : ~~~~~~~~~~~~~~ array of unsigned shorts (16 bits * Message_size) Notes: ~~~~~~ Timestamps start at time = 0