- Timestamp:
- Mar 5, 2021, 10:48:34 AM (4 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/bncephuser.cpp
r9332 r9361 224 224 double dt = currentTime - toc; 225 225 226 // update interval: 2h, data sets are valid for 4 hours 227 if (eph->type() == t_eph::GPS && (dt > 4*3600.0 || dt < -2*3600.0)) {228 eph->setCheckState(t_eph::outdated); 229 return; 230 } 231 // update interval: 3h, data sets are valid for 4 hours 232 else if (eph->type() == t_eph::Galileo && (dt > 4*3600.0 || dt <0.0)) {233 eph->setCheckState(t_eph::outdated); 234 return; 235 } 236 // updated every 30 minutes 237 else if (eph->type() == t_eph::GLONASS && (dt > 1*3600.0 || dt < -1800.0)) {238 eph->setCheckState(t_eph::outdated); 239 return; 240 } 241 // orbit parameters are valid for 7200 seconds (minimum) 242 else if (eph->type() == t_eph::QZSS && (dt > 2*3600.0 || dt < -1*3600.0)) {243 eph->setCheckState(t_eph::outdated); 244 return; 245 } 246 // maximum update interval: 300 sec 247 else if (eph->type() == t_eph::SBAS && (dt > 600 || dt < -300.0)) {248 eph->setCheckState(t_eph::outdated); 249 return; 250 } 251 // updates 1h (GEO) up to 6 hours non-GEO252 else if (eph->type() == t_eph::BDS && (dt > 6*3600 || dt <0.0)) {253 eph->setCheckState(t_eph::outdated); 254 return; 255 } 256 // update interval: up to 24 hours 257 else if (eph->type() == t_eph::IRNSS && fabs(dt > 24*3600.0)) {226 // update interval: 2h, data sets are valid for 4 hours + 5 min 227 if (eph->type() == t_eph::GPS && (dt > 14700.0 || dt < -7500.0)) { 228 eph->setCheckState(t_eph::outdated); 229 return; 230 } 231 // update interval: 3h, data sets are valid for 4 hours + 5 min 232 else if (eph->type() == t_eph::Galileo && (dt > 14700.0 || dt < 0.0)) { 233 eph->setCheckState(t_eph::outdated); 234 return; 235 } 236 // updated every 30 minutes + 5 min 237 else if (eph->type() == t_eph::GLONASS && (dt > 3900.0 || dt < -2100.0)) { 238 eph->setCheckState(t_eph::outdated); 239 return; 240 } 241 // orbit parameters are valid for 7200 seconds (minimum) + 5 min 242 else if (eph->type() == t_eph::QZSS && (dt > 7500.0 || dt < 3900.0)) { 243 eph->setCheckState(t_eph::outdated); 244 return; 245 } 246 // maximum update interval: 300 sec + 5 min 247 else if (eph->type() == t_eph::SBAS && (dt > 600.0 || dt < -600.0)) { 248 eph->setCheckState(t_eph::outdated); 249 return; 250 } 251 // updates 1h + 5 min 252 else if (eph->type() == t_eph::BDS && (dt > 3900.0 || dt < 0.0)) { 253 eph->setCheckState(t_eph::outdated); 254 return; 255 } 256 // update interval: up to 24 hours + 5 min 257 else if (eph->type() == t_eph::IRNSS && fabs(dt > 86700.0)) { 258 258 eph->setCheckState(t_eph::outdated); 259 259 return; … … 263 263 // Check consistency with older ephemeris 264 264 // -------------------------------------- 265 const double MAXDIFF = 10.0; 266 const double MINDIFF = 0.005; 267 QString prn = QString(eph->prn().toInternalString().c_str()); 268 t_eph* ephL = ephLast(prn); 265 const double MAXDIFF_INIT = 10.0; 266 const double MINDIFF = 0.005; 267 QString prn = QString(eph->prn().toInternalString().c_str()); 268 t_eph* ephL = ephLast(prn); 269 270 // maxdiff adapted to individual systems 271 char sys = eph->prn().system(); 272 double MAXDIFF = MAXDIFF_INIT; 273 if (sys == 'C' || 274 sys == 'S' ) { 275 MAXDIFF *= 10.0; 276 } 269 277 270 278 if (ephL) { … … 293 301 } 294 302 295 double dt = eph->TOC() - ephL->TOC();296 303 // some lines to allow update of ephemeris data sets after an outage 297 304 // ----------------------------------------------------------------- 298 // update interval: 2h,299 // sometimes corrected BRDC sets are sent with TOC values 16 seconds 300 // before the nominal TOC (integer time)301 if (eph->type() == t_eph::GPS && dt > (2*3600.0 + 60.0)) {302 ephL->setCheckState(t_eph::outdated); 303 return; 304 } 305 // update interval: 3h, 306 else if (eph->type() == t_eph::Galileo && dt > (3*3600.0 + 60.0)) {305 double dt = eph->TOC() - ephL->TOC(); 306 307 // update interval: 2h, + 5 min 308 if (eph->type() == t_eph::GPS && dt > 3900.0) { 309 ephL->setCheckState(t_eph::outdated); 310 return; 311 } 312 // update interval: 3h, + 5 min 313 else if (eph->type() == t_eph::Galileo && dt > 11100.0) { 307 314 ephL->setCheckState(t_eph::outdated); 308 315 return; 309 316 } 310 317 // updated every 30 minutes 311 else if (eph->type() == t_eph::GLONASS && dt > ( 1800.0 + 60.0)) {318 else if (eph->type() == t_eph::GLONASS && dt > 2100.0) { 312 319 ephL->setCheckState(t_eph::outdated); 313 320 return; 314 321 } 315 322 // updated every ? 316 else if (eph->type() == t_eph::QZSS && dt > (2*3600.0 + 60.0)) {317 ephL->setCheckState(t_eph::outdated); 318 return; 319 } 320 // maximum update interval: 300 sec 321 else if (eph->type() == t_eph::SBAS && dt > ( 300.0)) {322 ephL->setCheckState(t_eph::outdated); 323 return; 324 } 325 // updates 1h (GEO) up to 6 hours non-GEO326 else if (eph->type() == t_eph::BDS && dt > 6*3600.0) {327 ephL->setCheckState(t_eph::outdated); 328 return; 329 } 330 // update interval: up to 24 hours 331 else if (eph->type() == t_eph::IRNSS && dt > 24*3600.0) {323 else if (eph->type() == t_eph::QZSS && dt > 3900.0) { 324 ephL->setCheckState(t_eph::outdated); 325 return; 326 } 327 // maximum update interval: 300 sec + 5 min 328 else if (eph->type() == t_eph::SBAS && dt > 600.0) { 329 ephL->setCheckState(t_eph::outdated); 330 return; 331 } 332 // updates 1h + 5 min 333 else if (eph->type() == t_eph::BDS && dt > 3900.0) { 334 ephL->setCheckState(t_eph::outdated); 335 return; 336 } 337 // update interval: up to 24 hours + 5 min 338 else if (eph->type() == t_eph::IRNSS && dt > 86700.0) { 332 339 ephL->setCheckState(t_eph::outdated); 333 340 return;
Note:
See TracChangeset
for help on using the changeset viewer.