GLRT - Retransmission Transport

The GNSS Library Retransmission Transport (GLRT) aides serial traffic robustness by retransmitting data in case of data loss or corruption.

Summary

Here is a typical call flow with the data types used:

  • GLL [unsigned char] ==>
  • GlrtTx() [unsigned char] ==>
  • GLRT ==>
  • OnWriteData [GlrtChar] ==>
  • unreliable link [GlrtChar] ==>
  • GlrtRx() [GlrtChar] ==>
  • GLRT [GlrtChar] ==>
  • OnReadData [unsigned char] ==>
  • GLL

The GLRT can be inserted into any serial data stream. But there must be a peer GLRT on the other side.

The GLRT achieves it's goals by encoding GLL binary data into ASCII, then wrap the result with some protocol (start of header, sequence number, CRC, etc). The peer GLRT on the other side of the unreliable link will ACK good packets and NAK the bad ones. The sending GLRT will retransmit packets that have been NAKed or timed out.

The GLRTT is another instance of the GLRT. Normally there can be only one GLRT, but this allows another one for test purposes.

For a concrete example of how to use the GLRT or GLRTT, see glhal/win_xp/glgps_hal_rt.c.

The WinXP configuration options are:

  • <hal Glrt="false" - not enabled
  • <hal Glrt="true" - enabled for connection to a peer GLRT via serial link
  • <hal Glrt="glrtt" - enabled for standalone testing using GLRTT and Beluga or Thames.
 All Classes Files Functions Variables Typedefs Enumerations Enumerator Defines