Changeset 10997 in ntrip for trunk


Ignore:
Timestamp:
Aug 26, 2026, 10:07:44 PM (9 days ago)
Author:
stuerze
Message:

minor changes regarding RTCM-SSR

Location:
trunk/BNC/src/RTCM3/clock_and_orbit
Files:
7 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit.h

    r10995 r10997  
    9191  virtual ~SsrCorr();
    9292  virtual void setCorBase() = 0;
    93   virtual void setCorOffset() = 0;
     93  virtual void setCorType() = 0;
    9494  virtual void setCoType() = 0;
    9595  virtual void setCbType() = 0;
     
    120120  CorOffset COBOFS_PBIAS;
    121121  CorOffset COBOFS_URA;
     122  CorOffset COBOFS_PBEXT;
     123  CorOffset COBOFS_SATANT;
     124  CorOffset COBOFS_REGIONO;
    122125  CorOffset COBOFS_NUM;
    123126
     
    324327  QList<CorBase> corbase;
    325328  QList<unsigned int> satoffset;
     329
     330  /* corType[sys][kind] -> RTCM/IGS message number, 0 = not defined for that
     331     satellite system. Built by setCorType(); replaces per-subclass base+offset
     332     arithmetic so GetSSR/Make* can look a message number up (or emit one)
     333     without hand-rolled index math. */
     334  QList<QList<unsigned int> > corType;
     335
     336  bool lookupCorType(unsigned int msgNumber, unsigned int &sys, unsigned int &kind) const {
     337    for (int s = 0; s < corType.size(); ++s) {
     338      for (int k = 0; k < corType[s].size(); ++k) {
     339        if (msgNumber && corType[s][k] == msgNumber) {
     340          sys = s;
     341          kind = k;
     342          return true;
     343        }
     344      }
     345    }
     346    return false;
     347  }
    326348
    327349
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.cpp

    r10994 r10997  
    2020SsrCorrIgs::SsrCorrIgs() {
    2121    setCorBase();
    22     setCorOffset();
     22    setCorType();
    2323    setCoType();
    2424    setCbType();
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.h

    r10995 r10997  
    3737  }
    3838
    39   void setCorOffset() {
     39  void setCorType() {
    4040    COBOFS_ORBIT    = 0; // GPS: IM21
    4141    COBOFS_CLOCK    = 1; // GPS: IM22
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.cpp

    r10996 r10997  
    2020  SsrCorrRtcm::SsrCorrRtcm() {
    2121    setCorBase();
    22     setCorOffset();
     22    setCorType();
    2323    setCoType();
    2424    setCbType();
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h

    r10829 r10997  
    3636  };
    3737
    38   void setCorOffset() {
     38  void setCorType() {
    3939    COBOFS_ORBIT     = 0;
    4040    COBOFS_CLOCK     = 1;
     
    9999    PBTYPE_BASE    = 1265;
    100100    PBTYPE_GPS     = PBTYPE_BASE;
    101     PBTYPE_GLONASS = PBTYPE_GPS++;
    102     PBTYPE_GALILEO = PBTYPE_GLONASS++;
    103     PBTYPE_QZSS    = PBTYPE_GALILEO++;
    104     PBTYPE_SBAS    = PBTYPE_QZSS++;
    105     PBTYPE_BDS     = PBTYPE_SBAS++;
     101    PBTYPE_GLONASS = PBTYPE_BASE + 1;
     102    PBTYPE_GALILEO = PBTYPE_BASE + 2;
     103    PBTYPE_QZSS    = PBTYPE_BASE + 3;
     104    PBTYPE_SBAS    = PBTYPE_BASE + 4;
     105    PBTYPE_BDS     = PBTYPE_BASE + 5;
    106106    PBTYPE_AUTO = 0;
    107107  };
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.cpp

    r10996 r10997  
    2020SsrCorrRtcmNew::SsrCorrRtcmNew() {
    2121  setCorBase();
    22   setCorOffset();
    2322  setCoType();
    2423  setCbType();
     
    3231  setMetaDataType();
    3332  setCodeType();
     33  setCorType(); /* must run after the type setters above: it reads their constants */
    3434
    3535  satoffset << CLOCKORBIT_OFFSETGPS
     
    4545size_t SsrCorrRtcmNew::MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type,
    4646    int moremessagesfollow, char *buffer, size_t size) {
    47   std::vector< std::vector<unsigned int> > status(CLOCKORBIT_SATNUM, std::vector<unsigned int>(COBOFS_NUM));
     47  std::vector< std::vector<unsigned int> > status(CLOCKORBIT_SATNUM, std::vector<unsigned int>(COBOFS_MAXNUM));
    4848  unsigned int i, s;
    4949
     
    5353
    5454  for (s = 0; s < CLOCKORBIT_SATNUM; ++s) {
    55     for (i = 0; i < COBOFS_NUM; ++i) {
    56       if (co->NumberOfSat[s] && (type == COTYPE_AUTO || type == corbase[s] + i) && (co->Supplied[i] || 
     55    for (i = 0; i < COBOFS_MAXNUM; ++i) {
     56      if (co->NumberOfSat[s] && (type == COTYPE_AUTO || type == corType[s][i]) && (co->Supplied[i] ||
    5757        (i <= COBOFS_CLOCK &&  co->Supplied[COBOFS_COMBINED]) ||
    5858           (i == COBOFS_COMBINED && co->Supplied[COBOFS_ORBIT] && co->Supplied[COBOFS_CLOCK]))) {
     
    6868    if (status[s][COBOFS_ORBIT]) {
    6969      INITBLOCK
    70       E_RTCM_MESSAGE_NUMBER(corbase[s] + COBOFS_ORBIT)
     70      E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_ORBIT])
    7171      switch (s) {
    7272        case CLOCKORBIT_SATGPS:
     
    128128    if (status[s][COBOFS_CLOCK]) {
    129129      INITBLOCK
    130       E_RTCM_MESSAGE_NUMBER(corbase[s] + COBOFS_CLOCK)
     130      E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_CLOCK])
    131131      switch (s) {
    132132        case CLOCKORBIT_SATGPS:
     
    169169#endif
    170170      INITBLOCK
    171       E_RTCM_MESSAGE_NUMBER(corbase[s] + COBOFS_COMBINED)
     171      E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_COMBINED])
    172172      switch (s) {
    173173        case CLOCKORBIT_SATGPS:
     
    248248    if (status[s][COBOFS_HR]) {
    249249      INITBLOCK
    250       E_RTCM_MESSAGE_NUMBER(corbase[s] + COBOFS_HR)
     250      E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_HR])
    251251      switch (s) {
    252252        case CLOCKORBIT_SATGPS:
     
    275275    if (status[s][COBOFS_URA]) {
    276276      INITBLOCK
    277       E_RTCM_MESSAGE_NUMBER(corbase[s] + COBOFS_URA)
     277      E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_URA])
    278278      switch (s) {
    279279        case CLOCKORBIT_SATGPS:
     
    311311
    312312  for (s = 0; s < CLOCKORBIT_SATNUM; ++s) {
    313     if (b->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corbase[s] + COBOFS_CBIAS)) {
     313    if (b->NumberOfSat[s] && (type == CBTYPE_AUTO || type == corType[s][COBOFS_CBIAS])) {
    314314      INITBLOCK
    315       E_RTCM_MESSAGE_NUMBER(corbase[s] + COBOFS_CBIAS)
     315      E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_CBIAS])
    316316      switch (s) {
    317317        case CLOCKORBIT_SATGPS:
     
    358358       Extended Satellite Phase Bias Message shall be sent BEFORE the corresponding
    359359       Satellite Phase Bias Message */
    360     if (b->NumberOfSat[s] && (type == PBEXTTYPE_AUTO || type == s + PBEXTTYPE_AUTO)) {
     360    if (b->NumberOfSat[s] && (type == PBEXTTYPE_AUTO || type == corType[s][COBOFS_PBEXT])) {
    361361      INITBLOCK
    362       E_RTCM_MESSAGE_NUMBER(s + PBEXTTYPE_AUTO)
     362      E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_PBEXT])
    363363      switch (s) {
    364364        case CLOCKORBIT_SATGPS:
     
    385385    }
    386386    /* Satellite Phase Bias Message */
    387     if (b->NumberOfSat[s] && (type == PBTYPE_AUTO || type == s + PBTYPE_BASE)) {
     387    if (b->NumberOfSat[s] && (type == PBTYPE_AUTO || type == corType[s][COBOFS_PBIAS])) {
    388388      INITBLOCK
    389       E_RTCM_MESSAGE_NUMBER(s + PBTYPE_BASE)
     389      E_RTCM_MESSAGE_NUMBER(corType[s][COBOFS_PBIAS])
    390390      switch (s) {
    391391        case CLOCKORBIT_SATGPS:
     
    554554  }
    555555
    556   for (s = CLOCKORBIT_SATNUM; s-- > 0;) {
    557     if (type == PBTYPE_BASE + s) {
    558       if (!pb)
    559         return GCOBR_NOPHASEBIASPARAMETER;
    560       pb->messageType = type;
    561       switch (s) {
    562         case CLOCKORBIT_SATGPS:
    563         case CLOCKORBIT_SATGALILEO:
    564         case CLOCKORBIT_SATQZSS:
    565         case CLOCKORBIT_SATSBAS:
    566         case CLOCKORBIT_SATBDS:
    567           D_GPS_EPOCH_TIME_CHECK(pb->EpochTime[s], pb->NumberOfSat[s])
    568           break;
    569         case CLOCKORBIT_SATGLONASS:
    570           D_GLONASS_EPOCH_TIME_CHECK(pb->EpochTime[s], pb->NumberOfSat[s])
    571           break;
    572       }
    573       D_SSR_UPDATE_INTERVAL(pb->UpdateInterval)
    574       D_MULTIPLE_MESSAGE_INDICATOR(mmi)
    575       D_SSR_IOD(pb->SSRIOD)
    576       D_SSR_PROVIDER_ID(pb->SSRProviderID)
    577       D_SSR_SOLUTION_ID(pb->SSRSolutionID)
    578       D_YAW_INFO_INDICATOR(pb->SatelliteYawInformationIndicator)
    579       D_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID)
    580       D_NO_OF_SATELLITES(nums)
     556  {
     557    unsigned int kind;
     558    if (!lookupCorType(type, s, kind))
     559      return GCOBR_UNKNOWNTYPE;
     560
     561    /* COBOFS_* are per-instance (set in setCorType()), not compile-time
     562       constants, so this has to be an if/else-if chain rather than a switch. */
     563    if (kind == COBOFS_PBIAS) {
     564          if (!pb)
     565            return GCOBR_NOPHASEBIASPARAMETER;
     566          pb->messageType = type;
     567          switch (s) {
     568            case CLOCKORBIT_SATGPS:
     569            case CLOCKORBIT_SATGALILEO:
     570            case CLOCKORBIT_SATQZSS:
     571            case CLOCKORBIT_SATSBAS:
     572            case CLOCKORBIT_SATBDS:
     573              D_GPS_EPOCH_TIME_CHECK(pb->EpochTime[s], pb->NumberOfSat[s])
     574              break;
     575            case CLOCKORBIT_SATGLONASS:
     576              D_GLONASS_EPOCH_TIME_CHECK(pb->EpochTime[s], pb->NumberOfSat[s])
     577              break;
     578          }
     579          D_SSR_UPDATE_INTERVAL(pb->UpdateInterval)
     580          D_MULTIPLE_MESSAGE_INDICATOR(mmi)
     581          D_SSR_IOD(pb->SSRIOD)
     582          D_SSR_PROVIDER_ID(pb->SSRProviderID)
     583          D_SSR_SOLUTION_ID(pb->SSRSolutionID)
     584          D_YAW_INFO_INDICATOR(pb->SatelliteYawInformationIndicator)
     585          D_EXTENDED_PHASE_BIAS_ID(pb->ExtendedPhaseBiasPropertyID)
     586          D_NO_OF_SATELLITES(nums)
    581587#ifdef BNC_DEBUG_SSR
    582588          fprintf(stderr, "epochTime %d ui %d mmi %d sats %d/%d ssrIod %d providerId %d solId %d dispInd %d mwInd %d\n",
     
    585591                                  pb->DispersiveBiasConsistencyIndicator, pb->MWConsistencyIndicator);
    586592#endif
    587       for (i = 0; i < nums; ++i) {
    588         D_GPS_SATELLITE_ID(id)
    589         for (pos = satoffset[s];
    590             pos < satoffset[s] + pb->NumberOfSat[s] && pb->Sat[pos].ID != id;
    591             ++pos)
    592           ;
    593         if (pos >= satoffset[s + 1])
    594           return GCOBR_DATAMISMATCH;
    595         else if (pos == pb->NumberOfSat[s] + satoffset[s])
    596           ++pb->NumberOfSat[s];
    597         pb->Sat[pos].ID = id;
    598         D_NO_OF_BIASES(pb->Sat[pos].NumberOfPhaseBiases)
    599         D_YAW_ANGLE(pb->Sat[pos].YawAngle)
    600         D_YAW_RATE(pb->Sat[pos].YawRate)
     593          for (i = 0; i < nums; ++i) {
     594            D_GPS_SATELLITE_ID(id)
     595            for (pos = satoffset[s];
     596                pos < satoffset[s] + pb->NumberOfSat[s] && pb->Sat[pos].ID != id;
     597                ++pos)
     598              ;
     599            if (pos >= satoffset[s + 1])
     600              return GCOBR_DATAMISMATCH;
     601            else if (pos == pb->NumberOfSat[s] + satoffset[s])
     602              ++pb->NumberOfSat[s];
     603            pb->Sat[pos].ID = id;
     604            D_NO_OF_BIASES(pb->Sat[pos].NumberOfPhaseBiases)
     605            D_YAW_ANGLE(pb->Sat[pos].YawAngle)
     606            D_YAW_RATE(pb->Sat[pos].YawRate)
    601607#ifdef BNC_DEBUG_SSR
    602608            fprintf(stderr, "id %2d #%d y %10.6f yr %10.6f ",
     
    604610                                        pb->Sat[pos].YawAngle/MPI, pb->Sat[pos].YawRate/MPI);
    605611#endif
    606         for (j = 0; j < pb->Sat[pos].NumberOfPhaseBiases; ++j) {
    607           D_GNSS_SIGNAL_IDENTIFIER(pb->Sat[pos].Biases[j].Type)
    608           D_INTEGER_INDICATOR(pb->Sat[pos].Biases[j].IntegerIndicator)
    609          // D_WIDE_LANE_INDICATOR(pb->Sat[pos].Biases[j].WidelaneGroupIndicator)
    610           D_DISCONTINUITY_COUNTER(pb->Sat[pos].Biases[j].DiscontinuityCounter)
    611           D_PHASE_BIAS_CORRECTION(pb->Sat[pos].Biases[j].Bias)
    612 #ifdef BNC_DEBUG_SSR
    613             fprintf(stderr, "t%02d int %d /*wl %d*/ disc %d b %8.4f ",
    614                     pb->Sat[pos].Biases[j].Type,
    615                                         pb->Sat[pos].Biases[j].IntegerIndicator,
    616                                         //pb->Sat[pos].Biases[j].WidelaneGroupIndicator,
    617                                         pb->Sat[pos].Biases[j].DiscontinuityCounter,
    618                                         pb->Sat[pos].Biases[j].Bias);
    619 #endif
    620         }
     612            for (j = 0; j < pb->Sat[pos].NumberOfPhaseBiases; ++j) {
     613              D_GNSS_SIGNAL_IDENTIFIER(pb->Sat[pos].Biases[j].Type)
     614              D_INTEGER_INDICATOR(pb->Sat[pos].Biases[j].IntegerIndicator)
     615             // D_WIDE_LANE_INDICATOR(pb->Sat[pos].Biases[j].WidelaneGroupIndicator)
     616              D_DISCONTINUITY_COUNTER(pb->Sat[pos].Biases[j].DiscontinuityCounter)
     617              D_PHASE_BIAS_CORRECTION(pb->Sat[pos].Biases[j].Bias)
     618#ifdef BNC_DEBUG_SSR
     619              fprintf(stderr, "t%02d int %d /*wl %d*/ disc %d b %8.4f ",
     620                      pb->Sat[pos].Biases[j].Type,
     621                                          pb->Sat[pos].Biases[j].IntegerIndicator,
     622                                          //pb->Sat[pos].Biases[j].WidelaneGroupIndicator,
     623                                          pb->Sat[pos].Biases[j].DiscontinuityCounter,
     624                                          pb->Sat[pos].Biases[j].Bias);
     625#endif
     626            }
    621627#ifdef BNC_DEBUG_SSR
    622628            fprintf(stderr, "\n");
    623629#endif
    624       }
    625 #ifdef BNC_DEBUG_SSR
    626       for(type = 0; type < (unsigned int)size && (unsigned char)buffer[type] != 0xD3; ++type)
    627       numbits += 8;
    628       fprintf(stderr, "numbits left %d\n",numbits);
    629 #endif
    630       return mmi ? GCOBR_MESSAGEFOLLOWS : GCOBR_OK;
    631     }
    632     else if (type >= corbase[s]) {
    633       unsigned int corrOffset = type - corbase[s];
    634       if      (corrOffset == COBOFS_ORBIT) {
     630          }
     631    }
     632    else if (kind == COBOFS_ORBIT) {
    635633          if (!co)
    636634            return GCOBR_NOCLOCKORBITPARAMETER;
     
    708706#endif
    709707          }
    710       }
    711       else if (corrOffset == COBOFS_CLOCK) {
     708    }
     709    else if (kind == COBOFS_CLOCK) {
    712710          if (!co)
    713711            return GCOBR_NOCLOCKORBITPARAMETER;
     
    758756#endif
    759757          }
    760       }
    761       else if (corrOffset == COBOFS_COMBINED) {
     758    }
     759    else if (kind == COBOFS_COMBINED) {
    762760          if (!co)
    763761            return GCOBR_NOCLOCKORBITPARAMETER;
     
    839837#endif
    840838          }
    841       }
    842       else if (corrOffset == COBOFS_URA) {
     839    }
     840    else if (kind == COBOFS_URA) {
    843841          if (!co)
    844842            return GCOBR_NOCLOCKORBITPARAMETER;
     
    885883#endif
    886884          }
    887       }
    888       else if (corrOffset == COBOFS_HR) {
     885    }
     886    else if (kind == COBOFS_HR) {
    889887          if (!co)
    890888            return GCOBR_NOCLOCKORBITPARAMETER;
     
    931929#endif
    932930          }
    933       }
    934       else if (corrOffset == COBOFS_CBIAS) {
     931    }
     932    else if (kind == COBOFS_CBIAS) {
    935933          if (!b)
    936934            return GCOBR_NOCODEBIASPARAMETER;
     
    987985#endif
    988986          }
    989       }
    990       else {
    991           continue;
    992       }
    993 #ifdef BNC_DEBUG_SSR
    994       for(type = 0; type < (unsigned int)size && (unsigned char)buffer[type] != 0xD3; ++type)
    995       numbits += 8;
    996       fprintf(stderr, "numbits left %d\n",numbits);
    997 #endif
    998       return mmi ? GCOBR_MESSAGEFOLLOWS : GCOBR_OK;
    999     }
    1000   }
    1001   return GCOBR_UNKNOWNTYPE;
     987    }
     988    else {
     989      /* COBOFS_PBEXT / COBOFS_SATANT / COBOFS_REGIONO: message numbers are
     990         recognized (see setCorType()) but decoding is not implemented yet */
     991      return GCOBR_UNKNOWNTYPE;
     992    }
     993
     994#ifdef BNC_DEBUG_SSR
     995    for(type = 0; type < (unsigned int)size && (unsigned char)buffer[type] != 0xD3; ++type)
     996    numbits += 8;
     997    fprintf(stderr, "numbits left %d\n",numbits);
     998#endif
     999    return mmi ? GCOBR_MESSAGEFOLLOWS : GCOBR_OK;
     1000  }
    10021001}
    10031002
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.h

    r10995 r10997  
    2727    COBBASE_QZSS    =   64;
    2828    COBBASE_NUM     =    5;
    29     corbase
    30         << COBBASE_GPS
    31         << COBBASE_GLONASS
    32         << COBBASE_GALILEO
    33         << COBBASE_BDS
    34         << COBBASE_QZSS;
    35   };
    36 
    37   void setCorOffset() { };
     29  };
    3830
    3931  void setCoType() {
     
    221213  }
    222214
     215  /* Builds corType[sys][kind] from the COTYPE_, CBTYPE_, PBTYPE_, PBEXTTYPE_,
     216     SATANTTYPE_ and REGIONOTYPE_ constants computed above, so GetSSR/Make can
     217     look up or emit a message number with a single table access instead of
     218     base+offset arithmetic. Must run after setCoType/setCbType/setPbType/
     219     setPbExtType/setSatAntType/setRegIonoType have filled those constants -
     220     see the call order in the constructor.
     221     GPS, GLONASS, GALILEO, QZSS and BDS are supported; SBAS has no new-RTCM-SSR
     222     messages defined, so its row is left all-zero (0 = undefined). GRID, Tropo,
     223     Metadata and VTEC are single global message numbers, not per-system, so
     224     they are handled directly against their BASE constant instead of via this
     225     table (VTEC already is, at the top of GetSSR). */
     226  void setCorType() {
     227    COBOFS_ORBIT    = 0;
     228    COBOFS_CLOCK    = 1;
     229    COBOFS_COMBINED = 2;
     230    COBOFS_HR       = 3;
     231    COBOFS_CBIAS    = 4;
     232    COBOFS_PBIAS    = 5;
     233    COBOFS_URA      = 6;
     234    COBOFS_PBEXT    = 7;
     235    COBOFS_SATANT   = 8;
     236    COBOFS_REGIONO  = 9;
     237    COBOFS_NUM      = 10;
     238
     239    corType.clear();
     240    for (int s = 0; s < CLOCKORBIT_SATNUM; ++s) {
     241      corType << QList<unsigned int>();
     242      for (unsigned int k = 0; k < COBOFS_NUM; ++k) {
     243        corType[s] << 0;
     244      }
     245    }
     246
     247    struct SysRow {
     248      int sys;
     249      unsigned int orbit, clock, combined, hr, cbias, ura, pbias, pbext, satant, regiono;
     250    };
     251    const SysRow rows[] = {
     252      { CLOCKORBIT_SATGPS,     COTYPE_GPSORBIT,     COTYPE_GPSCLOCK,     COTYPE_GPSCOMBINED,     COTYPE_GPSHR,     CBTYPE_GPS,     COTYPE_GPSURA,     PBTYPE_GPS,     PBEXTTYPE_GPS,     SATANTTYPE_GPS,     REGIONOTYPE_GPS },
     253      { CLOCKORBIT_SATGLONASS, COTYPE_GLONASSORBIT, COTYPE_GLONASSCLOCK, COTYPE_GLONASSCOMBINED, COTYPE_GLONASSHR, CBTYPE_GLONASS, COTYPE_GLONASSURA, PBTYPE_GLONASS, PBEXTTYPE_GLONASS, SATANTTYPE_GLONASS, REGIONOTYPE_GLONASS },
     254      { CLOCKORBIT_SATGALILEO, COTYPE_GALILEOORBIT, COTYPE_GALILEOCLOCK, COTYPE_GALILEOCOMBINED, COTYPE_GALILEOHR, CBTYPE_GALILEO, COTYPE_GALILEOURA, PBTYPE_GALILEO, PBEXTTYPE_GALILEO, SATANTTYPE_GALILEO, REGIONOTYPE_GALILEO },
     255      { CLOCKORBIT_SATQZSS,    COTYPE_QZSSORBIT,    COTYPE_QZSSCLOCK,    COTYPE_QZSSCOMBINED,    COTYPE_QZSSHR,    CBTYPE_QZSS,    COTYPE_QZSSURA,    PBTYPE_QZSS,    PBEXTTYPE_QZSS,    SATANTTYPE_QZSS,    REGIONOTYPE_QZSS },
     256      { CLOCKORBIT_SATBDS,     COTYPE_BDSORBIT,     COTYPE_BDSCLOCK,     COTYPE_BDSCOMBINED,     COTYPE_BDSHR,     CBTYPE_BDS,     COTYPE_BDSURA,     PBTYPE_BDS,     PBEXTTYPE_BDS,     SATANTTYPE_BDS,     REGIONOTYPE_BDS },
     257    };
     258    for (const SysRow &row : rows) {
     259      corType[row.sys][COBOFS_ORBIT]    = row.orbit;
     260      corType[row.sys][COBOFS_CLOCK]    = row.clock;
     261      corType[row.sys][COBOFS_COMBINED] = row.combined;
     262      corType[row.sys][COBOFS_HR]       = row.hr;
     263      corType[row.sys][COBOFS_CBIAS]    = row.cbias;
     264      corType[row.sys][COBOFS_URA]      = row.ura;
     265      corType[row.sys][COBOFS_PBIAS]    = row.pbias;
     266      corType[row.sys][COBOFS_PBEXT]    = row.pbext;
     267      corType[row.sys][COBOFS_SATANT]   = row.satant;
     268      corType[row.sys][COBOFS_REGIONO]  = row.regiono;
     269    }
     270  }
     271
    223272  std::string       codeTypeToRnxType(char system, CodeType type);
    224273  SsrCorr::CodeType rnxTypeToCodeType(char system, std::string type);
Note: See TracChangeset for help on using the changeset viewer.