Page 57
SmartOne C User Manual
Confidential & Proprietary Information
9100-0410-01 R2.4
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
SERIAL PACKET TYPES
CMD
DESCRIPTION/USAGE/
COMMAND
DATA BYTES
ACKNOWLEDGE DATA BYTES
0X01
User requests the SmartOne to
reply with integral ESN (Electronic
Serial Number). This is the ID used
by Globalstar to identify the unit
NONE
Four data bytes, which contain the unit ID as an unsigned integer. The MSByte
is sent first. Only the 27 LSbits are non-zero
0X26
SEND TRUNCATED MESSAGE
See Truncated
Message section
below
None
0X27
SEND RAW MESSAGE
See Raw Message
section below
None