 Timestamp:
 Oct 31, 2020, 10:14:11 PM (19 months ago)
 Location:
 branches/BNC_2.12/src
 Files:

 2 edited
Legend:
 Unmodified
 Added
 Removed

branches/BNC_2.12/src/RTCM3/RTCM3Decoder.cpp
r9089 r9193 1039 1039 GETFLOATSIGN(eph._clock_drift, 16, 1.0 / (double )(1 << 30) / (double )(1 << 13)) 1040 1040 GETFLOATSIGN(eph._clock_bias, 22, 1.0 / (double )(1 << 30) / (double )(1 << 1)) 1041 1042 1041 GETBITS(eph._IODC, 10) 1043 1042 GETFLOATSIGN(eph._Crs, 16, 1.0 / (double )(1 << 5)) … … 1048 1047 GETFLOATSIGN(eph._Cus, 16, 1.0 / (double )(1 << 29)) 1049 1048 GETFLOAT(eph._sqrt_A, 32, 1.0 / (double )(1 << 19)) 1049 if (eph._sqrt_A < 1000.0) {return false;} 1050 1050 GETBITS(i, 16) 1051 1051 i <<= 4; … … 1102 1102 GETBITS(eph._almanac_health, 1) /* almanac healthy */ 1103 1103 GETBITS(eph._almanac_health_availablility_indicator, 1) /* almanac health ok */ 1104 if (eph._almanac_health_availablility_indicator == 0.0) {return false;} 1104 1105 GETBITS(eph._P1, 2) /* P1 */ 1105 1106 GETBITS(i, 5) … … 1109 1110 GETBITS(i, 1) 1110 1111 tk += i * 30; 1111 1112 eph._tki = tk  3*60*60; 1112 1113 if(eph._tki < 0.0) { 1113 1114 eph._tki += 86400.0; … … 1137 1138 GETBITS(eph._M_FT, 4) /* GLONASSM Ft */ 1138 1139 GETBITS(eph._M_NT, 11) /* GLONASSM Nt */ 1140 if (eph._M_NT == 0.0) {return false;} 1139 1141 GETBITS(eph._M_M, 2) /* GLONASSM M */ 1140 1142 GETBITS(eph._additional_data_availability, 1) /* GLONASSM The Availability of Additional Data */ 1143 if (eph._additional_data_availability == 0.0) {return false;} 1141 1144 GETBITS(eph._NA, 11) /* GLONASSM Na */ 1142 1145 GETFLOATSIGNM(eph._tauC, 32, 1.0/(double)(1<<30)/(double)(1<<1)) /* GLONASS tau c */ … … 1193 1196 GETFLOATSIGN(eph._clock_drift, 16, 1.0 / (double )(1 << 30) / (double )(1 << 13)) 1194 1197 GETFLOATSIGN(eph._clock_bias, 22, 1.0 / (double )(1 << 30) / (double )(1 << 1)) 1195 1196 1198 GETBITS(eph._IODE, 8) 1197 1199 GETFLOATSIGN(eph._Crs, 16, 1.0 / (double )(1 << 5)) … … 1202 1204 GETFLOATSIGN(eph._Cus, 16, 1.0 / (double )(1 << 29)) 1203 1205 GETFLOAT(eph._sqrt_A, 32, 1.0 / (double )(1 << 19)) 1206 if (eph._sqrt_A < 1000.0) {return false;} 1204 1207 GETBITS(i, 16) 1205 1208 i <<= 4; … … 1310 1313 GETFLOAT(eph._e, 32, 1.0 / (double )(1 << 30) / (double )(1 << 3)) 1311 1314 GETFLOAT(eph._sqrt_A, 32, 1.0 / (double )(1 << 19)) 1315 if (eph._sqrt_A < 1000.0) {return false;} 1312 1316 GETFLOATSIGN(eph._OMEGA0, 32, R2R_PI/(double)(1<<30)/(double)(1<< 1)) 1313 1317 GETFLOATSIGN(eph._omega, 32, R2R_PI/(double)(1<<30)/(double)(1<< 1)) … … 1407 1411 GETFLOATSIGN(eph._Cus, 16, 1.0 / (double )(1 << 29)) 1408 1412 GETFLOAT(eph._sqrt_A, 32, 1.0 / (double )(1 << 19)) 1413 if (eph._sqrt_A < 1000.0) {return false;} 1409 1414 GETBITSFACTOR(eph._TOEsec, 14, 60) 1410 1415 /* FIXME: overwrite value, copied from old code */ … … 1423 1428 eph._e5aDataInValid = false; 1424 1429 1425 GETFLOATSIGN(eph._BGD_1_5B, 10, 1.0 / (double )(1 << 30) / (double )(1 << 2))1430 GETFLOATSIGN(eph._BGD_1_5B, 10, 1.0 / (double )(1 << 30) / (double )(1 << 2)) 1426 1431 GETBITS(eph._E5bHS, 2) 1427 1432 GETBITS(eph._e5bDataInValid, 1) 1428 1433 GETBITS(eph._E1_bHS, 2) 1429 1434 GETBITS(eph._e1DataInValid, 1) 1435 if (eph._E5bHS != eph._E1_bHS) { 1436 return false; 1437 } 1438 if ((eph._BGD_1_5A == 0.0 && fabs(eph._BGD_1_5B) > 1e9)  1439 (eph._BGD_1_5B == 0.0 && fabs(eph._BGD_1_5A) > 1e9)) { 1440 return false; 1441 } 1430 1442 } 1431 1443 else { … … 1487 1499 GETFLOATSIGN(eph._Cus, 18, 1.0 / (double )(1 << 30) / (double )(1 << 1)) 1488 1500 GETFLOAT(eph._sqrt_A, 32, 1.0 / (double )(1 << 19)) 1489 GETBITS(i, 17) 1501 if (eph._sqrt_A < 1000.0) {return false;} 1502 GETBITS(i, 17) 1490 1503 i <<= 3; 1491 1504 eph._TOEsec = i; … … 1679 1692 case 1045: 1680 1693 case 1046: 1694 // reject 1045/1046 from JAXA RTKLIB encoded stations 1695 if (_staID.contains("AIRA")  _staID.contains("STK2")  1696 _staID.contains("CCJ2")  _staID.contains("SYOG")) { 1697 break; 1698 } 1681 1699 if (DecodeGalileoEphemeris(_Message, _BlockSize)) 1682 1700 decoded = true; 
branches/BNC_2.12/src/bncephuser.cpp
r9060 r9193 205 205 return; 206 206 } 207 208 207 double rr = xc.Rows(1,3).norm_Frobenius(); 209 208 double rv = vv.norm_Frobenius(); 210 209 const double MINDIST = 2.e7; 211 210 const double MAXDIST = 6.e7; 212 211 if (rr < MINDIST  rr > MAXDIST  std::isnan(rr)) { 212 eph>setCheckState(t_eph::bad); 213 return; 214 } 215 if (eph>type() == t_eph::GLONASS && rv < 1.0) { 213 216 eph>setCheckState(t_eph::bad); 214 217 return;
Note:
See TracChangeset
for help on using the changeset viewer.