User's Manual
17 | Page
Proprietary and Confidential Revised 10-11-11
Serial CRC Algorithm
The CRC checksum uses the CCITT-16 Reversed (0x8408) 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 SXL1 is:
AA 05 01 50 D5
Serial Sensor Messages Supported
The serial format is utilized for all serial messaging as described in the sections following. All
messages are acknowledged with the command field of the response equal to the command field of
the initiating message. Invalid formatted commands are negatively acknowledged by the SXL1.
Serial Sensor Message Types
Cmd Description / Usage / Comment Command Data Bytes Acknowledge Data
Bytes
0x04 Remote Data Command See “Remote Data
Command” pg 20
None
0x05 Remote Sensor Alarm Command See “Remote Sensor
Alarm Command” pg. 20
1 byte = alarm accepted