Skip to main content

QGC_REVISION

Constant QGC_REVISION 

Source
pub const QGC_REVISION: &str = "QGroundControl v5.0.3-1265-gf1883f93a \
    (f1883f93a5ba0b5e9c1ec88b3815b290e2608697, 2026-08-12)";
Expand description

The QGroundControl revision whose reconnection policy this crate mirrors.

QGC is the closest analogue to how this crate is used – streaming RTCM corrections to a drone autopilot – and RTCM 10410.1, which would say what the protocol actually requires, is paywalled and unavailable to us. Matching one real implementation exactly is easier to defend, and to re-check, than inventing a policy of our own. Every citation below is against this revision:

  • src/GPS/NTRIP/NTRIPManager.h:159-161 – the three constants mirrored here.
  • src/GPS/NTRIP/NTRIPManager.cc:367-370_reconnectBackoffMs(), the shift.
  • src/GPS/NTRIP/NTRIPManager.cc:372-384_scheduleReconnect(), which waits on the pre-increment attempt count, then increments and checks the ceiling.
  • src/GPS/NTRIP/NTRIPManager.cc:82-91isRetryable().
  • src/GPS/NTRIP/NTRIPManager.cc:326the one place we deliberately differ. QGC resets its attempt counter once the transport reports Connected, which is the HTTP handshake completing rather than data arriving (NTRIPHttpTransport.cc:371). A caster that accepts the connection and then stays silent therefore puts QGC back at kMinReconnectMs on every cycle, forever, which is the hammering RTCM’s guidance warns leads to a ban. We reset on data instead, so a silent caster climbs the same ladder as a refused one and eventually exhausts MAX_CONNECT_ATTEMPTS. This looks like an artefact of where the reset sits in QGC’s state machine rather than a considered choice, so it is the one point where copying seemed worse than not.
  • src/GPS/NTRIP/NTRIPHttpTransport.cc:388-392 – 401 becomes AuthFailed.
  • src/GPS/NTRIP/NTRIPHttpTransport.cc:406 – every other status becomes HttpError, which isRetryable() accepts.