UBLOX Data format
All available uBlox messages can be configured at rates of up to 20Hz.
All multi-byte values are ordered in Little Endian manner, unless mentioned otherwise. All floating point values are transmitted in IEEE754 single or double precision. A technical Description of the IEEE754 format can be found in the AnswerBook from the ADS1.x toolkit.
The following table gives information about the various values:
uBlox values
|
Short
| Type
| Size (bytes)
| Comment
| Min/Max
| Res
|
U1
| Unsigned char
| 1
|
| 0..255
| 1
|
I1
| Signed char
| 1
| 2’s complement
| -128..127
| 1
|
U2
| Unsigned short
| 2
|
| 0..65535
| 1
|
I2
| Signed short
| 2
| 2’s complement
| -32768..32767
| 1
|
U4
| Unsigned long
| 4
|
| 0..4’294’967’295
| 1
|
I4
| Signed long
| 4
| 2’s complement
| -2’147’483’648..2’147’483’647
| 1
|
R4
| IEEE 754 single precision
| 4
|
| -1*2^+127 .. 2^+127
| ~ value * 2^-24
|
R8
| IEEE 754 double precision
| 8
|
| -1*2^+1023 .. 2^+1023
| ~ value * 2^-53
|
CH
| ASCII/ISO 8859.1 encoding
| 1
|
|
|
|
The checksum is calculated over the packet, starting and including the CLASS field, up until, but excluding, the Checksum Field:
The checksum algorithm used is the 8-Bit Fletcher Algorithm, which is being used in the TCP standard (RFC 1145). This algorithm works as follows:
Buffer[N] contains the data over which the checksum is to be calculated.
The two CK_ values are 8-Bit Unsigned Integers, only! If you implement it with larger-sized integer values, make sure to Mask both CK_A and CK_B with 0xFF after both operations in the loop.
CK_A = 0, CK_B = 0
For(I=0;I<N;I++)
{
CK_A = CK_A + Buffer[I]
CK_B = CK_B + CK_A
}