WIP
The communication with the application is not the easiest but is structured as follows:
- SOF:
1 Byte
, the "Magic Byte" represent the start of a packet, must be0x11
. - LRC1:
1 Byte
, the LRC (Longitudinal Redundancy Check) of theSOF
, must be0xEF
. - CMD:
2 Bytes
in unsigned Big Endian format, each command have been assigned a unique number (e.g.factoryReset(1020)
), this is what you are sending to the device. - STATUS:
2 Bytes
in unsigned Big Endian format. If the direction is from APP to hardware, the status is always0x0000
. If the direction is from hardware to APP, the status is the result of the command. - LEN:
2 Bytes
in unsigned Big Endian format, the length of the data, maximum is512
. - LRC2:
1 Byte
, the LRC (Longitudinal Redundancy Check) of theCMD
,STATUS
andLEN
. - DATA:
LEN Bytes
, the data to send or receive, maximum is512 Bytes
. This could be anything, for example you should sending key type, block number, and the card keys when reading a block. - LRC3:
1 Byte
, the LRC (Longitudinal Redundancy Check) of theDATA
.
The total length of the packet is LEN + 10
Bytes. For receiving, it is the exact same format.
Each command and response have their own payload formats.
TODO: