Changeset 3751 in ntrip
- Timestamp:
- Mar 30, 2012, 3:44:32 PM (13 years ago)
- Location:
- trunk/BNC
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/bncephuser.cpp
r3671 r3751 208 208 double GPSweeks; 209 209 in >> updateInterval >> GPSweek >> GPSweeks >> prn; 210 211 tt.set(GPSweek, GPSweeks);212 210 213 211 if ( messageType == COTYPE_GPSCOMBINED || … … 226 224 dotDClk /= t_CST::c; 227 225 dotDotDClk /= t_CST::c; 228 raoSet = true; 229 dClkSet = true; 226 227 tClk.set(GPSweek, GPSweeks); 228 tRao.set(GPSweek, GPSweeks); 230 229 } 231 230 else if ( messageType == COTYPE_GPSORBIT || … … 238 237 >> dotRao[0] >> dotRao[1] >> dotRao[2] 239 238 >> dotDotRao[0] >> dotDotRao[1] >> dotDotRao[2]; 240 raoSet = true; 239 240 tRao.set(GPSweek, GPSweeks); 241 241 } 242 242 else if ( messageType == COTYPE_GPSCLOCK || 243 243 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 } 253 256 } 254 257 else if ( messageType == COTYPE_GPSHR || 255 258 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 } 259 264 } 260 265 -
trunk/BNC/bncephuser.h
r3671 r3751 40 40 public: 41 41 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; 46 54 } 47 bool ready() {return raoSet && dClkSet;} 55 56 ~t_corr() {} 57 58 bool ready() {return tRao.valid() && tClk.valid();} 48 59 49 60 static bool relevantMessageType(int msgType) { … … 61 72 62 73 QString prn; 63 bncTime tt; 74 bncTime tClk; 75 bncTime tRao; 64 76 int iod; 65 77 double dClk; … … 70 82 ColumnVector dotRao; 71 83 ColumnVector dotDotRao; 72 bool raoSet;73 bool dClkSet;74 84 const t_eph* eph; 75 85 }; -
trunk/BNC/bncpppclient.cpp
r3640 r3751 271 271 } 272 272 273 // Remove All Corrections274 // ----------------------275 // QMapIterator<QString, t_corr*> ic(_corr);276 // while (ic.hasNext()) {277 // ic.next();278 // delete ic.value();279 // }280 // _corr.clear();281 282 273 QListIterator<QString> it(corrList); 283 274 while (it.hasNext()) { … … 303 294 304 295 cc->readLine(line); 305 _corr_tt = cc->t t;296 _corr_tt = cc->tClk; 306 297 } 307 298 else if ( messageType == BTYPE_GPS ) { … … 337 328 } 338 329 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 }348 330 } 349 331 … … 360 342 if (_corr.contains(prn)) { 361 343 t_corr* cc = _corr.value(prn); 362 if ( tt - cc->tt< MAXAGE) {344 if (cc->ready() && tt - cc->tClk < MAXAGE) { 363 345 t_eph* eLast = _eph.value(prn)->last; 364 346 t_eph* ePrev = _eph.value(prn)->prev; … … 390 372 ColumnVector& xc, ColumnVector& vv) { 391 373 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; 394 377 395 378 if (raoHlp.norm_Frobenius() > 20.0) { … … 402 385 xc[1] -= dx[1]; 403 386 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 405 391 + cc->hrClk; 406 392 -
trunk/BNC/combination/bnccomb.cpp
r3655 r3751 309 309 // Save Orbit-Only Corrections 310 310 // --------------------------- 311 if (newCorr-> raoSet && !newCorr->dClkSet) {311 if (newCorr->tRao.valid() && !newCorr->tClk.valid()) { 312 312 QString corrID = newCorr->ID(); 313 313 if (_orbitCorrs.find(corrID) != _orbitCorrs.end()) { … … 320 320 // Merge with saved orbit correction 321 321 // --------------------------------- 322 else if (newCorr-> dClkSet && !newCorr->raoSet) {322 else if (newCorr->tClk.valid() && !newCorr->tRao.valid()) { 323 323 QString corrID = newCorr->ID(); 324 324 if (_orbitCorrs.find(corrID) != _orbitCorrs.end()) { … … 329 329 // Check Modulo Time 330 330 // ----------------- 331 if (int(newCorr->t t.gpssec()) % moduloTime != 0.0) {331 if (int(newCorr->tClk.gpssec()) % moduloTime != 0.0) { 332 332 delete newCorr; 333 333 return; … … 336 336 // Delete old corrections 337 337 // ---------------------- 338 if (_resTime.valid() && newCorr->t t<= _resTime) {338 if (_resTime.valid() && newCorr->tClk <= _resTime) { 339 339 delete newCorr; 340 340 return; … … 368 368 while (itTime.hasNext()) { 369 369 bncTime epoTime = itTime.next(); 370 if (epoTime < newCorr->t t- moduloTime) {370 if (epoTime < newCorr->tClk - moduloTime) { 371 371 _resTime = epoTime; 372 372 processEpoch(); … … 376 376 // Merge or add the correction 377 377 // --------------------------- 378 QVector<cmbCorr*>& corrs = _buffer[newCorr->t t].corrs;378 QVector<cmbCorr*>& corrs = _buffer[newCorr->tClk].corrs; 379 379 cmbCorr* existingCorr = 0; 380 380 QVectorIterator<cmbCorr*> itCorr(corrs); … … 406 406 ColumnVector oldXC(4); 407 407 ColumnVector oldVV(3); 408 corr->eph->position(corr->t t.gpsw(), corr->tt.gpssec(),408 corr->eph->position(corr->tRao.gpsw(), corr->tRao.gpssec(), 409 409 oldXC.data(), oldVV.data()); 410 410 411 411 ColumnVector newXC(4); 412 412 ColumnVector newVV(3); 413 lastEph->position(corr->t t.gpsw(), corr->tt.gpssec(),413 lastEph->position(corr->tRao.gpsw(), corr->tRao.gpssec(), 414 414 newXC.data(), newVV.data()); 415 415 … … 1154 1154 t_irc bncComb::mergeOrbitCorr(const cmbCorr* orbitCorr, cmbCorr* clkCorr) { 1155 1155 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; 1168 1161 clkCorr->dotDotRao = orbitCorr->dotDotRao; 1169 1162 1170 clkCorr->raoSet = true;1171 1172 1163 return success; 1173 1164 }
Note:
See TracChangeset
for help on using the changeset viewer.