+# See tc27xD_um_v2.2.pdf, Table 20-10
+payload_sizes = {
+ 0b000: '8 bit',
+ 0b001: '32 bit / 4 byte',
+ 0b010: '64 bit / 8 byte',
+ 0b011: '96 bit / 12 byte',
+ 0b100: '128 bit / 16 byte',
+ 0b101: '256 bit / 32 byte',
+ 0b110: '512 bit / 64 byte',
+ 0b111: '288 bit / 36 byte'
+}
+
+# See tc27xD_um_v2.2.pdf, Table 20-10
+payload_byte_sizes = {
+ 0b000: 1,
+ 0b001: 4,
+ 0b010: 8,
+ 0b011: 12,
+ 0b100: 16,
+ 0b101: 32,
+ 0b110: 64,
+ 0b111: 36
+}
+
+# See tc27xD_um_v2.2.pdf, Table 20-11
+channel_types = {
+ 0b0000: 'Interface Control / PING',
+ 0b0001: 'Unsolicited Status (32 bit)',
+ 0b0010: 'Slave Interface Control / Read',
+ 0b0011: 'CTS Transfer',
+ 0b0100: 'Data Channel A',
+ 0b0101: 'Data Channel B',
+ 0b0110: 'Data Channel C',
+ 0b0111: 'Data Channel D',
+ 0b1000: 'Data Channel E',
+ 0b1001: 'Data Channel F',
+ 0b1010: 'Data Channel G',
+ 0b1011: 'Data Channel H',
+ 0b1100: 'Reserved',
+ 0b1101: 'Reserved',
+ 0b1110: 'Reserved',
+ 0b1111: 'Reserved',
+}
+
+# See tc27xD_um_v2.2.pdf, Table 20-12
+control_payloads = {
+ 0x00: 'PING',
+ 0x01: 'Reserved',
+ 0x02: 'Slave interface clock multiplier start',
+ 0x04: 'Slave interface clock multiplier stop',
+ 0x08: 'Use 5 MBaud for M->S',
+ 0x10: 'Use 320 MBaud for M->S',
+ 0x20: 'Use 5 MBaud for S->M',
+ 0x40: 'Use 20 MBaud for S->M (needs 20 MHz SysClk)',
+ 0x80: 'Use 320 MBaud for S->M',
+ 0x31: 'Enable slave interface transmitter',
+ 0x32: 'Disable slave interface transmitter',
+ 0x34: 'Enable clock test mode',
+ 0x38: 'Disable clock test mode and payload loopback',
+ 0xFF: 'Enable payload loopback',
+}
+
+
+ann_bit, ann_sync, ann_header_pl_size, ann_header_ch_type, ann_header_cts, \
+ ann_payload, ann_control_data, ann_sleepbit, ann_warning = range(9)
+state_sync, state_header, state_payload, state_sleepbit = range(4)