Changeset 10617 in ntrip for trunk/BNC


Ignore:
Timestamp:
Mar 4, 2025, 4:57:05 PM (2 days ago)
Author:
stuerze
Message:

small bugfix in range check for SSR orbit and clock corrections

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp

    r10599 r10617  
    240240    ii++) {
    241241    if (corrIsOutOfRange(_clkOrb.Sat[ii])) {
    242       emit newMessage("RTCM3coDecoder: Correction out of range "  + _staID.toLatin1(), true);
    243242      continue;
    244243    }
     
    630629bool RTCM3coDecoder::corrIsOutOfRange(const SsrCorr::ClockOrbit::SatData& coSat) {
    631630
    632   if (fabs(coSat.Clock.DeltaA0) > 209.7151)   {return true;}
    633   if (fabs(coSat.Clock.DeltaA1) > 1.048575)   {return true;}
    634   if (fabs(coSat.Clock.DeltaA2) > 1.34217726) {return true;}
    635 
    636   if (fabs(coSat.Orbit.DeltaRadial)     > 209.7151) {return true;}
    637   if (fabs(coSat.Orbit.DeltaAlongTrack) > 209.7148) {return true;}
    638   if (fabs(coSat.Orbit.DeltaCrossTrack) > 209.7148) {return true;}
    639 
    640   if (fabs(coSat.Orbit.DotDeltaRadial)     > 1.048575) {return true;}
    641   if (fabs(coSat.Orbit.DotDeltaAlongTrack) > 1.048572) {return true;}
    642   if (fabs(coSat.Orbit.DotDeltaCrossTrack) > 1.048572) {return true;}
    643   return false;
     631  QString ssrParStr;
     632  QString ssrParValue;
     633  bool corrIsOutOfRange = false;
     634
     635  switch (_type) {
     636    // ======== //
     637    // IGS SSR  //
     638    // ======== //
     639    case  IGSssr:
     640      if (coSat.Clock.DeltaA0 < -209.7151 ||
     641          coSat.Clock.DeltaA0 > +209.7151)   {
     642        ssrParStr = "Clock::DeltaA0";
     643        ssrParValue = QString::number(coSat.Clock.DeltaA0, 'f', 4);
     644        corrIsOutOfRange = true;
     645      }
     646      if (coSat.Clock.DeltaA1 < -1.048575 ||
     647          coSat.Clock.DeltaA1 > +1.048575)  {
     648        ssrParStr = "Clock::DeltaA1";
     649        ssrParValue = QString::number(coSat.Clock.DeltaA1, 'f', 6);
     650        corrIsOutOfRange = true;
     651      }
     652      if (coSat.Clock.DeltaA2 < -1.3421772 ||
     653          coSat.Clock.DeltaA2 > +1.3421772) {
     654        ssrParStr = "Clock::DeltaA2";
     655        ssrParValue = QString::number(coSat.Clock.DeltaA2, 'f', 7);
     656        corrIsOutOfRange = true;
     657      }
     658
     659      if (coSat.Orbit.DeltaRadial   < -209.7151 ||
     660          coSat.Orbit.DeltaRadial   > +209.7151) {
     661        ssrParStr = "Orbit::DeltaRadial";
     662        ssrParValue = QString::number(coSat.Orbit.DeltaRadial, 'f', 4);
     663        corrIsOutOfRange = true;
     664      }
     665
     666      if (coSat.Orbit.DeltaAlongTrack < -209.7148 ||
     667          coSat.Orbit.DeltaAlongTrack > +209.7148) {
     668        ssrParStr = "Orbit::DeltaAlongTrack";
     669        ssrParValue = QString::number(coSat.Orbit.DeltaAlongTrack, 'f', 4);
     670        corrIsOutOfRange = true;
     671      }
     672      if (coSat.Orbit.DeltaCrossTrack < -209.7148 ||
     673          coSat.Orbit.DeltaCrossTrack > +209.7148) {
     674        ssrParStr = "Orbit::DeltaCrossTrack";
     675        ssrParValue = QString::number(coSat.Orbit.DeltaCrossTrack, 'f', 4);
     676        corrIsOutOfRange = true;
     677      }
     678
     679      if (coSat.Orbit.DotDeltaRadial < -1.048575 ||
     680          coSat.Orbit.DotDeltaRadial > +1.048575) {
     681        ssrParStr = "Orbit::DotDeltaRadial";
     682        ssrParValue = QString::number(coSat.Orbit.DotDeltaRadial, 'f', 6);
     683        corrIsOutOfRange = true;
     684      }
     685      if (coSat.Orbit.DotDeltaAlongTrack < -1.048572 ||
     686          coSat.Orbit.DotDeltaAlongTrack > +1.048572) {
     687        ssrParStr = "Orbit::DotDeltaAlongTrack";
     688        ssrParValue = QString::number(coSat.Orbit.DotDeltaAlongTrack, 'f', 6);
     689        corrIsOutOfRange = true;
     690      }
     691      if (coSat.Orbit.DotDeltaCrossTrack < -1.048572 ||
     692          coSat.Orbit.DotDeltaCrossTrack > +1.048572) {
     693        ssrParStr = "Orbit::DotDeltaCrossTrack";
     694        ssrParValue = QString::number(coSat.Orbit.DotDeltaCrossTrack, 'f', 6);
     695        corrIsOutOfRange = true;
     696      }
     697      break;
     698    //==========//
     699    // RTCM SSR //
     700    // =========//
     701    case RTCMssr:
     702      if (coSat.Clock.DeltaA0 < -209.7151 ||
     703          coSat.Clock.DeltaA0 > +209.7151)   {
     704        ssrParStr = "Clock::DeltaA0";
     705        ssrParValue = QString::number(coSat.Clock.DeltaA0, 'f', 4);
     706        corrIsOutOfRange = true;
     707      }
     708      if (coSat.Clock.DeltaA1 < -1.048575 ||
     709          coSat.Clock.DeltaA1 > +1.048575)  {
     710        ssrParStr = "Clock::DeltaA1";
     711        ssrParValue = QString::number(coSat.Clock.DeltaA1, 'f', 6);
     712        corrIsOutOfRange = true;
     713      }
     714      if (coSat.Clock.DeltaA2 < -1.34217726 ||
     715          coSat.Clock.DeltaA2 > +1.34217726) {
     716        ssrParStr = "Clock::DeltaA2";
     717        ssrParValue = QString::number(coSat.Clock.DeltaA2, 'f', 8);
     718        corrIsOutOfRange = true;
     719      }
     720
     721      if (coSat.Orbit.DeltaRadial   < -209.7151 ||
     722          coSat.Orbit.DeltaRadial   > +209.7151) {
     723        ssrParStr = "Orbit::DeltaRadial";
     724        ssrParValue = QString::number(coSat.Orbit.DeltaRadial, 'f', 4);
     725        corrIsOutOfRange = true;
     726      }
     727
     728      if (coSat.Orbit.DeltaAlongTrack < -209.7148 ||
     729          coSat.Orbit.DeltaAlongTrack > +209.7148) {
     730        ssrParStr = "Orbit::DeltaAlongTrack";
     731        ssrParValue = QString::number(coSat.Orbit.DeltaAlongTrack, 'f', 4);
     732        corrIsOutOfRange = true;
     733      }
     734      if (coSat.Orbit.DeltaCrossTrack < -209.7148 ||
     735          coSat.Orbit.DeltaCrossTrack > +209.7148) {
     736        ssrParStr = "Orbit::DeltaCrossTrack";
     737        ssrParValue = QString::number(coSat.Orbit.DeltaCrossTrack, 'f', 4);
     738        corrIsOutOfRange = true;
     739      }
     740
     741      if (coSat.Orbit.DotDeltaRadial < -1.048575 ||
     742          coSat.Orbit.DotDeltaRadial > +1.048575) {
     743        ssrParStr = "Orbit::DotDeltaRadial";
     744        ssrParValue = QString::number(coSat.Orbit.DotDeltaRadial, 'f', 6);
     745        corrIsOutOfRange = true;
     746      }
     747      if (coSat.Orbit.DotDeltaAlongTrack < -1.048572 ||
     748          coSat.Orbit.DotDeltaAlongTrack > +1.048572) {
     749        ssrParStr = "Orbit::DotDeltaAlongTrack";
     750        ssrParValue = QString::number(coSat.Orbit.DotDeltaAlongTrack, 'f', 6);
     751        corrIsOutOfRange = true;
     752      }
     753      if (coSat.Orbit.DotDeltaCrossTrack < -1.048572 ||
     754          coSat.Orbit.DotDeltaCrossTrack > +1.048572) {
     755        ssrParStr = "Orbit::DotDeltaCrossTrack";
     756        ssrParValue = QString::number(coSat.Orbit.DotDeltaCrossTrack, 'f', 6);
     757        corrIsOutOfRange = true;
     758      }
     759      break;
     760  }
     761
     762  if (corrIsOutOfRange) {
     763    emit newMessage("RTCM3coDecoder: Correction " + ssrParStr.toLatin1()
     764        + " (" + ssrParValue.toLatin1() + ") "
     765        + "is out of range "  + _staID.toLatin1(), true);
     766  }
     767
     768  return corrIsOutOfRange;
    644769}
    645770
Note: See TracChangeset for help on using the changeset viewer.