Total length range permitted: 5 bytes (Data field length 0) to 59 bytes (Data field length 54).
The different fields are defined as:
Preamble
Length
Cmd
Data
CRC low
CRC high
CRC Algorithm
The Security Field is a 16-bit CRC of all of the previous fields including the preamble, length, and command bytes.
The remainder is initialized to all 1's (0xFFFF) and the CRC is inverted before being sent. Following is a sample C
routine that implements the algorithm using the "reversed" technique:
WORD crc16_lsb(BYTE *pData, WORD length)
{
BYTE i;
WORD data, crc;
crc = 0xFFFF;
if (length == 0)
return 0;
do
{
data = (WORD)0x00FF & *pData++;
crc = crc ^ data;
for (i = 8; i > 0; i--)
{
if (crc & 0x0001)
crc = (crc >> 1) ^ 0x8408;
else
crc >>= 1;
}
}
while (--length);
crc = ~crc;
return (crc);
}
As an example, for a type (0x01) "Get ID" message made up of the following bytes:
AA 05 01
The following 2 byte CRC would be calculated:
D5 50
The complete message sent by the host to the SMARTONE is:
AA 05 01 50 D5
SmartOne Manual Rev 1.5
Serial Packet Format
Serial Packet Fields
Fixed pattern 0xAA
Total number of bytes in the serial packet including the preamble
Command type (See table below). Responses to commands carry the
same command type as the command that initiated the answer
Data associated with the command or answer
Least significant byte of the 16-bit CRC
Most significant byte of the 16-bit CRC
DOC# 9100-0268-01
p.67