1. SOFTWARE HEADER — this is put on by the rceServer  (all 32-bit words)

  • frame_size       — size in bytes 
  •  rx_sequence    — the receive sequence number (not terribly useful)
  • tx_sequence    — the transmit sequence number (not terribly useful)
  • type_id             — The rceServer software version  (current 1)

2. FIRMWARE HEADER (both 32-bit words)

  • Identifier        — Record Type (4 bits) | Data Type (4 (bits) | size (24 bits)
  • Version          — Major (4 bits) | Minor (4 bits) | Micro (4 bits) | Patch (4 bits)
  • For the WIB DATA being sent now
    • RECORD TYPE = DATA           = 1
    • DATA TYPE       = WibFrame    = 1

3. 1024 WIB FRAMES should follow  

Each frame should be 30 64-bit words

4. FIRMWARE TRAILER (both 32-bits words)

  • Identifier        - Same as in the HEADER
  • Pattern          = 0x708b309e;

The FIRMWARE HEADER and TRAILER, allows a way to resynch tor the frame if one gets out of synch.   

Basically search for the pattern word, pick up the identifier and go backwards for the length specified in the adjacent identifier.  This should land you at the FIRMWARE HEADER which you can then check for the identical identifier and the version number.  Of course this is all statistical.  There is nothing but statistics that says this pattern cannot occur randomly, but you are asking for 

  • the 32-bit identifier words to identically match
  • that they be separated by the appropriate number of bytes 
  • that the identifier word follow a well-known non-trivial (read, hopefully random) pattern word
  • various fields in the version and identifier look reasonable.
  • No labels