Changeset 3751 in ntrip


Ignore:
Timestamp:
Mar 30, 2012, 3:44:32 PM (12 years ago)
Author:
mervart
Message:
 
Location:
trunk/BNC
Files:
4 edited

Legend:

Unmodified
Added
Removed
  • trunk/BNC/bncephuser.cpp

    r3671 r3751  
    208208  double  GPSweeks;
    209209  in >> updateInterval >> GPSweek >> GPSweeks >> prn;
    210 
    211   tt.set(GPSweek, GPSweeks);
    212210
    213211  if      ( messageType == COTYPE_GPSCOMBINED    ||
     
    226224    dotDClk    /= t_CST::c;
    227225    dotDotDClk /= t_CST::c;
    228     raoSet  = true;
    229     dClkSet = true;
     226
     227    tClk.set(GPSweek, GPSweeks);
     228    tRao.set(GPSweek, GPSweeks);
    230229  }
    231230  else if ( messageType == COTYPE_GPSORBIT    ||
     
    238237      >> dotRao[0]    >> dotRao[1]    >> dotRao[2]
    239238      >> dotDotRao[0] >> dotDotRao[1] >> dotDotRao[2];
    240     raoSet  = true;
     239
     240    tRao.set(GPSweek, GPSweeks);
    241241  }
    242242  else if ( messageType == COTYPE_GPSCLOCK    ||
    243243            messageType == COTYPE_GLONASSCLOCK ) {
    244     int dummyIOD;
    245     dClk       = 0.0;
    246     dotDClk    = 0.0;
    247     dotDotDClk = 0.0;
    248     in >> dummyIOD >> dClk >> dotDClk >> dotDotDClk;
    249     dClk       /= t_CST::c;
    250     dotDClk    /= t_CST::c;
    251     dotDotDClk /= t_CST::c;
    252     dClkSet = true;
     244    if (tRao.valid()) {
     245      int dummyIOD;
     246      dClk       = 0.0;
     247      dotDClk    = 0.0;
     248      dotDotDClk = 0.0;
     249      in >> dummyIOD >> dClk >> dotDClk >> dotDotDClk;
     250      dClk       /= t_CST::c;
     251      dotDClk    /= t_CST::c;
     252      dotDotDClk /= t_CST::c;
     253
     254      tClk.set(GPSweek, GPSweeks);
     255    }
    253256  }
    254257  else if ( messageType == COTYPE_GPSHR    ||
    255258            messageType == COTYPE_GLONASSHR ) {
    256     int dummyIOD;
    257     in >> dummyIOD >> hrClk;
    258     hrClk /= t_CST::c;
     259    if (tRao.valid() && tClk.valid()) {
     260      int dummyIOD;
     261      in >> dummyIOD >> hrClk;
     262      hrClk /= t_CST::c;
     263    }
    259264  }
    260265
  • trunk/BNC/bncephuser.h

    r3671 r3751  
    4040 public:
    4141  t_corr() {
    42     raoSet  = false;
    43     dClkSet = false;
    44     eph     = 0;
    45     hrClk   = 0.0;
     42    rao.ReSize(3);       
     43    dotRao.ReSize(3);   
     44    dotDotRao.ReSize(3);
     45    iod        = 0;
     46    dClk       = 0.0;
     47    dotDClk    = 0.0;
     48    dotDotDClk = 0.0;
     49    hrClk      = 0.0;
     50    rao        = 0.0;
     51    dotRao     = 0.0;
     52    dotDotRao  = 0.0;
     53    eph        = 0;
    4654  }
    47   bool ready() {return raoSet && dClkSet;}
     55 
     56  ~t_corr() {}
     57
     58  bool ready() {return tRao.valid() && tClk.valid();}
    4859
    4960  static bool relevantMessageType(int msgType) {
     
    6172
    6273  QString      prn;
    63   bncTime      tt;
     74  bncTime      tClk;
     75  bncTime      tRao;
    6476  int          iod;
    6577  double       dClk;
     
    7082  ColumnVector dotRao;
    7183  ColumnVector dotDotRao;
    72   bool         raoSet;
    73   bool         dClkSet;
    7484  const t_eph* eph;
    7585};
  • trunk/BNC/bncpppclient.cpp

    r3640 r3751  
    271271  }
    272272
    273   // Remove All Corrections
    274   // ----------------------
    275   //  QMapIterator<QString, t_corr*> ic(_corr);
    276   //  while (ic.hasNext()) {
    277   //    ic.next();
    278   //    delete ic.value();
    279   //  }
    280   //  _corr.clear();
    281 
    282273  QListIterator<QString> it(corrList);
    283274  while (it.hasNext()) {
     
    303294
    304295      cc->readLine(line);
    305       _corr_tt = cc->tt;
     296      _corr_tt = cc->tClk;
    306297    }
    307298    else if ( messageType == BTYPE_GPS ) {
     
    337328  }
    338329
    339   QMutableMapIterator<QString, t_corr*> im(_corr);
    340   while (im.hasNext()) {
    341     im.next();
    342     t_corr* cc = im.value();
    343     if (!cc->ready()) {
    344       delete cc;
    345       im.remove();
    346     }
    347   }
    348330}
    349331
     
    360342      if (_corr.contains(prn)) {
    361343        t_corr* cc = _corr.value(prn);
    362         if (tt - cc->tt < MAXAGE) {
     344        if (cc->ready() && tt - cc->tClk < MAXAGE) {
    363345          t_eph*  eLast = _eph.value(prn)->last;
    364346          t_eph*  ePrev = _eph.value(prn)->prev;
     
    390372                              ColumnVector& xc, ColumnVector& vv) {
    391373
    392   double dt = tt - cc->tt;
    393   ColumnVector raoHlp = cc->rao + cc->dotRao * dt + cc->dotDotRao * dt * dt;
     374  double dtRao = tt - cc->tRao;
     375  ColumnVector raoHlp = cc->rao + cc->dotRao * dtRao
     376                      + cc->dotDotRao * dtRao * dtRao;
    394377
    395378  if (raoHlp.norm_Frobenius() > 20.0) {
     
    402385  xc[1] -= dx[1];
    403386  xc[2] -= dx[2];
    404   xc[3] += cc->dClk + cc->dotDClk * dt + cc->dotDotDClk * dt * dt
     387
     388  double dtClk = tt - cc->tClk;
     389
     390  xc[3] += cc->dClk + cc->dotDClk * dtClk + cc->dotDotDClk * dtClk * dtClk
    405391        + cc->hrClk;
    406392
  • trunk/BNC/combination/bnccomb.cpp

    r3655 r3751  
    309309  // Save Orbit-Only Corrections
    310310  // ---------------------------
    311   if (newCorr->raoSet && !newCorr->dClkSet) {
     311  if (newCorr->tRao.valid() && !newCorr->tClk.valid()) {
    312312    QString corrID = newCorr->ID();
    313313    if (_orbitCorrs.find(corrID) != _orbitCorrs.end()) {
     
    320320  // Merge with saved orbit correction
    321321  // ---------------------------------
    322   else if (newCorr->dClkSet && !newCorr->raoSet) {
     322  else if (newCorr->tClk.valid() && !newCorr->tRao.valid()) {
    323323    QString corrID = newCorr->ID();
    324324    if (_orbitCorrs.find(corrID) != _orbitCorrs.end()) {
     
    329329  // Check Modulo Time
    330330  // -----------------
    331   if (int(newCorr->tt.gpssec()) % moduloTime != 0.0) {
     331  if (int(newCorr->tClk.gpssec()) % moduloTime != 0.0) {
    332332    delete newCorr;
    333333    return;
     
    336336  // Delete old corrections
    337337  // ----------------------
    338   if (_resTime.valid() && newCorr->tt <= _resTime) {
     338  if (_resTime.valid() && newCorr->tClk <= _resTime) {
    339339    delete newCorr;
    340340    return;
     
    368368  while (itTime.hasNext()) {
    369369    bncTime epoTime = itTime.next();
    370     if (epoTime < newCorr->tt - moduloTime) {
     370    if (epoTime < newCorr->tClk - moduloTime) {
    371371      _resTime = epoTime;
    372372      processEpoch();
     
    376376  // Merge or add the correction
    377377  // ---------------------------
    378   QVector<cmbCorr*>& corrs = _buffer[newCorr->tt].corrs;
     378  QVector<cmbCorr*>& corrs = _buffer[newCorr->tClk].corrs;
    379379  cmbCorr* existingCorr = 0;
    380380  QVectorIterator<cmbCorr*> itCorr(corrs);
     
    406406  ColumnVector oldXC(4);
    407407  ColumnVector oldVV(3);
    408   corr->eph->position(corr->tt.gpsw(), corr->tt.gpssec(),
     408  corr->eph->position(corr->tRao.gpsw(), corr->tRao.gpssec(),
    409409                      oldXC.data(), oldVV.data());
    410410
    411411  ColumnVector newXC(4);
    412412  ColumnVector newVV(3);
    413   lastEph->position(corr->tt.gpsw(), corr->tt.gpssec(),
     413  lastEph->position(corr->tRao.gpsw(), corr->tRao.gpssec(),
    414414                    newXC.data(), newVV.data());
    415415
     
    11541154t_irc bncComb::mergeOrbitCorr(const cmbCorr* orbitCorr, cmbCorr* clkCorr) {
    11551155
    1156   double dt = clkCorr->tt - orbitCorr->tt;
    1157 
    1158   clkCorr->iod = orbitCorr->iod; // is it always correct?
    1159   clkCorr->eph = orbitCorr->eph;
    1160 
    1161   clkCorr->rao = orbitCorr->rao
    1162                + orbitCorr->dotRao    * dt
    1163                + orbitCorr->dotDotRao * dt * dt;
    1164 
    1165   clkCorr->dotRao = orbitCorr->dotRao
    1166                   + orbitCorr->dotDotRao * dt;
    1167 
     1156  clkCorr->iod       = orbitCorr->iod; // is it always correct?
     1157  clkCorr->eph       = orbitCorr->eph;
     1158  clkCorr->tRao      = orbitCorr->tRao;
     1159  clkCorr->rao       = orbitCorr->rao;
     1160  clkCorr->dotRao    = orbitCorr->dotRao;
    11681161  clkCorr->dotDotRao = orbitCorr->dotDotRao;
    11691162
    1170   clkCorr->raoSet = true;
    1171 
    11721163  return success;
    11731164}
Note: See TracChangeset for help on using the changeset viewer.