Changeset 11113 in ntrip


Ignore:
Timestamp:
Oct 22, 2026, 4:00:17 PM (13 hours ago)
Author:
stuerze
Message:

timing in combination is improved

Location:
trunk/BNC/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/bnchelp.html

    r11110 r11113  
    85248524  <p>
    85258525    As the incoming corrections of the individual providers arrive with different latencies, BNC combines an epoch as
    8526     soon as each provider has delivered corrections for a later epoch, i.e. has completed the epoch. The combined
    8527     product is thus only delayed by the latency of the slowest provider. If a provider is late or missing, the epoch is
     8526    soon as each provider has delivered it. The corrections of a provider's epoch are passed on as soon as all its
     8527    messages have arrived (Multiple Message Indicator), with the clock corrections after the orbit corrections and
     8528    biases. The combined product is thus only delayed by the latency of the slowest provider. If a provider is late or missing, the epoch is
    85288529    combined without it at the latest when the newest incoming corrections are 10 seconds (or the sampling interval,
    85298530    if larger) younger than the epoch. Corrections arriving after an epoch was combined are ignored.</p>
  • trunk/BNC/src/combination/bnccomb.cpp

    r11112 r11113  
    555555
    556556
    557 // True if every AC has delivered clock corrections for an epoch after epoTime
    558 ////////////////////////////////////////////////////////////////////////////
    559 bool bncComb::allACsBeyond(const bncTime& epoTime) const {
     557// True if every AC has delivered clock corrections for epoTime or a later
     558// epoch: the decoder passes an epoch on when it is complete (Multiple
     559// Message Indicator) and emits its clocks after its orbits and biases
     560////////////////////////////////////////////////////////////////////////////
     561bool bncComb::allACsDelivered(const bncTime& epoTime) const {
    560562  QListIterator<cmbAC*> itAC(_ACs);
    561563  while (itAC.hasNext()) {
    562564    const cmbAC* AC = itAC.next();
    563565    bncTime acLast = _acLastClkTime.value(AC->name);
    564     if (!acLast.valid() || !(acLast > epoTime)) {
     566    if (!acLast.valid() || acLast < epoTime) {
    565567      return false;
    566568    }
    … …  
    723725      }
    724726    }
    725     // Process the front epoch as soon as all ACs have delivered corrections
    726     // for a later epoch (i.e. have finished this one), at the latest when
    727     // the newest correction is maxWait newer (an AC may be late or missing).
     727    // Process the front epoch as soon as all ACs have delivered it (complete
     728    // epochs), at the latest when the newest correction is maxWait newer
     729    // (an AC may be late or missing).
    728730    // Waiting only outWait after the newest correction lost the corrections
    729731    // of ACs with a few seconds more latency ("old correction").
    730732    // -----------------------------------------------------------------------
    731733    const double maxWait = max(10.0, outWait);
    732     if (allACsBeyond(epoTime) || epoTime < (_lastClkCorrTime - maxWait)) {
     734    if (allACsDelivered(epoTime) || epoTime < (_lastClkCorrTime - maxWait)) {
    733735      _resTime = epoTime;
    734736      processEpoch(_resTime, clkCorrVec);
  • trunk/BNC/src/combination/bnccomb.h

    r11110 r11113  
    277277  QMap<char, bncTime>                       _outlierStatStart; // start of the statistics interval
    278278  void resetSatOffsets(char sys);
    279   bool allACsBeyond(const bncTime& epoTime) const;
     279  bool allACsDelivered(const bncTime& epoTime) const;
    280280  bncTime                                    _resTime;
    281281  cmbCorr*                                   _newCorr;
Note: See TracChangeset for help on using the changeset viewer.