LArPix interface message formats

The module contains all the message formats used by systems that interface with larpix-control:

  • dataserver_message_encode: convert from packets to the data server messaging format
  • dataserver_message_decode: convert from data server messaging format to packets
larpix.format.message_format.dataserver_message_encode(packets, version=(1, 0))[source]

Convert a list of packets to larpix dataserver messages. DAQ board messages are formatted using 8-byte words with the first word being a header word describing the interpretation of other words in the message. These messages are formatted as follows

All messages:
  • byte[0] = major version

  • byte[1] = minor version

  • byte[2] = message type

    • b'D': LArPix data
    • b'T': Timestamp data
    • b'H': Heartbeat
LArPix heartbeat messages:
  • byte[3] = b'H'
  • byte[4] = b'B'
  • byte[5:7] are unused
LArPix data messages:
  • byte[3] = io channel
  • bytes[4:7] are unused
  • bytes[8:] = raw LArPix 7-byte UART words ending in a single null byte
Timestamp data messages:
  • byte[3:7] are unused
  • byte[8:14] = 7-byte Unix timestamp
  • byte[15] is unused

Example usage:

from larpix.larpix import Packet, Key
packet = Packet()
packet.chip_key = Key('1-1-1')
msgs = datserver_message_encode([packet])
msgs[0] # b'\x01\x00D\x01\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00\x00'
msgs[0][:8] # header
msgs[0][8:] # data words
Parameters:
  • packets – list of larpix.Packet objects
  • version – optional, encode a message in specified version format, tuple of major, minor numbers
Returns:

list of bytestream messages, 1 for each packet

larpix.format.message_format.dataserver_message_decode(msgs, version=(1, 0), **kwargs)[source]

Convert a list of larpix data server messages into packets. Additional packet meta data can be passed along via kwargs E.g.:

msg = b'\x01\x00D\x01\x00\x00\x00\x00\x04\x00\x00\x00\x00\x00\x00'
packets = dataserver_message_decode([msg], io_group=1)
packets[0] # Packet(b'\x04\x00\x00\x00\x00\x00\x00'), key of '1-1-1'
Parameters:
  • msgs – list of bytestream messages each starting with a single 8-byte header word, followed by N 8-byte data words
  • version – optional, message version to validate against, tuple of major, minor version numbers
Returns:

list of larpix.Packet and larpix.TimestampPacket objects