19 #ifndef GNSS_SDR_GLONASS_L1_L2_CA_H 20 #define GNSS_SDR_GLONASS_L1_L2_CA_H 74 constexpr
double GLONASS_L2_CA_SYMBOL_RATE_BPS = 1000.0;
82 constexpr
double GLONASS_L1_CA_SYMBOL_RATE_BPS = 1000.0;
84 constexpr int32_t GLONASS_CA_NBR_SATS = 24;
87 constexpr int32_t GLONASS_L1_CA_HISTORY_DEEP = 100;
90 #define GLONASS_GNAV_PREAMBLE \ 92 1, 1, 1, 1, 1, 0, 0, 0, 1, 1, 0, 1, 1, 1, 0, 1, 0, 1, 0, 0, 0, 0, 1, 0, 0, 1, 0, 1, 1, 0 \ 94 constexpr
double GLONASS_GNAV_PREAMBLE_DURATION_S = 0.300;
95 constexpr int32_t GLONASS_GNAV_PREAMBLE_LENGTH_BITS = 30;
96 constexpr int32_t GLONASS_GNAV_PREAMBLE_LENGTH_SYMBOLS = 300;
97 constexpr int32_t GLONASS_GNAV_PREAMBLE_PERIOD_SYMBOLS = 2000;
99 constexpr int32_t GLONASS_GNAV_TELEMETRY_SYMBOLS_PER_BIT = 10;
100 constexpr int32_t GLONASS_GNAV_TELEMETRY_SYMBOLS_PER_PREAMBLE_BIT = 10;
105 constexpr int32_t GLONASS_GNAV_DATA_SYMBOLS = 1700;
113 {2017, 1, 1, 0, 0, 0, -18},
114 {2015, 7, 1, 0, 0, 0, -17},
115 {2012, 7, 1, 0, 0, 0, -16},
116 {2009, 1, 1, 0, 0, 0, -15},
117 {2006, 1, 1, 0, 0, 0, -14},
118 {1999, 1, 1, 0, 0, 0, -13},
119 {1997, 7, 1, 0, 0, 0, -12},
120 {1996, 1, 1, 0, 0, 0, -11},
121 {1994, 7, 1, 0, 0, 0, -10},
122 {1993, 7, 1, 0, 0, 0, -9},
123 {1992, 7, 1, 0, 0, 0, -8},
124 {1991, 1, 1, 0, 0, 0, -7},
125 {1990, 1, 1, 0, 0, 0, -6},
126 {1988, 1, 1, 0, 0, 0, -5},
127 {1985, 7, 1, 0, 0, 0, -4},
128 {1983, 7, 1, 0, 0, 0, -3},
129 {1982, 7, 1, 0, 0, 0, -2},
130 {1981, 7, 1, 0, 0, 0, -1},
134 const std::map<uint32_t, int32_t> GLONASS_PRN = {
233 const std::vector<int32_t> GLONASS_GNAV_CRC_I_INDEX{9, 10, 12, 13, 15, 17, 19, 20, 22, 24, 26, 28, 30, 32, 34, 35, 37, 39, 41, 43, 45, 47, 49, 51, 53, 55, 57, 59, 61, 63, 65, 66, 68, 70, 72, 74, 76, 78, 80, 82, 84};
234 const std::vector<int32_t> GLONASS_GNAV_CRC_J_INDEX{9, 11, 12, 14, 15, 18, 19, 21, 22, 25, 26, 29, 30, 33, 34, 36, 37, 40, 41, 44, 45, 48, 49, 52, 53, 56, 57, 60, 61, 64, 65, 67, 68, 71, 72, 75, 76, 79, 80, 83, 84};
235 const std::vector<int32_t> GLONASS_GNAV_CRC_K_INDEX{10, 11, 12, 16, 17, 18, 19, 23, 24, 25, 26, 31, 32, 33, 34, 38, 39, 40, 41, 46, 47, 48, 49, 54, 55, 56, 57, 62, 63, 64, 65, 69, 70, 71, 72, 77, 78, 79, 80, 85};
236 const std::vector<int32_t> GLONASS_GNAV_CRC_L_INDEX{13, 14, 15, 16, 17, 18, 19, 27, 28, 29, 30, 31, 32, 33, 34, 42, 43, 44, 45, 46, 47, 48, 49, 58, 59, 60, 61, 62, 63, 64, 65, 73, 74, 75, 76, 77, 78, 79, 80};
237 const std::vector<int32_t> GLONASS_GNAV_CRC_M_INDEX{20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 81, 82, 83, 84, 85};
238 const std::vector<int32_t> GLONASS_GNAV_CRC_N_INDEX{35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65};
239 const std::vector<int32_t> GLONASS_GNAV_CRC_P_INDEX{66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85};
240 const std::vector<int32_t> GLONASS_GNAV_CRC_Q_INDEX{9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85};
241 const std::vector<int32_t> GLONASS_GNAV_ECC_LOCATOR{0, 0, 1, 8, 2, 9, 10, 11, 3, 12, 13, 14, 15, 16, 17, 18, 4, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 5, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 6, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84};
248 const std::vector<std::pair<int32_t, int32_t>> STRING_ID({{2, 4}});
249 const std::vector<std::pair<int32_t, int32_t>> KX({{78, 8}});
251 const std::vector<std::pair<int32_t, int32_t>> P1({{8, 2}});
252 const std::vector<std::pair<int32_t, int32_t>> T_K_HR({{10, 5}});
253 const std::vector<std::pair<int32_t, int32_t>> T_K_MIN({{15, 6}});
254 const std::vector<std::pair<int32_t, int32_t>> T_K_SEC({{21, 1}});
255 const std::vector<std::pair<int32_t, int32_t>> X_N_DOT({{22, 24}});
256 const std::vector<std::pair<int32_t, int32_t>> X_N_DOT_DOT({{46, 5}});
257 const std::vector<std::pair<int32_t, int32_t>> X_N({{51, 27}});
260 const std::vector<std::pair<int32_t, int32_t>> B_N({{6, 3}});
261 const std::vector<std::pair<int32_t, int32_t>> P2({{9, 1}});
262 const std::vector<std::pair<int32_t, int32_t>> T_B({{10, 7}});
263 const std::vector<std::pair<int32_t, int32_t>> Y_N_DOT({{22, 24}});
264 const std::vector<std::pair<int32_t, int32_t>> Y_N_DOT_DOT({{46, 5}});
265 const std::vector<std::pair<int32_t, int32_t>> Y_N({{51, 27}});
268 const std::vector<std::pair<int32_t, int32_t>> P3({{6, 1}});
269 const std::vector<std::pair<int32_t, int32_t>> GAMMA_N({{7, 11}});
270 const std::vector<std::pair<int32_t, int32_t>> P({{19, 2}});
271 const std::vector<std::pair<int32_t, int32_t>> EPH_L_N({{21, 1}});
272 const std::vector<std::pair<int32_t, int32_t>> Z_N_DOT({{22, 24}});
273 const std::vector<std::pair<int32_t, int32_t>> Z_N_DOT_DOT({{46, 5}});
274 const std::vector<std::pair<int32_t, int32_t>> Z_N({{51, 27}});
277 const std::vector<std::pair<int32_t, int32_t>> TAU_N({{6, 22}});
278 const std::vector<std::pair<int32_t, int32_t>> DELTA_TAU_N({{28, 5}});
279 const std::vector<std::pair<int32_t, int32_t>> E_N({{33, 5}});
280 const std::vector<std::pair<int32_t, int32_t>> P4({{52, 1}});
281 const std::vector<std::pair<int32_t, int32_t>> F_T({{53, 4}});
282 const std::vector<std::pair<int32_t, int32_t>> N_T({{60, 11}});
283 const std::vector<std::pair<int32_t, int32_t>> N({{71, 5}});
284 const std::vector<std::pair<int32_t, int32_t>> M({{76, 2}});
287 const std::vector<std::pair<int32_t, int32_t>> DAY_NUMBER_A({{6, 11}});
288 const std::vector<std::pair<int32_t, int32_t>> TAU_C({{17, 32}});
289 const std::vector<std::pair<int32_t, int32_t>> N_4({{50, 5}});
290 const std::vector<std::pair<int32_t, int32_t>> TAU_GPS({{55, 22}});
291 const std::vector<std::pair<int32_t, int32_t>> ALM_L_N({{77, 1}});
294 const std::vector<std::pair<int32_t, int32_t>> C_N({{6, 1}});
295 const std::vector<std::pair<int32_t, int32_t>> M_N_A({{7, 2}});
296 const std::vector<std::pair<int32_t, int32_t>> N_A({{9, 5}});
297 const std::vector<std::pair<int32_t, int32_t>> TAU_N_A({{14, 10}});
298 const std::vector<std::pair<int32_t, int32_t>> LAMBDA_N_A({{24, 21}});
299 const std::vector<std::pair<int32_t, int32_t>> DELTA_I_N_A({{45, 18}});
300 const std::vector<std::pair<int32_t, int32_t>> EPSILON_N_A({{63, 15}});
303 const std::vector<std::pair<int32_t, int32_t>> OMEGA_N_A({{6, 16}});
304 const std::vector<std::pair<int32_t, int32_t>> T_LAMBDA_N_A({{22, 21}});
305 const std::vector<std::pair<int32_t, int32_t>> DELTA_T_N_A({{43, 22}});
306 const std::vector<std::pair<int32_t, int32_t>> DELTA_T_DOT_N_A({{65, 7}});
307 const std::vector<std::pair<int32_t, int32_t>> H_N_A({{72, 5}});
310 const std::vector<std::pair<int32_t, int32_t>> B1({{6, 11}});
311 const std::vector<std::pair<int32_t, int32_t>> B2({{17, 10}});
316 #endif // GNSS_SDR_GLONASS_L1_L2_CA_H constexpr double GLONASS_SUN_Q1
TODO Why is the value greater than 60?(129596579.10 sec) [rad].
constexpr double GLONASS_L2_CA_CODE_LENGTH_CHIPS
GLONASS L1 C/A code length [chips].
constexpr double GLONASS_J4
Fourth zonal harmonic of the geopotential.
constexpr double GLONASS_L2_CA_DFREQ_HZ
Freq Bias for GLONASS L1 [Hz].
constexpr double GLONASS_SUN_SEMI_MAJOR_AXIS
Semi-major axis of solar orbit [km];.
constexpr int32_t GLONASS_GNAV_TELEMETRY_RATE_BITS_SECOND
NAV message bit rate [bits/s].
constexpr double GLONASS_J2
Second zonal harmonic of the geopotential.
constexpr double GLONASS_LEAP_SECONDS[19][7]
Record of leap seconds definition for GLOT to GPST conversion and vice versa.
constexpr int32_t GLONASS_GNAV_STRING_BITS
Number of bits per string in the GNAV message (85 data bits + 30 time mark bits) [bits].
constexpr double GLONASS_MOON_OMEGA_0
(259 deg 10 min 59.79 sec) [rad]
constexpr double FREQ1_GLO
GLONASS G1 base frequency (Hz)
constexpr double GLONASS_F_M_A
Gravitational constant of atmosphere [m^3/s^2].
constexpr double GLONASS_SEMI_MAJOR_AXIS
Semi-major axis of Earth [m].
constexpr double GLONASS_SUN_Q0
(358 deg 28 min 33.04 sec) [rad]
constexpr double GLONASS_J6
Sixth zonal harmonic of the geopotential.
constexpr double GLONASS_MOON_INCLINATION
Inclination of lunar orbit to ecliptic plane (5 deg 08 min 43.4 sec) [rad].
constexpr double FREQ2_GLO
GLONASS G2 base frequency (Hz)
constexpr double GLONASS_GRAVITY
Equatorial acceleration of gravity [mGal].
constexpr double DFRQ1_GLO
GLONASS G1 bias frequency (Hz/n)
constexpr double GLONASS_L1_CA_DFREQ_HZ
Freq Bias for GLONASS L1 [Hz].
constexpr double GLONASS_L2_CA_CHIP_PERIOD_S
GLONASS L1 C/A chip period [seconds].
constexpr int32_t GLONASS_GNAV_HAMMING_CODE_BITS
Number of bits in hamming code sequence of GNAV message.
constexpr double GLONASS_L1_CA_CODE_PERIOD_S
GLONASS L1 C/A code period [seconds].
constexpr double GLONASS_U0
Normal potential at surface of common terrestrial ellipsoid [m^2/s^2].
constexpr double GLONASS_MOON_Q1
(477198 deg 50 min 56.79 sec) [rad]
constexpr double GLONASS_L1_CA_CHIP_PERIOD_S
GLONASS L1 C/A chip period [seconds].
constexpr double GLONASS_TAU_0
(-334 deg 19 min 46.40 sec) [rad];
constexpr double DFRQ2_GLO
GLONASS G2 bias frequency (Hz/n)
constexpr double GLONASS_L2_CA_FREQ_HZ
L2 [Hz].
constexpr double GLONASS_MOON_ECCENTRICITY
Eccentricity of lunar orbit.
constexpr double GLONASS_TAU_1
(4069 deg 02 min 02.52 sec) [rad];
constexpr double GLONASS_FLATTENING
Flattening parameter.
constexpr double GLONASS_J8
Eighth zonal harmonic of the geopotential.
constexpr double GLONASS_SUN_ECCENTRICITY
Eccentricity of solar orbit.
constexpr double GLONASS_L2_CA_CODE_PERIOD_S
GLONASS L1 C/A code period [seconds].
constexpr double GLONASS_MOON_OMEGA_1
(-1934 deg 08 min 31.23 sec) [rad]
constexpr double GLONASS_C20
Second zonal coefficient of spherical harmonic expansion.
constexpr int32_t GLONASS_GNAV_TELEMETRY_RATE_SYMBOLS_SECOND
NAV message bit rate [symbols/s].
constexpr double GLONASS_L2_CA_CODE_RATE_CPS
GLONASS L1 C/A code rate [chips/s].
constexpr double GLONASS_MOON_Q0
(-63 deg 53 min 43.41 sec) [rad]
constexpr double GLONASS_L1_CA_CODE_LENGTH_CHIPS
GLONASS L1 C/A code length [chips].
constexpr int32_t GLONASS_GNAV_STRING_SYMBOLS
Number of bits per string in the GNAV message (85 data bits + 30 time mark bits) [bits].
constexpr double GLONASS_MOON_SEMI_MAJOR_AXIS
Semi-major axis of lunar orbit [km];.
constexpr double GLONASS_SUN_OMEGA
TODO What is this operation in the seconds with T?(281 deg 13 min 15.0 + 6189.03 x T sec) [rad]...
constexpr double GLONASS_SUN_GM
Solar gravitational constant [km^3/s^2].
constexpr double GLONASS_EARTH_RADIUS
Equatorial radius of Earth [km].
constexpr double GLONASS_GRAVITY_CORRECTION
Correction to acceleration of gravity at sea-level due to Atmosphere[uGal].
constexpr double GLONASS_MOON_GM
Lunar gravitational constant [km^3/s^2].
constexpr double GLONASS_L1_CA_FREQ_HZ
L1 [Hz].
constexpr double GLONASS_L1_CA_CODE_RATE_CPS
GLONASS L1 C/A code rate [chips/s].
constexpr double GLONASS_EARTH_INCLINATION
Mean inclination of ecliptic to equator (23 deg 26 min 33 sec) [rad].