Changeset 9025 in ntrip for trunk/BNC/src
- Timestamp:
- Aug 25, 2020, 11:02:49 PM (4 years ago)
- Location:
- trunk/BNC/src
- Files:
-
- 3 added
- 2 deleted
- 13 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
r9011 r9025 1631 1631 * else. */ 1632 1632 if ((id >= 1057 && id <= 1068) || 1633 (id >= 1240 && id <= 1270) || 1634 (id == 4076)) { 1633 (id >= 1240 && id <= 1270) || 1634 (id == 4076)) { 1635 RTCM3coDecoder::e_type type = RTCM3coDecoder::e_type::RTCMssr; 1636 if (id == 4076) { 1637 type = RTCM3coDecoder::e_type::IGSssr; 1638 } 1635 1639 if (!_coDecoders.contains(_staID.toLatin1())) 1636 _coDecoders[_staID.toLatin1()] = new RTCM3coDecoder(_staID );1640 _coDecoders[_staID.toLatin1()] = new RTCM3coDecoder(_staID, type); 1637 1641 RTCM3coDecoder* coDecoder = _coDecoders[_staID.toLatin1()]; 1638 1642 if (coDecoder->Decode(reinterpret_cast<char *>(_Message), _BlockSize, … … 1719 1723 uint32_t RTCM3Decoder::CRC24(long size, const unsigned char *buf) { 1720 1724 uint32_t crc = 0; 1721 int i; 1722 1725 int ii; 1723 1726 while (size--) { 1724 1727 crc ^= (*buf++) << (16); 1725 for (i = 0; i < 8; i++) 1726 { 1728 for (ii = 0; ii < 8; ii++) { 1727 1729 crc <<= 1; 1728 1730 if (crc & 0x1000000) -
trunk/BNC/src/RTCM3/RTCM3coDecoder.cpp
r8981 r9025 53 53 // Constructor 54 54 //////////////////////////////////////////////////////////////////////////// 55 RTCM3coDecoder::RTCM3coDecoder(const QString& staID ) {55 RTCM3coDecoder::RTCM3coDecoder(const QString& staID, const e_type type) { 56 56 57 57 _staID = staID; … … 96 96 _providerID[1] = -1; 97 97 _providerID[2] = -1; 98 99 _type = type; 100 _ssrCorr = 0; 98 101 } 99 102 … … 102 105 RTCM3coDecoder::~RTCM3coDecoder() { 103 106 delete _out; 107 delete _ssrCorr; 104 108 _IODs.clear(); 105 109 _orbCorrections.clear(); … … 166 170 while(_buffer.size()) { 167 171 168 struct ClockOrbit clkOrbSav;169 struct CodeBias codeBiasSav;170 struct PhaseBias phaseBiasSav;171 struct VTEC vTECSav;172 struct SsrCorr::ClockOrbit clkOrbSav; 173 struct SsrCorr::CodeBias codeBiasSav; 174 struct SsrCorr::PhaseBias phaseBiasSav; 175 struct SsrCorr::VTEC vTECSav; 172 176 memcpy(&clkOrbSav, &_clkOrb, sizeof(clkOrbSav)); // save state 173 177 memcpy(&codeBiasSav, &_codeBias, sizeof(codeBiasSav)); … … 176 180 177 181 int bytesused = 0; 178 GCOB_RETURN irc = GetSSR(&_clkOrb, &_codeBias, &_vTEC, &_phaseBias, 182 if (_type == e_type::RTCMssr) { 183 _ssrCorr = new SsrCorrRtcm(); 184 } 185 else { 186 _ssrCorr = new SsrCorrIgs(); 187 } 188 GCOB_RETURN irc = _ssrCorr->GetSSR(&_clkOrb, &_codeBias, &_vTEC, &_phaseBias, 179 189 _buffer.data(), _buffer.size(), &bytesused); 180 190 … … 259 269 continue; 260 270 } 271 261 272 // Orbit correction 262 273 // ---------------- 263 if ( _clkOrb.messageType == COTYPE_GPSCOMBINED ||264 _clkOrb.messageType == COTYPE_GLONASSCOMBINED ||265 _clkOrb.messageType == COTYPE_GALILEOCOMBINED ||266 _clkOrb.messageType == COTYPE_QZSSCOMBINED ||267 _clkOrb.messageType == COTYPE_SBASCOMBINED ||268 _clkOrb.messageType == COTYPE_BDSCOMBINED ||269 _clkOrb.messageType == COTYPE_GPSORBIT ||270 _clkOrb.messageType == COTYPE_GLONASSORBIT ||271 _clkOrb.messageType == COTYPE_GALILEOORBIT ||272 _clkOrb.messageType == COTYPE_QZSSORBIT ||273 _clkOrb.messageType == COTYPE_SBASORBIT ||274 _clkOrb.messageType == COTYPE_BDSORBIT ) {274 if ( _clkOrb.messageType == _ssrCorr->COTYPE_GPSCOMBINED || 275 _clkOrb.messageType == _ssrCorr->COTYPE_GLONASSCOMBINED || 276 _clkOrb.messageType == _ssrCorr->COTYPE_GALILEOCOMBINED || 277 _clkOrb.messageType == _ssrCorr->COTYPE_QZSSCOMBINED || 278 _clkOrb.messageType == _ssrCorr->COTYPE_SBASCOMBINED || 279 _clkOrb.messageType == _ssrCorr->COTYPE_BDSCOMBINED || 280 _clkOrb.messageType == _ssrCorr->COTYPE_GPSORBIT || 281 _clkOrb.messageType == _ssrCorr->COTYPE_GLONASSORBIT || 282 _clkOrb.messageType == _ssrCorr->COTYPE_GALILEOORBIT || 283 _clkOrb.messageType == _ssrCorr->COTYPE_QZSSORBIT || 284 _clkOrb.messageType == _ssrCorr->COTYPE_SBASORBIT || 285 _clkOrb.messageType == _ssrCorr->COTYPE_BDSORBIT ) { 275 286 276 287 t_orbCorr orbCorr; … … 295 306 // Clock Corrections 296 307 // ----------------- 297 if ( _clkOrb.messageType == COTYPE_GPSCOMBINED ||298 _clkOrb.messageType == COTYPE_GLONASSCOMBINED ||299 _clkOrb.messageType == COTYPE_GALILEOCOMBINED ||300 _clkOrb.messageType == COTYPE_QZSSCOMBINED ||301 _clkOrb.messageType == COTYPE_SBASCOMBINED ||302 _clkOrb.messageType == COTYPE_BDSCOMBINED ||303 _clkOrb.messageType == COTYPE_GPSCLOCK ||304 _clkOrb.messageType == COTYPE_GLONASSCLOCK ||305 _clkOrb.messageType == COTYPE_GALILEOCLOCK ||306 _clkOrb.messageType == COTYPE_QZSSCLOCK ||307 _clkOrb.messageType == COTYPE_SBASCLOCK ||308 _clkOrb.messageType == COTYPE_BDSCLOCK) {308 if ( _clkOrb.messageType == _ssrCorr->COTYPE_GPSCOMBINED || 309 _clkOrb.messageType == _ssrCorr->COTYPE_GLONASSCOMBINED || 310 _clkOrb.messageType == _ssrCorr->COTYPE_GALILEOCOMBINED || 311 _clkOrb.messageType == _ssrCorr->COTYPE_QZSSCOMBINED || 312 _clkOrb.messageType == _ssrCorr->COTYPE_SBASCOMBINED || 313 _clkOrb.messageType == _ssrCorr->COTYPE_BDSCOMBINED || 314 _clkOrb.messageType == _ssrCorr->COTYPE_GPSCLOCK || 315 _clkOrb.messageType == _ssrCorr->COTYPE_GLONASSCLOCK || 316 _clkOrb.messageType == _ssrCorr->COTYPE_GALILEOCLOCK || 317 _clkOrb.messageType == _ssrCorr->COTYPE_QZSSCLOCK || 318 _clkOrb.messageType == _ssrCorr->COTYPE_SBASCLOCK || 319 _clkOrb.messageType == _ssrCorr->COTYPE_BDSCLOCK) { 309 320 310 321 t_clkCorr clkCorr; … … 327 338 // High-Resolution Clocks 328 339 // ---------------------- 329 if ( _clkOrb.messageType == COTYPE_GPSHR ||330 _clkOrb.messageType == COTYPE_GLONASSHR ||331 _clkOrb.messageType == COTYPE_GALILEOHR ||332 _clkOrb.messageType == COTYPE_QZSSHR ||333 _clkOrb.messageType == COTYPE_SBASHR ||334 _clkOrb.messageType == COTYPE_BDSHR) {340 if ( _clkOrb.messageType == _ssrCorr->COTYPE_GPSHR || 341 _clkOrb.messageType == _ssrCorr->COTYPE_GLONASSHR || 342 _clkOrb.messageType == _ssrCorr->COTYPE_GALILEOHR || 343 _clkOrb.messageType == _ssrCorr->COTYPE_QZSSHR || 344 _clkOrb.messageType == _ssrCorr->COTYPE_SBASHR || 345 _clkOrb.messageType == _ssrCorr->COTYPE_BDSHR) { 335 346 t_prn prn(sysCh, _clkOrb.Sat[ii].ID, flag); 336 347 if (_lastClkCorrections.contains(prn)) { … … 390 401 satCodeBias._updateInt = _codeBias.UpdateInterval; 391 402 for (unsigned jj = 0; jj < _codeBias.Sat[ii].NumberOfCodeBiases; jj++) { 392 const CodeBias::BiasSat::CodeBiasEntry& biasEntry = _codeBias.Sat[ii].Biases[jj];403 const SsrCorr::CodeBias::BiasSat::CodeBiasEntry& biasEntry = _codeBias.Sat[ii].Biases[jj]; 393 404 t_frqCodeBias frqCodeBias; 394 frqCodeBias._rnxType2ch.assign( codeTypeToRnxType(sysCh, biasEntry.Type));405 frqCodeBias._rnxType2ch.assign(_ssrCorr->codeTypeToRnxType(sysCh, biasEntry.Type)); 395 406 frqCodeBias._value = biasEntry.Bias; 396 407 if (!frqCodeBias._rnxType2ch.empty()) { … … 447 458 satPhaseBias._yawRate = _phaseBias.Sat[ii].YawRate; 448 459 for (unsigned jj = 0; jj < _phaseBias.Sat[ii].NumberOfPhaseBiases; jj++) { 449 const PhaseBias::PhaseBiasSat::PhaseBiasEntry& biasEntry = _phaseBias.Sat[ii].Biases[jj];460 const SsrCorr::PhaseBias::PhaseBiasSat::PhaseBiasEntry& biasEntry = _phaseBias.Sat[ii].Biases[jj]; 450 461 t_frqPhaseBias frqPhaseBias; 451 frqPhaseBias._rnxType2ch.assign( codeTypeToRnxType(sysCh, biasEntry.Type));462 frqPhaseBias._rnxType2ch.assign(_ssrCorr->codeTypeToRnxType(sysCh, biasEntry.Type)); 452 463 frqPhaseBias._value = biasEntry.Bias; 453 464 frqPhaseBias._fixIndicator = biasEntry.SignalIntegerIndicator; … … 468 479 _vTecMap[_lastTime]._staID = _staID.toStdString(); 469 480 for (unsigned ii = 0; ii < _vTEC.NumLayers; ii++) { 470 const VTEC::IonoLayers& ionoLayer = _vTEC.Layers[ii];481 const SsrCorr::VTEC::IonoLayers& ionoLayer = _vTEC.Layers[ii]; 471 482 t_vTecLayer layer; 472 483 layer._height = ionoLayer.Height; … … 647 658 } 648 659 else if (epoSecGlo != -1) { 649 #ifdef USE_SSR_RTCM 650 QDate date = dateAndTimeFromGPSweek(currentTime.gpsw(), currentTime.gpssec()).date();651 epoSecGlo = epoSecGlo - 3 * 3600 + gnumleap(date.year(), date.month(), date.day());652 #endif 660 if (_type == e_type::RTCMssr) { 661 QDate date = dateAndTimeFromGPSweek(currentTime.gpsw(), currentTime.gpssec()).date(); 662 epoSecGlo = epoSecGlo - 3 * 3600 + gnumleap(date.year(), date.month(), date.day()); 663 } 653 664 _lastTime.set(currentWeek, epoSecGlo); 654 665 } … … 663 674 } 664 675 else if (epoSecBds != -1) { 665 #ifdef USE_SSR_RTCM 666 epoSecBds += 14.0;667 if (epoSecBds > 604800.0) {668 epoSecBds -= 7.0*24.0*60.0*60.0;669 }670 #endif 676 if (_type == e_type::RTCMssr) { 677 epoSecBds += 14.0; 678 if (epoSecBds > 604800.0) { 679 epoSecBds -= 7.0*24.0*60.0*60.0; 680 } 681 } 671 682 _lastTime.set(currentWeek, epoSecBds); 672 683 } … … 682 693 } 683 694 } 684 685 //686 ////////////////////////////////////////////////////////////////////////////687 string RTCM3coDecoder::codeTypeToRnxType(char system, CodeType type) const {688 if (system == 'G') {689 switch (type) {690 case CODETYPEGPS_L1_CA: return "1C";691 case CODETYPEGPS_L1_P: return "1P";692 case CODETYPEGPS_L1_Z: return "1W";693 694 case CODETYPEGPS_SEMI_CODELESS: return "2D";695 case CODETYPEGPS_L2_CA: return "2C";696 case CODETYPEGPS_L2_P: return "2P";697 case CODETYPEGPS_L2_Z: return "2W";698 699 case CODETYPEGPS_L2C_M: return "2S";700 case CODETYPEGPS_L2C_L: return "2L";701 #ifdef USE_SSR_RTCM702 case CODETYPEGPS_L2C_ML: return "2X";703 #endif704 705 case CODETYPEGPS_L5_I: return "5I";706 case CODETYPEGPS_L5_Q: return "5Q";707 #ifdef USE_SSR_RTCM708 case CODETYPEGPS_L5_IQ: return "5X";709 #endif710 case CODETYPEGPS_L1C_D: return "1S";711 case CODETYPEGPS_L1C_P: return "1L";712 #ifdef USE_SSR_RTCM713 case CODETYPEGPS_L1C_DP: return "1X";714 #endif715 default: return "";716 }717 }718 else if (system == 'R') {719 switch (type) {720 case CODETYPEGLONASS_L1_CA: return "1C";721 case CODETYPEGLONASS_L1_P: return "1P";722 case CODETYPEGLONASS_L2_CA: return "2C";723 case CODETYPEGLONASS_L2_P: return "2P";724 case CODETYPEGLONASS_L1a_OCd: return "4A";725 case CODETYPEGLONASS_L1a_OCp: return "4B";726 #ifdef USE_SSR_RTCM727 case CODETYPEGLONASS_L1a_OCdp: return "4X";728 #endif729 case CODETYPEGLONASS_L2a_CSI: return "6A";730 case CODETYPEGLONASS_L2a_OCp: return "6B";731 #ifdef USE_SSR_RTCM732 case CODETYPEGLONASS_L2a_CSIOCp:return "6X";733 #endif734 case CODETYPEGLONASS_L3_I: return "3I";735 case CODETYPEGLONASS_L3_Q: return "3Q";736 #ifdef USE_SSR_RTCM737 case CODETYPEGLONASS_L3_IQ: return "3X";738 #endif739 default: return "";740 }741 }742 else if (system == 'E') {743 switch (type) {744 case CODETYPEGALILEO_E1_A: return "1A";745 case CODETYPEGALILEO_E1_B: return "1B";746 case CODETYPEGALILEO_E1_C: return "1C";747 #ifdef USE_SSR_RTCM748 case CODETYPEGALILEO_E1_BC: return "1X";749 case CODETYPEGALILEO_E1_ABC: return "1Z";750 #endif751 case CODETYPEGALILEO_E5A_I: return "5I";752 case CODETYPEGALILEO_E5A_Q: return "5Q";753 #ifdef USE_SSR_RTCM754 case CODETYPEGALILEO_E5A_IQ: return "5X";755 #endif756 case CODETYPEGALILEO_E5B_I: return "7I";757 case CODETYPEGALILEO_E5B_Q: return "7Q";758 #ifdef USE_SSR_RTCM759 case CODETYPEGALILEO_E5B_IQ: return "7X";760 761 case CODETYPEGALILEO_E5_I: return "8I";762 case CODETYPEGALILEO_E5_Q: return "8Q";763 case CODETYPEGALILEO_E5_IQ: return "8X";764 #endif765 case CODETYPEGALILEO_E6_A: return "6A";766 case CODETYPEGALILEO_E6_B: return "6B";767 case CODETYPEGALILEO_E6_C: return "6C";768 #ifdef USE_SSR_RTCM769 case CODETYPEGALILEO_E6_BC: return "6X";770 case CODETYPEGALILEO_E6_ABC: return "6Z";771 #endif772 default: return "";773 }774 }775 else if (system == 'J') {776 switch (type) {777 case CODETYPEQZSS_L1_CA: return "1C";778 case CODETYPEQZSS_L1C_D: return "1S";779 case CODETYPEQZSS_L1C_P: return "1L";780 781 case CODETYPEQZSS_L2C_M: return "2S";782 case CODETYPEQZSS_L2C_L: return "2L";783 #ifdef USE_SSR_RTCM784 case CODETYPEQZSS_L2C_ML: return "2X";785 #endif786 case CODETYPEQZSS_L5_I: return "5I";787 case CODETYPEQZSS_L5_Q: return "5Q";788 #ifdef USE_SSR_RTCM789 case CODETYPEQZSS_L5_IQ: return "5X";790 #endif791 case CODETYPEQZSS_L6_D: return "6S";792 case CODETYPEQZSS_L6_P: return "6L";793 #ifdef USE_SSR_RTCM794 case CODETYPEQZSS_L6_DP: return "6X";795 796 case CODETYPEQZSS_L1C_DP: return "1X";797 case CODETYPEQZSS_L1_S: return "1Z";798 799 case CODETYPEQZSS_L5_D: return "5D";800 case CODETYPEQZSS_L5_P: return "5P";801 case CODETYPEQZSS_L5_DP: return "5Z";802 #endif803 804 case CODETYPEQZSS_L6_E: return "6E";805 #ifdef USE_SSR_RTCM806 case CODETYPEQZSS_L6_DE: return "6Z";807 #endif808 default: return "";809 }810 }811 else if (system == 'C') {812 switch (type) {813 case CODETYPE_BDS_B1_I: return "2I";814 case CODETYPE_BDS_B1_Q: return "2Q";815 #ifdef USE_SSR_RTCM816 case CODETYPE_BDS_B1_IQ: return "2X";817 #endif818 case CODETYPE_BDS_B3_I: return "6I";819 case CODETYPE_BDS_B3_Q: return "6Q";820 #ifdef USE_SSR_RTCM821 case CODETYPE_BDS_B3_IQ: return "6X";822 #endif823 case CODETYPE_BDS_B2_I: return "7I";824 case CODETYPE_BDS_B2_Q: return "7Q";825 #ifdef USE_SSR_RTCM826 case CODETYPE_BDS_B2_IQ: return "7X";827 #endif828 case CODETYPE_BDS_B1a_D: return "1D";829 case CODETYPE_BDS_B1a_P: return "1P";830 #ifdef USE_SSR_RTCM831 case CODETYPE_BDS_B1a_DP: return "1X";832 #endif833 case CODETYPE_BDS_B2a_D: return "5D";834 case CODETYPE_BDS_B2a_P: return "5P";835 #ifdef USE_SSR_RTCM836 case CODETYPE_BDS_B2a_DP: return "5X";837 #elif USE_SSR_IGS838 case CODETYPE_BDS_B1_A: return "1A";839 case CODETYPE_BDS_B3_A: return "6A";840 #endif841 default: return "";842 }843 }844 else if (system == 'S') {845 switch (type) {846 case CODETYPE_SBAS_L1_CA: return "1C";847 848 case CODETYPE_SBAS_L5_I: return "5I";849 case CODETYPE_SBAS_L5_Q: return "5Q";850 #ifdef USE_SSR_RTCM851 case CODETYPE_SBAS_L5_IQ: return "5X";852 #endif853 default: return "";854 }855 }856 return "";857 }; -
trunk/BNC/src/RTCM3/RTCM3coDecoder.h
r8969 r9025 33 33 34 34 #include "GPSDecoder.h" 35 #include "../RTCM3/clock_and_orbit/clock_orbit_igs.h" 36 #include "../RTCM3/clock_and_orbit/clock_orbit_rtcm.h" 35 37 36 extern "C" { 37 #ifdef USE_SSR_RTCM 38 #include "../RTCM3/clock_and_orbit/clock_orbit_rtcm.h" 39 #elif USE_SSR_IGS 40 #include "../RTCM3/clock_and_orbit/clock_orbit_igs.h" 41 #endif 42 } 38 //class SsrCorr; 43 39 44 class RTCM3coDecoder : public QObject, public GPSDecoder{40 class RTCM3coDecoder : public QObject, public GPSDecoder{ 45 41 Q_OBJECT 46 42 public: 47 RTCM3coDecoder(const QString& staID); 43 enum e_type {RTCMssr, IGSssr}; 44 RTCM3coDecoder(const QString& staID, const e_type type); 48 45 virtual ~RTCM3coDecoder(); 49 46 virtual t_irc Decode(char* buffer, int bufLen, std::vector<std::string>& errmsg); … … 65 62 void reopen(); 66 63 void checkProviderID(); 67 std::string codeTypeToRnxType(char system, CodeType type) const;68 64 69 65 std::ofstream* _out; … … 72 68 QString _fileName; 73 69 QByteArray _buffer; 74 ClockOrbit_clkOrb;75 CodeBias_codeBias;76 PhaseBias_phaseBias;77 VTEC_vTEC;70 SsrCorr::ClockOrbit _clkOrb; 71 SsrCorr::CodeBias _codeBias; 72 SsrCorr::PhaseBias _phaseBias; 73 SsrCorr::VTEC _vTEC; 78 74 int _providerID[3]; 75 e_type _type; 79 76 bncTime _lastTime; 77 SsrCorr* _ssrCorr; 80 78 QMap<t_prn, unsigned int> _IODs; 81 79 QMap<bncTime, QList<t_orbCorr> > _orbCorrections; -
trunk/BNC/src/RTCM3/bits.h
r6812 r9025 26 26 #define BITS_H 27 27 28 #define LOADBITS(a) \ 29 { \ 30 while((a) > numbits) \ 31 { \ 28 #define LOADBITS(a) { \ 29 while((a) > numbits) { \ 32 30 if(!size--) return false; \ 33 31 bitfield = (bitfield<<8)|*(data++); \ … … 38 36 /* extract bits from data stream 39 37 b = variable to store result, a = number of bits */ 40 #define GETBITS64(b, a) \ 41 { \ 42 if(((a) > 56) && ((a)-56) > numbits) \ 43 { \ 38 #define GETBITS64(b, a) { \ 39 if(((a) > 56) && ((a)-56) > numbits) { \ 44 40 uint64_t x; \ 45 41 GETBITS(x, 56) \ … … 49 45 numbits -= ((a)-56); \ 50 46 } \ 51 else \ 52 { \ 47 else { \ 53 48 GETBITS(b, a) \ 54 49 } \ … … 57 52 /* extract bits from data stream 58 53 b = variable to store result, a = number of bits */ 59 #define GETBITS(b, a) \ 60 { \ 54 #define GETBITS(b, a) { \ 61 55 LOADBITS(a) \ 62 56 b = (bitfield<<(64-numbits))>>(64-(a)); \ … … 66 60 /* extract bits from data stream 67 61 b = variable to store result, a = number of bits */ 68 #define GETBITSFACTOR(b, a, c) \ 69 { \ 62 #define GETBITSFACTOR(b, a, c) { \ 70 63 LOADBITS(a) \ 71 64 b = ((bitfield<<(sizeof(bitfield)*8-numbits))>>(sizeof(bitfield)*8-(a)))*(c); \ … … 75 68 /* extract floating value from data stream 76 69 b = variable to store result, a = number of bits */ 77 #define GETFLOAT(b, a, c) \ 78 { \ 70 #define GETFLOAT(b, a, c) { \ 79 71 LOADBITS(a) \ 80 72 b = ((double)((bitfield<<(64-numbits))>>(64-(a))))*(c); \ … … 84 76 /* extract signed floating value from data stream 85 77 b = variable to store result, a = number of bits */ 86 #define GETFLOATSIGN(b, a, c) \ 87 { \ 78 #define GETFLOATSIGN(b, a, c) { \ 88 79 LOADBITS(a) \ 89 80 b = ((double)(((int64_t)(bitfield<<(64-numbits)))>>(64-(a))))*(c); \ … … 93 84 /* extract bits from data stream 94 85 b = variable to store result, a = number of bits */ 95 #define GETBITSSIGN(b, a) \ 96 { \ 86 #define GETBITSSIGN(b, a) { \ 97 87 LOADBITS(a) \ 98 88 b = ((int64_t)(bitfield<<(64-numbits)))>>(64-(a)); \ … … 100 90 } 101 91 102 #define GETFLOATSIGNM(b, a, c) \103 {int l; \92 #define GETFLOATSIGNM(b, a, c) { \ 93 int l; \ 104 94 LOADBITS(a) \ 105 95 l = (bitfield<<(64-numbits))>>(64-1); \ … … 113 103 /* extract byte-aligned byte from data stream, 114 104 b = variable to store size, s = variable to store string pointer */ 115 #define GETSTRING(b, s) \ 116 { \ 105 #define GETSTRING(b, s) { \ 117 106 b = *(data++); \ 118 107 s = (char *) data; \ -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_igs.h
r8984 r9025 4 4 /* Programheader 5 5 6 7 8 9 10 11 */12 6 Name: clock_orbit_igs.h 7 Project: RTCM3 8 Version: $Id: clock_orbit_igs.h 8966 2020-07-01 07:48:35Z stuerze $ 9 Authors: Dirk Stöcker, Andrea Stürze 10 Description: state space approach: IGS 11 */ 12 #include <QDebug> 13 13 #include <string.h> 14 15 enum IGS_NUMBERS { 16 RTCM_MESSAGE_NUMBER_IGS = 4076, 17 IGS_SSR_VERSION = 3 18 }; 19 20 enum SatelliteReferenceDatum { 21 DATUM_ITRF = 0, 22 DATUM_LOCAL = 1 23 }; 24 25 enum COR_BASE { 26 COBBASE_GPS = 21, 27 COBBASE_GLONASS = 41, 28 COBBASE_GALILEO = 61, 29 COBBASE_QZSS = 81, 30 COBBASE_BDS = 101, 31 COBBASE_SBAS = 121, 32 COBBASE_NUM 33 }; 34 35 enum COR_OFFSET { // sub-type message, for example: 36 COBOFS_ORBIT = 0, // GPS: IM21 37 COBOFS_CLOCK, // GPS: IM22 38 COBOFS_COMBINED, // GPS: IM23 39 COBOFS_HR, // GPS: IM24 40 COBOFS_CBIAS, // GPS: IM25 41 COBOFS_PBIAS, // GPS: IM26 42 COBOFS_URA, // GPS: IM27 43 COBOFS_NUM 44 }; 45 46 enum ClockOrbitType { 47 COTYPE_GPSORBIT = COBBASE_GPS + COBOFS_ORBIT, 48 COTYPE_GPSCLOCK, 49 COTYPE_GPSCOMBINED = COBBASE_GPS + COBOFS_COMBINED, 50 COTYPE_GPSHR, 51 COTYPE_GPSURA = COBBASE_GPS + COBOFS_URA, 52 53 COTYPE_GLONASSORBIT = COBBASE_GLONASS + COBOFS_ORBIT, 54 COTYPE_GLONASSCLOCK, 55 COTYPE_GLONASSCOMBINED = COBBASE_GLONASS + COBOFS_COMBINED, 56 COTYPE_GLONASSHR, 57 COTYPE_GLONASSURA = COBBASE_GLONASS + COBOFS_URA, 58 59 COTYPE_GALILEOORBIT = COBBASE_GALILEO + COBOFS_ORBIT, 60 COTYPE_GALILEOCLOCK, 61 COTYPE_GALILEOCOMBINED = COBBASE_GALILEO + COBOFS_COMBINED, 62 COTYPE_GALILEOHR, 63 COTYPE_GALILEOURA = COBBASE_GALILEO + COBOFS_URA, 64 65 COTYPE_QZSSORBIT = COBBASE_QZSS + COBOFS_ORBIT, 66 COTYPE_QZSSCLOCK, 67 COTYPE_QZSSCOMBINED = COBBASE_QZSS + COBOFS_COMBINED, 68 COTYPE_QZSSHR, 69 COTYPE_QZSSURA = COBBASE_QZSS + COBOFS_URA, 70 71 COTYPE_SBASORBIT = COBBASE_SBAS + COBOFS_ORBIT, 72 COTYPE_SBASCLOCK, 73 COTYPE_SBASCOMBINED = COBBASE_SBAS + COBOFS_COMBINED, 74 COTYPE_SBASHR, 75 COTYPE_SBASURA = COBBASE_SBAS + COBOFS_URA, 76 77 COTYPE_BDSORBIT = COBBASE_BDS + COBOFS_ORBIT, 78 COTYPE_BDSCLOCK, 79 COTYPE_BDSCOMBINED = COBBASE_BDS + COBOFS_COMBINED, 80 COTYPE_BDSHR, 81 COTYPE_BDSURA = COBBASE_BDS + COBOFS_URA, 82 83 COTYPE_AUTO = 0, 84 }; 85 86 enum CodeBiasType { 87 CBTYPE_GPS = COBBASE_GPS + COBOFS_CBIAS, 88 CBTYPE_GLONASS = COBBASE_GLONASS + COBOFS_CBIAS, 89 CBTYPE_GALILEO = COBBASE_GALILEO + COBOFS_CBIAS, 90 CBTYPE_QZSS = COBBASE_QZSS + COBOFS_CBIAS, 91 CBTYPE_SBAS = COBBASE_SBAS + COBOFS_CBIAS, 92 CBTYPE_BDS = COBBASE_BDS + COBOFS_CBIAS, 93 CBTYPE_AUTO = 0 94 }; 95 96 enum PhaseBiasType { 97 PBTYPE_GPS = COBBASE_GPS + COBOFS_PBIAS, 98 PBTYPE_GLONASS = COBBASE_GLONASS + COBOFS_PBIAS, 99 PBTYPE_GALILEO = COBBASE_GALILEO + COBOFS_PBIAS, 100 PBTYPE_QZSS = COBBASE_QZSS + COBOFS_PBIAS, 101 PBTYPE_SBAS = COBBASE_SBAS + COBOFS_PBIAS, 102 PBTYPE_BDS = COBBASE_BDS + COBOFS_PBIAS, 103 PBTYPE_AUTO = 0 104 }; 105 106 enum VTECType { 107 VTEC_BASE = 201 108 }; 109 110 /* if some systems aren't supported at all, change the following numbers to zero 111 for these systems to save space */ 112 enum COR_CONSTANTS { 113 CLOCKORBIT_BUFFERSIZE = 8192, 114 CLOCKORBIT_NUMGPS = 32, 115 CLOCKORBIT_NUMGLONASS = 26, 116 CLOCKORBIT_NUMGALILEO = 36, 117 CLOCKORBIT_NUMQZSS = 10, 118 CLOCKORBIT_NUMSBAS = 38, 119 CLOCKORBIT_NUMBDS = 65, 120 CLOCKORBIT_NUMBIAS = 100, 121 CLOCKORBIT_NUMIONOLAYERS = 4, 122 CLOCKORBIT_MAXIONOORDER = 16, 123 CLOCKORBIT_MAXIONODEGREE = 16 124 }; 125 126 enum COR_SATSYSTEM { 127 CLOCKORBIT_SATGPS=0, 128 CLOCKORBIT_SATGLONASS, 129 CLOCKORBIT_SATGALILEO, 130 CLOCKORBIT_SATQZSS, 131 CLOCKORBIT_SATSBAS, 132 CLOCKORBIT_SATBDS, 133 CLOCKORBIT_SATNUM 134 }; 135 136 enum COR_OFFSETS { 137 CLOCKORBIT_OFFSETGPS = 0, 138 CLOCKORBIT_OFFSETGLONASS = CLOCKORBIT_NUMGPS, 139 CLOCKORBIT_OFFSETGALILEO = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS, 140 CLOCKORBIT_OFFSETQZSS = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO, 141 CLOCKORBIT_OFFSETSBAS = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO 142 + CLOCKORBIT_NUMQZSS, 143 CLOCKORBIT_OFFSETBDS = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO 144 + CLOCKORBIT_NUMQZSS + CLOCKORBIT_NUMSBAS, 145 CLOCKORBIT_COUNTSAT = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO 146 + CLOCKORBIT_NUMQZSS + CLOCKORBIT_NUMSBAS + CLOCKORBIT_NUMBDS 147 }; 148 149 enum CodeType { 150 CODETYPEGPS_L1_CA = 0, 151 CODETYPEGPS_L1_P = 1, 152 CODETYPEGPS_L1_Z = 2, 153 CODETYPEGPS_L1C_D = 3, 154 CODETYPEGPS_L1C_P = 4, 155 CODETYPEGPS_L2_CA = 5, 156 CODETYPEGPS_SEMI_CODELESS = 6, 157 CODETYPEGPS_L2C_M = 7, 158 CODETYPEGPS_L2C_L = 8, 159 //RESERVED = 9, 160 CODETYPEGPS_L2_P = 10, 161 CODETYPEGPS_L2_Z = 11, 162 //RESERVED = 12, 163 //RESERVED = 13, 164 CODETYPEGPS_L5_I = 14, 165 CODETYPEGPS_L5_Q = 15, 166 167 CODETYPEGLONASS_L1_CA = 0, 168 CODETYPEGLONASS_L1_P = 1, 169 CODETYPEGLONASS_L2_CA = 2, 170 CODETYPEGLONASS_L2_P = 3, 171 CODETYPEGLONASS_L1a_OCd = 4, 172 CODETYPEGLONASS_L1a_OCp = 5, 173 CODETYPEGLONASS_L2a_CSI = 6, 174 CODETYPEGLONASS_L2a_OCp = 7, 175 CODETYPEGLONASS_L3_I = 8, 176 CODETYPEGLONASS_L3_Q = 9, 177 178 CODETYPEGALILEO_E1_A = 0, 179 CODETYPEGALILEO_E1_B = 1, 180 CODETYPEGALILEO_E1_C = 2, 181 //RESERVED_E1_BC = 3, 182 //RESERVED_E1_ABC = 4, 183 CODETYPEGALILEO_E5A_I = 5, 184 CODETYPEGALILEO_E5A_Q = 6, 185 //RESERVED_E5A_IQ = 7, 186 CODETYPEGALILEO_E5B_I = 8, 187 CODETYPEGALILEO_E5B_Q = 9, 188 //RESERVED_E5B_IQ = 10, 189 //RESERVED_E5_I = 11, 190 //RESERVED_E5_Q = 12, 191 //RESERVED_E5_IQ = 13, 192 CODETYPEGALILEO_E6_A = 14, 193 CODETYPEGALILEO_E6_B = 15, 194 CODETYPEGALILEO_E6_C = 16, 195 //RESERVED_E6_BC = 17, 196 //RESERVED_E6_ABC = 18, 197 198 CODETYPEQZSS_L1_CA = 0, 199 CODETYPEQZSS_L1C_D = 1, 200 CODETYPEQZSS_L1C_P = 2, 201 CODETYPEQZSS_L2C_M = 3, 202 CODETYPEQZSS_L2C_L = 4, 203 //RESEVED_L2C_ML = 5, 204 CODETYPEQZSS_L5_I = 6, 205 CODETYPEQZSS_L5_Q = 7, 206 //RESERVED_L5_IQ = 8, 207 CODETYPEQZSS_L6_D = 9, 208 CODETYPEQZSS_L6_P = 10, 209 //RESERVED_L6_DP = 11, 210 //RESERVED_L1C_DP = 12, 211 //RESERVED_L1_S = 13, 212 //RESERVED_L5_D = 14, 213 //RESERVED_L5_P = 15, 214 //RESERVED_L5_DP = 16, 215 CODETYPEQZSS_L6_E = 17, 216 //RESERVED_L6_DE = 18, 217 218 CODETYPE_SBAS_L1_CA = 0, 219 CODETYPE_SBAS_L5_I = 1, 220 CODETYPE_SBAS_L5_Q = 2, 221 //RESERVED_SBAS_L5_IQ = 3, 222 223 CODETYPE_BDS_B1_I = 0, 224 CODETYPE_BDS_B1_Q = 1, 225 //RESERVED_BDS_B1_IQ = 2, 226 CODETYPE_BDS_B3_I = 3, 227 CODETYPE_BDS_B3_Q = 4, 228 //RESERVED_BDS_B3_IQ = 5, 229 CODETYPE_BDS_B2_I = 6, 230 CODETYPE_BDS_B2_Q = 7, 231 //RESERVED_BDS_B2_IQ = 8, 232 CODETYPE_BDS_B1a_D = 9, 233 CODETYPE_BDS_B1a_P = 10, 234 //RESERVED_BDS_B1a_DP = 11, 235 CODETYPE_BDS_B2a_D = 12, 236 CODETYPE_BDS_B2a_P = 13, 237 //RESEVED_BDS_B2a_DP = 14, 238 CODETYPE_BDS_B1_A = 15, //NEW 1A 239 //RESERVED = 16, 240 //RESERVED = 17, 241 CODETYPE_BDS_B3_A = 18 //NEW 6A 242 }; 243 244 #define SSR_MAXURA 5.5 /* > 5466.5mm in meter */ 245 246 /* satellite system data is stored with offset CLOCKORBIT_OFFSET... 247 in the data structures. So first GLONASS satellite is at 248 xxx->Sat[CLOCKORBIT_OFFSETGLONASS], first GPS satellite is 249 xxx->Sat[CLOCKORBIT_OFFSETGPS]. */ 250 251 struct ClockOrbit { 252 enum ClockOrbitType messageType; 253 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 254 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 255 unsigned int Supplied[COBOFS_NUM]; /* boolean */ 256 unsigned int SSRIOD; 257 unsigned int SSRProviderID; 258 unsigned int SSRSolutionID; 259 unsigned int UpdateInterval; 260 enum SatelliteReferenceDatum SatRefDatum; 261 struct SatData { 262 unsigned int ID; /* all */ 263 unsigned int IOD; /* all */ 264 unsigned int toe; /* SBAS, BDS */ 265 double UserRangeAccuracy; /* accuracy values in [m] */ 266 double hrclock; 267 struct OrbitPart { 268 double DeltaRadial; /* m */ 269 double DeltaAlongTrack; /* m */ 270 double DeltaCrossTrack; /* m */ 271 double DotDeltaRadial; /* m/s */ 272 double DotDeltaAlongTrack; /* m/s */ 273 double DotDeltaCrossTrack; /* m/s */ 274 } Orbit; 275 struct ClockPart { 276 double DeltaA0; /* m */ 277 double DeltaA1; /* m/s */ 278 double DeltaA2; /* m/ss */ 279 } Clock; 280 } Sat[CLOCKORBIT_COUNTSAT]; 281 }; 282 283 struct CodeBias { 284 enum CodeBiasType messageType; 285 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 286 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 287 unsigned int UpdateInterval; 288 unsigned int SSRIOD; 289 unsigned int SSRProviderID; 290 unsigned int SSRSolutionID; 291 struct BiasSat { 292 unsigned int ID; /* all */ 293 unsigned int NumberOfCodeBiases; 294 struct CodeBiasEntry { 295 enum CodeType Type; 296 float Bias; /* m */ 297 } Biases[CLOCKORBIT_NUMBIAS]; 298 } Sat[CLOCKORBIT_COUNTSAT]; 299 }; 300 301 struct PhaseBias { 302 enum PhaseBiasType messageType; 303 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 304 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 305 unsigned int UpdateInterval; 306 unsigned int SSRIOD; 307 unsigned int SSRProviderID; 308 unsigned int SSRSolutionID; 309 unsigned int DispersiveBiasConsistencyIndicator; 310 unsigned int MWConsistencyIndicator; 311 struct PhaseBiasSat { 312 unsigned int ID; /* all */ 313 unsigned int NumberOfPhaseBiases; 314 double YawAngle; /* radiant */ 315 double YawRate; /* radiant/s */ 316 struct PhaseBiasEntry { 317 enum CodeType Type; 318 unsigned int SignalIntegerIndicator; 319 unsigned int SignalsWideLaneIntegerIndicator; 320 unsigned int SignalDiscontinuityCounter; 321 float Bias; /* m */ 322 } Biases[CLOCKORBIT_NUMBIAS]; 323 } Sat[CLOCKORBIT_COUNTSAT]; 324 }; 325 326 struct VTEC { 327 unsigned int EpochTime; /* GPS */ 328 unsigned int UpdateInterval; 329 unsigned int SSRIOD; 330 unsigned int SSRProviderID; 331 unsigned int SSRSolutionID; 332 unsigned int NumLayers; /* 1-4 */ 333 double Quality; 334 struct IonoLayers { 335 double Height; /* m */ 336 unsigned int Degree; /* 1-16 */ 337 unsigned int Order; /* 1-16 */ 338 double Sinus[CLOCKORBIT_MAXIONODEGREE][CLOCKORBIT_MAXIONOORDER]; 339 double Cosinus[CLOCKORBIT_MAXIONODEGREE][CLOCKORBIT_MAXIONOORDER]; 340 } Layers[CLOCKORBIT_NUMIONOLAYERS]; 341 }; 342 343 /* return size of resulting data or 0 in case of an error */ 344 size_t MakeClockOrbit(const struct ClockOrbit *co, enum ClockOrbitType type, 14 #include "clock_orbit.h" 15 16 class SsrCorrIgs: public SsrCorr { 17 //Q_OBJECT 18 19 public: 20 SsrCorrIgs() {qDebug() << "SsrCorrIgs()"; 21 setCorBase(); 22 setCorOffset(); 23 setCoType(); 24 setCbType(); 25 setPbType(); 26 setVtecType(); 27 setCodeType(); 28 29 satoffset << CLOCKORBIT_OFFSETGPS 30 << CLOCKORBIT_OFFSETGLONASS 31 << CLOCKORBIT_OFFSETGALILEO 32 << CLOCKORBIT_OFFSETQZSS 33 << CLOCKORBIT_OFFSETSBAS 34 << CLOCKORBIT_OFFSETBDS 35 << CLOCKORBIT_COUNTSAT; 36 }; 37 38 ~SsrCorrIgs() {}; 39 40 void setCorBase() { 41 COBBASE_GPS = 21; 42 COBBASE_GLONASS = 41; 43 COBBASE_GALILEO = 61; 44 COBBASE_QZSS = 81; 45 COBBASE_BDS = 101; 46 COBBASE_SBAS = 121; 47 COBBASE_NUM = 6; 48 49 corbase << COBBASE_GPS 50 << COBBASE_GLONASS 51 << COBBASE_GALILEO 52 << COBBASE_QZSS 53 << COBBASE_SBAS 54 << COBBASE_BDS; 55 } 56 57 void setCorOffset() { 58 COBOFS_ORBIT = 0; // GPS: IM21 59 COBOFS_CLOCK = 1; // GPS: IM22 60 COBOFS_COMBINED = 2; // GPS: IM23 61 COBOFS_HR = 3; // GPS: IM24 62 COBOFS_CBIAS = 4; // GPS: IM25 63 COBOFS_PBIAS = 5; // GPS: IM26 64 COBOFS_URA = 6; // GPS: IM27 65 COBOFS_NUM = 7; 66 }; 67 68 void setCoType() { 69 COTYPE_GPSORBIT = COBBASE_GPS + COBOFS_ORBIT; 70 COTYPE_GPSCLOCK = COTYPE_GPSORBIT + 1; 71 COTYPE_GPSCOMBINED = COBBASE_GPS + COBOFS_COMBINED; 72 COTYPE_GPSHR = COTYPE_GPSCOMBINED + 1; 73 COTYPE_GPSURA = COBBASE_GPS + COBOFS_URA; 74 75 COTYPE_GLONASSORBIT = COBBASE_GLONASS + COBOFS_ORBIT; 76 COTYPE_GLONASSCLOCK = COTYPE_GLONASSORBIT + 1; 77 COTYPE_GLONASSCOMBINED = COBBASE_GLONASS + COBOFS_COMBINED, 78 COTYPE_GLONASSHR = COTYPE_GLONASSCOMBINED + 1; 79 COTYPE_GLONASSURA = COBBASE_GLONASS + COBOFS_URA, 80 81 COTYPE_GALILEOORBIT = COBBASE_GALILEO + COBOFS_ORBIT; 82 COTYPE_GALILEOCLOCK = COTYPE_GALILEOORBIT + 1; 83 COTYPE_GALILEOCOMBINED = COBBASE_GALILEO + COBOFS_COMBINED, 84 COTYPE_GALILEOHR = COTYPE_GALILEOCOMBINED + 1; 85 COTYPE_GALILEOURA = COBBASE_GALILEO + COBOFS_URA; 86 87 COTYPE_QZSSORBIT = COBBASE_QZSS + COBOFS_ORBIT; 88 COTYPE_QZSSCLOCK = COTYPE_QZSSORBIT + 1; 89 COTYPE_QZSSCOMBINED = COBBASE_QZSS + COBOFS_COMBINED; 90 COTYPE_QZSSHR = COTYPE_QZSSCOMBINED + 1; 91 COTYPE_QZSSURA = COBBASE_QZSS + COBOFS_URA; 92 93 COTYPE_SBASORBIT = COBBASE_SBAS + COBOFS_ORBIT; 94 COTYPE_SBASCLOCK = COTYPE_SBASORBIT + 1; 95 COTYPE_SBASCOMBINED = COBBASE_SBAS + COBOFS_COMBINED; 96 COTYPE_SBASHR = COTYPE_SBASCOMBINED + 1; 97 COTYPE_SBASURA = COBBASE_SBAS + COBOFS_URA; 98 99 COTYPE_BDSORBIT = COBBASE_BDS + COBOFS_ORBIT; 100 COTYPE_BDSCLOCK = COTYPE_BDSORBIT + 1; 101 COTYPE_BDSCOMBINED = COBBASE_BDS + COBOFS_COMBINED; 102 COTYPE_BDSHR = COTYPE_BDSCOMBINED + 1; 103 COTYPE_BDSURA = COBBASE_BDS + COBOFS_URA; 104 105 COTYPE_AUTO = 0; 106 }; 107 108 void setCbType() { 109 CBTYPE_GPS = COBBASE_GPS + COBOFS_CBIAS; 110 CBTYPE_GLONASS = COBBASE_GLONASS + COBOFS_CBIAS; 111 CBTYPE_GALILEO = COBBASE_GALILEO + COBOFS_CBIAS; 112 CBTYPE_QZSS = COBBASE_QZSS + COBOFS_CBIAS; 113 CBTYPE_SBAS = COBBASE_SBAS + COBOFS_CBIAS; 114 CBTYPE_BDS = COBBASE_BDS + COBOFS_CBIAS; 115 CBTYPE_AUTO = 0; 116 }; 117 118 void setPbType() { 119 PBTYPE_GPS = COBBASE_GPS + COBOFS_PBIAS; 120 PBTYPE_GLONASS = COBBASE_GLONASS + COBOFS_PBIAS; 121 PBTYPE_GALILEO = COBBASE_GALILEO + COBOFS_PBIAS; 122 PBTYPE_QZSS = COBBASE_QZSS + COBOFS_PBIAS; 123 PBTYPE_SBAS = COBBASE_SBAS + COBOFS_PBIAS; 124 PBTYPE_BDS = COBBASE_BDS + COBOFS_PBIAS; 125 PBTYPE_AUTO = 0; 126 }; 127 128 void setVtecType() { 129 VTEC_BASE = 201; 130 }; 131 132 void setCodeType() { 133 CODETYPE_GPS_L1_CA = 0; 134 CODETYPE_GPS_L1_P = 1; 135 CODETYPE_GPS_L1_Z = 2; 136 CODETYPE_GPS_L1C_D = 3; 137 CODETYPE_GPS_L1C_P = 4; 138 CODETYPE_GPS_L2_CA = 5; 139 CODETYPE_GPS_SEMI_CODELESS = 6; 140 CODETYPE_GPS_L2C_M = 7; 141 CODETYPE_GPS_L2C_L = 8; 142 //RESERVED = 9; 143 CODETYPE_GPS_L2_P = 10; 144 CODETYPE_GPS_L2_Z = 11; 145 //RESERVED = 12; 146 //RESERVED = 13; 147 CODETYPE_GPS_L5_I = 14; 148 CODETYPE_GPS_L5_Q = 15; 149 150 151 152 153 154 CODETYPE_GLONASS_L1_CA = 0; 155 CODETYPE_GLONASS_L1_P = 1; 156 CODETYPE_GLONASS_L2_CA = 2; 157 CODETYPE_GLONASS_L2_P = 3; 158 CODETYPE_GLONASS_L1a_OCd = 4; 159 CODETYPE_GLONASS_L1a_OCp = 5; 160 CODETYPE_GLONASS_L2a_CSI = 6; 161 CODETYPE_GLONASS_L2a_OCp = 7; 162 CODETYPE_GLONASS_L3_I = 8; 163 CODETYPE_GLONASS_L3_Q = 9; 164 165 166 167 168 CODETYPE_GALILEO_E1_A = 0; 169 CODETYPE_GALILEO_E1_B = 1; 170 CODETYPE_GALILEO_E1_C = 2; 171 //RESERVED_E1_BC = 3; 172 //RESERVED_E1_ABC = 4; 173 CODETYPE_GALILEO_E5A_I = 5; 174 CODETYPE_GALILEO_E5A_Q = 6; 175 //RESERVED_E5A_IQ = 7; 176 CODETYPE_GALILEO_E5B_I = 8; 177 CODETYPE_GALILEO_E5B_Q = 9; 178 //RESERVED_E5B_IQ = 10; 179 //RESERVED_E5_I = 11; 180 //RESERVED_E5_Q = 12; 181 //RESERVED_E5_IQ = 13; 182 CODETYPE_GALILEO_E6_A = 14; 183 CODETYPE_GALILEO_E6_B = 15; 184 CODETYPE_GALILEO_E6_C = 16; 185 //RESERVED_E6_BC = 17; 186 //RESERVED_E6_ABC = 18; 187 188 CODETYPE_QZSS_L1_CA = 0; 189 CODETYPE_QZSS_L1C_D = 1; 190 CODETYPE_QZSS_L1C_P = 2; 191 CODETYPE_QZSS_L2C_M = 3; 192 CODETYPE_QZSS_L2C_L = 4; 193 //RESEVED_L2C_ML = 5; 194 CODETYPE_QZSS_L5_I = 6; 195 CODETYPE_QZSS_L5_Q = 7; 196 //RESERVED_L5_IQ = 8; 197 CODETYPE_QZSS_L6_D = 9; 198 CODETYPE_QZSS_L6_P = 10; 199 //RESERVED_L6_DP = 11; 200 //RESERVED_L1C_DP = 12; 201 //RESERVED_L1_S = 13; 202 //RESERVED_L5_D = 14; 203 //RESERVED_L5_P = 15; 204 //RESERVED_L5_DP = 16; 205 CODETYPE_QZSS_L6_E = 17; 206 //RESERVED_L6_DE = 18; 207 208 CODETYPE_SBAS_L1_CA = 0; 209 CODETYPE_SBAS_L5_I = 1; 210 CODETYPE_SBAS_L5_Q = 2; 211 //RESERVED_CODETYPE_SBAS_L5_IQ = 3; 212 213 CODETYPE_BDS_B1_I = 0; 214 CODETYPE_BDS_B1_Q = 1; 215 //RESERVED_CODETYPE_BDS_B1_IQ = 2; 216 CODETYPE_BDS_B3_I = 3; 217 CODETYPE_BDS_B3_Q = 4; 218 //RESERVED_CODETYPE_BDS_B3_IQ = 5; 219 CODETYPE_BDS_B2_I = 6; 220 CODETYPE_BDS_B2_Q = 7; 221 //RESERVED_CODETYPE_BDS_B2_IQ = 8; 222 CODETYPE_BDS_B1a_D = 9; 223 CODETYPE_BDS_B1a_P = 10; 224 //RESERVED_CODETYPE_BDS_B1a_DP = 11; 225 CODETYPE_BDS_B2a_D = 12; 226 CODETYPE_BDS_B2a_P = 13; 227 //RESEVED_CODETYPE_BDS_B2a_DP = 14; 228 CODETYPE_BDS_B1_A = 15; //NEW 1A 229 //RESERVED = 16; 230 //RESERVED = 17; 231 CODETYPE_BDS_B3_A = 18; //NEW 6A 232 }; 233 234 std::string codeTypeToRnxType(char system, CodeType type); 235 SsrCorr::CodeType rnxTypeToCodeType(char system, std::string type); 236 237 size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type, 345 238 int moremessagesfollow, char *buffer, size_t size); 346 size_t MakeCodeBias(const struct CodeBias *b, enumCodeBiasType type,239 size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type, 347 240 int moremessagesfollow, char *buffer, size_t size); 348 size_t MakePhaseBias(const struct PhaseBias *b, enumPhaseBiasType type,241 size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, 349 242 int moremessagesfollow, char *buffer, size_t size); 350 size_t MakeVTEC(const struct VTEC *b, int moremessagesfollow, char *buffer,243 size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, 351 244 size_t size); 352 353 enum GCOB_RETURN { 354 /* all well */ 355 GCOBR_MESSAGEFOLLOWS = 1, 356 GCOBR_OK = 0, 357 /* unknown data, a warning */ 358 GCOBR_UNKNOWNTYPE = -1, 359 GCOBR_UNKNOWNDATA = -2, 360 GCOBR_CRCMISMATCH = -3, 361 GCOBR_SHORTMESSAGE = -4, 362 /* failed to do the work */ 363 GCOBR_NOCLOCKORBITPARAMETER = -10, 364 GCOBR_NOCODEBIASPARAMETER = -11, 365 GCOBR_NOPHASEBIASPARAMETER = -12, 366 GCOBR_NOVTECPARAMETER = -13, 367 /* data mismatch - data in storage does not match new data */ 368 GCOBR_TIMEMISMATCH = -20, 369 GCOBR_DATAMISMATCH = -21, 370 /* not enough data - can decode the block completely */ 371 GCOBR_SHORTBUFFER = -30, 372 GCOBR_MESSAGEEXCEEDSBUFFER = -31}; 373 374 /* NOTE: When an error message has been emitted, the output structures may have been modified. Make a copy of the previous variant before calling the 375 function to have a clean state. */ 376 377 /* buffer should point to a RTCM3 block */ 378 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, struct VTEC *v, 379 struct PhaseBias *pb, const char *buffer, size_t size, int *bytesused); 245 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, 246 struct VTEC *v, struct PhaseBias *pb, const char *buffer, size_t size, 247 int *bytesused); 248 }; 380 249 381 250 #endif /* RTCM3_CLOCK_ORBIT_IGS_H */ -
trunk/BNC/src/RTCM3/clock_and_orbit/clock_orbit_rtcm.h
r8982 r9025 4 4 /* Programheader 5 5 6 7 8 9 Authors: Dirk Stöcker10 11 */6 Name: clock_orbit_rtcm.h 7 Project: RTCM3 8 Version: $Id$ 9 Authors: Dirk Stöcker, Andrea Stürze 10 Description: state space approach: RTCM 11 */ 12 12 13 13 #include <string.h> 14 15 16 17 18 19 20 enum SatelliteReferenceDatum { 21 DATUM_ITRF = 0, 22 DATUM_LOCAL = 1 23 }; 24 25 enum COR_BASE { 26 COBBASE_GPS = 1057, 27 COBBASE_GLONASS = 1063, 28 COBBASE_GALILEO = 1240, 29 COBBASE_QZSS = 1246, 30 COBBASE_SBAS = 1252, 31 COBBASE_BDS = 1258, 32 COBBASE_NUM 33 }; 34 35 enum COR_OFFSET { 36 COBOFS_ORBIT = 0, 37 COBOFS_CLOCK, 38 COBOFS_CBIAS, 39 COBOFS_COMBINED, 40 COBOFS_URA, 41 COBOFS_HR, 42 COBOFS_NUM 43 }; 44 45 enum ClockOrbitType { 46 COTYPE_GPSORBIT = COBBASE_GPS + COBOFS_ORBIT, 47 COTYPE_GPSCLOCK, 48 COTYPE_GPSCOMBINED = COBBASE_GPS + COBOFS_COMBINED, 49 COTYPE_GPSURA, 50 COTYPE_GPSHR, 51 52 COTYPE_GLONASSORBIT = COBBASE_GLONASS + COBOFS_ORBIT, 53 COTYPE_GLONASSCLOCK, 54 COTYPE_GLONASSCOMBINED = COBBASE_GLONASS + COBOFS_COMBINED, 55 COTYPE_GLONASSURA, 56 COTYPE_GLONASSHR, 57 58 COTYPE_GALILEOORBIT = COBBASE_GALILEO + COBOFS_ORBIT, 59 COTYPE_GALILEOCLOCK, 60 COTYPE_GALILEOCOMBINED = COBBASE_GALILEO + COBOFS_COMBINED, 61 COTYPE_GALILEOURA, 62 COTYPE_GALILEOHR, 63 64 COTYPE_QZSSORBIT = COBBASE_QZSS + COBOFS_ORBIT, 65 COTYPE_QZSSCLOCK, 66 COTYPE_QZSSCOMBINED = COBBASE_QZSS + COBOFS_COMBINED, 67 COTYPE_QZSSURA, 68 COTYPE_QZSSHR, 69 70 COTYPE_SBASORBIT = COBBASE_SBAS + COBOFS_ORBIT, 71 COTYPE_SBASCLOCK, 72 COTYPE_SBASCOMBINED = COBBASE_SBAS + COBOFS_COMBINED, 73 COTYPE_SBASURA, 74 COTYPE_SBASHR, 75 76 COTYPE_BDSORBIT = COBBASE_BDS + COBOFS_ORBIT, 77 COTYPE_BDSCLOCK, 78 COTYPE_BDSCOMBINED = COBBASE_BDS + COBOFS_COMBINED, 79 COTYPE_BDSURA, 80 COTYPE_BDSHR, 81 82 COTYPE_AUTO = 0, 83 }; 84 85 enum CodeBiasType { 86 CBTYPE_GPS = COBBASE_GPS + COBOFS_CBIAS, 87 CBTYPE_GLONASS = COBBASE_GLONASS + COBOFS_CBIAS, 88 CBTYPE_GALILEO = COBBASE_GALILEO + COBOFS_CBIAS, 89 CBTYPE_QZSS = COBBASE_QZSS + COBOFS_CBIAS, 90 CBTYPE_SBAS = COBBASE_SBAS + COBOFS_CBIAS, 91 CBTYPE_BDS = COBBASE_BDS + COBOFS_CBIAS, 92 CBTYPE_AUTO = 0 93 }; 94 95 enum PhaseBiasType{ 96 PBTYPE_BASE = 1265, 97 PBTYPE_GPS = PBTYPE_BASE, 98 PBTYPE_GLONASS, 99 PBTYPE_GALILEO, 100 PBTYPE_QZSS, 101 PBTYPE_SBAS, 102 PBTYPE_BDS, 103 PBTYPE_AUTO = 0 104 }; 105 106 enum VTECType { 107 VTEC_BASE = 1264 108 }; 109 110 /* if some systems aren't supported at all, change the following numbers to zero 111 for these systems to save space */ 112 enum COR_CONSTANTS { 113 CLOCKORBIT_BUFFERSIZE = 8192, 114 CLOCKORBIT_NUMGPS = 32, 115 CLOCKORBIT_NUMGLONASS = 26, 116 CLOCKORBIT_NUMGALILEO = 36, 117 CLOCKORBIT_NUMQZSS = 10, 118 CLOCKORBIT_NUMSBAS = 38, 119 CLOCKORBIT_NUMBDS = 65, 120 CLOCKORBIT_NUMBIAS = 100, 121 CLOCKORBIT_NUMIONOLAYERS = 4, 122 CLOCKORBIT_MAXIONOORDER = 16, 123 CLOCKORBIT_MAXIONODEGREE = 16 124 }; 125 126 enum COR_SATSYSTEM { 127 CLOCKORBIT_SATGPS=0, 128 CLOCKORBIT_SATGLONASS, 129 CLOCKORBIT_SATGALILEO, 130 CLOCKORBIT_SATQZSS, 131 CLOCKORBIT_SATSBAS, 132 CLOCKORBIT_SATBDS, 133 CLOCKORBIT_SATNUM 134 }; 135 136 enum COR_OFFSETS { 137 CLOCKORBIT_OFFSETGPS = 0, 138 CLOCKORBIT_OFFSETGLONASS = CLOCKORBIT_NUMGPS, 139 CLOCKORBIT_OFFSETGALILEO = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS, 140 CLOCKORBIT_OFFSETQZSS = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO, 141 CLOCKORBIT_OFFSETSBAS = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO 142 + CLOCKORBIT_NUMQZSS, 143 CLOCKORBIT_OFFSETBDS = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO 144 + CLOCKORBIT_NUMQZSS + CLOCKORBIT_NUMSBAS, 145 CLOCKORBIT_COUNTSAT = CLOCKORBIT_NUMGPS + CLOCKORBIT_NUMGLONASS + CLOCKORBIT_NUMGALILEO 146 + CLOCKORBIT_NUMQZSS + CLOCKORBIT_NUMSBAS + CLOCKORBIT_NUMBDS 147 }; 148 149 enum CodeType { 150 CODETYPEGPS_L1_CA = 0, 151 CODETYPEGPS_L1_P = 1, 152 CODETYPEGPS_L1_Z = 2, 153 //CODETYPEGPS_L1_Y = 3, 154 //CODETYPEGPS_L1_M = 4, 155 CODETYPEGPS_L2_CA = 5, 156 CODETYPEGPS_SEMI_CODELESS = 6, 157 CODETYPEGPS_L2C_M = 7, 158 CODETYPEGPS_L2C_L = 8, 159 CODETYPEGPS_L2C_ML = 9, 160 CODETYPEGPS_L2_P = 10, 161 CODETYPEGPS_L2_Z = 11, 162 //CODETYPEGPS_L2_Y = 12, 163 //CODETYPEGPS_L2_M = 13, 164 CODETYPEGPS_L5_I = 14, 165 CODETYPEGPS_L5_Q = 15, 166 CODETYPEGPS_L5_IQ = 16, 167 CODETYPEGPS_L1C_D = 17, 168 CODETYPEGPS_L1C_P = 18, 169 CODETYPEGPS_L1C_DP = 19, 170 171 CODETYPEGLONASS_L1_CA = 0, 172 CODETYPEGLONASS_L1_P = 1, 173 CODETYPEGLONASS_L2_CA = 2, 174 CODETYPEGLONASS_L2_P = 3, 175 CODETYPEGLONASS_L1a_OCd = 4, 176 CODETYPEGLONASS_L1a_OCp = 5, 177 CODETYPEGLONASS_L1a_OCdp = 6, 178 CODETYPEGLONASS_L2a_CSI = 7, 179 CODETYPEGLONASS_L2a_OCp = 8, 180 CODETYPEGLONASS_L2a_CSIOCp = 9, 181 CODETYPEGLONASS_L3_I = 10, 182 CODETYPEGLONASS_L3_Q = 11, 183 CODETYPEGLONASS_L3_IQ = 12, 184 185 CODETYPEGALILEO_E1_A = 0, 186 CODETYPEGALILEO_E1_B = 1, 187 CODETYPEGALILEO_E1_C = 2, 188 CODETYPEGALILEO_E1_BC = 3, 189 CODETYPEGALILEO_E1_ABC = 4, 190 CODETYPEGALILEO_E5A_I = 5, 191 CODETYPEGALILEO_E5A_Q = 6, 192 CODETYPEGALILEO_E5A_IQ = 7, 193 CODETYPEGALILEO_E5B_I = 8, 194 CODETYPEGALILEO_E5B_Q = 9, 195 CODETYPEGALILEO_E5B_IQ = 10, 196 CODETYPEGALILEO_E5_I = 11, 197 CODETYPEGALILEO_E5_Q = 12, 198 CODETYPEGALILEO_E5_IQ = 13, 199 CODETYPEGALILEO_E6_A = 14, 200 CODETYPEGALILEO_E6_B = 15, 201 CODETYPEGALILEO_E6_C = 16, 202 CODETYPEGALILEO_E6_BC = 17, 203 CODETYPEGALILEO_E6_ABC = 18, 204 205 CODETYPEQZSS_L1_CA = 0, 206 CODETYPEQZSS_L1C_D = 1, 207 CODETYPEQZSS_L1C_P = 2, 208 CODETYPEQZSS_L2C_M = 3, 209 CODETYPEQZSS_L2C_L = 4, 210 CODETYPEQZSS_L2C_ML = 5, 211 CODETYPEQZSS_L5_I = 6, 212 CODETYPEQZSS_L5_Q = 7, 213 CODETYPEQZSS_L5_IQ = 8, 214 CODETYPEQZSS_L6_D = 9, 215 CODETYPEQZSS_L6_P = 10, 216 CODETYPEQZSS_L6_DP = 11, 217 CODETYPEQZSS_L1C_DP = 12, 218 CODETYPEQZSS_L1_S = 13, 219 CODETYPEQZSS_L5_D = 14, 220 CODETYPEQZSS_L5_P = 15, 221 CODETYPEQZSS_L5_DP = 16, 222 CODETYPEQZSS_L6_E = 17, 223 CODETYPEQZSS_L6_DE = 18, 224 225 CODETYPE_SBAS_L1_CA = 0, 226 CODETYPE_SBAS_L5_I = 1, 227 CODETYPE_SBAS_L5_Q = 2, 228 CODETYPE_SBAS_L5_IQ = 3, 229 230 CODETYPE_BDS_B1_I = 0, 231 CODETYPE_BDS_B1_Q = 1, 232 CODETYPE_BDS_B1_IQ = 2, 233 CODETYPE_BDS_B3_I = 3, 234 CODETYPE_BDS_B3_Q = 4, 235 CODETYPE_BDS_B3_IQ = 5, 236 CODETYPE_BDS_B2_I = 6, 237 CODETYPE_BDS_B2_Q = 7, 238 CODETYPE_BDS_B2_IQ = 8, 239 CODETYPE_BDS_B1a_D = 9, 240 CODETYPE_BDS_B1a_P = 10, 241 CODETYPE_BDS_B1a_DP = 11, 242 CODETYPE_BDS_B2a_D = 12, 243 CODETYPE_BDS_B2a_P = 13, 244 CODETYPE_BDS_B2a_DP = 14 245 }; 246 247 #define SSR_MAXURA 5.5 /* > 5466.5mm in meter */ 248 249 /* satellite system data is stored with offset CLOCKORBIT_OFFSET... 250 in the data structures. So first GLONASS satellite is at 251 xxx->Sat[CLOCKORBIT_OFFSETGLONASS], first GPS satellite is 252 xxx->Sat[CLOCKORBIT_OFFSETGPS]. */ 253 254 struct ClockOrbit { 255 enum ClockOrbitType messageType; 256 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 257 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 258 unsigned int Supplied[COBOFS_NUM]; /* boolean */ 259 unsigned int SSRIOD; 260 unsigned int SSRProviderID; 261 unsigned int SSRSolutionID; 262 unsigned int UpdateInterval; 263 enum SatelliteReferenceDatum SatRefDatum; 264 struct SatData { 265 unsigned int ID; /* all */ 266 unsigned int IOD; /* all */ 267 unsigned int toe; /* SBAS, BDS */ 268 double UserRangeAccuracy; /* accuracy values in [m] */ 269 double hrclock; 270 struct OrbitPart { 271 double DeltaRadial; /* m */ 272 double DeltaAlongTrack; /* m */ 273 double DeltaCrossTrack; /* m */ 274 double DotDeltaRadial; /* m/s */ 275 double DotDeltaAlongTrack; /* m/s */ 276 double DotDeltaCrossTrack; /* m/s */ 277 } Orbit; 278 struct ClockPart { 279 double DeltaA0; /* m */ 280 double DeltaA1; /* m/s */ 281 double DeltaA2; /* m/ss */ 282 } Clock; 283 } Sat[CLOCKORBIT_COUNTSAT]; 284 }; 285 286 struct CodeBias { 287 enum CodeBiasType messageType; 288 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 289 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 290 unsigned int UpdateInterval; 291 unsigned int SSRIOD; 292 unsigned int SSRProviderID; 293 unsigned int SSRSolutionID; 294 struct BiasSat { 295 unsigned int ID; /* all */ 296 unsigned int NumberOfCodeBiases; 297 struct CodeBiasEntry { 298 enum CodeType Type; 299 float Bias; /* m */ 300 } Biases[CLOCKORBIT_NUMBIAS]; 301 } Sat[CLOCKORBIT_COUNTSAT]; 302 }; 303 304 struct PhaseBias { 305 enum PhaseBiasType messageType; 306 unsigned int EpochTime[CLOCKORBIT_SATNUM]; /* 0 .. system specific maximum */ 307 unsigned int NumberOfSat[CLOCKORBIT_SATNUM]; /* 0 .. CLOCKORBIT_NUM... */ 308 unsigned int UpdateInterval; 309 unsigned int SSRIOD; 310 unsigned int SSRProviderID; 311 unsigned int SSRSolutionID; 312 unsigned int DispersiveBiasConsistencyIndicator; 313 unsigned int MWConsistencyIndicator; 314 struct PhaseBiasSat { 315 unsigned int ID; /* all */ 316 unsigned int NumberOfPhaseBiases; 317 double YawAngle; /* radiant */ 318 double YawRate; /* radiant/s */ 319 struct PhaseBiasEntry { 320 enum CodeType Type; 321 unsigned int SignalIntegerIndicator; 322 unsigned int SignalsWideLaneIntegerIndicator; 323 unsigned int SignalDiscontinuityCounter; 324 float Bias; /* m */ 325 } Biases[CLOCKORBIT_NUMBIAS]; 326 } Sat[CLOCKORBIT_COUNTSAT]; 327 }; 328 329 struct VTEC { 330 unsigned int EpochTime; /* GPS */ 331 unsigned int UpdateInterval; 332 unsigned int SSRIOD; 333 unsigned int SSRProviderID; 334 unsigned int SSRSolutionID; 335 unsigned int NumLayers; /* 1-4 */ 336 double Quality; 337 struct IonoLayers { 338 double Height; /* m */ 339 unsigned int Degree; /* 1-16 */ 340 unsigned int Order; /* 1-16 */ 341 double Sinus[CLOCKORBIT_MAXIONODEGREE][CLOCKORBIT_MAXIONOORDER]; 342 double Cosinus[CLOCKORBIT_MAXIONODEGREE][CLOCKORBIT_MAXIONOORDER]; 343 } Layers[CLOCKORBIT_NUMIONOLAYERS]; 344 }; 345 346 /* return size of resulting data or 0 in case of an error */ 347 size_t MakeClockOrbit(const struct ClockOrbit *co, enum ClockOrbitType type, 348 int moremessagesfollow, char *buffer, size_t size); 349 size_t MakeCodeBias(const struct CodeBias *b, enum CodeBiasType type, 350 int moremessagesfollow, char *buffer, size_t size); 351 size_t MakePhaseBias(const struct PhaseBias *b, enum PhaseBiasType type, 352 int moremessagesfollow, char *buffer, size_t size); 353 size_t MakeVTEC(const struct VTEC *b, int moremessagesfollow, char *buffer, 354 size_t size); 355 356 enum GCOB_RETURN { 357 /* all well */ 358 GCOBR_MESSAGEFOLLOWS = 1, 359 GCOBR_OK = 0, 360 /* unknown data, a warning */ 361 GCOBR_UNKNOWNTYPE = -1, 362 GCOBR_UNKNOWNDATA = -2, 363 GCOBR_CRCMISMATCH = -3, 364 GCOBR_SHORTMESSAGE = -4, 365 /* failed to do the work */ 366 GCOBR_NOCLOCKORBITPARAMETER = -10, 367 GCOBR_NOCODEBIASPARAMETER = -11, 368 GCOBR_NOPHASEBIASPARAMETER = -12, 369 GCOBR_NOVTECPARAMETER = -13, 370 /* data mismatch - data in storage does not match new data */ 371 GCOBR_TIMEMISMATCH = -20, 372 GCOBR_DATAMISMATCH = -21, 373 /* not enough data - can decode the block completely */ 374 GCOBR_SHORTBUFFER = -30, 375 GCOBR_MESSAGEEXCEEDSBUFFER = -31}; 376 377 /* NOTE: When an error message has been emitted, the output structures may have been modified. Make a copy of the previous variant before calling the 378 function to have a clean state. */ 379 380 /* buffer should point to a RTCM3 block */ 381 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, struct VTEC *v, 382 struct PhaseBias *pb, const char *buffer, size_t size, int *bytesused); 14 #include "clock_orbit.h" 15 16 class SsrCorrRtcm: public SsrCorr { 17 //Q_OBJECT 18 19 public: 20 SsrCorrRtcm() { 21 setCorBase(); 22 setCorOffset(); 23 setCoType(); 24 setCbType(); 25 setPbType(); 26 setVtecType(); 27 setCodeType(); 28 29 satoffset << CLOCKORBIT_OFFSETGPS 30 << CLOCKORBIT_OFFSETGLONASS 31 << CLOCKORBIT_OFFSETGALILEO 32 << CLOCKORBIT_OFFSETQZSS 33 << CLOCKORBIT_OFFSETSBAS 34 << CLOCKORBIT_OFFSETBDS 35 << CLOCKORBIT_COUNTSAT; 36 }; 37 38 ~SsrCorrRtcm() {}; 39 40 void setCorBase() { 41 COBBASE_GPS = 1057; 42 COBBASE_GLONASS = 1063; 43 COBBASE_GALILEO = 1240; 44 COBBASE_QZSS = 1246; 45 COBBASE_SBAS = 1252; 46 COBBASE_BDS = 1258; 47 COBBASE_NUM = 6; 48 corbase << COBBASE_GPS 49 << COBBASE_GLONASS 50 << COBBASE_GALILEO 51 << COBBASE_QZSS 52 << COBBASE_SBAS 53 << COBBASE_BDS; 54 }; 55 56 void setCorOffset() { 57 COBOFS_ORBIT = 0; 58 COBOFS_CLOCK = 1; 59 COBOFS_CBIAS = 2; 60 COBOFS_COMBINED = 3; 61 COBOFS_URA = 4; 62 COBOFS_HR = 5; 63 COBOFS_NUM = 6; 64 }; 65 66 void setCoType() { 67 COTYPE_GPSORBIT = COBBASE_GPS + COBOFS_ORBIT; 68 COTYPE_GPSCLOCK = COTYPE_GPSORBIT + 1; 69 COTYPE_GPSCOMBINED = COBBASE_GPS + COBOFS_COMBINED; 70 COTYPE_GPSURA = COTYPE_GPSCOMBINED + 1; 71 COTYPE_GPSHR = COTYPE_GPSURA + 1; 72 73 COTYPE_GLONASSORBIT = COBBASE_GLONASS + COBOFS_ORBIT; 74 COTYPE_GLONASSCLOCK = COTYPE_GLONASSORBIT + 1; 75 COTYPE_GLONASSCOMBINED = COBBASE_GLONASS + COBOFS_COMBINED; 76 COTYPE_GLONASSURA = COTYPE_GLONASSCOMBINED + 1; 77 COTYPE_GLONASSHR = COTYPE_GLONASSURA + 1; 78 79 COTYPE_GALILEOORBIT = COBBASE_GALILEO + COBOFS_ORBIT, 80 COTYPE_GALILEOCLOCK = COTYPE_GALILEOORBIT + 1; 81 COTYPE_GALILEOCOMBINED = COBBASE_GALILEO + COBOFS_COMBINED; 82 COTYPE_GALILEOURA = COTYPE_GALILEOCOMBINED + 1; 83 COTYPE_GALILEOHR = COTYPE_GALILEOURA + 1; 84 85 COTYPE_QZSSORBIT = COBBASE_QZSS + COBOFS_ORBIT; 86 COTYPE_QZSSCLOCK = COTYPE_QZSSORBIT + 1; 87 COTYPE_QZSSCOMBINED = COBBASE_QZSS + COBOFS_COMBINED, 88 COTYPE_QZSSURA = COTYPE_QZSSCOMBINED + 1; 89 COTYPE_QZSSHR = COTYPE_QZSSURA + 1; 90 91 COTYPE_SBASORBIT = COBBASE_SBAS + COBOFS_ORBIT; 92 COTYPE_SBASCLOCK = COTYPE_SBASORBIT + 1; 93 COTYPE_SBASCOMBINED = COBBASE_SBAS + COBOFS_COMBINED; 94 COTYPE_SBASURA = COTYPE_SBASCOMBINED + 1; 95 COTYPE_SBASHR = COTYPE_SBASURA + 1; 96 97 COTYPE_BDSORBIT = COBBASE_BDS + COBOFS_ORBIT; 98 COTYPE_BDSCLOCK = COTYPE_BDSORBIT + 1; 99 COTYPE_BDSCOMBINED = COBBASE_BDS + COBOFS_COMBINED, 100 COTYPE_BDSURA = COTYPE_BDSCOMBINED + 1; 101 COTYPE_BDSHR = COTYPE_BDSURA + 1; 102 103 COTYPE_AUTO = 0; 104 }; 105 106 void setCbType() { 107 CBTYPE_GPS = COBBASE_GPS + COBOFS_CBIAS; 108 CBTYPE_GLONASS = COBBASE_GLONASS + COBOFS_CBIAS; 109 CBTYPE_GALILEO = COBBASE_GALILEO + COBOFS_CBIAS; 110 CBTYPE_QZSS = COBBASE_QZSS + COBOFS_CBIAS; 111 CBTYPE_SBAS = COBBASE_SBAS + COBOFS_CBIAS; 112 CBTYPE_BDS = COBBASE_BDS + COBOFS_CBIAS; 113 CBTYPE_AUTO = 0; 114 }; 115 116 void setPbType() { 117 PBTYPE_BASE = 1265; 118 PBTYPE_GPS = PBTYPE_BASE; 119 PBTYPE_GLONASS = PBTYPE_GPS++; 120 PBTYPE_GALILEO = PBTYPE_GLONASS++; 121 PBTYPE_QZSS = PBTYPE_GALILEO++; 122 PBTYPE_SBAS = PBTYPE_QZSS++; 123 PBTYPE_BDS = PBTYPE_SBAS++; 124 PBTYPE_AUTO = 0; 125 }; 126 127 void setVtecType() { 128 VTEC_BASE = 1264; 129 }; 130 131 void setCodeType() { 132 CODETYPE_GPS_L1_CA = 0; 133 CODETYPE_GPS_L1_P = 1; 134 CODETYPE_GPS_L1_Z = 2; 135 136 137 CODETYPE_GPS_L2_CA = 5; 138 CODETYPE_GPS_SEMI_CODELESS = 6; 139 CODETYPE_GPS_L2C_M = 7; 140 CODETYPE_GPS_L2C_L = 8; 141 CODETYPE_GPS_L2C_ML = 9; 142 CODETYPE_GPS_L2_P = 10; 143 CODETYPE_GPS_L2_Z = 11; 144 145 146 CODETYPE_GPS_L5_I = 14; 147 CODETYPE_GPS_L5_Q = 15; 148 CODETYPE_GPS_L5_IQ = 16; 149 CODETYPE_GPS_L1C_D = 17; 150 CODETYPE_GPS_L1C_P = 18; 151 CODETYPE_GPS_L1C_DP = 19; 152 153 CODETYPE_GLONASS_L1_CA = 0; 154 CODETYPE_GLONASS_L1_P = 1; 155 CODETYPE_GLONASS_L2_CA = 2; 156 CODETYPE_GLONASS_L2_P = 3; 157 CODETYPE_GLONASS_L1a_OCd = 4; 158 CODETYPE_GLONASS_L1a_OCp = 5; 159 CODETYPE_GLONASS_L1a_OCdp = 6; 160 CODETYPE_GLONASS_L2a_CSI = 7; 161 CODETYPE_GLONASS_L2a_OCp = 8; 162 CODETYPE_GLONASS_L2a_CSIOCp = 9; 163 CODETYPE_GLONASS_L3_I = 10; 164 CODETYPE_GLONASS_L3_Q = 11; 165 CODETYPE_GLONASS_L3_IQ = 12; 166 167 CODETYPE_GALILEO_E1_A = 0; 168 CODETYPE_GALILEO_E1_B = 1; 169 CODETYPE_GALILEO_E1_C = 2; 170 CODETYPE_GALILEO_E1_BC = 3; 171 CODETYPE_GALILEO_E1_ABC = 4; 172 CODETYPE_GALILEO_E5A_I = 5; 173 CODETYPE_GALILEO_E5A_Q = 6; 174 CODETYPE_GALILEO_E5A_IQ = 7; 175 CODETYPE_GALILEO_E5B_I = 8; 176 CODETYPE_GALILEO_E5B_Q = 9; 177 CODETYPE_GALILEO_E5B_IQ = 10; 178 CODETYPE_GALILEO_E5_I = 11; 179 CODETYPE_GALILEO_E5_Q = 12; 180 CODETYPE_GALILEO_E5_IQ = 13; 181 CODETYPE_GALILEO_E6_A = 14; 182 CODETYPE_GALILEO_E6_B = 15; 183 CODETYPE_GALILEO_E6_C = 16; 184 CODETYPE_GALILEO_E6_BC = 17; 185 CODETYPE_GALILEO_E6_ABC = 18; 186 187 CODETYPE_QZSS_L1_CA = 0; 188 CODETYPE_QZSS_L1C_D = 1; 189 CODETYPE_QZSS_L1C_P = 2; 190 CODETYPE_QZSS_L2C_M = 3; 191 CODETYPE_QZSS_L2C_L = 4; 192 CODETYPE_QZSS_L2C_ML = 5; 193 CODETYPE_QZSS_L5_I = 6; 194 CODETYPE_QZSS_L5_Q = 7; 195 CODETYPE_QZSS_L5_IQ = 8; 196 CODETYPE_QZSS_L6_D = 9; 197 CODETYPE_QZSS_L6_P = 10; 198 CODETYPE_QZSS_L6_DP = 11; 199 CODETYPE_QZSS_L1C_DP = 12; 200 CODETYPE_QZSS_L1_S = 13; 201 CODETYPE_QZSS_L5_D = 14; 202 CODETYPE_QZSS_L5_P = 15; 203 CODETYPE_QZSS_L5_DP = 16; 204 CODETYPE_QZSS_L6_E = 17; 205 CODETYPE_QZSS_L6_DE = 18; 206 207 CODETYPE_SBAS_L1_CA = 0; 208 CODETYPE_SBAS_L5_I = 1; 209 CODETYPE_SBAS_L5_Q = 2; 210 CODETYPE_SBAS_L5_IQ = 3; 211 212 CODETYPE_BDS_B1_I = 0; 213 CODETYPE_BDS_B1_Q = 1; 214 CODETYPE_BDS_B1_IQ = 2; 215 CODETYPE_BDS_B3_I = 3; 216 CODETYPE_BDS_B3_Q = 4; 217 CODETYPE_BDS_B3_IQ = 5; 218 CODETYPE_BDS_B2_I = 6; 219 CODETYPE_BDS_B2_Q = 7; 220 CODETYPE_BDS_B2_IQ = 8; 221 CODETYPE_BDS_B1a_D = 9; 222 CODETYPE_BDS_B1a_P = 10; 223 CODETYPE_BDS_B1a_DP = 11; 224 CODETYPE_BDS_B2a_D = 12; 225 CODETYPE_BDS_B2a_P = 13; 226 CODETYPE_BDS_B2a_DP = 14; 227 228 229 230 231 } 232 233 std::string codeTypeToRnxType(char system, CodeType type); 234 SsrCorr::CodeType rnxTypeToCodeType(char system, std::string type); 235 236 size_t MakeClockOrbit(const struct ClockOrbit *co, ClockOrbitType type, 237 int moremessagesfollow, char *buffer, size_t size); 238 size_t MakeCodeBias(const struct CodeBias *b, CodeBiasType type, 239 int moremessagesfollow, char *buffer, size_t size); 240 size_t MakePhaseBias(const struct PhaseBias *b, PhaseBiasType type, 241 int moremessagesfollow, char *buffer, size_t size); 242 size_t MakeVTEC(const struct VTEC *v, int moremessagesfollow, char *buffer, 243 size_t size); 244 enum GCOB_RETURN GetSSR(struct ClockOrbit *co, struct CodeBias *b, 245 struct VTEC *v, struct PhaseBias *pb, const char *buffer, size_t size, 246 int *bytesused); 247 }; 383 248 384 249 #endif /* RTCM3_CLOCK_ORBIT_RTCM_H */ -
trunk/BNC/src/bncwindow.cpp
r8936 r9025 515 515 // Upload Results 516 516 // ------------- 517 _uploadTable = new QTableWidget(0,1 4);518 _uploadTable->setHorizontalHeaderLabels(QString("Host, Port, Mount, Ntrip, User, Password, System, CoM, SP3 File, RNX File, PID, SID, IOD, bytes").split(","));517 _uploadTable = new QTableWidget(0,15); 518 _uploadTable->setHorizontalHeaderLabels(QString("Host, Port, Mount, Ntrip, User, Password, System, Format, CoM, SP3 File, RNX File, PID, SID, IOD, bytes").split(",")); 519 519 _uploadTable->setSelectionMode(QAbstractItemView::ExtendedSelection); 520 520 _uploadTable->setSelectionBehavior(QAbstractItemView::SelectRows); … … 526 526 _uploadTable->horizontalHeader()->resizeSection( 5, 8*ww); 527 527 _uploadTable->horizontalHeader()->resizeSection( 6,11*ww); 528 _uploadTable->horizontalHeader()->resizeSection( 7, 4*ww);529 _uploadTable->horizontalHeader()->resizeSection( 8, 15*ww);528 _uploadTable->horizontalHeader()->resizeSection( 7,11*ww); 529 _uploadTable->horizontalHeader()->resizeSection( 8, 4*ww); 530 530 _uploadTable->horizontalHeader()->resizeSection( 9,15*ww); 531 _uploadTable->horizontalHeader()->resizeSection(10, 4*ww);531 _uploadTable->horizontalHeader()->resizeSection(10,15*ww); 532 532 _uploadTable->horizontalHeader()->resizeSection(11, 4*ww); 533 533 _uploadTable->horizontalHeader()->resizeSection(12, 4*ww); 534 _uploadTable->horizontalHeader()->resizeSection(13,12*ww); 534 _uploadTable->horizontalHeader()->resizeSection(13, 4*ww); 535 _uploadTable->horizontalHeader()->resizeSection(14,12*ww); 535 536 #if QT_VERSION < 0x050000 536 537 _uploadTable->horizontalHeader()->setResizeMode(QHeaderView::Interactive); … … 1878 1879 for (int iCol = 0; iCol < _uploadTable->columnCount(); iCol++) { 1879 1880 if (_uploadTable->cellWidget(iRow, iCol) && 1880 (iCol == 3 || iCol == 4 || iCol == 5 || iCol == 6 || iCol == 7 )) {1881 (iCol == 3 || iCol == 4 || iCol == 5 || iCol == 6 || iCol == 7 || iCol == 8)) { 1881 1882 if (iCol == 3) { 1882 1883 QComboBox* ntripversion = (QComboBox*)(_uploadTable->cellWidget(iRow, iCol)); … … 1896 1897 } 1897 1898 else if (iCol == 7) { 1899 QComboBox* system = (QComboBox*)(_uploadTable->cellWidget(iRow, iCol)); 1900 hlp += system->currentText() + ","; 1901 } 1902 else if (iCol == 8) { 1898 1903 QCheckBox* com = (QCheckBox*)(_uploadTable->cellWidget(iRow, iCol)); 1899 1904 QString state; state.setNum(com->checkState()); … … 2709 2714 } 2710 2715 else if (iCol == 7) { 2716 QComboBox* format = new QComboBox(); 2717 format->setEditable(false); 2718 format->addItems(QString("IGS-SSR,RTCM-SSR").split(",")); 2719 format->setFrame(false); 2720 _uploadTable->setCellWidget(iRow, iCol, format); 2721 } 2722 else if (iCol == 8) { 2711 2723 QCheckBox* com = new QCheckBox(); 2712 2724 _uploadTable->setCellWidget(iRow, iCol, com); 2713 2725 } 2714 else if (iCol == 1 3) {2726 else if (iCol == 14) { 2715 2727 bncTableItem* bncIt = new bncTableItem(); 2716 2728 bncIt->setFlags(bncIt->flags() & ~Qt::ItemIsEditable); … … 2745 2757 for (int iRow = 0; iRow < _uploadTable->rowCount(); iRow++) { 2746 2758 BNC_CORE->_uploadTableItems[iRow] = 2747 (bncTableItem*) _uploadTable->item(iRow, 1 3);2759 (bncTableItem*) _uploadTable->item(iRow, 14); 2748 2760 } 2749 2761 nRows = _uploadTable->rowCount(); … … 2806 2818 } 2807 2819 else if (iCol == 7) { 2820 QComboBox* format = new QComboBox(); 2821 format->setEditable(false); 2822 format->addItems(QString("IGS-SSR,RTCM-SSR").split(",")); 2823 format->setFrame(false); 2824 format->setCurrentIndex(format->findText(hlp[iCol])); 2825 _uploadTable->setCellWidget(iRow, iCol, format); 2826 } 2827 else if (iCol == 8) { 2808 2828 QCheckBox* com = new QCheckBox(); 2809 2829 if (hlp[iCol].toInt() == Qt::Checked) { … … 2812 2832 _uploadTable->setCellWidget(iRow, iCol, com); 2813 2833 } 2814 else if (iCol == 1 3) {2834 else if (iCol == 14) { 2815 2835 bncTableItem* bncIt = new bncTableItem(); 2816 2836 bncIt->setFlags(bncIt->flags() & ~Qt::ItemIsEditable); -
trunk/BNC/src/combination/bnccomb.cpp
r8901 r9025 162 162 } 163 163 164 QString ssrFormat; 165 QListIterator<QString> it(settings.value("uploadMountpointsOut").toStringList()); 166 while (it.hasNext()) { 167 QStringList hlp = it.next().split(","); 168 if (hlp.size() > 7) { 169 ssrFormat = hlp[7]; 170 } 171 } 172 _ssrCorr = 0; 173 if (ssrFormat == "IGS-SSR") { 174 _ssrCorr = new SsrCorrIgs(); 175 } 176 else if (ssrFormat == "RTCM-SSR") { 177 _ssrCorr = new SsrCorrRtcm(); 178 } 179 180 164 181 _rtnetDecoder = 0; 165 182 … … 266 283 } 267 284 delete _rtnetDecoder; 285 if (_ssrCorr) { 286 delete _ssrCorr; 287 } 268 288 delete _antex; 269 289 for (int iPar = 1; iPar <= _params.size(); iPar++) { … … 714 734 715 735 QString outLines; 716 QStringList corrLines;736 //QStringList corrLines; 717 737 718 738 unsigned year, month, day, hour, minute; … … 770 790 771 791 QString line; 772 int messageType = COTYPE_GPSCOMBINED;792 int messageType = _ssrCorr->COTYPE_GPSCOMBINED; 773 793 int updateInt = 0; 774 794 line.sprintf("%d %d %d %.1f %s" … … 789 809 corr->_orbCorr._dotXr[2], 790 810 0.0); 791 corrLines << line;811 //corrLines << line; 792 812 793 813 delete corr; -
trunk/BNC/src/combination/bnccomb.h
r7299 r9025 7 7 #include "bncephuser.h" 8 8 #include "satObs.h" 9 #include "../RTCM3/clock_and_orbit/clock_orbit_rtcm.h" 10 #include "../RTCM3/clock_and_orbit/clock_orbit_igs.h" 9 11 10 12 class bncRtnetDecoder; … … 126 128 QMap<QString, QMap<t_prn, t_orbCorr> > _orbCorrections; 127 129 bncEphUser _ephUser; 130 SsrCorr* _ssrCorr; 128 131 }; 129 132 -
trunk/BNC/src/src.pri
r8969 r9025 63 63 RTCM3/RTCM3Decoder.h RTCM3/bits.h RTCM3/gnss.h \ 64 64 RTCM3/RTCM3coDecoder.h RTCM3/ephEncoder.h \ 65 RTCM3/clock_and_orbit/clock_orbit.h \ 66 RTCM3/clock_and_orbit/clock_orbit_igs.h \ 67 RTCM3/clock_and_orbit/clock_orbit_rtcm.h \ 65 68 rinex/rnxobsfile.h \ 66 69 rinex/rnxnavfile.h rinex/corrfile.h \ … … 99 102 RTCM3/RTCM3Decoder.cpp \ 100 103 RTCM3/RTCM3coDecoder.cpp RTCM3/ephEncoder.cpp \ 104 RTCM3/clock_and_orbit/clock_orbit_igs.cpp \ 105 RTCM3/clock_and_orbit/clock_orbit_rtcm.cpp \ 101 106 rinex/rnxobsfile.cpp \ 102 107 rinex/rnxnavfile.cpp rinex/corrfile.cpp \ … … 114 119 115 120 QT += network 116 117 118 # Format of SSR corrections119 # -------------------------120 DEFINES += USE_SSR_RTCM121 #DEFINES += USE_SSR_IGS122 contains(DEFINES, USE_SSR_IGS) {123 HEADERS += RTCM3/clock_and_orbit/clock_orbit_igs.h124 SOURCES += RTCM3/clock_and_orbit/clock_orbit_igs.c125 }126 else {127 HEADERS += RTCM3/clock_and_orbit/clock_orbit_rtcm.h128 SOURCES += RTCM3/clock_and_orbit/clock_orbit_rtcm.c129 }130 121 131 122 exists(PPP) { -
trunk/BNC/src/upload/bncrtnetdecoder.cpp
r8275 r9025 56 56 while (it.hasNext()) { 57 57 QStringList hlp = it.next().split(","); 58 if (hlp.size() > 6) {58 if (hlp.size() > 8) { 59 59 ++iRow; 60 60 int outPort = hlp[1].toInt(); 61 bool CoM = (hlp[ 7].toInt() == Qt::Checked);61 bool CoM = (hlp[8].toInt() == Qt::Checked); 62 62 int PID = 0; 63 if (hlp.size() > 1 0) {64 PID = hlp[1 0].toInt();63 if (hlp.size() > 11) { 64 PID = hlp[11].toInt(); 65 65 } 66 66 int SID = 0; 67 if (hlp.size() > 1 1) {68 SID = hlp[1 1].toInt();67 if (hlp.size() > 12) { 68 SID = hlp[12].toInt(); 69 69 } 70 70 int IOD = 0; 71 if (hlp.size() > 1 2) {72 IOD = hlp[1 2].toInt();71 if (hlp.size() > 13) { 72 IOD = hlp[13].toInt(); 73 73 } 74 74 bncRtnetUploadCaster* newCaster = new bncRtnetUploadCaster( 75 75 hlp[2], hlp[0], outPort, 76 76 hlp[3], hlp[4], 77 hlp[5], hlp[6], CoM,78 hlp[ 8], hlp[9],77 hlp[5], hlp[6], hlp[7], CoM, 78 hlp[9], hlp[10], 79 79 PID, SID, IOD, iRow); 80 80 newCaster->start(); -
trunk/BNC/src/upload/bncrtnetuploadcaster.cpp
r8991 r9025 31 31 const QString& ntripVersion, 32 32 const QString& userName, const QString& password, 33 const QString& crdTrafo, bool CoM, const QString& sp3FileName,33 const QString& crdTrafo, const QString& ssrFormat, bool CoM, const QString& sp3FileName, 34 34 const QString& rnxFileName, int PID, int SID, int IOD, int iRow) : 35 35 bncUploadCaster(mountpoint, outHost, outPort, ntripVersion, userName, password, iRow, 0) { 36 36 qDebug() << "bncRtnetUploadCaster"; 37 37 38 38 if (!mountpoint.isEmpty()) { … … 56 56 57 57 _crdTrafo = crdTrafo; 58 59 _ssrFormat = ssrFormat;qDebug() << _ssrFormat; 60 _ssrCorr = 0; 61 if (_ssrFormat == "IGS-SSR") {qDebug() << "bin hier IGS"; 62 _ssrCorr = new SsrCorrIgs(); 63 } 64 else if (_ssrFormat == "RTCM-SSR") {qDebug() << "bin hier RTCM"; 65 _ssrCorr = new SsrCorrRtcm(); 66 } 67 if (!_ssrCorr) { 68 qDebug() << "no _ssrCorr"; 69 } 58 70 _CoM = CoM; 59 71 _PID = PID; … … 228 240 delete _ephUser; 229 241 delete _usedEph; 242 delete _ssrCorr; 230 243 } 231 244 232 245 // 233 246 //////////////////////////////////////////////////////////////////////////// 234 void bncRtnetUploadCaster::decodeRtnetStream(char* buffer, int bufLen) { 235 247 void bncRtnetUploadCaster::decodeRtnetStream(char* buffer, int bufLen) {qDebug() << "decodeRtnetStream"; 248 qDebug() << "decodeRtnetStream"; 236 249 QMutexLocker locker(&_mutex); 237 250 … … 294 307 + _casterID.toLatin1(), false)); 295 308 296 struct ClockOrbit co;309 struct SsrCorr::ClockOrbit co; 297 310 memset(&co, 0, sizeof(co)); 298 311 co.EpochTime[CLOCKORBIT_SATGPS] = static_cast<int>(epoTime.gpssec()); 299 #ifdef USE_SSR_RTCM 300 double gt = epoTime.gpssec() + 3 * 3600 - gnumleap(year, month, day); 301 co.EpochTime[CLOCKORBIT_SATGLONASS] = static_cast<int>(fmod(gt, 86400.0)); 302 #elif USE_SSR_IGS 303 co.EpochTime[CLOCKORBIT_SATGLONASS] = static_cast<int>(epoTime.gpssec()); 304 #endif 312 if (_ssrFormat == "RTCM-SSR") { 313 double gt = epoTime.gpssec() + 3 * 3600 - gnumleap(year, month, day); 314 co.EpochTime[CLOCKORBIT_SATGLONASS] = static_cast<int>(fmod(gt, 86400.0)); 315 } 316 else if (_ssrFormat == "IGS-SSR") { 317 co.EpochTime[CLOCKORBIT_SATGLONASS] = static_cast<int>(epoTime.gpssec()); 318 } 305 319 co.EpochTime[CLOCKORBIT_SATGALILEO] = static_cast<int>(epoTime.gpssec()); 306 co.EpochTime[CLOCKORBIT_SATQZSS] = static_cast<int>(epoTime.gpssec()); 307 co.EpochTime[CLOCKORBIT_SATSBAS] = static_cast<int>(epoTime.gpssec()); 308 #ifdef USE_SSR_RTCM 309 co.EpochTime[CLOCKORBIT_SATBDS] = static_cast<int>(epoTime.bdssec()); 310 #elif USE_SSR_IGS 311 co.EpochTime[CLOCKORBIT_SATBDS] = static_cast<int>(epoTime.gpssec()); 312 #endif 313 co.Supplied[COBOFS_CLOCK] = 1; 314 co.Supplied[COBOFS_ORBIT] = 1; 315 co.SatRefDatum = DATUM_ITRF; 316 co.SSRIOD = _IOD; 320 co.EpochTime[CLOCKORBIT_SATQZSS] = static_cast<int>(epoTime.gpssec()); 321 co.EpochTime[CLOCKORBIT_SATSBAS] = static_cast<int>(epoTime.gpssec()); 322 if (_ssrFormat == "RTCM-SSR") { 323 co.EpochTime[CLOCKORBIT_SATBDS] = static_cast<int>(epoTime.bdssec()); 324 } 325 else if (_ssrFormat == "IGS-SSR") { 326 co.EpochTime[CLOCKORBIT_SATBDS] = static_cast<int>(epoTime.gpssec()); 327 } 328 co.Supplied[_ssrCorr->COBOFS_CLOCK] = 1; 329 co.Supplied[_ssrCorr->COBOFS_ORBIT] = 1; 330 co.SatRefDatum = _ssrCorr->DATUM_ITRF; // ToDo: to decode from RTNET format 331 co.SSRIOD = _IOD; 317 332 co.SSRProviderID = _PID; // 256 .. BKG, 257 ... EUREF 318 333 co.SSRSolutionID = _SID; 319 334 320 struct CodeBias bias;335 struct SsrCorr::CodeBias bias; 321 336 memset(&bias, 0, sizeof(bias)); 322 bias.EpochTime[CLOCKORBIT_SATGPS] = co.EpochTime[CLOCKORBIT_SATGPS];337 bias.EpochTime[CLOCKORBIT_SATGPS] = co.EpochTime[CLOCKORBIT_SATGPS]; 323 338 bias.EpochTime[CLOCKORBIT_SATGLONASS] = co.EpochTime[CLOCKORBIT_SATGLONASS]; 324 339 bias.EpochTime[CLOCKORBIT_SATGALILEO] = co.EpochTime[CLOCKORBIT_SATGALILEO]; 325 bias.EpochTime[CLOCKORBIT_SATQZSS] = co.EpochTime[CLOCKORBIT_SATQZSS];326 bias.EpochTime[CLOCKORBIT_SATSBAS] = co.EpochTime[CLOCKORBIT_SATSBAS];327 bias.EpochTime[CLOCKORBIT_SATBDS] = co.EpochTime[CLOCKORBIT_SATBDS];328 bias.SSRIOD = _IOD;340 bias.EpochTime[CLOCKORBIT_SATQZSS] = co.EpochTime[CLOCKORBIT_SATQZSS]; 341 bias.EpochTime[CLOCKORBIT_SATSBAS] = co.EpochTime[CLOCKORBIT_SATSBAS]; 342 bias.EpochTime[CLOCKORBIT_SATBDS] = co.EpochTime[CLOCKORBIT_SATBDS]; 343 bias.SSRIOD = _IOD; 329 344 bias.SSRProviderID = _PID; 330 345 bias.SSRSolutionID = _SID; 331 346 332 struct PhaseBias phasebias;347 struct SsrCorr::PhaseBias phasebias; 333 348 memset(&phasebias, 0, sizeof(phasebias)); 334 349 unsigned int dispersiveBiasConsistenyIndicator = 0; 335 350 unsigned int mwConsistencyIndicator = 0; 336 phasebias.EpochTime[CLOCKORBIT_SATGPS] = co.EpochTime[CLOCKORBIT_SATGPS];351 phasebias.EpochTime[CLOCKORBIT_SATGPS] = co.EpochTime[CLOCKORBIT_SATGPS]; 337 352 phasebias.EpochTime[CLOCKORBIT_SATGLONASS] = co.EpochTime[CLOCKORBIT_SATGLONASS]; 338 353 phasebias.EpochTime[CLOCKORBIT_SATGALILEO] = co.EpochTime[CLOCKORBIT_SATGALILEO]; 339 phasebias.EpochTime[CLOCKORBIT_SATQZSS] = co.EpochTime[CLOCKORBIT_SATQZSS];340 phasebias.EpochTime[CLOCKORBIT_SATSBAS] = co.EpochTime[CLOCKORBIT_SATSBAS];341 phasebias.EpochTime[CLOCKORBIT_SATBDS] = co.EpochTime[CLOCKORBIT_SATBDS];342 phasebias.SSRIOD = _IOD;354 phasebias.EpochTime[CLOCKORBIT_SATQZSS] = co.EpochTime[CLOCKORBIT_SATQZSS]; 355 phasebias.EpochTime[CLOCKORBIT_SATSBAS] = co.EpochTime[CLOCKORBIT_SATSBAS]; 356 phasebias.EpochTime[CLOCKORBIT_SATBDS] = co.EpochTime[CLOCKORBIT_SATBDS]; 357 phasebias.SSRIOD = _IOD; 343 358 phasebias.SSRProviderID = _PID; 344 359 phasebias.SSRSolutionID = _SID; 345 360 346 struct VTEC vtec;361 struct SsrCorr::VTEC vtec; 347 362 memset(&vtec, 0, sizeof(vtec)); 348 363 vtec.EpochTime = static_cast<int>(epoTime.gpssec()); 349 vtec.SSRIOD = _IOD;364 vtec.SSRIOD = _IOD; 350 365 vtec.SSRProviderID = _PID; 351 366 vtec.SSRSolutionID = _SID; … … 468 483 QString key; 469 484 int numVal = 0; 470 in >> key; 485 in >> key;qDebug() << key; 471 486 if (in.status() != QTextStream::Ok) { 472 487 break; … … 553 568 } 554 569 555 struct ClockOrbit::SatData* sd = 0;570 struct SsrCorr::ClockOrbit::SatData* sd = 0; 556 571 if (prn.system() == 'G') { 557 572 sd = co.Sat + co.NumberOfSat[CLOCKORBIT_SATGPS]; … … 599 614 // Code Biases 600 615 // ----------- 601 struct CodeBias::BiasSat* biasSat = 0;616 struct SsrCorr::CodeBias::BiasSat* biasSat = 0; 602 617 if (!codeBiases.isEmpty()) { 603 618 if (prn.system() == 'G') { … … 639 654 biasSat->ID = prn.number(); 640 655 biasSat->NumberOfCodeBiases = 0; 641 if (prn.system() == 'G') { 642 QMapIterator<QString, double> it(codeBiases); 643 while (it.hasNext()) { 644 it.next(); 645 if (it.key() == "1C") { 646 int ii = biasSat->NumberOfCodeBiases; 647 if (ii >= CLOCKORBIT_NUMBIAS) 648 break; 649 biasSat->NumberOfCodeBiases += 1; 650 biasSat->Biases[ii].Type = CODETYPEGPS_L1_CA; 651 biasSat->Biases[ii].Bias = it.value(); 652 } 653 else if (it.key() == "1S") { 654 int ii = biasSat->NumberOfCodeBiases; 655 if (ii >= CLOCKORBIT_NUMBIAS) 656 break; 657 biasSat->NumberOfCodeBiases += 1; 658 biasSat->Biases[ii].Type = CODETYPEGPS_L1C_D; 659 biasSat->Biases[ii].Bias = it.value(); 660 } 661 else if (it.key() == "1L") { 662 int ii = biasSat->NumberOfCodeBiases; 663 if (ii >= CLOCKORBIT_NUMBIAS) 664 break; 665 biasSat->NumberOfCodeBiases += 1; 666 biasSat->Biases[ii].Type = CODETYPEGPS_L1C_P; 667 biasSat->Biases[ii].Bias = it.value(); 668 } 669 #ifdef USE_SSR_RTCM 670 else if (it.key() == "1X") { 671 int ii = biasSat->NumberOfCodeBiases; 672 if (ii >= CLOCKORBIT_NUMBIAS) 673 break; 674 biasSat->NumberOfCodeBiases += 1; 675 biasSat->Biases[ii].Type = CODETYPEGPS_L1C_DP; 676 biasSat->Biases[ii].Bias = it.value(); 677 } 678 #endif 679 else if (it.key() == "1P") { 680 int ii = biasSat->NumberOfCodeBiases; 681 if (ii >= CLOCKORBIT_NUMBIAS) 682 break; 683 biasSat->NumberOfCodeBiases += 1; 684 biasSat->Biases[ii].Type = CODETYPEGPS_L1_P; 685 biasSat->Biases[ii].Bias = it.value(); 686 } 687 else if (it.key() == "1W") { 688 int ii = biasSat->NumberOfCodeBiases; 689 if (ii >= CLOCKORBIT_NUMBIAS) 690 break; 691 biasSat->NumberOfCodeBiases += 1; 692 biasSat->Biases[ii].Type = CODETYPEGPS_L1_Z; 693 biasSat->Biases[ii].Bias = it.value(); 694 } 695 else if (it.key() == "2C") { 696 int ii = biasSat->NumberOfCodeBiases; 697 if (ii >= CLOCKORBIT_NUMBIAS) 698 break; 699 biasSat->NumberOfCodeBiases += 1; 700 biasSat->Biases[ii].Type = CODETYPEGPS_L2_CA; 701 biasSat->Biases[ii].Bias = it.value(); 702 } 703 else if (it.key() == "2D") { 704 int ii = biasSat->NumberOfCodeBiases; 705 if (ii >= CLOCKORBIT_NUMBIAS) 706 break; 707 biasSat->NumberOfCodeBiases += 1; 708 biasSat->Biases[ii].Type = CODETYPEGPS_SEMI_CODELESS; 709 biasSat->Biases[ii].Bias = it.value(); 710 } 711 else if (it.key() == "2S") { 712 int ii = biasSat->NumberOfCodeBiases; 713 if (ii >= CLOCKORBIT_NUMBIAS) 714 break; 715 biasSat->NumberOfCodeBiases += 1; 716 biasSat->Biases[ii].Type = CODETYPEGPS_L2C_M; 717 biasSat->Biases[ii].Bias = it.value(); 718 } 719 else if (it.key() == "2L") { 720 int ii = biasSat->NumberOfCodeBiases; 721 if (ii >= CLOCKORBIT_NUMBIAS) 722 break; 723 biasSat->NumberOfCodeBiases += 1; 724 biasSat->Biases[ii].Type = CODETYPEGPS_L2C_L; 725 biasSat->Biases[ii].Bias = it.value(); 726 } 727 #ifdef USE_SSR_RTCM 728 else if (it.key() == "2X") { 729 int ii = biasSat->NumberOfCodeBiases; 730 if (ii >= CLOCKORBIT_NUMBIAS) 731 break; 732 biasSat->NumberOfCodeBiases += 1; 733 biasSat->Biases[ii].Type = CODETYPEGPS_L2C_ML; 734 biasSat->Biases[ii].Bias = it.value(); 735 } 736 #endif 737 else if (it.key() == "2P") { 738 int ii = biasSat->NumberOfCodeBiases; 739 if (ii >= CLOCKORBIT_NUMBIAS) 740 break; 741 biasSat->NumberOfCodeBiases += 1; 742 biasSat->Biases[ii].Type = CODETYPEGPS_L2_P; 743 biasSat->Biases[ii].Bias = it.value(); 744 } 745 else if (it.key() == "2W") { 746 int ii = biasSat->NumberOfCodeBiases; 747 if (ii >= CLOCKORBIT_NUMBIAS) 748 break; 749 biasSat->NumberOfCodeBiases += 1; 750 biasSat->Biases[ii].Type = CODETYPEGPS_L2_Z; 751 biasSat->Biases[ii].Bias = it.value(); 752 } 753 else if (it.key() == "5I") { 754 int ii = biasSat->NumberOfCodeBiases; 755 if (ii >= CLOCKORBIT_NUMBIAS) 756 break; 757 biasSat->NumberOfCodeBiases += 1; 758 biasSat->Biases[ii].Type = CODETYPEGPS_L5_I; 759 biasSat->Biases[ii].Bias = it.value(); 760 } 761 else if (it.key() == "5Q") { 762 int ii = biasSat->NumberOfCodeBiases; 763 if (ii >= CLOCKORBIT_NUMBIAS) 764 break; 765 biasSat->NumberOfCodeBiases += 1; 766 biasSat->Biases[ii].Type = CODETYPEGPS_L5_Q; 767 biasSat->Biases[ii].Bias = it.value(); 768 } 769 #ifdef USE_SSR_RTCM 770 else if (it.key() == "5X") { 771 int ii = biasSat->NumberOfCodeBiases; 772 if (ii >= CLOCKORBIT_NUMBIAS) 773 break; 774 biasSat->NumberOfCodeBiases += 1; 775 biasSat->Biases[ii].Type = CODETYPEGPS_L5_IQ; 776 biasSat->Biases[ii].Bias = it.value(); 777 } 778 #endif 779 } 780 } 781 else if (prn.system() == 'R') { 782 QMapIterator<QString, double> it(codeBiases); 783 while (it.hasNext()) { 784 it.next(); 785 if (it.key() == "1C") { 786 int ii = biasSat->NumberOfCodeBiases; 787 if (ii >= CLOCKORBIT_NUMBIAS) 788 break; 789 biasSat->NumberOfCodeBiases += 1; 790 biasSat->Biases[ii].Type = CODETYPEGLONASS_L1_CA; 791 biasSat->Biases[ii].Bias = it.value(); 792 } 793 else if (it.key() == "1P") { 794 int ii = biasSat->NumberOfCodeBiases; 795 if (ii >= CLOCKORBIT_NUMBIAS) 796 break; 797 biasSat->NumberOfCodeBiases += 1; 798 biasSat->Biases[ii].Type = CODETYPEGLONASS_L1_P; 799 biasSat->Biases[ii].Bias = it.value(); 800 } 801 else if (it.key() == "2C") { 802 int ii = biasSat->NumberOfCodeBiases; 803 if (ii >= CLOCKORBIT_NUMBIAS) 804 break; 805 biasSat->NumberOfCodeBiases += 1; 806 biasSat->Biases[ii].Type = CODETYPEGLONASS_L2_CA; 807 biasSat->Biases[ii].Bias = it.value(); 808 } 809 else if (it.key() == "2P") { 810 int ii = biasSat->NumberOfCodeBiases; 811 if (ii >= CLOCKORBIT_NUMBIAS) 812 break; 813 biasSat->NumberOfCodeBiases += 1; 814 biasSat->Biases[ii].Type = CODETYPEGLONASS_L2_P; 815 biasSat->Biases[ii].Bias = it.value(); 816 } 817 else if (it.key() == "4A") { 818 int ii = biasSat->NumberOfCodeBiases; 819 if (ii >= CLOCKORBIT_NUMBIAS) 820 break; 821 biasSat->NumberOfCodeBiases += 1; 822 biasSat->Biases[ii].Type = CODETYPEGLONASS_L1a_OCd; 823 biasSat->Biases[ii].Bias = it.value(); 824 } 825 else if (it.key() == "4B") { 826 int ii = biasSat->NumberOfCodeBiases; 827 if (ii >= CLOCKORBIT_NUMBIAS) 828 break; 829 biasSat->NumberOfCodeBiases += 1; 830 biasSat->Biases[ii].Type = CODETYPEGLONASS_L1a_OCp; 831 biasSat->Biases[ii].Bias = it.value(); 832 } 833 #ifdef USE_SSR_RTCM 834 else if (it.key() == "4X") { 835 int ii = biasSat->NumberOfCodeBiases; 836 if (ii >= CLOCKORBIT_NUMBIAS) 837 break; 838 biasSat->NumberOfCodeBiases += 1; 839 biasSat->Biases[ii].Type = CODETYPEGLONASS_L1a_OCdp; 840 biasSat->Biases[ii].Bias = it.value(); 841 } 842 #endif 843 else if (it.key() == "6A") { 844 int ii = biasSat->NumberOfCodeBiases; 845 if (ii >= CLOCKORBIT_NUMBIAS) 846 break; 847 biasSat->NumberOfCodeBiases += 1; 848 biasSat->Biases[ii].Type = CODETYPEGLONASS_L2a_CSI; 849 biasSat->Biases[ii].Bias = it.value(); 850 } 851 else if (it.key() == "6B") { 852 int ii = biasSat->NumberOfCodeBiases; 853 if (ii >= CLOCKORBIT_NUMBIAS) 854 break; 855 biasSat->NumberOfCodeBiases += 1; 856 biasSat->Biases[ii].Type = CODETYPEGLONASS_L2a_OCp; 857 biasSat->Biases[ii].Bias = it.value(); 858 } 859 #ifdef USE_SSR_RTCM 860 else if (it.key() == "6X") { 861 int ii = biasSat->NumberOfCodeBiases; 862 if (ii >= CLOCKORBIT_NUMBIAS) 863 break; 864 biasSat->NumberOfCodeBiases += 1; 865 biasSat->Biases[ii].Type = CODETYPEGLONASS_L2a_CSIOCp; 866 biasSat->Biases[ii].Bias = it.value(); 867 } 868 #endif 869 else if (it.key() == "3I") { 870 int ii = biasSat->NumberOfCodeBiases; 871 if (ii >= CLOCKORBIT_NUMBIAS) 872 break; 873 biasSat->NumberOfCodeBiases += 1; 874 biasSat->Biases[ii].Type = CODETYPEGLONASS_L3_I; 875 biasSat->Biases[ii].Bias = it.value(); 876 } 877 else if (it.key() == "3Q") { 878 int ii = biasSat->NumberOfCodeBiases; 879 if (ii >= CLOCKORBIT_NUMBIAS) 880 break; 881 biasSat->NumberOfCodeBiases += 1; 882 biasSat->Biases[ii].Type = CODETYPEGLONASS_L3_Q; 883 biasSat->Biases[ii].Bias = it.value(); 884 } 885 #ifdef USE_SSR_RTCM 886 else if (it.key() == "3X") { 887 int ii = biasSat->NumberOfCodeBiases; 888 if (ii >= CLOCKORBIT_NUMBIAS) 889 break; 890 biasSat->NumberOfCodeBiases += 1; 891 biasSat->Biases[ii].Type = CODETYPEGLONASS_L3_IQ; 892 biasSat->Biases[ii].Bias = it.value(); 893 } 894 #endif 895 } 896 } 897 else if (prn.system() == 'E') { 898 QMapIterator<QString, double> it(codeBiases); 899 while (it.hasNext()) { 900 it.next(); 901 if (it.key() == "1A") { 902 int ii = biasSat->NumberOfCodeBiases; 903 if (ii >= CLOCKORBIT_NUMBIAS) 904 break; 905 biasSat->NumberOfCodeBiases += 1; 906 biasSat->Biases[ii].Type = CODETYPEGALILEO_E1_A; 907 biasSat->Biases[ii].Bias = it.value(); 908 } 909 else if (it.key() == "1B") { 910 int ii = biasSat->NumberOfCodeBiases; 911 if (ii >= CLOCKORBIT_NUMBIAS) 912 break; 913 biasSat->NumberOfCodeBiases += 1; 914 biasSat->Biases[ii].Type = CODETYPEGALILEO_E1_B; 915 biasSat->Biases[ii].Bias = it.value(); 916 } 917 else if (it.key() == "1C") { 918 int ii = biasSat->NumberOfCodeBiases; 919 if (ii >= CLOCKORBIT_NUMBIAS) 920 break; 921 biasSat->NumberOfCodeBiases += 1; 922 biasSat->Biases[ii].Type = CODETYPEGALILEO_E1_C; 923 biasSat->Biases[ii].Bias = it.value(); 924 } 925 #ifdef USE_SSR_RTCM 926 else if (it.key() == "1X") { 927 int ii = biasSat->NumberOfCodeBiases; 928 if (ii >= CLOCKORBIT_NUMBIAS) 929 break; 930 biasSat->NumberOfCodeBiases += 1; 931 biasSat->Biases[ii].Type = CODETYPEGALILEO_E1_BC; 932 biasSat->Biases[ii].Bias = it.value(); 933 } 934 else if (it.key() == "1Z") { 935 int ii = biasSat->NumberOfCodeBiases; 936 if (ii >= CLOCKORBIT_NUMBIAS) 937 break; 938 biasSat->NumberOfCodeBiases += 1; 939 biasSat->Biases[ii].Type = CODETYPEGALILEO_E1_ABC; 940 biasSat->Biases[ii].Bias = it.value(); 941 } 942 #endif 943 else if (it.key() == "5I") { 944 int ii = biasSat->NumberOfCodeBiases; 945 if (ii >= CLOCKORBIT_NUMBIAS) 946 break; 947 biasSat->NumberOfCodeBiases += 1; 948 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5A_I; 949 biasSat->Biases[ii].Bias = it.value(); 950 } 951 else if (it.key() == "5Q") { 952 int ii = biasSat->NumberOfCodeBiases; 953 if (ii >= CLOCKORBIT_NUMBIAS) 954 break; 955 biasSat->NumberOfCodeBiases += 1; 956 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5A_Q; 957 biasSat->Biases[ii].Bias = it.value(); 958 } 959 #ifdef USE_SSR_RTCM 960 else if (it.key() == "5X") { 961 int ii = biasSat->NumberOfCodeBiases; 962 if (ii >= CLOCKORBIT_NUMBIAS) 963 break; 964 biasSat->NumberOfCodeBiases += 1; 965 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5A_IQ; 966 biasSat->Biases[ii].Bias = it.value(); 967 } 968 #endif 969 else if (it.key() == "7I") { 970 int ii = biasSat->NumberOfCodeBiases; 971 if (ii >= CLOCKORBIT_NUMBIAS) 972 break; 973 biasSat->NumberOfCodeBiases += 1; 974 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5B_I; 975 biasSat->Biases[ii].Bias = it.value(); 976 } 977 else if (it.key() == "7Q") { 978 int ii = biasSat->NumberOfCodeBiases; 979 if (ii >= CLOCKORBIT_NUMBIAS) 980 break; 981 biasSat->NumberOfCodeBiases += 1; 982 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5B_Q; 983 biasSat->Biases[ii].Bias = it.value(); 984 } 985 #ifdef USE_SSR_RTCM 986 else if (it.key() == "7X") { 987 int ii = biasSat->NumberOfCodeBiases; 988 if (ii >= CLOCKORBIT_NUMBIAS) 989 break; 990 biasSat->NumberOfCodeBiases += 1; 991 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5B_IQ; 992 biasSat->Biases[ii].Bias = it.value(); 993 } 994 else if (it.key() == "8I") { 995 int ii = biasSat->NumberOfCodeBiases; 996 if (ii >= CLOCKORBIT_NUMBIAS) 997 break; 998 biasSat->NumberOfCodeBiases += 1; 999 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5_I; 1000 biasSat->Biases[ii].Bias = it.value(); 1001 } 1002 else if (it.key() == "8Q") { 1003 int ii = biasSat->NumberOfCodeBiases; 1004 if (ii >= CLOCKORBIT_NUMBIAS) 1005 break; 1006 biasSat->NumberOfCodeBiases += 1; 1007 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5_Q; 1008 biasSat->Biases[ii].Bias = it.value(); 1009 } 1010 else if (it.key() == "8X") { 1011 int ii = biasSat->NumberOfCodeBiases; 1012 if (ii >= CLOCKORBIT_NUMBIAS) 1013 break; 1014 biasSat->NumberOfCodeBiases += 1; 1015 biasSat->Biases[ii].Type = CODETYPEGALILEO_E5_IQ; 1016 biasSat->Biases[ii].Bias = it.value(); 1017 } 1018 #endif 1019 else if (it.key() == "6A") { 1020 int ii = biasSat->NumberOfCodeBiases; 1021 if (ii >= CLOCKORBIT_NUMBIAS) 1022 break; 1023 biasSat->NumberOfCodeBiases += 1; 1024 biasSat->Biases[ii].Type = CODETYPEGALILEO_E6_A; 1025 biasSat->Biases[ii].Bias = it.value(); 1026 } 1027 else if (it.key() == "6B") { 1028 int ii = biasSat->NumberOfCodeBiases; 1029 if (ii >= CLOCKORBIT_NUMBIAS) 1030 break; 1031 biasSat->NumberOfCodeBiases += 1; 1032 biasSat->Biases[ii].Type = CODETYPEGALILEO_E6_B; 1033 biasSat->Biases[ii].Bias = it.value(); 1034 } 1035 else if (it.key() == "6C") { 1036 int ii = biasSat->NumberOfCodeBiases; 1037 if (ii >= CLOCKORBIT_NUMBIAS) 1038 break; 1039 biasSat->NumberOfCodeBiases += 1; 1040 biasSat->Biases[ii].Type = CODETYPEGALILEO_E6_C; 1041 biasSat->Biases[ii].Bias = it.value(); 1042 } 1043 #ifdef USE_SSR_RTCM 1044 else if (it.key() == "6X") { 1045 int ii = biasSat->NumberOfCodeBiases; 1046 if (ii >= CLOCKORBIT_NUMBIAS) 1047 break; 1048 biasSat->NumberOfCodeBiases += 1; 1049 biasSat->Biases[ii].Type = CODETYPEGALILEO_E6_BC; 1050 biasSat->Biases[ii].Bias = it.value(); 1051 } 1052 else if (it.key() == "6Z") { 1053 int ii = biasSat->NumberOfCodeBiases; 1054 if (ii >= CLOCKORBIT_NUMBIAS) 1055 break; 1056 biasSat->NumberOfCodeBiases += 1; 1057 biasSat->Biases[ii].Type = CODETYPEGALILEO_E6_ABC; 1058 biasSat->Biases[ii].Bias = it.value(); 1059 } 1060 #endif 1061 } 1062 } 1063 else if (prn.system() == 'J') { 1064 QMapIterator<QString, double> it(codeBiases); 1065 while (it.hasNext()) { 1066 it.next(); 1067 if (it.key() == "1C") { 1068 int ii = biasSat->NumberOfCodeBiases; 1069 if (ii >= CLOCKORBIT_NUMBIAS) 1070 break; 1071 biasSat->NumberOfCodeBiases += 1; 1072 biasSat->Biases[ii].Type = CODETYPEQZSS_L1_CA; 1073 biasSat->Biases[ii].Bias = it.value(); 1074 } 1075 else if (it.key() == "1S") { 1076 int ii = biasSat->NumberOfCodeBiases; 1077 if (ii >= CLOCKORBIT_NUMBIAS) 1078 break; 1079 biasSat->NumberOfCodeBiases += 1; 1080 biasSat->Biases[ii].Type = CODETYPEQZSS_L1C_D; 1081 biasSat->Biases[ii].Bias = it.value(); 1082 } 1083 else if (it.key() == "1L") { 1084 int ii = biasSat->NumberOfCodeBiases; 1085 if (ii >= CLOCKORBIT_NUMBIAS) 1086 break; 1087 biasSat->NumberOfCodeBiases += 1; 1088 biasSat->Biases[ii].Type = CODETYPEQZSS_L1C_P; 1089 biasSat->Biases[ii].Bias = it.value(); 1090 } 1091 else if (it.key() == "2S") { 1092 int ii = biasSat->NumberOfCodeBiases; 1093 if (ii >= CLOCKORBIT_NUMBIAS) 1094 break; 1095 biasSat->NumberOfCodeBiases += 1; 1096 biasSat->Biases[ii].Type = CODETYPEQZSS_L2C_M; 1097 biasSat->Biases[ii].Bias = it.value(); 1098 } 1099 else if (it.key() == "2L") { 1100 int ii = biasSat->NumberOfCodeBiases; 1101 if (ii >= CLOCKORBIT_NUMBIAS) 1102 break; 1103 biasSat->NumberOfCodeBiases += 1; 1104 biasSat->Biases[ii].Type = CODETYPEQZSS_L2C_L; 1105 biasSat->Biases[ii].Bias = it.value(); 1106 } 1107 #ifdef USE_SSR_RTCM 1108 else if (it.key() == "2X") { 1109 int ii = biasSat->NumberOfCodeBiases; 1110 if (ii >= CLOCKORBIT_NUMBIAS) 1111 break; 1112 biasSat->NumberOfCodeBiases += 1; 1113 biasSat->Biases[ii].Type = CODETYPEQZSS_L2C_ML; 1114 biasSat->Biases[ii].Bias = it.value(); 1115 } 1116 #endif 1117 else if (it.key() == "5I") { 1118 int ii = biasSat->NumberOfCodeBiases; 1119 if (ii >= CLOCKORBIT_NUMBIAS) 1120 break; 1121 biasSat->NumberOfCodeBiases += 1; 1122 biasSat->Biases[ii].Type = CODETYPEQZSS_L5_I; 1123 biasSat->Biases[ii].Bias = it.value(); 1124 } 1125 else if (it.key() == "5Q") { 1126 int ii = biasSat->NumberOfCodeBiases; 1127 if (ii >= CLOCKORBIT_NUMBIAS) 1128 break; 1129 biasSat->NumberOfCodeBiases += 1; 1130 biasSat->Biases[ii].Type = CODETYPEQZSS_L5_Q; 1131 biasSat->Biases[ii].Bias = it.value(); 1132 } 1133 #ifdef USE_SSR_RTCM 1134 else if (it.key() == "5X") { 1135 int ii = biasSat->NumberOfCodeBiases; 1136 if (ii >= CLOCKORBIT_NUMBIAS) 1137 break; 1138 biasSat->NumberOfCodeBiases += 1; 1139 biasSat->Biases[ii].Type = CODETYPEQZSS_L5_IQ; 1140 biasSat->Biases[ii].Bias = it.value(); 1141 } 1142 #endif 1143 else if (it.key() == "6S") { 1144 int ii = biasSat->NumberOfCodeBiases; 1145 if (ii >= CLOCKORBIT_NUMBIAS) 1146 break; 1147 biasSat->NumberOfCodeBiases += 1; 1148 biasSat->Biases[ii].Type = CODETYPEQZSS_L6_D; 1149 biasSat->Biases[ii].Bias = it.value(); 1150 } 1151 else if (it.key() == "6L") { 1152 int ii = biasSat->NumberOfCodeBiases; 1153 if (ii >= CLOCKORBIT_NUMBIAS) 1154 break; 1155 biasSat->NumberOfCodeBiases += 1; 1156 biasSat->Biases[ii].Type = CODETYPEQZSS_L6_P; 1157 biasSat->Biases[ii].Bias = it.value(); 1158 } 1159 #ifdef USE_SSR_RTCM 1160 else if (it.key() == "6X") { 1161 int ii = biasSat->NumberOfCodeBiases; 1162 if (ii >= CLOCKORBIT_NUMBIAS) 1163 break; 1164 biasSat->NumberOfCodeBiases += 1; 1165 biasSat->Biases[ii].Type = CODETYPEQZSS_L6_DP; 1166 biasSat->Biases[ii].Bias = it.value(); 1167 } 1168 else if (it.key() == "1X") { 1169 int ii = biasSat->NumberOfCodeBiases; 1170 if (ii >= CLOCKORBIT_NUMBIAS) 1171 break; 1172 biasSat->NumberOfCodeBiases += 1; 1173 biasSat->Biases[ii].Type = CODETYPEQZSS_L1C_DP; 1174 biasSat->Biases[ii].Bias = it.value(); 1175 } 1176 else if (it.key() == "1Z") { 1177 int ii = biasSat->NumberOfCodeBiases; 1178 if (ii >= CLOCKORBIT_NUMBIAS) 1179 break; 1180 biasSat->NumberOfCodeBiases += 1; 1181 biasSat->Biases[ii].Type = CODETYPEQZSS_L1_S; 1182 biasSat->Biases[ii].Bias = it.value(); 1183 } 1184 else if (it.key() == "5D") { 1185 int ii = biasSat->NumberOfCodeBiases; 1186 if (ii >= CLOCKORBIT_NUMBIAS) 1187 break; 1188 biasSat->NumberOfCodeBiases += 1; 1189 biasSat->Biases[ii].Type = CODETYPEQZSS_L5_D; 1190 biasSat->Biases[ii].Bias = it.value(); 1191 } 1192 else if (it.key() == "5P") { 1193 int ii = biasSat->NumberOfCodeBiases; 1194 if (ii >= CLOCKORBIT_NUMBIAS) 1195 break; 1196 biasSat->NumberOfCodeBiases += 1; 1197 biasSat->Biases[ii].Type = CODETYPEQZSS_L5_P; 1198 biasSat->Biases[ii].Bias = it.value(); 1199 } 1200 else if (it.key() == "5Z") { 1201 int ii = biasSat->NumberOfCodeBiases; 1202 if (ii >= CLOCKORBIT_NUMBIAS) 1203 break; 1204 biasSat->NumberOfCodeBiases += 1; 1205 biasSat->Biases[ii].Type = CODETYPEQZSS_L5_DP; 1206 biasSat->Biases[ii].Bias = it.value(); 1207 } 1208 #endif 1209 else if (it.key() == "6E") { 1210 int ii = biasSat->NumberOfCodeBiases; 1211 if (ii >= CLOCKORBIT_NUMBIAS) 1212 break; 1213 biasSat->NumberOfCodeBiases += 1; 1214 biasSat->Biases[ii].Type = CODETYPEQZSS_L6_E; 1215 biasSat->Biases[ii].Bias = it.value(); 1216 } 1217 #ifdef USE_SSR_RTCM 1218 else if (it.key() == "6Z") { 1219 int ii = biasSat->NumberOfCodeBiases; 1220 if (ii >= CLOCKORBIT_NUMBIAS) 1221 break; 1222 biasSat->NumberOfCodeBiases += 1; 1223 biasSat->Biases[ii].Type = CODETYPEQZSS_L6_DE; 1224 biasSat->Biases[ii].Bias = it.value(); 1225 } 1226 #endif 1227 } 1228 } 1229 else if (prn.system() == 'S') { 1230 QMapIterator<QString, double> it(codeBiases); 1231 while (it.hasNext()) { 1232 it.next(); 1233 if (it.key() == "1C") { 1234 int ii = biasSat->NumberOfCodeBiases; 1235 if (ii >= CLOCKORBIT_NUMBIAS) 1236 break; 1237 biasSat->NumberOfCodeBiases += 1; 1238 biasSat->Biases[ii].Type = CODETYPE_SBAS_L1_CA; 1239 biasSat->Biases[ii].Bias = it.value(); 1240 } 1241 else if (it.key() == "5I") { 1242 int ii = biasSat->NumberOfCodeBiases; 1243 if (ii >= CLOCKORBIT_NUMBIAS) 1244 break; 1245 biasSat->NumberOfCodeBiases += 1; 1246 biasSat->Biases[ii].Type = CODETYPE_SBAS_L5_I; 1247 biasSat->Biases[ii].Bias = it.value(); 1248 } 1249 else if (it.key() == "5Q") { 1250 int ii = biasSat->NumberOfCodeBiases; 1251 if (ii >= CLOCKORBIT_NUMBIAS) 1252 break; 1253 biasSat->NumberOfCodeBiases += 1; 1254 biasSat->Biases[ii].Type = CODETYPE_SBAS_L5_Q; 1255 biasSat->Biases[ii].Bias = it.value(); 1256 } 1257 #ifdef USE_SSR_RTCM 1258 else if (it.key() == "5X") { 1259 int ii = biasSat->NumberOfCodeBiases; 1260 if (ii >= CLOCKORBIT_NUMBIAS) 1261 break; 1262 biasSat->NumberOfCodeBiases += 1; 1263 biasSat->Biases[ii].Type = CODETYPE_SBAS_L5_IQ; 1264 biasSat->Biases[ii].Bias = it.value(); 1265 } 1266 #endif 1267 } 1268 } 1269 else if (prn.system() == 'C') { 1270 QMapIterator<QString, double> it(codeBiases); 1271 while (it.hasNext()) { 1272 it.next(); 1273 if (it.key() == "2I") { 1274 int ii = biasSat->NumberOfCodeBiases; 1275 if (ii >= CLOCKORBIT_NUMBIAS) 1276 break; 1277 biasSat->NumberOfCodeBiases += 1; 1278 biasSat->Biases[ii].Type = CODETYPE_BDS_B1_I; 1279 biasSat->Biases[ii].Bias = it.value(); 1280 } 1281 else if (it.key() == "2Q") { 1282 int ii = biasSat->NumberOfCodeBiases; 1283 if (ii >= CLOCKORBIT_NUMBIAS) 1284 break; 1285 biasSat->NumberOfCodeBiases += 1; 1286 biasSat->Biases[ii].Type = CODETYPE_BDS_B1_Q; 1287 biasSat->Biases[ii].Bias = it.value(); 1288 } 1289 #ifdef USE_SSR_RTCM 1290 else if (it.key() == "2X") { 1291 int ii = biasSat->NumberOfCodeBiases; 1292 if (ii >= CLOCKORBIT_NUMBIAS) 1293 break; 1294 biasSat->NumberOfCodeBiases += 1; 1295 biasSat->Biases[ii].Type = CODETYPE_BDS_B1_IQ; 1296 biasSat->Biases[ii].Bias = it.value(); 1297 } 1298 #endif 1299 else if (it.key() == "6I") { 1300 int ii = biasSat->NumberOfCodeBiases; 1301 if (ii >= CLOCKORBIT_NUMBIAS) 1302 break; 1303 biasSat->NumberOfCodeBiases += 1; 1304 biasSat->Biases[ii].Type = CODETYPE_BDS_B3_I; 1305 biasSat->Biases[ii].Bias = it.value(); 1306 } 1307 else if (it.key() == "6Q") { 1308 int ii = biasSat->NumberOfCodeBiases; 1309 if (ii >= CLOCKORBIT_NUMBIAS) 1310 break; 1311 biasSat->NumberOfCodeBiases += 1; 1312 biasSat->Biases[ii].Type = CODETYPE_BDS_B3_Q; 1313 biasSat->Biases[ii].Bias = it.value(); 1314 } 1315 #ifdef USE_SSR_RTCM 1316 else if (it.key() == "6X") { 1317 int ii = biasSat->NumberOfCodeBiases; 1318 if (ii >= CLOCKORBIT_NUMBIAS) 1319 break; 1320 biasSat->NumberOfCodeBiases += 1; 1321 biasSat->Biases[ii].Type = CODETYPE_BDS_B3_IQ; 1322 biasSat->Biases[ii].Bias = it.value(); 1323 } 1324 #endif 1325 else if (it.key() == "7I") { 1326 int ii = biasSat->NumberOfCodeBiases; 1327 if (ii >= CLOCKORBIT_NUMBIAS) 1328 break; 1329 biasSat->NumberOfCodeBiases += 1; 1330 biasSat->Biases[ii].Type = CODETYPE_BDS_B2_I; 1331 biasSat->Biases[ii].Bias = it.value(); 1332 } 1333 else if (it.key() == "7Q") { 1334 int ii = biasSat->NumberOfCodeBiases; 1335 if (ii >= CLOCKORBIT_NUMBIAS) 1336 break; 1337 biasSat->NumberOfCodeBiases += 1; 1338 biasSat->Biases[ii].Type = CODETYPE_BDS_B2_Q; 1339 biasSat->Biases[ii].Bias = it.value(); 1340 } 1341 #ifdef USE_SSR_RTCM 1342 else if (it.key() == "7X") { 1343 int ii = biasSat->NumberOfCodeBiases; 1344 if (ii >= CLOCKORBIT_NUMBIAS) 1345 break; 1346 biasSat->NumberOfCodeBiases += 1; 1347 biasSat->Biases[ii].Type = CODETYPE_BDS_B2_IQ; 1348 biasSat->Biases[ii].Bias = it.value(); 1349 } 1350 #endif 1351 else if (it.key() == "1D") { 1352 int ii = biasSat->NumberOfCodeBiases; 1353 if (ii >= CLOCKORBIT_NUMBIAS) 1354 break; 1355 biasSat->NumberOfCodeBiases += 1; 1356 biasSat->Biases[ii].Type = CODETYPE_BDS_B1a_D; 1357 biasSat->Biases[ii].Bias = it.value(); 1358 } 1359 else if (it.key() == "1P") { 1360 int ii = biasSat->NumberOfCodeBiases; 1361 if (ii >= CLOCKORBIT_NUMBIAS) 1362 break; 1363 biasSat->NumberOfCodeBiases += 1; 1364 biasSat->Biases[ii].Type = CODETYPE_BDS_B1a_P; 1365 biasSat->Biases[ii].Bias = it.value(); 1366 } 1367 #ifdef USE_SSR_RTCM 1368 else if (it.key() == "1X") { 1369 int ii = biasSat->NumberOfCodeBiases; 1370 if (ii >= CLOCKORBIT_NUMBIAS) 1371 break; 1372 biasSat->NumberOfCodeBiases += 1; 1373 biasSat->Biases[ii].Type = CODETYPE_BDS_B1a_DP; 1374 biasSat->Biases[ii].Bias = it.value(); 1375 } 1376 #endif 1377 else if (it.key() == "5D") { 1378 int ii = biasSat->NumberOfCodeBiases; 1379 if (ii >= CLOCKORBIT_NUMBIAS) 1380 break; 1381 biasSat->NumberOfCodeBiases += 1; 1382 biasSat->Biases[ii].Type = CODETYPE_BDS_B2a_D; 1383 biasSat->Biases[ii].Bias = it.value(); 1384 } 1385 else if (it.key() == "5P") { 1386 int ii = biasSat->NumberOfCodeBiases; 1387 if (ii >= CLOCKORBIT_NUMBIAS) 1388 break; 1389 biasSat->NumberOfCodeBiases += 1; 1390 biasSat->Biases[ii].Type = CODETYPE_BDS_B2a_P; 1391 biasSat->Biases[ii].Bias = it.value(); 1392 } 1393 #ifdef USE_SSR_RTCM 1394 else if (it.key() == "5X") { 1395 int ii = biasSat->NumberOfCodeBiases; 1396 if (ii >= CLOCKORBIT_NUMBIAS) 1397 break; 1398 biasSat->NumberOfCodeBiases += 1; 1399 biasSat->Biases[ii].Type = CODETYPE_BDS_B2a_DP; 1400 biasSat->Biases[ii].Bias = it.value(); 1401 } 1402 #elif USE_SSR_IGS 1403 else if (it.key() == "1A") { 1404 int ii = biasSat->NumberOfCodeBiases; 1405 if (ii >= CLOCKORBIT_NUMBIAS) 1406 break; 1407 biasSat->NumberOfCodeBiases += 1; 1408 biasSat->Biases[ii].Type = CODETYPE_BDS_B1_A; 1409 biasSat->Biases[ii].Bias = it.value(); 1410 } 1411 else if (it.key() == "6A") { 1412 int ii = biasSat->NumberOfCodeBiases; 1413 if (ii >= CLOCKORBIT_NUMBIAS) 1414 break; 1415 biasSat->NumberOfCodeBiases += 1; 1416 biasSat->Biases[ii].Type = CODETYPE_BDS_B3_A; 1417 biasSat->Biases[ii].Bias = it.value(); 1418 } 1419 #endif 656 QMapIterator<QString, double> it(codeBiases); 657 while (it.hasNext()) { 658 it.next(); 659 int ii = biasSat->NumberOfCodeBiases; 660 if (ii >= CLOCKORBIT_NUMBIAS) 661 break; 662 SsrCorr::CodeType type = _ssrCorr->rnxTypeToCodeType(prn.system(), it.key().toStdString()); 663 if (type != _ssrCorr->RESERVED) { 664 biasSat->NumberOfCodeBiases += 1; 665 biasSat->Biases[ii].Type = type; 666 biasSat->Biases[ii].Bias = it.value(); 1420 667 } 1421 668 } … … 1424 671 // Phase Biases 1425 672 // ------------ 1426 struct PhaseBias::PhaseBiasSat* phasebiasSat = 0;673 struct SsrCorr::PhaseBias::PhaseBiasSat* phasebiasSat = 0; 1427 674 if (prn.system() == 'G') { 1428 675 phasebiasSat = phasebias.Sat … … 1467 714 phasebiasSat->YawAngle = pbSat.yawAngle; 1468 715 phasebiasSat->YawRate = pbSat.yawRate; 1469 if (prn.system() == 'G') { 1470 QListIterator<phaseBiasSignal> it(phaseBiasList); 1471 while (it.hasNext()) { 1472 const phaseBiasSignal &pbSig = it.next(); 1473 if (pbSig.type == "1C") { 1474 int ii = phasebiasSat->NumberOfPhaseBiases; 1475 if (ii >= CLOCKORBIT_NUMBIAS) 1476 break; 1477 phasebiasSat->NumberOfPhaseBiases += 1; 1478 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1_CA; 1479 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1480 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1481 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1482 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1483 } 1484 else if (pbSig.type == "1P") { 1485 int ii = phasebiasSat->NumberOfPhaseBiases; 1486 if (ii >= CLOCKORBIT_NUMBIAS) 1487 break; 1488 phasebiasSat->NumberOfPhaseBiases += 1; 1489 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1_P; 1490 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1491 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1492 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1493 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1494 } 1495 else if (pbSig.type == "1W") { 1496 int ii = phasebiasSat->NumberOfPhaseBiases; 1497 if (ii >= CLOCKORBIT_NUMBIAS) 1498 break; 1499 phasebiasSat->NumberOfPhaseBiases += 1; 1500 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1_Z; 1501 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1502 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1503 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1504 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1505 } 1506 else if (pbSig.type == "2C") { 1507 int ii = phasebiasSat->NumberOfPhaseBiases; 1508 if (ii >= CLOCKORBIT_NUMBIAS) 1509 break; 1510 phasebiasSat->NumberOfPhaseBiases += 1; 1511 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_CA; 1512 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1513 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1514 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1515 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1516 } 1517 else if (pbSig.type == "2D") { 1518 int ii = phasebiasSat->NumberOfPhaseBiases; 1519 if (ii >= CLOCKORBIT_NUMBIAS) 1520 break; 1521 phasebiasSat->NumberOfPhaseBiases += 1; 1522 phasebiasSat->Biases[ii].Type = CODETYPEGPS_SEMI_CODELESS; 1523 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1524 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1525 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1526 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1527 } 1528 else if (pbSig.type == "2S") { 1529 int ii = phasebiasSat->NumberOfPhaseBiases; 1530 if (ii >= CLOCKORBIT_NUMBIAS) 1531 break; 1532 phasebiasSat->NumberOfPhaseBiases += 1; 1533 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2C_M; 1534 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1535 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1536 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1537 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1538 } 1539 else if (pbSig.type == "2L") { 1540 int ii = phasebiasSat->NumberOfPhaseBiases; 1541 if (ii >= CLOCKORBIT_NUMBIAS) 1542 break; 1543 phasebiasSat->NumberOfPhaseBiases += 1; 1544 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2C_L; 1545 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1546 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1547 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1548 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1549 } 1550 #ifdef USE_SSR_RTCM 1551 else if (pbSig.type == "2X") { 1552 int ii = phasebiasSat->NumberOfPhaseBiases; 1553 if (ii >= CLOCKORBIT_NUMBIAS) 1554 break; 1555 phasebiasSat->NumberOfPhaseBiases += 1; 1556 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2C_ML; 1557 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1558 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1559 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1560 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1561 } 1562 #endif 1563 else if (pbSig.type == "2P") { 1564 int ii = phasebiasSat->NumberOfPhaseBiases; 1565 if (ii >= CLOCKORBIT_NUMBIAS) 1566 break; 1567 phasebiasSat->NumberOfPhaseBiases += 1; 1568 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_P; 1569 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1570 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1571 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1572 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1573 } 1574 else if (pbSig.type == "2W") { 1575 int ii = phasebiasSat->NumberOfPhaseBiases; 1576 if (ii >= CLOCKORBIT_NUMBIAS) 1577 break; 1578 phasebiasSat->NumberOfPhaseBiases += 1; 1579 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L2_Z; 1580 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1581 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1582 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1583 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1584 } 1585 else if (pbSig.type == "5I") { 1586 int ii = phasebiasSat->NumberOfPhaseBiases; 1587 if (ii >= CLOCKORBIT_NUMBIAS) 1588 break; 1589 phasebiasSat->NumberOfPhaseBiases += 1; 1590 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L5_I; 1591 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1592 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1593 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1594 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1595 } 1596 else if (pbSig.type == "5Q") { 1597 int ii = phasebiasSat->NumberOfPhaseBiases; 1598 if (ii >= CLOCKORBIT_NUMBIAS) 1599 break; 1600 phasebiasSat->NumberOfPhaseBiases += 1; 1601 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L5_Q; 1602 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1603 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1604 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1605 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1606 } 1607 #ifdef USE_SSR_RTCM 1608 else if (pbSig.type == "5X") { 1609 int ii = phasebiasSat->NumberOfPhaseBiases; 1610 if (ii >= CLOCKORBIT_NUMBIAS) 1611 break; 1612 phasebiasSat->NumberOfPhaseBiases += 1; 1613 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L5_IQ; 1614 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1615 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1616 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1617 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1618 } 1619 #endif 1620 else if (pbSig.type == "1S") { 1621 int ii = phasebiasSat->NumberOfPhaseBiases; 1622 if (ii >= CLOCKORBIT_NUMBIAS) 1623 break; 1624 phasebiasSat->NumberOfPhaseBiases += 1; 1625 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1C_D; 1626 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1627 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1628 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1629 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1630 } 1631 else if (pbSig.type == "1L") { 1632 int ii = phasebiasSat->NumberOfPhaseBiases; 1633 if (ii >= CLOCKORBIT_NUMBIAS) 1634 break; 1635 phasebiasSat->NumberOfPhaseBiases += 1; 1636 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1C_P; 1637 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1638 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1639 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1640 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1641 } 1642 #ifdef USE_SSR_RTCM 1643 else if (pbSig.type == "1X") { 1644 int ii = phasebiasSat->NumberOfPhaseBiases; 1645 if (ii >= CLOCKORBIT_NUMBIAS) 1646 break; 1647 phasebiasSat->NumberOfPhaseBiases += 1; 1648 phasebiasSat->Biases[ii].Type = CODETYPEGPS_L1C_DP; 1649 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1650 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1651 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1652 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1653 } 1654 #endif 1655 } 1656 } 1657 if (prn.system() == 'R') { 1658 QListIterator<phaseBiasSignal> it(phaseBiasList); 1659 while (it.hasNext()) { 1660 const phaseBiasSignal &pbSig = it.next(); 1661 if (pbSig.type == "1C") { 1662 int ii = phasebiasSat->NumberOfPhaseBiases; 1663 if (ii >= CLOCKORBIT_NUMBIAS) 1664 break; 1665 phasebiasSat->NumberOfPhaseBiases += 1; 1666 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L1_CA; 1667 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1668 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1669 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1670 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1671 } 1672 else if (pbSig.type == "1P") { 1673 int ii = phasebiasSat->NumberOfPhaseBiases; 1674 if (ii >= CLOCKORBIT_NUMBIAS) 1675 break; 1676 phasebiasSat->NumberOfPhaseBiases += 1; 1677 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L1_P; 1678 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1679 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1680 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1681 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1682 } 1683 else if (pbSig.type == "2C") { 1684 int ii = phasebiasSat->NumberOfPhaseBiases; 1685 if (ii >= CLOCKORBIT_NUMBIAS) 1686 break; 1687 phasebiasSat->NumberOfPhaseBiases += 1; 1688 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L2_CA; 1689 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1690 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1691 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1692 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1693 } 1694 else if (pbSig.type == "2P") { 1695 int ii = phasebiasSat->NumberOfPhaseBiases; 1696 if (ii >= CLOCKORBIT_NUMBIAS) 1697 break; 1698 phasebiasSat->NumberOfPhaseBiases += 1; 1699 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L2_P; 1700 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1701 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1702 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1703 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1704 } 1705 else if (pbSig.type == "4A") { 1706 int ii = phasebiasSat->NumberOfPhaseBiases; 1707 if (ii >= CLOCKORBIT_NUMBIAS) 1708 break; 1709 phasebiasSat->NumberOfPhaseBiases += 1; 1710 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L1a_OCd; 1711 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1712 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1713 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1714 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1715 } 1716 else if (pbSig.type == "4B") { 1717 int ii = phasebiasSat->NumberOfPhaseBiases; 1718 if (ii >= CLOCKORBIT_NUMBIAS) 1719 break; 1720 phasebiasSat->NumberOfPhaseBiases += 1; 1721 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L1a_OCp; 1722 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1723 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1724 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1725 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1726 } 1727 #ifdef USE_SSR_RTCM 1728 else if (pbSig.type == "4X") { 1729 int ii = phasebiasSat->NumberOfPhaseBiases; 1730 if (ii >= CLOCKORBIT_NUMBIAS) 1731 break; 1732 phasebiasSat->NumberOfPhaseBiases += 1; 1733 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L1a_OCdp; 1734 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1735 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1736 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1737 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1738 } 1739 #endif 1740 else if (pbSig.type == "6A") { 1741 int ii = phasebiasSat->NumberOfPhaseBiases; 1742 if (ii >= CLOCKORBIT_NUMBIAS) 1743 break; 1744 phasebiasSat->NumberOfPhaseBiases += 1; 1745 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L2a_CSI; 1746 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1747 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1748 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1749 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1750 } 1751 else if (pbSig.type == "6B") { 1752 int ii = phasebiasSat->NumberOfPhaseBiases; 1753 if (ii >= CLOCKORBIT_NUMBIAS) 1754 break; 1755 phasebiasSat->NumberOfPhaseBiases += 1; 1756 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L2a_OCp; 1757 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1758 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1759 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1760 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1761 } 1762 #ifdef USE_SSR_RTCM 1763 else if (pbSig.type == "6X") { 1764 int ii = phasebiasSat->NumberOfPhaseBiases; 1765 if (ii >= CLOCKORBIT_NUMBIAS) 1766 break; 1767 phasebiasSat->NumberOfPhaseBiases += 1; 1768 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L2a_CSIOCp; 1769 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1770 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1771 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1772 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1773 } 1774 #endif 1775 else if (pbSig.type == "3I") { 1776 int ii = phasebiasSat->NumberOfPhaseBiases; 1777 if (ii >= CLOCKORBIT_NUMBIAS) 1778 break; 1779 phasebiasSat->NumberOfPhaseBiases += 1; 1780 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L3_I; 1781 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1782 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1783 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1784 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1785 } 1786 else if (pbSig.type == "3Q") { 1787 int ii = phasebiasSat->NumberOfPhaseBiases; 1788 if (ii >= CLOCKORBIT_NUMBIAS) 1789 break; 1790 phasebiasSat->NumberOfPhaseBiases += 1; 1791 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L3_Q; 1792 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1793 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1794 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1795 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1796 } 1797 #ifdef USE_SSR_RTCM 1798 else if (pbSig.type == "3X") { 1799 int ii = phasebiasSat->NumberOfPhaseBiases; 1800 if (ii >= CLOCKORBIT_NUMBIAS) 1801 break; 1802 phasebiasSat->NumberOfPhaseBiases += 1; 1803 phasebiasSat->Biases[ii].Type = CODETYPEGLONASS_L3_IQ; 1804 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1805 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1806 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1807 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1808 } 1809 #endif 1810 } 1811 } 1812 if (prn.system() == 'E') { 1813 QListIterator<phaseBiasSignal> it(phaseBiasList); 1814 while (it.hasNext()) { 1815 const phaseBiasSignal &pbSig = it.next(); 1816 if (pbSig.type == "1A") { 1817 int ii = phasebiasSat->NumberOfPhaseBiases; 1818 if (ii >= CLOCKORBIT_NUMBIAS) 1819 break; 1820 phasebiasSat->NumberOfPhaseBiases += 1; 1821 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E1_A; 1822 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1823 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1824 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1825 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1826 } 1827 else if (pbSig.type == "1B") { 1828 int ii = phasebiasSat->NumberOfPhaseBiases; 1829 if (ii >= CLOCKORBIT_NUMBIAS) 1830 break; 1831 phasebiasSat->NumberOfPhaseBiases += 1; 1832 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E1_B; 1833 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1834 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1835 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1836 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1837 } 1838 else if (pbSig.type == "1C") { 1839 int ii = phasebiasSat->NumberOfPhaseBiases; 1840 if (ii >= CLOCKORBIT_NUMBIAS) 1841 break; 1842 phasebiasSat->NumberOfPhaseBiases += 1; 1843 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E1_C; 1844 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1845 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1846 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1847 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1848 } 1849 #ifdef USE_SSR_RTCM 1850 else if (pbSig.type == "1X") { 1851 int ii = phasebiasSat->NumberOfPhaseBiases; 1852 if (ii >= CLOCKORBIT_NUMBIAS) 1853 break; 1854 phasebiasSat->NumberOfPhaseBiases += 1; 1855 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E1_BC; 1856 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1857 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1858 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1859 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1860 } 1861 else if (pbSig.type == "1Z") { 1862 int ii = phasebiasSat->NumberOfPhaseBiases; 1863 if (ii >= CLOCKORBIT_NUMBIAS) 1864 break; 1865 phasebiasSat->NumberOfPhaseBiases += 1; 1866 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E1_ABC; 1867 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1868 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1869 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1870 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1871 } 1872 #endif 1873 else if (pbSig.type == "5I") { 1874 int ii = phasebiasSat->NumberOfPhaseBiases; 1875 if (ii >= CLOCKORBIT_NUMBIAS) 1876 break; 1877 phasebiasSat->NumberOfPhaseBiases += 1; 1878 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5A_I; 1879 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1880 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1881 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1882 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1883 } 1884 else if (pbSig.type == "5Q") { 1885 int ii = phasebiasSat->NumberOfPhaseBiases; 1886 if (ii >= CLOCKORBIT_NUMBIAS) 1887 break; 1888 phasebiasSat->NumberOfPhaseBiases += 1; 1889 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5A_Q; 1890 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1891 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1892 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1893 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1894 } 1895 #ifdef USE_SSR_RTCM 1896 else if (pbSig.type == "5X") { 1897 int ii = phasebiasSat->NumberOfPhaseBiases; 1898 if (ii >= CLOCKORBIT_NUMBIAS) 1899 break; 1900 phasebiasSat->NumberOfPhaseBiases += 1; 1901 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5A_IQ; 1902 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1903 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1904 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1905 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1906 } 1907 #endif 1908 else if (pbSig.type == "7I") { 1909 int ii = phasebiasSat->NumberOfPhaseBiases; 1910 if (ii >= CLOCKORBIT_NUMBIAS) 1911 break; 1912 phasebiasSat->NumberOfPhaseBiases += 1; 1913 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5B_I; 1914 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1915 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1916 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1917 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1918 } 1919 else if (pbSig.type == "7Q") { 1920 int ii = phasebiasSat->NumberOfPhaseBiases; 1921 if (ii >= CLOCKORBIT_NUMBIAS) 1922 break; 1923 phasebiasSat->NumberOfPhaseBiases += 1; 1924 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5B_Q; 1925 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1926 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1927 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1928 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1929 } 1930 #ifdef USE_SSR_RTCM 1931 else if (pbSig.type == "7X") { 1932 int ii = phasebiasSat->NumberOfPhaseBiases; 1933 if (ii >= CLOCKORBIT_NUMBIAS) 1934 break; 1935 phasebiasSat->NumberOfPhaseBiases += 1; 1936 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5B_IQ; 1937 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1938 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1939 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1940 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1941 } 1942 else if (pbSig.type == "8I") { 1943 int ii = phasebiasSat->NumberOfPhaseBiases; 1944 if (ii >= CLOCKORBIT_NUMBIAS) 1945 break; 1946 phasebiasSat->NumberOfPhaseBiases += 1; 1947 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5_I; 1948 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1949 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1950 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1951 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1952 } 1953 else if (pbSig.type == "8Q") { 1954 int ii = phasebiasSat->NumberOfPhaseBiases; 1955 if (ii >= CLOCKORBIT_NUMBIAS) 1956 break; 1957 phasebiasSat->NumberOfPhaseBiases += 1; 1958 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5_Q; 1959 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1960 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1961 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1962 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1963 } 1964 else if (pbSig.type == "8X") { 1965 int ii = phasebiasSat->NumberOfPhaseBiases; 1966 if (ii >= CLOCKORBIT_NUMBIAS) 1967 break; 1968 phasebiasSat->NumberOfPhaseBiases += 1; 1969 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E5_IQ; 1970 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1971 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1972 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1973 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1974 } 1975 #endif 1976 else if (pbSig.type == "6A") { 1977 int ii = phasebiasSat->NumberOfPhaseBiases; 1978 if (ii >= CLOCKORBIT_NUMBIAS) 1979 break; 1980 phasebiasSat->NumberOfPhaseBiases += 1; 1981 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E6_A; 1982 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1983 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1984 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1985 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1986 } 1987 else if (pbSig.type == "6B") { 1988 int ii = phasebiasSat->NumberOfPhaseBiases; 1989 if (ii >= CLOCKORBIT_NUMBIAS) 1990 break; 1991 phasebiasSat->NumberOfPhaseBiases += 1; 1992 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E6_B; 1993 phasebiasSat->Biases[ii].Bias = pbSig.bias; 1994 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 1995 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 1996 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 1997 } 1998 else if (pbSig.type == "6C") { 1999 int ii = phasebiasSat->NumberOfPhaseBiases; 2000 if (ii >= CLOCKORBIT_NUMBIAS) 2001 break; 2002 phasebiasSat->NumberOfPhaseBiases += 1; 2003 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E6_C; 2004 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2005 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2006 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2007 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2008 } 2009 #ifdef USE_SSR_RTCM 2010 else if (pbSig.type == "6X") { 2011 int ii = phasebiasSat->NumberOfPhaseBiases; 2012 if (ii >= CLOCKORBIT_NUMBIAS) 2013 break; 2014 phasebiasSat->NumberOfPhaseBiases += 1; 2015 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E6_BC; 2016 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2017 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2018 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2019 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2020 } 2021 else if (pbSig.type == "6Z") { 2022 int ii = phasebiasSat->NumberOfPhaseBiases; 2023 if (ii >= CLOCKORBIT_NUMBIAS) 2024 break; 2025 phasebiasSat->NumberOfPhaseBiases += 1; 2026 phasebiasSat->Biases[ii].Type = CODETYPEGALILEO_E6_ABC; 2027 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2028 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2029 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2030 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2031 } 2032 #endif 2033 } 2034 } 2035 if (prn.system() == 'J') { 2036 QListIterator<phaseBiasSignal> it(phaseBiasList); 2037 while (it.hasNext()) { 2038 const phaseBiasSignal &pbSig = it.next(); 2039 if (pbSig.type == "1C") { 2040 int ii = phasebiasSat->NumberOfPhaseBiases; 2041 if (ii >= CLOCKORBIT_NUMBIAS) 2042 break; 2043 phasebiasSat->NumberOfPhaseBiases += 1; 2044 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1_CA; 2045 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2046 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2047 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2048 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2049 } 2050 else if (pbSig.type == "1S") { 2051 int ii = phasebiasSat->NumberOfPhaseBiases; 2052 if (ii >= CLOCKORBIT_NUMBIAS) 2053 break; 2054 phasebiasSat->NumberOfPhaseBiases += 1; 2055 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1C_D; 2056 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2057 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2058 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2059 } 2060 else if (pbSig.type == "1L") { 2061 int ii = phasebiasSat->NumberOfPhaseBiases; 2062 if (ii >= CLOCKORBIT_NUMBIAS) 2063 break; 2064 phasebiasSat->NumberOfPhaseBiases += 1; 2065 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1C_P; 2066 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2067 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2068 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2069 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2070 } 2071 else if (pbSig.type == "2S") { 2072 int ii = phasebiasSat->NumberOfPhaseBiases; 2073 if (ii >= CLOCKORBIT_NUMBIAS) 2074 break; 2075 phasebiasSat->NumberOfPhaseBiases += 1; 2076 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L2C_M; 2077 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2078 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2079 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2080 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2081 } 2082 else if (pbSig.type == "2L") { 2083 int ii = phasebiasSat->NumberOfPhaseBiases; 2084 if (ii >= CLOCKORBIT_NUMBIAS) 2085 break; 2086 phasebiasSat->NumberOfPhaseBiases += 1; 2087 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L2C_L; 2088 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2089 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2090 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2091 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2092 } 2093 #ifdef USE_SSR_RTCM 2094 else if (pbSig.type == "2X") { 2095 int ii = phasebiasSat->NumberOfPhaseBiases; 2096 if (ii >= CLOCKORBIT_NUMBIAS) 2097 break; 2098 phasebiasSat->NumberOfPhaseBiases += 1; 2099 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L2C_ML; 2100 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2101 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2102 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2103 } 2104 #endif 2105 else if (pbSig.type == "5I") { 2106 int ii = phasebiasSat->NumberOfPhaseBiases; 2107 if (ii >= CLOCKORBIT_NUMBIAS) 2108 break; 2109 phasebiasSat->NumberOfPhaseBiases += 1; 2110 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_I; 2111 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2112 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2113 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2114 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2115 } 2116 else if (pbSig.type == "5Q") { 2117 int ii = phasebiasSat->NumberOfPhaseBiases; 2118 if (ii >= CLOCKORBIT_NUMBIAS) 2119 break; 2120 phasebiasSat->NumberOfPhaseBiases += 1; 2121 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_Q; 2122 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2123 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2124 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2125 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2126 } 2127 #ifdef USE_SSR_RTCM 2128 else if (pbSig.type == "5X") { 2129 int ii = phasebiasSat->NumberOfPhaseBiases; 2130 if (ii >= CLOCKORBIT_NUMBIAS) 2131 break; 2132 phasebiasSat->NumberOfPhaseBiases += 1; 2133 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_IQ; 2134 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2135 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2136 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2137 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2138 } 2139 #endif 2140 else if (pbSig.type == "6S") { 2141 int ii = phasebiasSat->NumberOfPhaseBiases; 2142 if (ii >= CLOCKORBIT_NUMBIAS) 2143 break; 2144 phasebiasSat->NumberOfPhaseBiases += 1; 2145 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L6_D; 2146 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2147 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2148 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2149 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2150 } 2151 else if (pbSig.type == "6L") { 2152 int ii = phasebiasSat->NumberOfPhaseBiases; 2153 if (ii >= CLOCKORBIT_NUMBIAS) 2154 break; 2155 phasebiasSat->NumberOfPhaseBiases += 1; 2156 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L6_P; 2157 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2158 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2159 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2160 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2161 } 2162 #ifdef USE_SSR_RTCM 2163 else if (pbSig.type == "6X") { 2164 int ii = phasebiasSat->NumberOfPhaseBiases; 2165 if (ii >= CLOCKORBIT_NUMBIAS) 2166 break; 2167 phasebiasSat->NumberOfPhaseBiases += 1; 2168 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L6_DP; 2169 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2170 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2171 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2172 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2173 } 2174 else if (pbSig.type == "1X") { 2175 int ii = phasebiasSat->NumberOfPhaseBiases; 2176 if (ii >= CLOCKORBIT_NUMBIAS) 2177 break; 2178 phasebiasSat->NumberOfPhaseBiases += 1; 2179 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1C_DP; 2180 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2181 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2182 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2183 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2184 } 2185 else if (pbSig.type == "1Z") { 2186 int ii = phasebiasSat->NumberOfPhaseBiases; 2187 if (ii >= CLOCKORBIT_NUMBIAS) 2188 break; 2189 phasebiasSat->NumberOfPhaseBiases += 1; 2190 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L1_S; 2191 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2192 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2193 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2194 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2195 } 2196 else if (pbSig.type == "5D") { 2197 int ii = phasebiasSat->NumberOfPhaseBiases; 2198 if (ii >= CLOCKORBIT_NUMBIAS) 2199 break; 2200 phasebiasSat->NumberOfPhaseBiases += 1; 2201 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_D; 2202 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2203 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2204 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2205 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2206 } 2207 else if (pbSig.type == "5P") { 2208 int ii = phasebiasSat->NumberOfPhaseBiases; 2209 if (ii >= CLOCKORBIT_NUMBIAS) 2210 break; 2211 phasebiasSat->NumberOfPhaseBiases += 1; 2212 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_P; 2213 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2214 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2215 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2216 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2217 } 2218 else if (pbSig.type == "5Z") { 2219 int ii = phasebiasSat->NumberOfPhaseBiases; 2220 if (ii >= CLOCKORBIT_NUMBIAS) 2221 break; 2222 phasebiasSat->NumberOfPhaseBiases += 1; 2223 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L5_DP; 2224 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2225 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2226 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2227 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2228 } 2229 #endif 2230 else if (pbSig.type == "6E") { 2231 int ii = phasebiasSat->NumberOfPhaseBiases; 2232 if (ii >= CLOCKORBIT_NUMBIAS) 2233 break; 2234 phasebiasSat->NumberOfPhaseBiases += 1; 2235 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L6_E; 2236 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2237 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2238 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2239 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2240 } 2241 #ifdef USE_SSR_RTCM 2242 else if (pbSig.type == "6Z") { 2243 int ii = phasebiasSat->NumberOfPhaseBiases; 2244 if (ii >= CLOCKORBIT_NUMBIAS) 2245 break; 2246 phasebiasSat->NumberOfPhaseBiases += 1; 2247 phasebiasSat->Biases[ii].Type = CODETYPEQZSS_L6_DE; 2248 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2249 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2250 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2251 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2252 } 2253 #endif 2254 } 2255 } 2256 if (prn.system() == 'S') { 2257 QListIterator<phaseBiasSignal> it(phaseBiasList); 2258 while (it.hasNext()) { 2259 const phaseBiasSignal &pbSig = it.next(); 2260 if (pbSig.type == "1C") { 2261 int ii = phasebiasSat->NumberOfPhaseBiases; 2262 if (ii >= CLOCKORBIT_NUMBIAS) 2263 break; 2264 phasebiasSat->NumberOfPhaseBiases += 1; 2265 phasebiasSat->Biases[ii].Type = CODETYPE_SBAS_L1_CA; 2266 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2267 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2268 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2269 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2270 } 2271 else if (pbSig.type == "5I") { 2272 int ii = phasebiasSat->NumberOfPhaseBiases; 2273 if (ii >= CLOCKORBIT_NUMBIAS) 2274 break; 2275 phasebiasSat->NumberOfPhaseBiases += 1; 2276 phasebiasSat->Biases[ii].Type = CODETYPE_SBAS_L5_I; 2277 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2278 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2279 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2280 } 2281 else if (pbSig.type == "5Q") { 2282 int ii = phasebiasSat->NumberOfPhaseBiases; 2283 if (ii >= CLOCKORBIT_NUMBIAS) 2284 break; 2285 phasebiasSat->NumberOfPhaseBiases += 1; 2286 phasebiasSat->Biases[ii].Type = CODETYPE_SBAS_L5_Q; 2287 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2288 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2289 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2290 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2291 } 2292 #ifdef USE_SSR_RTCM 2293 else if (pbSig.type == "5X") { 2294 int ii = phasebiasSat->NumberOfPhaseBiases; 2295 if (ii >= CLOCKORBIT_NUMBIAS) 2296 break; 2297 phasebiasSat->NumberOfPhaseBiases += 1; 2298 phasebiasSat->Biases[ii].Type = CODETYPE_SBAS_L5_IQ; 2299 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2300 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2301 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2302 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2303 } 2304 #endif 2305 } 2306 } 2307 if (prn.system() == 'C') { 2308 QListIterator<phaseBiasSignal> it(phaseBiasList); 2309 while (it.hasNext()) { 2310 const phaseBiasSignal &pbSig = it.next(); 2311 if (pbSig.type == "2I") { 2312 int ii = phasebiasSat->NumberOfPhaseBiases; 2313 if (ii >= CLOCKORBIT_NUMBIAS) 2314 break; 2315 phasebiasSat->NumberOfPhaseBiases += 1; 2316 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1_I; 2317 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2318 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2319 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2320 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2321 } 2322 else if (pbSig.type == "2Q") { 2323 int ii = phasebiasSat->NumberOfPhaseBiases; 2324 if (ii >= CLOCKORBIT_NUMBIAS) 2325 break; 2326 phasebiasSat->NumberOfPhaseBiases += 1; 2327 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1_Q; 2328 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2329 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2330 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2331 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2332 } 2333 #ifdef USE_SSR_RTCM 2334 else if (pbSig.type == "2X") { 2335 int ii = phasebiasSat->NumberOfPhaseBiases; 2336 if (ii >= CLOCKORBIT_NUMBIAS) 2337 break; 2338 phasebiasSat->NumberOfPhaseBiases += 1; 2339 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1_IQ; 2340 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2341 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2342 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2343 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2344 } 2345 #endif 2346 else if (pbSig.type == "6I") { 2347 int ii = phasebiasSat->NumberOfPhaseBiases; 2348 if (ii >= CLOCKORBIT_NUMBIAS) 2349 break; 2350 phasebiasSat->NumberOfPhaseBiases += 1; 2351 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B3_I; 2352 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2353 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2354 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2355 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2356 } 2357 else if (pbSig.type == "6Q") { 2358 int ii = phasebiasSat->NumberOfPhaseBiases; 2359 if (ii >= CLOCKORBIT_NUMBIAS) 2360 break; 2361 phasebiasSat->NumberOfPhaseBiases += 1; 2362 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B3_Q; 2363 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2364 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2365 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2366 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2367 } 2368 #ifdef USE_SSR_RTCM 2369 else if (pbSig.type == "6X") { 2370 int ii = phasebiasSat->NumberOfPhaseBiases; 2371 if (ii >= CLOCKORBIT_NUMBIAS) 2372 break; 2373 phasebiasSat->NumberOfPhaseBiases += 1; 2374 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B3_IQ; 2375 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2376 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2377 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2378 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2379 } 2380 #endif 2381 else if (pbSig.type == "7I") { 2382 int ii = phasebiasSat->NumberOfPhaseBiases; 2383 if (ii >= CLOCKORBIT_NUMBIAS) 2384 break; 2385 phasebiasSat->NumberOfPhaseBiases += 1; 2386 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2_I; 2387 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2388 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2389 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2390 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2391 } 2392 else if (pbSig.type == "7Q") { 2393 int ii = phasebiasSat->NumberOfPhaseBiases; 2394 if (ii >= CLOCKORBIT_NUMBIAS) 2395 break; 2396 phasebiasSat->NumberOfPhaseBiases += 1; 2397 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2_Q; 2398 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2399 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 2400 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2401 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2402 } 2403 #ifdef USE_SSR_RTCM 2404 else if (pbSig.type == "7X") { 2405 int ii = phasebiasSat->NumberOfPhaseBiases; 2406 if (ii >= CLOCKORBIT_NUMBIAS) 2407 break; 2408 phasebiasSat->NumberOfPhaseBiases += 1; 2409 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2_IQ; 2410 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2411 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2412 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2413 } 2414 #endif 2415 else if (pbSig.type == "1D") { 2416 int ii = phasebiasSat->NumberOfPhaseBiases; 2417 if (ii >= CLOCKORBIT_NUMBIAS) 2418 break; 2419 phasebiasSat->NumberOfPhaseBiases += 1; 2420 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1a_D; 2421 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2422 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2423 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2424 } 2425 else if (pbSig.type == "1P") { 2426 int ii = phasebiasSat->NumberOfPhaseBiases; 2427 if (ii >= CLOCKORBIT_NUMBIAS) 2428 break; 2429 phasebiasSat->NumberOfPhaseBiases += 1; 2430 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1a_P; 2431 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2432 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2433 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2434 } 2435 #ifdef USE_SSR_RTCM 2436 else if (pbSig.type == "1X") { 2437 int ii = phasebiasSat->NumberOfPhaseBiases; 2438 if (ii >= CLOCKORBIT_NUMBIAS) 2439 break; 2440 phasebiasSat->NumberOfPhaseBiases += 1; 2441 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1a_DP; 2442 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2443 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2444 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2445 } 2446 #endif 2447 else if (pbSig.type == "5D") { 2448 int ii = phasebiasSat->NumberOfPhaseBiases; 2449 if (ii >= CLOCKORBIT_NUMBIAS) 2450 break; 2451 phasebiasSat->NumberOfPhaseBiases += 1; 2452 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2a_D; 2453 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2454 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2455 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2456 } 2457 else if (pbSig.type == "5P") { 2458 int ii = phasebiasSat->NumberOfPhaseBiases; 2459 if (ii >= CLOCKORBIT_NUMBIAS) 2460 break; 2461 phasebiasSat->NumberOfPhaseBiases += 1; 2462 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2a_P; 2463 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2464 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2465 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2466 } 2467 #ifdef USE_SSR_RTCM 2468 else if (pbSig.type == "5X") { 2469 int ii = phasebiasSat->NumberOfPhaseBiases; 2470 if (ii >= CLOCKORBIT_NUMBIAS) 2471 break; 2472 phasebiasSat->NumberOfPhaseBiases += 1; 2473 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B2a_DP; 2474 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2475 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2476 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2477 } 2478 #elif USE_SSR_IGS 2479 else if (pbSig.type == "1A") { 2480 int ii = phasebiasSat->NumberOfPhaseBiases; 2481 if (ii >= CLOCKORBIT_NUMBIAS) 2482 break; 2483 phasebiasSat->NumberOfPhaseBiases += 1; 2484 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B1_A; 2485 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2486 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2487 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2488 } 2489 else if (pbSig.type == "6A") { 2490 int ii = phasebiasSat->NumberOfPhaseBiases; 2491 if (ii >= CLOCKORBIT_NUMBIAS) 2492 break; 2493 phasebiasSat->NumberOfPhaseBiases += 1; 2494 phasebiasSat->Biases[ii].Type = CODETYPE_BDS_B3_A; 2495 phasebiasSat->Biases[ii].Bias = pbSig.bias; 2496 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 2497 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2498 } 2499 #endif 716 QListIterator<phaseBiasSignal> it(phaseBiasList); 717 while (it.hasNext()) { 718 const phaseBiasSignal &pbSig = it.next(); 719 int ii = phasebiasSat->NumberOfPhaseBiases; 720 if (ii >= CLOCKORBIT_NUMBIAS) 721 break; 722 SsrCorr::CodeType type = _ssrCorr->rnxTypeToCodeType(prn.system(), pbSig.type.toStdString()); 723 if (type != _ssrCorr->RESERVED) { 724 phasebiasSat->NumberOfPhaseBiases += 1; 725 phasebiasSat->Biases[ii].Type = type; 726 phasebiasSat->Biases[ii].Bias = pbSig.bias; 727 phasebiasSat->Biases[ii].SignalIntegerIndicator = pbSig.integerIndicator; 728 phasebiasSat->Biases[ii].SignalsWideLaneIntegerIndicator = pbSig.wlIndicator; 729 phasebiasSat->Biases[ii].SignalDiscontinuityCounter = pbSig.discontinuityCounter; 2500 730 } 2501 731 } … … 2517 747 || co.NumberOfSat[CLOCKORBIT_SATBDS] > 0) { 2518 748 char obuffer[CLOCKORBIT_BUFFERSIZE]; 2519 int len = MakeClockOrbit(&co,COTYPE_AUTO, 0, obuffer, sizeof(obuffer));749 int len = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_AUTO, 0, obuffer, sizeof(obuffer)); 2520 750 if (len > 0) { 2521 751 hlpBufferCo = QByteArray(obuffer, len); … … 2531 761 if (fmod(epoTime.gpssec(), _samplRtcmEphCorr) == 0.0) { 2532 762 co.UpdateInterval = ephUpdInd; 2533 int len1 = MakeClockOrbit(&co,COTYPE_GPSORBIT, 1, obuffer,763 int len1 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_GPSORBIT, 1, obuffer, 2534 764 sizeof(obuffer)); 2535 765 co.UpdateInterval = clkUpdInd; … … 2543 773 co.NumberOfSat[CLOCKORBIT_SATSBAS] > 0 || 2544 774 co.NumberOfSat[CLOCKORBIT_SATBDS] > 0 ) ? 1 : 0; 2545 int len2 = MakeClockOrbit(&co,COTYPE_GPSCLOCK, mmsg, obuffer,775 int len2 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_GPSCLOCK, mmsg, obuffer, 2546 776 sizeof(obuffer)); 2547 777 if (len2 > 0) { … … 2553 783 if (fmod(epoTime.gpssec(), _samplRtcmEphCorr) == 0.0) { 2554 784 co.UpdateInterval = ephUpdInd; 2555 int len1 = MakeClockOrbit(&co,COTYPE_GLONASSORBIT, 1, obuffer,785 int len1 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_GLONASSORBIT, 1, obuffer, 2556 786 sizeof(obuffer)); 2557 787 co.UpdateInterval = clkUpdInd; … … 2564 794 co.NumberOfSat[CLOCKORBIT_SATSBAS] > 0 || 2565 795 co.NumberOfSat[CLOCKORBIT_SATBDS] > 0 ) ? 1 : 0; 2566 int len2 = MakeClockOrbit(&co,COTYPE_GLONASSCLOCK, mmsg, obuffer,796 int len2 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_GLONASSCLOCK, mmsg, obuffer, 2567 797 sizeof(obuffer)); 2568 798 if (len2 > 0) { … … 2574 804 if (fmod(epoTime.gpssec(), _samplRtcmEphCorr) == 0.0) { 2575 805 co.UpdateInterval = ephUpdInd; 2576 int len1 = MakeClockOrbit(&co,COTYPE_GALILEOORBIT, 1, obuffer,806 int len1 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_GALILEOORBIT, 1, obuffer, 2577 807 sizeof(obuffer)); 2578 808 co.UpdateInterval = clkUpdInd; … … 2584 814 co.NumberOfSat[CLOCKORBIT_SATSBAS] > 0 || 2585 815 co.NumberOfSat[CLOCKORBIT_SATBDS] > 0 ) ? 1 : 0; 2586 int len2 = MakeClockOrbit(&co,COTYPE_GALILEOCLOCK, mmsg, obuffer,816 int len2 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_GALILEOCLOCK, mmsg, obuffer, 2587 817 sizeof(obuffer)); 2588 818 if (len2 > 0) { … … 2594 824 if (fmod(epoTime.gpssec(), _samplRtcmEphCorr) == 0.0) { 2595 825 co.UpdateInterval = ephUpdInd; 2596 int len1 = MakeClockOrbit(&co,COTYPE_QZSSORBIT, 1, obuffer,826 int len1 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_QZSSORBIT, 1, obuffer, 2597 827 sizeof(obuffer)); 2598 828 co.UpdateInterval = clkUpdInd; … … 2603 833 int mmsg = (co.NumberOfSat[CLOCKORBIT_SATSBAS] > 0 || 2604 834 co.NumberOfSat[CLOCKORBIT_SATBDS] > 0 ) ? 1 : 0; 2605 int len2 = MakeClockOrbit(&co,COTYPE_QZSSCLOCK, mmsg, obuffer,835 int len2 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_QZSSCLOCK, mmsg, obuffer, 2606 836 sizeof(obuffer)); 2607 837 if (len2 > 0) { … … 2613 843 if (fmod(epoTime.gpssec(), _samplRtcmEphCorr) == 0.0) { 2614 844 co.UpdateInterval = ephUpdInd; 2615 int len1 = MakeClockOrbit(&co,COTYPE_SBASORBIT, 1, obuffer,845 int len1 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_SBASORBIT, 1, obuffer, 2616 846 sizeof(obuffer)); 2617 847 co.UpdateInterval = clkUpdInd; … … 2621 851 } 2622 852 int mmsg = (co.NumberOfSat[CLOCKORBIT_SATBDS] > 0) ? 1 : 0; 2623 int len2 = MakeClockOrbit(&co,COTYPE_SBASCLOCK, mmsg, obuffer,853 int len2 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_SBASCLOCK, mmsg, obuffer, 2624 854 sizeof(obuffer)); 2625 855 if (len2 > 0) { … … 2631 861 if (fmod(epoTime.gpssec(), _samplRtcmEphCorr) == 0.0) { 2632 862 co.UpdateInterval = ephUpdInd; 2633 int len1 = MakeClockOrbit(&co,COTYPE_BDSORBIT, 1, obuffer,863 int len1 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_BDSORBIT, 1, obuffer, 2634 864 sizeof(obuffer)); 2635 865 co.UpdateInterval = clkUpdInd; … … 2639 869 } 2640 870 int mmsg = 0; 2641 int len2 = MakeClockOrbit(&co,COTYPE_BDSCLOCK, mmsg, obuffer,871 int len2 = _ssrCorr->MakeClockOrbit(&co, _ssrCorr->COTYPE_BDSCLOCK, mmsg, obuffer, 2642 872 sizeof(obuffer)); 2643 873 if (len2 > 0) { … … 2657 887 || bias.NumberOfSat[CLOCKORBIT_SATBDS] > 0) { 2658 888 char obuffer[CLOCKORBIT_BUFFERSIZE]; 2659 int len = MakeCodeBias(&bias,CBTYPE_AUTO, 0, obuffer, sizeof(obuffer));889 int len = _ssrCorr->MakeCodeBias(&bias, _ssrCorr->CBTYPE_AUTO, 0, obuffer, sizeof(obuffer)); 2660 890 if (len > 0) { 2661 891 hlpBufferBias = QByteArray(obuffer, len); … … 2673 903 || phasebias.NumberOfSat[CLOCKORBIT_SATBDS] > 0) { 2674 904 char obuffer[CLOCKORBIT_BUFFERSIZE]; 2675 int len = MakePhaseBias(&phasebias,PBTYPE_AUTO, 0, obuffer,905 int len = _ssrCorr->MakePhaseBias(&phasebias, _ssrCorr->PBTYPE_AUTO, 0, obuffer, 2676 906 sizeof(obuffer)); 2677 907 if (len > 0) { … … 2685 915 if (vtec.NumLayers > 0) { 2686 916 char obuffer[CLOCKORBIT_BUFFERSIZE]; 2687 int len = MakeVTEC(&vtec, 0, obuffer, sizeof(obuffer));917 int len = _ssrCorr->MakeVTEC(&vtec, 0, obuffer, sizeof(obuffer)); 2688 918 if (len > 0) { 2689 919 hlpBufferVtec = QByteArray(obuffer, len); … … 2701 931 double rtnUra, const ColumnVector& rtnClk, const ColumnVector& rtnVel, 2702 932 const ColumnVector& rtnCoM, const ColumnVector& rtnClkSig, 2703 struct ClockOrbit::SatData* sd, QString& outLine) {933 struct SsrCorr::ClockOrbit::SatData* sd, QString& outLine) { 2704 934 2705 935 // Broadcast Position and Velocity … … 2744 974 double dClkA1 = 0.0; 2745 975 if (rtnClk(2)) { 2746 dClkA1 = rtnClk(2) - xB(5) * t_CST::c;976 dClkA1 = rtnClk(2) - xB(5) * t_CST::c; 2747 977 } 2748 978 double dClkA2 = 0.0; 2749 979 if (rtnClk(3)) { 2750 dClkA2 = rtnClk(3) - xB(6) * t_CST::c;980 dClkA2 = rtnClk(3) - xB(6) * t_CST::c; 2751 981 } 2752 982 -
trunk/BNC/src/upload/bncrtnetuploadcaster.h
r8969 r9025 6 6 #include "bnctime.h" 7 7 #include "ephemeris.h" 8 extern "C" {9 #ifdef USE_SSR_RTCM10 8 #include "../RTCM3/clock_and_orbit/clock_orbit_rtcm.h" 11 #elif USE_SSR_IGS12 9 #include "../RTCM3/clock_and_orbit/clock_orbit_igs.h" 13 #endif14 }15 10 16 11 class bncEphUser; … … 18 13 class bncClockRinex; 19 14 class bncSP3; 15 class SsrCorr; 20 16 21 17 class bncRtnetUploadCaster : public bncUploadCaster { … … 26 22 const QString& ntripVersion, 27 23 const QString& userName,const QString& password, 28 const QString& crdTrafo, bool CoM,29 const QString& sp3FileName,24 const QString& crdTrafo, const QString& ssrFormat, 25 bool CoM, const QString& sp3FileName, 30 26 const QString& rnxFileName, 31 27 int PID, int SID, int IOD, int iRow); … … 42 38 const ColumnVector& rtnCoM, 43 39 const ColumnVector& rtnClkSig, 44 struct ClockOrbit::SatData* sd,40 struct SsrCorr::ClockOrbit::SatData* sd, 45 41 QString& outLine); 46 42 void crdTrafo(int GPSWeek, ColumnVector& xyz, double& dc); … … 52 48 QString _rtnetStreamBuffer; 53 49 QString _crdTrafo; 50 SsrCorr* _ssrCorr; 51 QString _ssrFormat; 54 52 bool _CoM; 55 53 int _PID;
Note:
See TracChangeset
for help on using the changeset viewer.