PSP Communication Format
Byte format (Serial)
Baud rate | P6X: Configurable (default 57600 bps) Apollo: Configurable (default 57600 bps) |
Serial bit format | 1 start bit 8 data bits 1 stop bit |
LSB | MSB | ||||||||
Start | 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | Stop |
Block format
preamble: | length: | magic | header | payload | payload | CS |
0xAA | 0x04 | 0x3C | 0x21 | 0x03 | 0x66 | 0x74 |
Extended block format
preamble: | length 3 | length 2 | length 1 | length 0 | magic | header | payload | payload | CS |
0xAA | 0x00 | 0x00 | 0x00 | 0x04 | 0x3C | 0x21 | 0x03 | 0x66 | 0x74 |
A command consists of a preamble byte, length byte (length of the block without preamble, length and checksum), magic/routing byte, header byte, payload bytes and a checksum byte. A command is limited to a maximum of 36 bytes (version 1 and 2) or 257 bytes (version 3 and newer). If extended block format is enabled the length block is 4 bytes. The commands are defined in chapter 4.
Preamble Byte
The preamble byte is used to provide a device address.
For P6X
A device will put a configurable address byte here.
For APOLLO
The preamble to the terminal is 0xCC
The preamble to the host is 0xAA
Magic Byte
For P6X
The magic byte can be set to any value for example 0x3C. The terminal will ignore it and will place a configurable value in the location.
For APOLLO
The magic byte is always 0x3C.
Checksum byte
A checksum byte must be sent at the end of each command. The checksum byte is a checksum calculated by adding all bytes in the block together. The checksum byte is not included in the summation. The carry bit for checksum additions is ignored since the checksum byte is limited to eight bits.
Byte order
If data bytes consists of a multi byte parameter (i.e.. 0xABCD) the most significant byte is sent first. (0xAB 0xCD)