Changeset 6432 in ntrip for trunk/BNC/src/bnccore.cpp
- Timestamp:
- Dec 25, 2014, 6:11:49 PM (9 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/bnccore.cpp
r6384 r6432 79 79 #endif 80 80 81 // Lists of Ephemeris82 // ------------------83 for (int ii = PRN_GPS_START; ii <= PRN_GPS_END; ii++) {84 _gpsEph[ii-PRN_GPS_START] = 0;85 }86 for (int ii = PRN_QZSS_START; ii <= PRN_QZSS_END; ii++) {87 _qzssEph[ii-PRN_QZSS_START] = 0;88 }89 for (int ii = PRN_GLONASS_START; ii <= PRN_GLONASS_END; ii++) {90 _glonassEph[ii-PRN_GLONASS_START] = 0;91 }92 for (int ii = PRN_GALILEO_START; ii <= PRN_GALILEO_END; ii++) {93 _galileoEph[ii-PRN_GALILEO_START] = 0;94 }95 for (int ii = PRN_SBAS_START; ii <= PRN_SBAS_END; ii++) {96 _sbasEph[ii-PRN_SBAS_START] = 0;97 }98 99 81 // Eph file(s) 100 82 // ----------- … … 132 114 qRegisterMetaType< QVector<double> >("QVector<double>"); 133 115 qRegisterMetaType<bncTime>("bncTime"); 116 qRegisterMetaType<t_ephGPS>("t_ephGPS"); 117 qRegisterMetaType<t_ephGlo>("t_ephGlo"); 118 qRegisterMetaType<t_ephGal>("t_ephGal"); 119 qRegisterMetaType<t_ephSBAS>("t_ephSBAS"); 120 qRegisterMetaType<t_ephCompass>("t_ephCompass"); 134 121 } 135 122 … … 148 135 delete _ephStreamGlonass; 149 136 delete _ephFileGlonass; 150 }151 for (int ii = PRN_GPS_START; ii <= PRN_GPS_END; ii++) {152 delete _gpsEph[ii-PRN_GPS_START];153 }154 for (int ii = PRN_QZSS_START; ii <= PRN_QZSS_END; ii++) {155 delete _qzssEph[ii-PRN_QZSS_START];156 }157 for (int ii = PRN_GLONASS_START; ii <= PRN_GLONASS_END; ii++) {158 delete _glonassEph[ii-PRN_GLONASS_START];159 }160 for (int ii = PRN_GALILEO_START; ii <= PRN_GALILEO_END; ii++) {161 delete _galileoEph[ii-PRN_GALILEO_START];162 }163 for (int ii = PRN_SBAS_START; ii <= PRN_SBAS_END; ii++) {164 delete _sbasEph[ii-PRN_SBAS_START];165 137 } 166 138 … … 227 199 // New GPS Ephemeris 228 200 //////////////////////////////////////////////////////////////////////////// 229 void t_bncCore::slotNewGPSEph( gpsephemeris* gpseph) {201 void t_bncCore::slotNewGPSEph(t_ephGPS eph) { 230 202 231 203 QMutexLocker locker(&_mutex); 232 204 233 gpsephemeris copy_gpseph = *gpseph; 234 emit newEphGPS(copy_gpseph); 205 emit newGPSEph(eph); 235 206 236 207 printEphHeader(); 237 208 238 gpsephemeris** ee = &_gpsEph[gpseph->satellite-1]; 239 if (PRN_GPS_START <= gpseph->satellite && gpseph->satellite <= PRN_GPS_END) { 240 ee = &_gpsEph[gpseph->satellite - PRN_GPS_START]; 241 } 242 else if (PRN_QZSS_START <= gpseph->satellite && gpseph->satellite <= PRN_QZSS_END) { 243 ee = &_qzssEph[gpseph->satellite - PRN_QZSS_START]; 244 } 245 246 if ( *ee != 0 && gpseph->GPSweek == (*ee)->GPSweek && gpseph->TOC == (*ee)->TOC ) { 247 checkEphemeris(*ee, gpseph); 248 } 249 250 if ( *ee == 0 || 251 gpseph->GPSweek > (*ee)->GPSweek || 252 (gpseph->GPSweek == (*ee)->GPSweek && gpseph->TOC > (*ee)->TOC) ) { 253 delete *ee; 254 *ee = gpseph; 255 printGPSEph(gpseph, true); 209 if (_ephUser.putNewEph(&eph) == success) { 210 printEph(eph, true); 256 211 } 257 212 else { 258 printGPSEph(gpseph, false); 259 delete gpseph; 213 printEph(eph, false); 260 214 } 261 215 } … … 263 217 // New Glonass Ephemeris 264 218 //////////////////////////////////////////////////////////////////////////// 265 void t_bncCore::slotNewGlonassEph( glonassephemeris* glonasseph, const QString& staID) {219 void t_bncCore::slotNewGlonassEph(t_ephGlo eph) { 266 220 267 221 QMutexLocker locker(&_mutex); 268 222 269 // Check wrong Ephemerides 270 // ----------------------- 271 if (glonasseph->x_pos == 0.0 && 272 glonasseph->y_pos == 0.0 && 273 glonasseph->z_pos == 0.0) { 274 delete glonasseph; 275 return; 276 } 277 278 glonassephemeris copy_glonasseph = *glonasseph; 279 emit newEphGlonass(copy_glonasseph); 223 emit newGlonassEph(eph); 280 224 281 225 printEphHeader(); 282 226 283 glonassephemeris** ee = &_glonassEph[glonasseph->almanac_number-1]; 284 285 int wwOld, towOld, wwNew, towNew; 286 if (*ee != 0) { 287 wwOld = (*ee)->GPSWeek; 288 towOld = (*ee)->GPSTOW; 289 updatetime(&wwOld, &towOld, (*ee)->tb*1000, 0); // Moscow -> GPS 290 291 wwNew = glonasseph->GPSWeek; 292 towNew = glonasseph->GPSTOW; 293 updatetime(&wwNew, &towNew, glonasseph->tb*1000, 0); // Moscow -> GPS 294 } 295 296 if ( *ee == 0 || 297 wwNew > wwOld || 298 (wwNew == wwOld && towNew > towOld) ) { 299 delete *ee; 300 *ee = glonasseph; 301 printGlonassEph(glonasseph, true, staID); 227 if (_ephUser.putNewEph(&eph) == success) { 228 printEph(eph, true); 302 229 } 303 230 else { 304 printGlonassEph(glonasseph, false, staID); 305 delete glonasseph; 231 printEph(eph, false); 306 232 } 307 233 } … … 309 235 // New Galileo Ephemeris 310 236 //////////////////////////////////////////////////////////////////////////// 311 void t_bncCore::slotNewGalileoEph( galileoephemeris* galileoeph) {237 void t_bncCore::slotNewGalileoEph(t_ephGal eph) { 312 238 313 239 QMutexLocker locker(&_mutex); 314 240 315 galileoephemeris copy_galileoeph = *galileoeph; 316 emit newEphGalileo(copy_galileoeph); 241 emit newGalileoEph(eph); 317 242 318 243 printEphHeader(); 319 244 320 int galIndex = galileoeph->satellite; 321 /* GIOVE */ 322 if(galIndex == 51) galIndex = 1; 323 else if(galIndex == 52) galIndex = 16; 324 if (galIndex < 0 || galIndex > PRN_GALILEO_END - PRN_GALILEO_START) { 325 emit( newMessage("Wrong Galileo Satellite Number", true) ); 326 exit(1); 327 } 328 329 galileoephemeris** ee = &_galileoEph[galIndex]; 330 331 if ( *ee == 0 || 332 galileoeph->Week > (*ee)->Week || 333 (galileoeph->Week == (*ee)->Week && galileoeph->TOC > (*ee)->TOC) ) { 334 delete *ee; 335 *ee = galileoeph; 336 printGalileoEph(galileoeph, true); 245 if (_ephUser.putNewEph(&eph) == success) { 246 printEph(eph, true); 337 247 } 338 248 else { 339 printGalileoEph(galileoeph, false); 340 delete galileoeph; 341 } 342 } 249 printEph(eph, false); 250 } 251 } 252 253 // New SBAS Ephemeris 254 //////////////////////////////////////////////////////////////////////////// 255 void t_bncCore::slotNewSBASEph(t_ephSBAS eph) { 256 257 QMutexLocker locker(&_mutex); 258 259 emit newSBASEph(eph); 260 261 printEphHeader(); 262 263 if (_ephUser.putNewEph(&eph) == success) { 264 printEph(eph, true); 265 } 266 else { 267 printEph(eph, false); 268 } 269 } 270 343 271 344 272 // Print Header of the output File(s) … … 393 321 else { 394 322 _ephFileNameGPS = ephFileNameGPS; 395 }396 397 for (int ii = PRN_GPS_START; ii <= PRN_GPS_END; ii++) {398 delete _gpsEph[ii-PRN_GPS_START];399 _gpsEph[ii-PRN_GPS_START] = 0;400 }401 for (int ii = PRN_QZSS_START; ii <= PRN_QZSS_END; ii++) {402 delete _qzssEph[ii-PRN_QZSS_START];403 _qzssEph[ii-PRN_QZSS_START] = 0;404 }405 for (int ii = PRN_GLONASS_START; ii <= PRN_GLONASS_END; ii++) {406 delete _glonassEph[ii-PRN_GLONASS_START];407 _glonassEph[ii-PRN_GLONASS_START] = 0;408 }409 for (int ii = PRN_GALILEO_START; ii <= PRN_GALILEO_END; ii++) {410 delete _galileoEph[ii-PRN_GALILEO_START];411 _galileoEph[ii-PRN_GALILEO_START] = 0;412 }413 for (int ii = PRN_SBAS_START; ii <= PRN_SBAS_END; ii++) {414 delete _sbasEph[ii-PRN_SBAS_START];415 _sbasEph[ii-PRN_SBAS_START] = 0;416 323 } 417 324 … … 523 430 } 524 431 525 // Print One GPS Ephemeris 526 //////////////////////////////////////////////////////////////////////////// 527 void t_bncCore::printGPSEph(gpsephemeris* ep, bool printFile) { 528 529 t_ephGPS eph; 530 eph.set(ep); 432 // Print One Ephemeris 433 //////////////////////////////////////////////////////////////////////////// 434 void t_bncCore::printEph(const t_eph& eph, bool printFile) { 531 435 532 436 QString strV2 = eph.toString(t_rnxNavFile::defaultRnxNavVersion2); 533 437 QString strV3 = eph.toString(t_rnxObsHeader::defaultRnxObsVersion3); 534 438 535 printOutput(printFile, _ephStreamGPS, strV2, strV3);536 }537 538 // Print One Glonass Ephemeris539 ////////////////////////////////////////////////////////////////////////////540 void t_bncCore::printGlonassEph(glonassephemeris* ep, bool printFile, const QString& /* staID */) {541 542 t_ephGlo eph;543 eph.set(ep);544 545 QString strV2 = eph.toString(t_rnxNavFile::defaultRnxNavVersion2);546 QString strV3 = eph.toString(t_rnxObsHeader::defaultRnxObsVersion3);547 548 //// beg test Dirk549 // QString hlp = strV2;550 // cout << hlp.replace('\n', ' ').toAscii().data() << ' ' << staID.toAscii().data() << endl;551 //// end test Dirk552 553 439 printOutput(printFile, _ephStreamGlonass, strV2, strV3); 554 }555 556 // Print One Galileo Ephemeris557 ////////////////////////////////////////////////////////////////////////////558 void t_bncCore::printGalileoEph(galileoephemeris* ep, bool printFile) {559 560 t_ephGal eph;561 eph.set(ep);562 563 QString strV2 = eph.toString(t_rnxNavFile::defaultRnxNavVersion2);564 QString strV3 = eph.toString(t_rnxObsHeader::defaultRnxObsVersion3);565 566 printOutput(printFile, _ephStreamGalileo, strV2, strV3);567 440 } 568 441 … … 764 637 } 765 638 766 // Check Ephemeris Consistency767 ////////////////////////////////////////////////////////////////////////////768 void t_bncCore::checkEphemeris(gpsephemeris* oldEph, gpsephemeris* newEph) {769 if (oldEph->clock_bias != newEph->clock_bias ||770 oldEph->clock_drift != newEph->clock_drift ||771 oldEph->clock_driftrate != newEph->clock_driftrate) {772 QString msg = currentDateAndTimeGPS().toString(Qt::ISODate) +773 QString(" %1 EPH DIFFERS\n").arg(oldEph->satellite);774 messagePrivate(msg.toAscii());775 }776 }777 778 779 639 // 780 640 //////////////////////////////////////////////////////////////////////////// … … 822 682 } 823 683 824 // New SBAS Ephemeris825 ////////////////////////////////////////////////////////////////////////////826 void t_bncCore::slotNewSBASEph(sbasephemeris* sbaseph) {827 QMutexLocker locker(&_mutex);828 829 // Check wrong Ephemerides830 // -----------------------831 if (sbaseph->x_pos == 0.0 &&832 sbaseph->y_pos == 0.0 &&833 sbaseph->z_pos == 0.0) {834 delete sbaseph;835 return;836 }837 838 sbasephemeris copy_sbaseph = *sbaseph;839 emit newEphSBAS(copy_sbaseph);840 841 printEphHeader();842 843 sbasephemeris** ee = &_sbasEph[sbaseph->satellite - PRN_SBAS_START];844 845 bool replace = false;846 if (*ee != 0) {847 bncTime oldTime((*ee)->GPSweek_TOE, double((*ee)->TOE));848 bncTime newTime(sbaseph->GPSweek_TOE, double(sbaseph->TOE));849 if (newTime > oldTime) {850 replace = true;851 }852 }853 854 if ( *ee == 0 || replace) {855 delete *ee;856 *ee = sbaseph;857 printSBASEph(sbaseph, true);858 }859 else {860 printSBASEph(sbaseph, false);861 delete sbaseph;862 }863 }864 865 // Print One SBAS Ephemeris866 ////////////////////////////////////////////////////////////////////////////867 void t_bncCore::printSBASEph(sbasephemeris* ep, bool printFile) {868 869 t_ephSBAS eph;870 eph.set(ep);871 872 QString strV2 = eph.toString(t_rnxNavFile::defaultRnxNavVersion2);873 QString strV3 = eph.toString(t_rnxObsHeader::defaultRnxObsVersion3);874 875 printOutput(printFile, _ephStreamSBAS, strV2, strV3);876 }
Note:
See TracChangeset
for help on using the changeset viewer.