Changeset 10587 in ntrip for trunk/BNC/src/RTCM3
- Timestamp:
- Dec 10, 2024, 3:57:21 PM (3 months ago)
- Location:
- trunk/BNC/src/RTCM3
- Files:
-
- 2 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/BNC/src/RTCM3/RTCM3Decoder.cpp
r10579 r10587 1064 1064 } 1065 1065 GETBITS(i, 4) 1066 eph._ura = accuracyFromIndex(i, eph. type());1066 eph._ura = accuracyFromIndex(i, eph.system()); 1067 1067 GETBITS(eph._L2Codes, 2) 1068 1068 GETFLOATSIGN(eph._IDOT, 14, R2R_PI/(double)(1<<30)/(double)(1<<13)) … … 1132 1132 GETBITS(eph._L2PFlag, 1) 1133 1133 GETBITS(fitIntervalFalg, 1) 1134 eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph. type());1134 eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph.system()); 1135 1135 eph._TOT = 0.9999e9; 1136 eph._ ephType = t_eph::LNAV;1136 eph._type = t_eph::LNAV; 1137 1137 1138 1138 emit newGPSEph(eph); … … 1159 1159 eph._receptStaID = _staID; 1160 1160 1161 eph._flags_unknown = true;1162 1163 1161 GETBITS(sv, 6) 1164 1162 if (sv < 1 || sv > 63) { … … 1184 1182 return false; 1185 1183 } 1186 eph._fr equency_number= i - 7;1184 eph._frq_num = i - 7; 1187 1185 GETBITS(eph._almanac_health, 1) /* almanac healthy */ 1188 1186 GETBITS(eph._almanac_health_availablility_indicator, 1) /* almanac health ok */ … … 1245 1243 eph._TOC.setTk(i * 60 * 1000); /* tb */ 1246 1244 1247 GETFLOATSIGNM(eph._x_vel ocity,24, 1.0 / (double )(1 << 20))1248 GETFLOATSIGNM(eph._x_pos, 1249 GETFLOATSIGNM(eph._x_acc eleration,5, 1.0 / (double )(1 << 30))1250 GETFLOATSIGNM(eph._y_vel ocity,24, 1.0 / (double )(1 << 20))1251 GETFLOATSIGNM(eph._y_pos, 1252 GETFLOATSIGNM(eph._y_acc eleration,5, 1.0 / (double )(1 << 30))1253 GETFLOATSIGNM(eph._z_vel ocity,24, 1.0 / (double )(1 << 20))1254 GETFLOATSIGNM(eph._z_pos, 1255 GETFLOATSIGNM(eph._z_acc eleration,5, 1.0 / (double )(1 << 30))1245 GETFLOATSIGNM(eph._x_vel, 24, 1.0 / (double )(1 << 20)) 1246 GETFLOATSIGNM(eph._x_pos, 27, 1.0 / (double )(1 << 11)) 1247 GETFLOATSIGNM(eph._x_acc, 5, 1.0 / (double )(1 << 30)) 1248 GETFLOATSIGNM(eph._y_vel, 24, 1.0 / (double )(1 << 20)) 1249 GETFLOATSIGNM(eph._y_pos, 27, 1.0 / (double )(1 << 11)) 1250 GETFLOATSIGNM(eph._y_acc, 5, 1.0 / (double )(1 << 30)) 1251 GETFLOATSIGNM(eph._z_vel, 24, 1.0 / (double )(1 << 20)) 1252 GETFLOATSIGNM(eph._z_pos, 27, 1.0 / (double )(1 << 11)) 1253 GETFLOATSIGNM(eph._z_acc, 5, 1.0 / (double )(1 << 30)) 1256 1254 GETBITS(eph._P3, 1) /* P3 */ 1257 1255 GETFLOATSIGNM(eph._gamma, 11, 1.0 / (double )(1 << 30) / (double )(1 << 10)) … … 1281 1279 return false; 1282 1280 } 1283 GETBITS(eph._ NA, 11) /* GLONASS-M Na */1281 GETBITS(eph._M_NA, 11) /* GLONASS-M Na */ 1284 1282 GETFLOATSIGNM(eph._tauC, 32, 1.0/(double)(1<<30)/(double)(1<<1)) /* GLONASS tau c */ 1285 1283 GETBITS(eph._M_N4, 5) /* GLONASS-M N4 */ … … 1302 1300 return false; 1303 1301 } 1304 eph._xv(4) = eph._x_vel ocity* 1.e3;1305 eph._xv(5) = eph._y_vel ocity* 1.e3;1306 eph._xv(6) = eph._z_vel ocity* 1.e3;1302 eph._xv(4) = eph._x_vel * 1.e3; 1303 eph._xv(5) = eph._y_vel * 1.e3; 1304 eph._xv(6) = eph._z_vel * 1.e3; 1307 1305 if (eph._xv.Rows(4,6).NormFrobenius() < 1.0) { 1308 1306 #ifdef BNC_DEBUG_BCE … … 1312 1310 return false; 1313 1311 } 1314 GLOFreq[sv - 1] = 100 + eph._frequency_number ; /* store frequency for other users (MSM) */ 1315 _gloFrq = QString("%1 %2").arg(eph._prn.toString().c_str()).arg(eph._frequency_number, 2, 'f', 0); 1316 1317 eph._ephType = t_eph::FDMA; 1312 GLOFreq[sv - 1] = 100 + eph._frq_num ; /* store frequency for other users (MSM) */ 1313 _gloFrq = QString("%1 %2").arg(eph._prn.toString().c_str()).arg(eph._frq_num, 2, 'f', 0); 1314 1315 eph._type = t_eph::FDMA; 1316 eph._healthflags_unknown = false; 1317 eph._statusflags_unknown = false; 1318 1318 1319 1319 emit newGlonassEph(eph); … … 1429 1429 1430 1430 GETBITS(i, 4) 1431 eph._ura = accuracyFromIndex(i, eph. type());1431 eph._ura = accuracyFromIndex(i, eph.system()); 1432 1432 GETBITS(eph._health, 6) 1433 1433 GETFLOATSIGN(eph._TGD, 8, 1.0 / (double )(1 << 30) / (double )(1 << 1)) 1434 1434 GETBITS(eph._IODC, 10) 1435 1435 GETBITS(fitIntervalFalg, 1) 1436 eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph. type());1436 eph._fitInterval = fitIntervalFromFlag(fitIntervalFalg, eph._IODC, eph.system()); 1437 1437 eph._TOT = 0.9999e9; 1438 eph._ ephType = t_eph::LNAV;1438 eph._type = t_eph::LNAV; 1439 1439 1440 1440 emit newGPSEph(eph); … … 1487 1487 GETFLOATSIGN(eph._clock_driftrate, 8, 1.0 / (double )(1 << 30) / (double )(1 << 25)) 1488 1488 GETBITS(i, 4) 1489 eph._ura = accuracyFromIndex(i, eph. type());1489 eph._ura = accuracyFromIndex(i, eph.system()); 1490 1490 GETBITS(i, 16) 1491 1491 i <<= 4; … … 1567 1567 SKIPBITS(2) 1568 1568 eph._TOT = 0.9999e9; 1569 eph._ ephType = t_eph::LNAV;1569 eph._type = t_eph::LNAV; 1570 1570 1571 1571 emit newGPSEph(eph); … … 1618 1618 eph._TOC.setTOD(i * 1000); 1619 1619 GETBITS(i, 4) 1620 eph._ura = accuracyFromIndex(i, eph. type());1620 eph._ura = accuracyFromIndex(i, eph.system()); 1621 1621 GETFLOATSIGN(eph._x_pos, 30, 0.08) 1622 1622 GETFLOATSIGN(eph._y_pos, 30, 0.08) … … 1631 1631 return false; 1632 1632 } 1633 GETFLOATSIGN(eph._x_vel ocity, 17, 0.000625)1634 GETFLOATSIGN(eph._y_vel ocity, 17, 0.000625)1635 GETFLOATSIGN(eph._z_vel ocity, 18, 0.004)1636 GETFLOATSIGN(eph._x_acc eleration, 10, 0.0000125)1637 GETFLOATSIGN(eph._y_acc eleration, 10, 0.0000125)1638 GETFLOATSIGN(eph._z_acc eleration, 10, 0.0000625)1633 GETFLOATSIGN(eph._x_vel, 17, 0.000625) 1634 GETFLOATSIGN(eph._y_vel, 17, 0.000625) 1635 GETFLOATSIGN(eph._z_vel, 18, 0.004) 1636 GETFLOATSIGN(eph._x_acc, 10, 0.0000125) 1637 GETFLOATSIGN(eph._y_acc, 10, 0.0000125) 1638 GETFLOATSIGN(eph._z_acc, 10, 0.0000625) 1639 1639 GETFLOATSIGN(eph._agf0, 12, 1.0 / (1 << 30) / (1 << 1)) 1640 1640 GETFLOATSIGN(eph._agf1, 8, 1.0 / (1 << 30) / (1 << 10)) … … 1642 1642 eph._TOT = 0.9999E9; 1643 1643 eph._health = 0; 1644 eph._ ephType = t_eph::SBASL1;1644 eph._type = t_eph::SBASL1; 1645 1645 1646 1646 emit newSBASEph(eph); … … 1695 1695 GETBITS(eph._IODnav, 10) 1696 1696 GETBITS(i, 8) 1697 eph._SISA = accuracyFromIndex(i, eph. type());1697 eph._SISA = accuracyFromIndex(i, eph.system()); 1698 1698 GETFLOATSIGN(eph._IDOT, 14, R2R_PI/(double)(1<<30)/(double)(1<<13)) 1699 1699 GETBITSFACTOR(i, 14, 60) … … 1731 1731 } 1732 1732 /* FIXME: overwrite value, copied from old code */ 1733 eph._TOEsec = eph._TOC.gpssec();1733 //eph._TOEsec = eph._TOC.gpssec(); 1734 1734 GETFLOATSIGN(eph._Cic, 16, 1.0 / (double )(1 << 29)) 1735 1735 GETFLOATSIGN(eph._OMEGA0, 32, R2R_PI/(double)(1<<30)/(double)(1<<1)) … … 1742 1742 if (eph._inav) { 1743 1743 /* set unused F/NAV values */ 1744 eph._E5a HS = 0.0;1745 eph._ e5aDataInvalid = false;1744 eph._E5a_HS = 0.0; 1745 eph._E5a_DataInvalid = false; 1746 1746 1747 1747 GETFLOATSIGN(eph._BGD_1_5B, 10, 1.0 / (double )(1 << 30) / (double )(1 << 2)) 1748 GETBITS(eph._E5b HS, 2)1749 GETBITS(eph._ e5bDataInvalid, 1)1750 GETBITS(eph._E1 _bHS, 2)1751 GETBITS(eph._ e1DataInvalid, 1)1752 if (eph._E5b HS != eph._E1_bHS) {1748 GETBITS(eph._E5b_HS, 2) 1749 GETBITS(eph._E5b_DataInvalid, 1) 1750 GETBITS(eph._E1B_HS, 2) 1751 GETBITS(eph._E1B_DataInvalid, 1) 1752 if (eph._E5b_HS != eph._E1B_HS) { 1753 1753 #ifdef BNC_DEBUG_BCE 1754 1754 emit(newMessage(QString("%1: Block %2 (%3) SHS E5b %4 E1B %5: inconsistent health!") 1755 1755 .arg(_staID).arg(1046,4).arg(eph._prn.toString().c_str()) 1756 .arg(eph._E5b HS).arg(eph._E1_bHS).toLatin1(), true));1756 .arg(eph._E5b_HS).arg(eph._E1B_HS).toLatin1(), true)); 1757 1757 #endif 1758 1758 return false; … … 1761 1761 (eph._BGD_1_5B == 0.0 && fabs(eph._BGD_1_5A) > 1e-9)) { 1762 1762 #ifdef BNC_DEBUG_BCE 1763 emit(newMessage(QString("%1: Block %2 (%3) BGD_1 5a = %4 BGD_15b = %5: inconsistent BGD!")1763 emit(newMessage(QString("%1: Block %2 (%3) BGD_1_5a = %4 BGD_1_5b = %5: inconsistent BGD!") 1764 1764 .arg(_staID).arg(1046,4).arg(eph._prn.toString().c_str()) 1765 1765 .arg(eph._BGD_1_5A,10,'E',3).arg(eph._BGD_1_5B,10,'E',3).toLatin1(), true)); … … 1767 1767 return false; 1768 1768 } 1769 eph._ ephType = t_eph::INAF;1769 eph._type = t_eph::INAV; 1770 1770 } 1771 1771 else { 1772 1772 /* set unused I/NAV values */ 1773 1773 eph._BGD_1_5B = 0.0; 1774 eph._E5b HS = 0.0;1775 eph._E1 _bHS = 0.0;1776 eph._ e1DataInvalid = false;1777 eph._ e5bDataInvalid = false;1778 1779 GETBITS(eph._E5a HS, 2)1780 GETBITS(eph._ e5aDataInvalid, 1)1781 eph._ ephType = t_eph::FNAV;1774 eph._E5b_HS = 0.0; 1775 eph._E1B_HS = 0.0; 1776 eph._E1B_DataInvalid = false; 1777 eph._E5b_DataInvalid = false; 1778 1779 GETBITS(eph._E5a_HS, 2) 1780 GETBITS(eph._E5a_DataInvalid, 1) 1781 eph._type = t_eph::FNAV; 1782 1782 } 1783 1783 eph._TOT = 0.9999e9; … … 1841 1841 eph._BDTweek = week; 1842 1842 GETBITS(i, 4) 1843 eph._ URA = accuracyFromIndex(i, eph.type());1843 eph._ura = accuracyFromIndex(i, eph.system()); 1844 1844 GETFLOATSIGN(eph._IDOT, 14, R2R_PI/(double)(1<<30)/(double)(1<<13)) 1845 1845 GETBITS(eph._AODE, 5) … … 1903 1903 eph._TOT = 0.9999E9; 1904 1904 if (eph._i0 > iMaxGEO) { 1905 eph._ ephType = t_eph::D1;1905 eph._type = t_eph::D1; 1906 1906 } 1907 1907 else { 1908 eph._ ephType = t_eph::D2;1908 eph._type = t_eph::D2; 1909 1909 } 1910 1910 -
trunk/BNC/src/RTCM3/ephEncoder.cpp
r10579 r10587 14 14 int numbits = 0; 15 15 unsigned long long bitbuffer = 0; 16 int ura = indexFromAccuracy(eph._ura, eph. type());16 int ura = indexFromAccuracy(eph._ura, eph.system()); 17 17 int L5Flag = 0; 18 18 int SFlag = 0; 19 19 int fitIntervalFlag = 0; 20 20 21 if (eph. type() == t_eph::QZSS) {21 if (eph.system() == t_eph::QZSS) { 22 22 GPSADDBITS(12, 1044) 23 23 GPSADDBITS(4, eph._prn.number()) … … 52 52 GPSADDBITS(1, fitIntervalFlag) 53 53 GPSADDBITS(3, 0) /* padding */ 54 } else if (eph. type() == t_eph::IRNSS) {54 } else if (eph.system() == t_eph::IRNSS) { 55 55 GPSADDBITS(12, 1041) 56 56 GPSADDBITS(6, eph._prn.number()) … … 156 156 GLONASSADDBITS(12, 1020) 157 157 GLONASSADDBITS(6, eph._prn.number()) 158 GLONASSADDBITS(5, 7+eph._fr equency_number)158 GLONASSADDBITS(5, 7+eph._frq_num) 159 159 GLONASSADDBITS(1, eph._almanac_health) 160 160 GLONASSADDBITS(1, eph._almanac_health_availablility_indicator) … … 169 169 unsigned long long timeofday = (static_cast<int>(eph._tt.gpssec()+3*60*60-eph._gps_utc)%86400); 170 170 GLONASSADDBITS(7, timeofday/60/15) 171 GLONASSADDBITSFLOATM(24, eph._x_vel ocity*1000, 1000.0/static_cast<double>(1<<20))171 GLONASSADDBITSFLOATM(24, eph._x_vel*1000, 1000.0/static_cast<double>(1<<20)) 172 172 GLONASSADDBITSFLOATM(27, eph._x_pos*1000, 1000.0/static_cast<double>(1<<11)) 173 GLONASSADDBITSFLOATM(5, eph._x_acc eleration*1000, 1000.0/static_cast<double>(1<<30))174 GLONASSADDBITSFLOATM(24, eph._y_vel ocity*1000, 1000.0/static_cast<double>(1<<20))173 GLONASSADDBITSFLOATM(5, eph._x_acc*1000, 1000.0/static_cast<double>(1<<30)) 174 GLONASSADDBITSFLOATM(24, eph._y_vel*1000, 1000.0/static_cast<double>(1<<20)) 175 175 GLONASSADDBITSFLOATM(27, eph._y_pos*1000, 1000.0/static_cast<double>(1<<11)) 176 GLONASSADDBITSFLOATM(5, eph._y_acc eleration*1000, 1000.0/static_cast<double>(1<<30))177 GLONASSADDBITSFLOATM(24, eph._z_vel ocity*1000, 1000.0/static_cast<double>(1<<20))176 GLONASSADDBITSFLOATM(5, eph._y_acc*1000, 1000.0/static_cast<double>(1<<30)) 177 GLONASSADDBITSFLOATM(24, eph._z_vel*1000, 1000.0/static_cast<double>(1<<20)) 178 178 GLONASSADDBITSFLOATM(27,eph._z_pos*1000, 1000.0/static_cast<double>(1<<11)) 179 GLONASSADDBITSFLOATM(5, eph._z_acc eleration*1000, 1000.0/static_cast<double>(1<<30))179 GLONASSADDBITSFLOATM(5, eph._z_acc*1000, 1000.0/static_cast<double>(1<<30)) 180 180 GLONASSADDBITS(1, eph._P3) 181 181 GLONASSADDBITSFLOATM(11, eph._gamma, 1.0/static_cast<double>(1<<30)/static_cast<double>(1<<10)) … … 190 190 GLONASSADDBITS(2, eph._M_M) /* GLONASS-M active? */ 191 191 GLONASSADDBITS(1, eph._additional_data_availability) /* GLONASS additional data */ 192 GLONASSADDBITS(11, eph._ NA) /* GLONASS NA */192 GLONASSADDBITS(11, eph._M_NA) /* GLONASS NA */ 193 193 GLONASSADDBITSFLOATM(32, eph._tauC, 1.0/static_cast<double>(1<<30)/static_cast<double>(1<<1)) /* GLONASS tau C */ 194 194 GLONASSADDBITS(5, eph._M_N4) /* GLONASS-M N4 */ … … 217 217 buffer= buffer+3; 218 218 219 int SISA = indexFromAccuracy(eph._SISA, eph. type());219 int SISA = indexFromAccuracy(eph._SISA, eph.system()); 220 220 221 221 GALILEOADDBITS(12, eph._inav ? 1046 : 1045) … … 247 247 if(eph._inav) { 248 248 GALILEOADDBITSFLOAT(10, eph._BGD_1_5B, 1.0/static_cast<double>(1<<30)/static_cast<double>(1<<2)) 249 GALILEOADDBITS(2, static_cast<int>(eph._E5b HS))250 GALILEOADDBITS(1, eph._ e5bDataInvalid ? 1 : 0)251 GALILEOADDBITS(2, static_cast<int>(eph._E1 _bHS))252 GALILEOADDBITS(1, eph._ e1DataInvalid ? 1 : 0)249 GALILEOADDBITS(2, static_cast<int>(eph._E5b_HS)) 250 GALILEOADDBITS(1, eph._E5b_DataInvalid ? 1 : 0) 251 GALILEOADDBITS(2, static_cast<int>(eph._E1B_HS)) 252 GALILEOADDBITS(1, eph._E1B_DataInvalid ? 1 : 0) 253 253 } else { 254 GALILEOADDBITS(2, static_cast<int>(eph._E5a HS))255 GALILEOADDBITS(1, eph._ e5aDataInvalid ? 1 : 0)254 GALILEOADDBITS(2, static_cast<int>(eph._E5a_HS)) 255 GALILEOADDBITS(1, eph._E5a_DataInvalid ? 1 : 0) 256 256 } 257 257 … … 278 278 buffer= buffer+3; 279 279 280 int ura = indexFromAccuracy(eph._ura, eph. type());280 int ura = indexFromAccuracy(eph._ura, eph.system()); 281 281 SBASADDBITS(12, 1043) 282 282 SBASADDBITS(6, eph._prn.number()-20) … … 287 287 SBASADDBITSFLOAT(30, eph._y_pos, 0.08) 288 288 SBASADDBITSFLOAT(25, eph._z_pos, 0.4) 289 SBASADDBITSFLOAT(17, eph._x_vel ocity, 0.000625)290 SBASADDBITSFLOAT(17, eph._y_vel ocity, 0.000625)291 SBASADDBITSFLOAT(18, eph._z_vel ocity, 0.004)292 SBASADDBITSFLOAT(10, eph._x_acc eleration, 0.0000125)293 SBASADDBITSFLOAT(10, eph._y_acc eleration, 0.0000125)294 SBASADDBITSFLOAT(10, eph._z_acc eleration, 0.0000625)289 SBASADDBITSFLOAT(17, eph._x_vel, 0.000625) 290 SBASADDBITSFLOAT(17, eph._y_vel, 0.000625) 291 SBASADDBITSFLOAT(18, eph._z_vel, 0.004) 292 SBASADDBITSFLOAT(10, eph._x_acc, 0.0000125) 293 SBASADDBITSFLOAT(10, eph._y_acc, 0.0000125) 294 SBASADDBITSFLOAT(10, eph._z_acc, 0.0000625) 295 295 SBASADDBITSFLOAT(12, eph._agf0, 1.0/static_cast<double>(1<<30)/static_cast<double>(1<<1)) 296 296 SBASADDBITSFLOAT(8, eph._agf1, 1.0/static_cast<double>(1<<30)/static_cast<double>(1<<10)) … … 317 317 buffer= buffer+3; 318 318 319 int URA = indexFromAccuracy(eph._URA, eph.type());319 int URAI = indexFromAccuracy(eph._ura, eph.system()); 320 320 BDSADDBITS(12, 1042) 321 321 BDSADDBITS(6, eph._prn.number()) 322 322 BDSADDBITS(13, eph._TOC.bdsw()) 323 BDSADDBITS(4, URA );323 BDSADDBITS(4, URAI); 324 324 BDSADDBITSFLOAT(14, eph._IDOT, M_PI/static_cast<double>(1<<30)/static_cast<double>(1<<13)) 325 325 BDSADDBITS(5, eph._AODE)
Note:
See TracChangeset
for help on using the changeset viewer.