Changeset 8168 in ntrip
- Timestamp:
- Oct 26, 2017, 2:44:32 PM (7 years ago)
- Location:
- trunk/BNC
- Files:
-
- 11 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/ChangeLog.txt
r8107 r8168 2 2 BNC VERSION 2.13.0 (xx.xx.xxxx) current 3 3 -------------------------------------------------------------------------------- 4 Added (26.10.2017): IRNSS support is added in RINEX QC 4 5 Added (12.08.2016): resp. config keywords in context help 5 6 Added (08.08.2016): some informations about the data source is added as -
trunk/BNC/src/bncconst.cpp
r7242 r8168 54 54 case t_frequency::C7: return 1207140000.0; 55 55 case t_frequency::C6: return 1268520000.0; 56 case t_frequency::I5: return 1176450000.0; 57 case t_frequency::I9: return 2492028000.0; 56 58 case t_frequency::dummy: 57 59 case t_frequency::max: return 0.0; -
trunk/BNC/src/bncconst.h
r7243 r8168 32 32 class t_frequency { 33 33 public: 34 enum type {dummy = 0, G1, G2, G5, R1, R2, 35 E1, // E1 / 1575.42 36 E5, // E5a / 1176.45 37 E7, // E5b / 1207.140 38 E8, // E5(E5a+E5b) / 1191.795 34 enum type {dummy = 0, G1, G2, G5, R1, R2, 35 E1, // E1 / 1575.42 36 E5, // E5a / 1176.45 37 E7, // E5b / 1207.140 38 E8, // E5(E5a+E5b) / 1191.795 39 39 E6, // E6 / 1278.75 40 40 J1, // 1575.42 … … 47 47 C7, // 1207.14 48 48 C6, // 1268.52 49 I5, // 1176.45 50 I9, // 2492.028 49 51 max}; 50 52 … … 69 71 else if (tt == C7) return "C7"; 70 72 else if (tt == C6) return "C6"; 73 else if (tt == I5) return "I5"; 74 else if (tt == I9) return "I9"; 71 75 return std::string(); 72 76 } … … 91 95 else if (s == "C7") return C7; 92 96 else if (s == "C6") return C6; 97 else if (s == "I5") return I5; 98 else if (s == "I9") return I9; 93 99 return type(); 94 100 } -
trunk/BNC/src/bncephuser.cpp
r8077 r8168 235 235 return; 236 236 } 237 else if (eph->type() == t_eph::IRNSS && timeDiff > 4*3600) { // update interval: 2h, data sets are valid for 4 hours 238 eph->setCheckState(t_eph::outdated); 239 return; 240 } 237 241 238 242 … … 278 282 return; 279 283 } 284 else if (eph->type() == t_eph::IRNSS && dt > 4*3600) { 285 ephL->setCheckState(t_eph::outdated); 286 return; 287 } 280 288 281 289 if (diff < MAXDIFF && diffC < MAXDIFF) { -
trunk/BNC/src/ephemeris.cpp
r7922 r8168 184 184 185 185 if (prnStr.size() == 1 && 186 (prnStr[0] == 'G' || prnStr[0] == 'J')) { 186 (prnStr[0] == 'G' || 187 prnStr[0] == 'J' || 188 prnStr[0] == 'I')) { 187 189 in >> n; 188 190 prnStr.append(n); … … 195 197 else if (prnStr.at(0) == 'J') { 196 198 _prn.set('J', prnStr.mid(1).toInt()); 199 } 200 else if (prnStr.at(0) == 'I') { 201 _prn.set('I', prnStr.mid(1).toInt()); 197 202 } 198 203 else { … … 257 262 } 258 263 259 else if ( iLine == 5 ) {264 else if ( iLine == 5 && type() != t_eph::IRNSS) { 260 265 if ( readDbl(line, pos[0], fieldLen, _IDOT ) || 261 266 readDbl(line, pos[1], fieldLen, _L2Codes) || … … 266 271 } 267 272 } 268 269 else if ( iLine == 6 ) { 273 else if ( iLine == 5 && type() == t_eph::IRNSS) { 274 if ( readDbl(line, pos[0], fieldLen, _IDOT ) || 275 readDbl(line, pos[2], fieldLen, _TOEweek) ) { 276 _checkState = bad; 277 return; 278 } 279 } 280 281 else if ( iLine == 6 && type() != t_eph::IRNSS) { 270 282 if ( readDbl(line, pos[0], fieldLen, _ura ) || 271 283 readDbl(line, pos[1], fieldLen, _health) || 272 284 readDbl(line, pos[2], fieldLen, _TGD ) || 273 285 readDbl(line, pos[3], fieldLen, _IODC ) ) { 286 _checkState = bad; 287 return; 288 } 289 } 290 else if ( iLine == 6 && type() == t_eph::IRNSS) { 291 if ( readDbl(line, pos[0], fieldLen, _ura ) || 292 readDbl(line, pos[1], fieldLen, _health) || 293 readDbl(line, pos[2], fieldLen, _TGD ) ) { 274 294 _checkState = bad; 275 295 return; … … 413 433 .arg(_OMEGADOT, 19, 'e', 12); 414 434 415 out << QString(fmt) 416 .arg(_IDOT, 19, 'e', 12) 417 .arg(_L2Codes, 19, 'e', 12) 418 .arg(_TOEweek, 19, 'e', 12) 419 .arg(_L2PFlag, 19, 'e', 12); 420 421 out << QString(fmt) 422 .arg(_ura, 19, 'e', 12) 423 .arg(_health, 19, 'e', 12) 424 .arg(_TGD, 19, 'e', 12) 425 .arg(_IODC, 19, 'e', 12); 435 if (type() == t_eph::IRNSS) { 436 out << QString(fmt) 437 .arg(_IDOT, 19, 'e', 12) 438 .arg("", 19, QChar(' ')) 439 .arg(_TOEweek, 19, 'e', 12) 440 .arg("", 19, QChar(' ')); 441 } 442 else { 443 out << QString(fmt) 444 .arg(_IDOT, 19, 'e', 12) 445 .arg(_L2Codes, 19, 'e', 12) 446 .arg(_TOEweek, 19, 'e', 12) 447 .arg(_L2PFlag, 19, 'e', 12); 448 } 449 450 if (type() == t_eph::IRNSS) { 451 out << QString(fmt) 452 .arg(_ura, 19, 'e', 12) 453 .arg(_health, 19, 'e', 12) 454 .arg(_TGD, 19, 'e', 12) 455 .arg("", 19, QChar(' ')); 456 } 457 else { 458 out << QString(fmt) 459 .arg(_ura, 19, 'e', 12) 460 .arg(_health, 19, 'e', 12) 461 .arg(_TGD, 19, 'e', 12) 462 .arg(_IODC, 19, 'e', 12); 463 } 426 464 427 465 double tot = _TOT; … … 429 467 tot = 0.0; 430 468 } 431 out << QString(fmt) 432 .arg(tot, 19, 'e', 12) 433 .arg(_fitInterval, 19, 'e', 12) 434 .arg("", 19, QChar(' ')) 435 .arg("", 19, QChar(' ')); 469 if (type() == t_eph::IRNSS) { 470 out << QString(fmt) 471 .arg(tot, 19, 'e', 12) 472 .arg("", 19, QChar(' ')) 473 .arg("", 19, QChar(' ')) 474 .arg("", 19, QChar(' ')); 475 } 476 else { 477 out << QString(fmt) 478 .arg(tot, 19, 'e', 12) 479 .arg(_fitInterval, 19, 'e', 12) 480 .arg("", 19, QChar(' ')) 481 .arg("", 19, QChar(' ')); 482 } 436 483 437 484 return rnxStr; -
trunk/BNC/src/ephemeris.h
r8139 r8168 17 17 class t_eph { 18 18 public: 19 enum e_type {unknown, GPS, QZSS, GLONASS, Galileo, SBAS, BDS };19 enum e_type {unknown, GPS, QZSS, GLONASS, Galileo, SBAS, BDS, IRNSS}; 20 20 enum e_checkState {unchecked, ok, bad, outdated}; 21 21 … … 89 89 virtual ~t_ephGPS() {} 90 90 91 virtual e_type type() const {return (_prn.system() == 'J' ? t_eph::QZSS : t_eph::GPS); } 91 virtual e_type type() const { 92 switch (_prn.system()) { 93 case 'J': 94 return t_eph::QZSS; 95 case 'I': 96 return t_eph::IRNSS; 97 }; 98 return t_eph::GPS; 99 } 92 100 virtual QString toString(double version) const; 93 101 virtual unsigned int IOD() const { return static_cast<unsigned int>(_IODE); } … … 101 109 double _clock_driftrate; // [s/s^2] 102 110 103 double _IODE; 111 double _IODE; // IODEC in case of IRNSS 104 112 double _Crs; // [m] 105 113 double _Delta_n; // [rad/s] … … 122 130 123 131 double _IDOT; // [rad/s] 124 double _L2Codes; // Codes on L2 channel 132 double _L2Codes; // Codes on L2 channel (not valid for IRNSS) 125 133 double _TOEweek; 126 double _L2PFlag; // L2 P data flag 134 double _L2PFlag; // L2 P data flag (not valid for IRNSS) 127 135 128 136 mutable double _ura; // SV accuracy 129 137 double _health; // SV health 130 138 double _TGD; // [s] 131 double _IODC; 139 double _IODC; // (not valid for IRNSS) 132 140 133 141 double _TOT; // Transmisstion time 134 double _fitInterval; // Fit interval 142 double _fitInterval; // Fit interval (not valid for IRNSS) 135 143 }; 136 144 … … 414 422 double _TOEweek; // BDT week will be set only in case of RINEX file input 415 423 }; 416 417 424 #endif -
trunk/BNC/src/rinex/reqcedit.cpp
r8127 r8168 651 651 ephs.append(new t_ephBDS(*dynamic_cast<t_ephBDS*>(eph))); 652 652 } 653 else if (eph->type() == t_eph::IRNSS) { 654 ephs.append(new t_ephGPS(*dynamic_cast<t_ephGPS*>(eph))); 655 } 653 656 } 654 657 } -
trunk/BNC/src/rinex/rnxnavfile.cpp
r7999 r8168 203 203 } 204 204 eph = new t_ephBDS(version(), lines); 205 } 206 else if (prn[0] == 'I') { 207 for (int ii = 1; ii < 8; ii++) { 208 lines << stream->readLine(); 209 } 210 eph = new t_ephGPS(version(), lines); 205 211 } 206 212 if (eph && -
trunk/BNC/src/rinex/rnxobsfile.cpp
r8148 r8168 52 52 //////////////////////////////////////////////////////////////////////////// 53 53 t_rnxObsHeader::t_rnxObsHeader() { 54 _usedSystems = "GREJCS ";54 _usedSystems = "GREJCSI"; 55 55 _antNEU.ReSize(3); _antNEU = 0.0; 56 56 _antXYZ.ReSize(3); _antXYZ = 0.0; … … 447 447 << "C6I" << "L6I" << "S6I" 448 448 << "C7I" << "L7I" << "S7I"; 449 450 _obsTypes['I'] << "C5A" << "L5A" << "S5A" 451 << "C9A" << "L9A" << "S9A"; 449 452 } 450 453 else { -
trunk/BNC/src/t_prn.cpp
r8148 r8168 26 26 } 27 27 else if (_system == 'C') { 28 return MAXPRN_GPS + MAXPRN_GLONASS + MAXPRN_GALILEO + MAXPRN_QZSS + MAXPRN_SBAS + _number; 28 return MAXPRN_GPS + MAXPRN_GLONASS + MAXPRN_GALILEO + MAXPRN_QZSS + MAXPRN_SBAS + _number; 29 } 30 else if (_system == 'I') { 31 return MAXPRN_GPS + MAXPRN_GLONASS + MAXPRN_GALILEO + MAXPRN_QZSS + MAXPRN_SBAS + MAXPRN_BDS + _number; 29 32 } 30 33 return 0; … … 53 56 char system = '\x0'; 54 57 const char* number = 0; 55 if ( str[0] == 'G' || str[0] == 'R' || str[0] == 'E' || 56 str[0] == 'J' || str[0] == 'S' || str[0] == 'C' || 57 str[0] == 'I' 58 ) { 58 if ( str[0] == 'G' || str[0] == 'R' || str[0] == 'E' || 59 str[0] == 'J' || str[0] == 'S' || str[0] == 'C' || 60 str[0] == 'I') { 59 61 system = str[0]; 60 62 number = str.c_str() + 1; -
trunk/BNC/src/t_prn.h
r7004 r8168 12 12 static const unsigned MAXPRN_SBAS = 38; 13 13 static const unsigned MAXPRN_BDS = 37; 14 static const unsigned MAXPRN_IRNSS = 7; 14 15 static const unsigned MAXPRN = MAXPRN_GPS + MAXPRN_GLONASS + MAXPRN_GALILEO 15 + MAXPRN_QZSS + MAXPRN_SBAS + MAXPRN_BDS ;16 + MAXPRN_QZSS + MAXPRN_SBAS + MAXPRN_BDS + MAXPRN_IRNSS; 16 17 17 18 t_prn() :
Note:
See TracChangeset
for help on using the changeset viewer.