Changeset 11000 in ntrip


Ignore:
Timestamp:
Aug 31, 2026, 5:27:46 PM (2 weeks ago)
Author:
stuerze
Message:

updates regarding RTCM-SSR

Location:
trunk/BNC/src
Files:
4 edited

Legend:

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

    r10994 r11000  
    22632263      if ((id >= 1057 && id <= 1068) ||
    22642264          (id >= 1240 && id <= 1270) ||
     2265          (id > 0     && id <= 100) ||
    22652266          (id == 4076)) {
    22662267        if (!_coDecoders.contains(_staID.toLatin1())) {
  • trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp

    r10999 r11000  
    505505    satPhaseBias._ssrFormat  = (_type == RTCMssr) ? ssrRtcmOld :
    506506                               (_type == RTCMnewssr) ? ssrRtcmNew : ssrUnknown;
    507     satPhaseBias._dispBiasConsistInd = _phaseBias.DispersiveBiasConsistencyIndicator;
    508     satPhaseBias._MelbWuebConsistInd = _phaseBias.MWConsistencyIndicator;
     507    if (satPhaseBias._ssrFormat == e_ssrFormat::ssrRtcmNew) {
     508      satPhaseBias._satYawInfoInd = _phaseBias.SatelliteYawInformationIndicator;
     509      satPhaseBias._extPBPhaseInd = _phaseBias.ExtendedPhaseBiasPropertyID;
     510    } 
     511    else {
     512      satPhaseBias._dispBiasConsistInd = _phaseBias.DispersiveBiasConsistencyIndicator;
     513      satPhaseBias._MelbWuebConsistInd = _phaseBias.MWConsistencyIndicator;
     514    }
    509515    satPhaseBias._yaw     = _phaseBias.Sat[ii].YawAngle;
    510516    satPhaseBias._yawRate = _phaseBias.Sat[ii].YawRate;
     
    513519      t_frqPhaseBias frqPhaseBias;
    514520      frqPhaseBias._rnxType2ch.assign(_ssrCorr->codeTypeToRnxType(sys, biasEntry.Type));
    515       frqPhaseBias._value                = biasEntry.Bias;
    516       frqPhaseBias._fixIndicator         = biasEntry.IntegerIndicator;
    517       frqPhaseBias._fixWideLaneIndicator = biasEntry.WidelaneGroupIndicator;
    518       frqPhaseBias._jumpCounter          = biasEntry.DiscontinuityCounter;
     521      frqPhaseBias._value        = biasEntry.Bias;
     522      frqPhaseBias._fixIndicator = biasEntry.IntegerIndicator;
     523      if (satPhaseBias._ssrFormat == e_ssrFormat::ssrRtcmNew) {
     524        if (satPhaseBias._extPBPhaseInd) {
     525          frqPhaseBias._fixWideLaneIndicator = biasEntry.WidelaneGroupIndicator;
     526        }
     527      }
     528      else {
     529        frqPhaseBias._fixWideLaneIndicator = biasEntry.WidelaneGroupIndicator;
     530      }
     531      frqPhaseBias._jumpCounter = biasEntry.DiscontinuityCounter;
    519532      if (!frqPhaseBias._rnxType2ch.empty()) {
    520533        satPhaseBias._bias.push_back(frqPhaseBias);
  • trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm_new.cpp

    r10998 r11000  
    380380        E_GPS_SATELLITE_ID(b->Sat[i].ID)
    381381        E_NO_OF_BIASES(b->Sat[i].NumberOfPhaseBiases)
    382         E_YAW_ANGLE(b->Sat[i].YawAngle)
    383         E_YAW_RATE(b->Sat[i].YawRate)
     382        if (b->SatelliteYawInformationIndicator) {
     383          E_YAW_ANGLE(b->Sat[i].YawAngle)
     384          E_YAW_RATE(b->Sat[i].YawRate)
     385        }
    384386        for (j = 0; j < b->Sat[i].NumberOfPhaseBiases; ++j) {
    385387          E_GNSS_SIGNAL_IDENTIFIER(b->Sat[i].Biases[j].Type)
     
    605607            pb->Sat[pos].ID = id;
    606608            D_NO_OF_BIASES(pb->Sat[pos].NumberOfPhaseBiases)
    607             D_YAW_ANGLE(pb->Sat[pos].YawAngle)
    608             D_YAW_RATE(pb->Sat[pos].YawRate)
     609            if (pb->SatelliteYawInformationIndicator) {
     610              D_YAW_ANGLE(pb->Sat[pos].YawAngle)
     611              D_YAW_RATE(pb->Sat[pos].YawRate)
     612            }
    609613#ifdef BNC_DEBUG_SSR
    610614            fprintf(stderr, "id %2d #%d y %10.6f yr %10.6f ",
     
    619623              D_PHASE_BIAS_CORRECTION(pb->Sat[pos].Biases[j].Bias)
    620624#ifdef BNC_DEBUG_SSR
    621               fprintf(stderr, "t%02d int %d disc %d b %8.4f ",
     625              fprintf(stderr, "t %02d int %02d disc %d b %8.4f ",
    622626                      pb->Sat[pos].Biases[j].Type,
    623627                                                    pb->Sat[pos].Biases[j].IntegerIndicator,
     
    677681              D_WIDE_LANE_INDICATOR(pb->Sat[pos].Biases[j].WidelaneGroupIndicator)
    678682#ifdef BNC_DEBUG_SSR
    679               fprintf(stderr, "t%02d int %d /*wl %d*/ disc %d b %8.4f ",
     683              fprintf(stderr, "t %02d wl %d ",
    680684                      pb->Sat[pos].Biases[j].Type,
    681                                           pb->Sat[pos].Biases[j].IntegerIndicator,
    682                                           pb->Sat[pos].Biases[j].WidelaneGroupIndicator,
    683                                           pb->Sat[pos].Biases[j].DiscontinuityCounter,
    684                                           pb->Sat[pos].Biases[j].Bias);
     685                                                    pb->Sat[pos].Biases[j].WidelaneGroupIndicator);
    685686#endif
    686687            }
     
    10381039              D_CODE_BIAS(b->Sat[pos].Biases[j].Bias)
    10391040#ifdef BNC_DEBUG_SSR
    1040             fprintf(stderr, "t%02d b %8.2f ",
     1041            fprintf(stderr, "t %02d b %8.2f ",
    10411042                    b->Sat[pos].Biases[j].Type, b->Sat[pos].Biases[j].Bias);
    10421043#endif
  • trunk/BNC/src/satObs.cpp

    r10999 r11000  
    1010// Constructor
    1111////////////////////////////////////////////////////////////////////////////
    12 t_clkCorr::t_clkCorr() {
    13   _updateInt  = 0;
    14   _iod        = 0;
    15   _dClk       = 0.0;
    16   _dotDClk    = 0.0;
     12t_clkCorr::t_clkCorr()
     13{
     14  _updateInt = 0;
     15  _iod = 0;
     16  _dClk = 0.0;
     17  _dotDClk = 0.0;
    1718  _dotDotDClk = 0.0;
    1819}
     
    2021//
    2122////////////////////////////////////////////////////////////////////////////
    22 void t_clkCorr::writeEpoch(ostream* out, const QList<t_clkCorr>& corrList) {
     23void t_clkCorr::writeEpoch(ostream* out, const QList<t_clkCorr>& corrList)
     24{
    2325  if (!out || corrList.size() == 0) {
    2426    return;
     
    3133    if (!epoTime.valid()) {
    3234      epoTime = corr._time;
    33       *out << "> CLOCK " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1,' ') << " "
    34           << corr._updateInt <<  " "
    35            << corrList.size() << ' ' << corr._staID << endl;
     35      *out << "> CLOCK " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " "
     36        << corr._updateInt << " "
     37        << corrList.size() << ' ' << corr._staID << endl;
    3638    }
    3739    *out << corr._prn.toString() << ' ' << setw(11) << corr._iod << ' '
    38          << setw(10) << setprecision(4) << corr._dClk       * t_CST::c      << ' '      // m
    39          << setw(10) << setprecision(4) << corr._dotDClk    * t_CST::c * 1.e3 << ' '    // m/s  => mm/s
    40          << setw(10) << setprecision(4) << corr._dotDotDClk * t_CST::c * 1.e3 << endl;  // m/s² => mm/s²
     40      << setw(10) << setprecision(4) << corr._dClk * t_CST::c << ' '                // m
     41      << setw(10) << setprecision(4) << corr._dotDClk * t_CST::c * 1.e3 << ' '      // m/s  => mm/s
     42      << setw(10) << setprecision(4) << corr._dotDotDClk * t_CST::c * 1.e3 << endl; // m/s² => mm/s²
    4143  }
    4244  out->flush();
     
    4547//
    4648////////////////////////////////////////////////////////////////////////////
    47 void t_clkCorr::readEpoch(const string& epoLine, istream& inStream, QList<t_clkCorr>& corrList) {
    48   bncTime      epoTime;
     49void t_clkCorr::readEpoch(const string& epoLine, istream& inStream, QList<t_clkCorr>& corrList)
     50{
     51  bncTime epoTime;
    4952  unsigned int updateInt;
    50   int          numCorr;
    51   string       staID;
     53  int numCorr;
     54  string staID;
    5255  if (t_corrSSR::readEpoLine(epoLine, epoTime, updateInt, numCorr, staID) != t_corrSSR::clkCorr) {
    5356    return;
     
    5558  for (int ii = 0; ii < numCorr; ii++) {
    5659    t_clkCorr corr;
    57     corr._time      = epoTime;
     60    corr._time = epoTime;
    5861    corr._updateInt = updateInt;
    59     corr._staID     = staID;
     62    corr._staID = staID;
    6063
    6164    string line;
     
    6669
    6770    char sys = corr._prn.system();
    68     int num  = corr._prn.number();
     71    int num = corr._prn.number();
    6972    int flag = t_corrSSR::getSsrNavTypeFlag(sys, num);
    7073    corr._prn.setFlag(flag);
    7174
    72     corr._dClk       /= (t_CST::c);
    73     corr._dotDClk    /= (t_CST::c * 1.e3);
     75    corr._dClk /= (t_CST::c);
     76    corr._dotDClk /= (t_CST::c * 1.e3);
    7477    corr._dotDotDClk /= (t_CST::c * 1.e3);
    7578
     
    8083// Constructor
    8184////////////////////////////////////////////////////////////////////////////
    82 t_orbCorr::t_orbCorr() {
     85t_orbCorr::t_orbCorr()
     86{
    8387  _updateInt = 0;
    84   _iod       = 0;
    85   _system    = 'R';
    86   _xr.ReSize(3);    _xr    = 0.0;
    87   _dotXr.ReSize(3); _dotXr = 0.0;
     88  _iod = 0;
     89  _system = 'R';
     90  _xr.ReSize(3);
     91  _xr = 0.0;
     92  _dotXr.ReSize(3);
     93  _dotXr = 0.0;
    8894  _ssrFormat = ssrUnknown;
    8995}
     
    9197//
    9298////////////////////////////////////////////////////////////////////////////
    93 void t_orbCorr::writeEpoch(ostream* out, const QList<t_orbCorr>& corrList) {
     99void t_orbCorr::writeEpoch(ostream* out, const QList<t_orbCorr>& corrList)
     100{
    94101  if (!out || corrList.size() == 0) {
    95102    return;
     
    102109    if (!epoTime.valid()) {
    103110      epoTime = corr._time;
    104       *out << "> ORBIT " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1,' ') << " "
    105            << corr._updateInt <<  " "
    106            << corrList.size() << ' ' << corr._staID << endl;
     111      *out << "> ORBIT " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " "
     112        << corr._updateInt << " "
     113        << corrList.size() << ' ' << corr._staID << endl;
    107114      *out << " " << static_cast<int>(corr._ssrFormat) << endl;
    108115    }
    109116    *out << corr._prn.toString() << ' ' << setw(11) << corr._iod << ' '
    110          << setw(10) << setprecision(4) << corr._xr[0]    << ' '
    111          << setw(10) << setprecision(4) << corr._xr[1]    << ' '
    112          << setw(10) << setprecision(4) << corr._xr[2]    << "    "
    113          << setw(10) << setprecision(4) << corr._dotXr[0] * 1.e3 << ' '   // m/s => mm/s
    114          << setw(10) << setprecision(4) << corr._dotXr[1] * 1.e3 << ' '   // m/s => mm/s
    115          << setw(10) << setprecision(4) << corr._dotXr[2] * 1.e3 << endl; // m/s => mm/s
     117      << setw(10) << setprecision(4) << corr._xr[0] << ' '
     118      << setw(10) << setprecision(4) << corr._xr[1] << ' '
     119      << setw(10) << setprecision(4) << corr._xr[2] << "    "
     120      << setw(10) << setprecision(4) << corr._dotXr[0] * 1.e3 << ' '   // m/s => mm/s
     121      << setw(10) << setprecision(4) << corr._dotXr[1] * 1.e3 << ' '   // m/s => mm/s
     122      << setw(10) << setprecision(4) << corr._dotXr[2] * 1.e3 << endl; // m/s => mm/s
    116123  }
    117124  out->flush();
     
    120127//
    121128////////////////////////////////////////////////////////////////////////////
    122 void t_orbCorr::readEpoch(const string& epoLine, istream& inStream, QList<t_orbCorr>& corrList) {
    123   bncTime      epoTime;
     129void t_orbCorr::readEpoch(const string& epoLine, istream& inStream, QList<t_orbCorr>& corrList)
     130{
     131  bncTime epoTime;
    124132  unsigned int updateInt;
    125   int          numCorr;
    126   string       staID;
     133  int numCorr;
     134  string staID;
    127135  if (t_corrSSR::readEpoLine(epoLine, epoTime, updateInt, numCorr, staID) != t_corrSSR::orbCorr) {
    128136    return;
     
    142150  for (int ii = 0; ii < numCorr; ii++) {
    143151    t_orbCorr corr;
    144     corr._time      = epoTime;
     152    corr._time = epoTime;
    145153    corr._updateInt = updateInt;
    146     corr._staID     = staID;
     154    corr._staID = staID;
    147155    corr._ssrFormat = ssrFormat;
    148156
     
    151159    istringstream in(line.c_str());
    152160
    153     in >> corr._prn      >> corr._iod
    154        >> corr._xr[0]    >> corr._xr[1]    >> corr._xr[2]
    155        >> corr._dotXr[0] >> corr._dotXr[1] >> corr._dotXr[2];
     161    in >> corr._prn >> corr._iod >> corr._xr[0] >> corr._xr[1] >> corr._xr[2] >> corr._dotXr[0] >> corr._dotXr[1] >> corr._dotXr[2];
    156162
    157163    char sys = corr._prn.system();
    158     int num  = corr._prn.number();
     164    int num = corr._prn.number();
    159165    int flag = t_corrSSR::getSsrNavTypeFlag(sys, num);
    160166    corr._prn.setFlag(flag);
     
    170176// Constructor
    171177////////////////////////////////////////////////////////////////////////////
    172 t_URA::t_URA() {
    173   _updateInt  = 0;
    174   _iod        = 0;
    175   _ura        = 0.0;
    176 }
    177 
    178 //
    179 ////////////////////////////////////////////////////////////////////////////
    180 void t_URA::writeEpoch(ostream* out, const QList<t_URA>& corrList) {
     178t_URA::t_URA()
     179{
     180  _updateInt = 0;
     181  _iod = 0;
     182  _ura = 0.0;
     183}
     184
     185//
     186////////////////////////////////////////////////////////////////////////////
     187void t_URA::writeEpoch(ostream* out, const QList<t_URA>& corrList)
     188{
    181189  if (!out || corrList.size() == 0) {
    182190    return;
     
    189197    if (!epoTime.valid()) {
    190198      epoTime = corr._time;
    191       *out << "> URA " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1,' ') << " "
    192           << corr._updateInt <<  " "
    193            << corrList.size() << ' ' << corr._staID << endl;
     199      *out << "> URA " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " "
     200        << corr._updateInt << " "
     201        << corrList.size() << ' ' << corr._staID << endl;
    194202    }
    195203    *out << corr._prn.toString() << ' ' << setw(11) << corr._iod << ' '
    196          << setw(10) << setprecision(4) << corr._ura << endl;
     204      << setw(10) << setprecision(4) << corr._ura << endl;
    197205  }
    198206  out->flush();
     
    201209//
    202210////////////////////////////////////////////////////////////////////////////
    203 void t_URA::readEpoch(const string& epoLine, istream& inStream, QList<t_URA>& corrList) {
    204   bncTime      epoTime;
     211void t_URA::readEpoch(const string& epoLine, istream& inStream, QList<t_URA>& corrList)
     212{
     213  bncTime epoTime;
    205214  unsigned int updateInt;
    206   int          numCorr;
    207   string       staID;
     215  int numCorr;
     216  string staID;
    208217  if (t_corrSSR::readEpoLine(epoLine, epoTime, updateInt, numCorr, staID) != t_corrSSR::URA) {
    209218    return;
     
    211220  for (int ii = 0; ii < numCorr; ii++) {
    212221    t_URA corr;
    213     corr._time      = epoTime;
     222    corr._time = epoTime;
    214223    corr._updateInt = updateInt;
    215     corr._staID     = staID;
     224    corr._staID = staID;
    216225
    217226    string line;
     
    222231
    223232    char sys = corr._prn.system();
    224     int num  = corr._prn.number();
     233    int num = corr._prn.number();
    225234    int flag = t_corrSSR::getSsrNavTypeFlag(sys, num);
    226235    corr._prn.setFlag(flag);
     
    232241//
    233242////////////////////////////////////////////////////////////////////////////
    234 void t_satCodeBias::writeEpoch(ostream* out, const QList<t_satCodeBias>& biasList) {
     243void t_satCodeBias::writeEpoch(ostream* out, const QList<t_satCodeBias>& biasList)
     244{
    235245  if (!out || biasList.size() == 0) {
    236246    return;
     
    243253    if (!epoTime.valid()) {
    244254      epoTime = satCodeBias._time;
    245       *out << "> CODE_BIAS " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1,' ') << " "
    246            << satCodeBias._updateInt <<  " "
    247            << biasList.size() << ' ' << satCodeBias._staID << endl;
     255      *out << "> CODE_BIAS " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " "
     256        << satCodeBias._updateInt << " "
     257        << biasList.size() << ' ' << satCodeBias._staID << endl;
    248258    }
    249259    *out << satCodeBias._prn.toString() << "   " << setw(2) << satCodeBias._bias.size();
     
    251261      const t_frqCodeBias& frqCodeBias = satCodeBias._bias[ii];
    252262      *out << "   " << frqCodeBias._rnxType2ch << ' '
    253            << setw(10) << setprecision(4) << frqCodeBias._value;
     263        << setw(10) << setprecision(4) << frqCodeBias._value;
    254264    }
    255265    *out << endl;
     
    260270//
    261271////////////////////////////////////////////////////////////////////////////
    262 void t_satCodeBias::readEpoch(const string& epoLine, istream& inStream, QList<t_satCodeBias>& biasList) {
    263   bncTime      epoTime;
     272void t_satCodeBias::readEpoch(const string& epoLine, istream& inStream, QList<t_satCodeBias>& biasList)
     273{
     274  bncTime epoTime;
    264275  unsigned int updateInt;
    265   int          numSat;
    266   string       staID;
     276  int numSat;
     277  string staID;
    267278  if (t_corrSSR::readEpoLine(epoLine, epoTime, updateInt, numSat, staID) != t_corrSSR::codeBias) {
    268279    return;
     
    270281  for (int ii = 0; ii < numSat; ii++) {
    271282    t_satCodeBias satCodeBias;
    272     satCodeBias._time      = epoTime;
     283    satCodeBias._time = epoTime;
    273284    satCodeBias._updateInt = updateInt;
    274     satCodeBias._staID     = staID;
     285    satCodeBias._staID = staID;
    275286
    276287    string line;
     
    282293
    283294    char sys = satCodeBias._prn.system();
    284     int num  = satCodeBias._prn.number();
     295    int num = satCodeBias._prn.number();
    285296    int flag = t_corrSSR::getSsrNavTypeFlag(sys, num);
    286297    satCodeBias._prn.setFlag(flag);
     
    300311//
    301312////////////////////////////////////////////////////////////////////////////
    302 void t_satPhaseBias::writeEpoch(ostream* out, const QList<t_satPhaseBias>& biasList) {
     313void t_satPhaseBias::writeEpoch(ostream* out, const QList<t_satPhaseBias>& biasList)
     314{
    303315  if (!out || biasList.size() == 0) {
    304316    return;
     
    311323    if (!epoTime.valid()) {
    312324      epoTime = satPhaseBias._time;
    313       *out << "> PHASE_BIAS " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1,' ') << " "
    314            << satPhaseBias._updateInt <<  " "
    315            << biasList.size() << ' ' << satPhaseBias._staID <<  endl;
     325      *out << "> PHASE_BIAS " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " "
     326        << satPhaseBias._updateInt << " "
     327        << biasList.size() << ' ' << satPhaseBias._staID << endl;
    316328
    317329      if (satPhaseBias._ssrFormat == e_ssrFormat::ssrRtcmNew) {
    318330        *out << " " << static_cast<int>(satPhaseBias._ssrFormat) << "   "
    319              << satPhaseBias._satYawInfoInd << "   "
    320              << satPhaseBias._extPBPhaseInd << endl;
    321       } else  {
    322           *out << " " << static_cast<int>(satPhaseBias._ssrFormat) << "   "
    323              << satPhaseBias._dispBiasConsistInd << "   "
    324              << satPhaseBias._MelbWuebConsistInd << endl;
    325       }
    326     }
    327     *out << satPhaseBias._prn.toString() << ' '
    328          << setw(12) << setprecision(8) << satPhaseBias._yaw  * 180.0 / M_PI << ' '
    329          << setw(12) << setprecision(8) << satPhaseBias._yawRate  * 180.0 / M_PI<< "   "
    330          << setw(2) << satPhaseBias._bias.size();
    331     for (unsigned ii = 0; ii < satPhaseBias._bias.size(); ii++) {
    332       const t_frqPhaseBias& frqPhaseBias = satPhaseBias._bias[ii];
    333       *out << "   " << frqPhaseBias._rnxType2ch << ' '
    334            << setw(10) << setprecision(4) << frqPhaseBias._value << ' '
    335            << setw(3) << frqPhaseBias._fixIndicator << ' '
    336            << setw(3) << frqPhaseBias._fixWideLaneIndicator << ' '
    337            << setw(3) << frqPhaseBias._jumpCounter;
    338     }
    339     *out << endl;
     331          << satPhaseBias._satYawInfoInd << "   "
     332          << satPhaseBias._extPBPhaseInd << endl;
     333      }
     334      else {
     335        *out << " " << static_cast<int>(satPhaseBias._ssrFormat) << "   "
     336          << satPhaseBias._dispBiasConsistInd << "   "
     337          << satPhaseBias._MelbWuebConsistInd << endl;
     338      }
     339    }
     340    if (satPhaseBias._ssrFormat == e_ssrFormat::ssrRtcmNew) {
     341      *out << satPhaseBias._prn.toString() << ' '
     342        << setw(12) << setprecision(8) << satPhaseBias._yaw * 180.0 / M_PI << ' '
     343        << setw(12) << setprecision(8) << satPhaseBias._yawRate * 180.0 / M_PI << "   "
     344        << setw(2) << satPhaseBias._bias.size();
     345      for (unsigned ii = 0; ii < satPhaseBias._bias.size(); ii++) {
     346        const t_frqPhaseBias& frqPhaseBias = satPhaseBias._bias[ii];
     347        *out << "   " << frqPhaseBias._rnxType2ch << ' '
     348          << setw(10) << setprecision(4) << frqPhaseBias._value << ' '
     349          << setw(3) << frqPhaseBias._fixIndicator << ' '
     350          << setw(3) << frqPhaseBias._fixWideLaneIndicator << ' '
     351          << setw(3) << frqPhaseBias._jumpCounter;
     352      }
     353      *out << endl;
     354    }
     355    else {
     356      *out << satPhaseBias._prn.toString() << ' '
     357        << setw(12) << setprecision(8) << satPhaseBias._yaw * 180.0 / M_PI << ' '
     358        << setw(12) << setprecision(8) << satPhaseBias._yawRate * 180.0 / M_PI << "   "
     359        << setw(2) << satPhaseBias._bias.size();
     360      for (unsigned ii = 0; ii < satPhaseBias._bias.size(); ii++) {
     361        const t_frqPhaseBias& frqPhaseBias = satPhaseBias._bias[ii];
     362        *out << "   " << frqPhaseBias._rnxType2ch << ' '
     363          << setw(10) << setprecision(4) << frqPhaseBias._value << ' '
     364          << setw(3) << frqPhaseBias._fixIndicator << ' '
     365          << setw(3) << frqPhaseBias._fixWideLaneIndicator << ' '
     366          << setw(3) << frqPhaseBias._jumpCounter;
     367      }
     368      *out << endl;
     369    }
    340370  }
    341371  out->flush();
     
    344374//
    345375////////////////////////////////////////////////////////////////////////////
    346 void t_satPhaseBias::readEpoch(const string& epoLine, istream& inStream, QList<t_satPhaseBias>& biasList) {
    347   bncTime      epoTime;
     376void t_satPhaseBias::readEpoch(const string& epoLine, istream& inStream, QList<t_satPhaseBias>& biasList)
     377{
     378  bncTime epoTime;
    348379  unsigned int updateInt;
    349   int          numSat;
    350   string       staID;
     380  int numSat;
     381  string staID;
    351382  unsigned int metadata1;
    352383  unsigned int metadata2;
    353   e_ssrFormat  ssrFormat = ssrUnknown;
     384  e_ssrFormat ssrFormat = ssrUnknown;
    354385  if (t_corrSSR::readEpoLine(epoLine, epoTime, updateInt, numSat, staID) != t_corrSSR::phaseBias) {
    355386    return;
     
    357388  for (int ii = 0; ii <= numSat; ii++) {
    358389    t_satPhaseBias satPhaseBias;
    359     satPhaseBias._time      = epoTime;
     390    satPhaseBias._time = epoTime;
    360391    satPhaseBias._updateInt = updateInt;
    361     satPhaseBias._staID     = staID;
     392    satPhaseBias._staID = staID;
    362393
    363394    string line;
     
    372403    }
    373404    satPhaseBias._ssrFormat = ssrFormat;
    374     switch(ssrFormat) {
    375       case e_ssrFormat::ssrRtcmNew:
    376         satPhaseBias._dispBiasConsistInd = metadata1;
    377         satPhaseBias._MelbWuebConsistInd = metadata2;
    378         break;
    379       case e_ssrFormat::ssrRtcmOld:
    380       case e_ssrFormat::ssrUnknown:
    381         satPhaseBias._satYawInfoInd = metadata1;
    382         satPhaseBias._extPBPhaseInd = metadata2;
    383         break;
     405    switch (ssrFormat) {
     406    case e_ssrFormat::ssrRtcmNew:
     407      satPhaseBias._dispBiasConsistInd = metadata1;
     408      satPhaseBias._MelbWuebConsistInd = metadata2;
     409      break;
     410    case e_ssrFormat::ssrRtcmOld:
     411    case e_ssrFormat::ssrUnknown:
     412      satPhaseBias._satYawInfoInd = metadata1;
     413      satPhaseBias._extPBPhaseInd = metadata2;
     414      break;
    384415    }
    385416    int numBias;
    386417    double yawDeg, yawDegRate;
    387     in >> satPhaseBias._prn  >> yawDeg >> yawDegRate  >> numBias;
     418    in >> satPhaseBias._prn >> yawDeg >> yawDegRate >> numBias;
    388419    satPhaseBias._yaw = yawDeg * M_PI / 180.0;
    389420    satPhaseBias._yawRate = yawDegRate * M_PI / 180.0;
    390421
    391422    char sys = satPhaseBias._prn.system();
    392     int num  = satPhaseBias._prn.number();
     423    int num = satPhaseBias._prn.number();
    393424    int flag = t_corrSSR::getSsrNavTypeFlag(sys, num);
    394425    satPhaseBias._prn.setFlag(flag);
     
    396427    while (in.good()) {
    397428      t_frqPhaseBias frqPhaseBias;
    398       in >> frqPhaseBias._rnxType2ch >> frqPhaseBias._value
    399          >> frqPhaseBias._fixIndicator >> frqPhaseBias._fixWideLaneIndicator
    400          >> frqPhaseBias._jumpCounter;
     429      in >> frqPhaseBias._rnxType2ch >> frqPhaseBias._value >> frqPhaseBias._fixIndicator >> frqPhaseBias._fixWideLaneIndicator >> frqPhaseBias._jumpCounter;
    401430      if (!frqPhaseBias._rnxType2ch.empty()) {
    402431        satPhaseBias._bias.push_back(frqPhaseBias);
     
    410439//
    411440////////////////////////////////////////////////////////////////////////////
    412 void t_vTec::write(ostream* out, const t_vTec& vTec) {
     441void t_vTec::write(ostream* out, const t_vTec& vTec)
     442{
    413443  if (!out || vTec._layers.size() == 0) {
    414444    return;
     
    416446  out->setf(ios::fixed);
    417447  bncTime epoTime = vTec._time;
    418   *out << "> VTEC " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1,' ') << " "
    419        << vTec._updateInt <<  " "
    420        << vTec._layers.size() << ' ' << vTec._staID << endl;
     448  *out << "> VTEC " << epoTime.datestr(' ') << ' ' << epoTime.timestr(1, ' ') << " "
     449    << vTec._updateInt << " "
     450    << vTec._layers.size() << ' ' << vTec._staID << endl;
    421451  for (unsigned ii = 0; ii < vTec._layers.size(); ii++) {
    422452    const t_vTecLayer& layer = vTec._layers[ii];
    423     *out << setw(2)  << ii+1 << ' '
    424          << setw(2)  << layer._C.Nrows()-1 << ' '
    425          << setw(2)  << layer._C.Ncols()-1 << ' '
    426          << setw(10) << setprecision(1) << layer._height << endl
    427          << setw(10) << setprecision(4) << layer._C
    428          << setw(10) << setprecision(4) << layer._S;
     453    *out << setw(2) << ii + 1 << ' '
     454      << setw(2) << layer._C.Nrows() - 1 << ' '
     455      << setw(2) << layer._C.Ncols() - 1 << ' '
     456      << setw(10) << setprecision(1) << layer._height << endl
     457      << setw(10) << setprecision(4) << layer._C
     458      << setw(10) << setprecision(4) << layer._S;
    429459  }
    430460  out->flush();
     
    433463//
    434464////////////////////////////////////////////////////////////////////////////
    435 void t_vTec::read(const string& epoLine, istream& inStream, t_vTec& vTec) {
    436   bncTime      epoTime;
     465void t_vTec::read(const string& epoLine, istream& inStream, t_vTec& vTec)
     466{
     467  bncTime epoTime;
    437468  unsigned int updateInt;
    438   int          numLayers;
    439   string       staID;
     469  int numLayers;
     470  string staID;
    440471  if (t_corrSSR::readEpoLine(epoLine, epoTime, updateInt, numLayers, staID) != t_corrSSR::vTec) {
    441472    return;
     
    444475    return;
    445476  }
    446   vTec._time      = epoTime;
     477  vTec._time = epoTime;
    447478  vTec._updateInt = updateInt;
    448   vTec._staID     = staID;
     479  vTec._staID = staID;
    449480  for (int ii = 0; ii < numLayers; ii++) {
    450481    t_vTecLayer layer;
     
    457488    in >> dummy >> maxDeg >> maxOrd >> layer._height;
    458489
    459     layer._C.ReSize(maxDeg+1, maxOrd+1);
    460     layer._S.ReSize(maxDeg+1, maxOrd+1);
     490    layer._C.ReSize(maxDeg + 1, maxOrd + 1);
     491    layer._S.ReSize(maxDeg + 1, maxOrd + 1);
    461492
    462493    for (int iDeg = 0; iDeg <= maxDeg; iDeg++) {
     
    478509////////////////////////////////////////////////////////////////////////////
    479510t_corrSSR::e_type t_corrSSR::readEpoLine(const string& line, bncTime& epoTime,
    480                                          unsigned int& updateInt, int& numEntries,
    481                                          string& staID) {
     511  unsigned int& updateInt, int& numEntries,
     512  string& staID)
     513{
    482514
    483515  istringstream inLine(line.c_str());
    484516
    485   char   epoChar;
     517  char epoChar;
    486518  string typeString;
    487   int    year, month, day, hour, min;
     519  int year, month, day, hour, min;
    488520  double sec;
    489521
    490   inLine >> epoChar >> typeString
    491          >> year >> month >> day >> hour >> min >> sec >> updateInt >> numEntries >> staID;
     522  inLine >> epoChar >> typeString >> year >> month >> day >> hour >> min >> sec >> updateInt >> numEntries >> staID;
    492523
    493524  if (epoChar == '>') {
    494525    epoTime.set(year, month, day, hour, min, sec);
    495     if      (typeString == "CLOCK") {
     526    if (typeString == "CLOCK") {
    496527      return clkCorr;
    497528    }
     
    518549// Set NAV type to force NAVtype usage according SSR standard
    519550/////////////////////////////////////////////////////////////
    520 t_eph::e_type  t_corrSSR::getSsrNavTypeFlag(char sys, int num) {
     551t_eph::e_type t_corrSSR::getSsrNavTypeFlag(char sys, int num)
     552{
    521553
    522554  t_eph::e_type flag = t_eph::undefined;
    523555
    524556  switch (sys) {
    525     case 'G':
    526     case 'J':
    527     case 'I': // not part of the SSR standard
    528       flag = t_eph::LNAV;
    529       break;
    530     case 'R':
    531       flag = t_eph::FDMA_M;
    532       break;
    533     case 'E':
    534       flag = t_eph::INAV;
    535       break;
    536     case 'C':
    537       if (num < 6) {// GEO
    538         flag = t_eph::D2;
    539       }
    540       else if (num > 58 && num < 63) { // GEO
    541         flag = t_eph::D2;
    542       }
    543       else {
    544         flag = t_eph::D1;
    545       }
    546       break;
    547     case 'S':
    548       flag = t_eph::SBASL1;
    549       break;
     557  case 'G':
     558  case 'J':
     559  case 'I': // not part of the SSR standard
     560    flag = t_eph::LNAV;
     561    break;
     562  case 'R':
     563    flag = t_eph::FDMA_M;
     564    break;
     565  case 'E':
     566    flag = t_eph::INAV;
     567    break;
     568  case 'C':
     569    if (num < 6) { // GEO
     570      flag = t_eph::D2;
     571    }
     572    else if (num > 58 && num < 63) { // GEO
     573      flag = t_eph::D2;
     574    }
     575    else {
     576      flag = t_eph::D1;
     577    }
     578    break;
     579  case 'S':
     580    flag = t_eph::SBASL1;
     581    break;
    550582  }
    551583
Note: See TracChangeset for help on using the changeset viewer.