beautypg.com

Packb, Format, Port – NavCom Sapphire Rev.J User Manual

Page 181: Correction data, Table 75: packb command format, Table 76: packb command format field mnemonics

background image

Sapphire Technical Reference Manual Rev. J

181

1.126

PACKB

SF-3050

Sapphire

SF-3040

This command is used to pack navigation corrections into the Sapphire command format. The
message follows standard binary format, with more header format descriptions provided in
paragraph 1.126.5.1. Issue the message whenever the sender accumulates 512 bytes of data
or when the time from the last transfer exceeds 500 ms

.

Table 75: PackB Command Format

Data Item

Data Type

Section

Format

U08

1.126.1

Port

U08

1.126.1

Correction Data

U08[]

1.126.3

1.126.1

Format

Table 76: PackB Command Format Field Mnemonics

Format Field Value

Meaning

0

Unknown

1

NCT proprietary

2

RTCM 2.3

3

RTCM 3.0

4

CMR/CMR+

Specifying the data format, although optional, can result in improved performance.
However, if the format field is set to Unknown and the data type is supported by the
receiver firmware, the correction data will be successfully sent and processed.

1.126.2

Port

This value is reserved; it is always 0.

1.126.3

Correction Data

This is actual correction data, up to 512 bytes. Each byte of the correction data is encoded by
being XORed with 0x55. The Sapphire parsers are highly adaptable. If correction data are not
encoded, the Sapphire parsers may become confused and start switching between correction
mode and Sapphire command mode. The receiver decoding function of the PACKB command
returns the data to their original values by XORing it with 0x55 again.


See example function (C#) below for building the PACKB message.

Private

void

SendCorrectionsOut(

byte

[] data,

Uint16

len)

{

byte

[] CorrectionsByteArray =

new

byte

[2048];

// this is the data buffer plus the binary header

Uint16

Length = (

Uint16

)(len + 9 + 2);

// arbitrary gps week and time

Uint16

GPSWeek = 0x064A;

Uint32

GPSTime = (((2 * 24 + 8) * 60 * 60) + (15 * 60)) * 1000;

// Tuesday,

8:15AM

byte

TimeVersion = 0x00;

// time is unknown; message version 0