18#ifndef GNSS_SDR_GALILEO_FNAV_H
19#define GNSS_SDR_GALILEO_FNAV_H
32const std::vector<std::pair<int32_t, int32_t>> FNAV_PAGE_TYPE_BIT({{1, 6}});
35const std::vector<std::pair<int32_t, int32_t>> FNAV_SV_ID_PRN_1_BIT({{7, 6}});
36const std::vector<std::pair<int32_t, int32_t>> FNAV_IO_DNAV_1_BIT({{13, 10}});
37const std::vector<std::pair<int32_t, int32_t>> FNAV_T0C_1_BIT({{23, 14}});
38constexpr int32_t FNAV_T0C_1_LSB = 60;
39const std::vector<std::pair<int32_t, int32_t>> FNAV_AF0_1_BIT({{37, 31}});
40constexpr double FNAV_AF0_1_LSB =
TWO_N34;
41const std::vector<std::pair<int32_t, int32_t>> FNAV_AF1_1_BIT({{68, 21}});
42constexpr double FNAV_AF1_1_LSB =
TWO_N46;
43const std::vector<std::pair<int32_t, int32_t>> FNAV_AF2_1_BIT({{89, 6}});
44constexpr double FNAV_AF2_1_LSB =
TWO_N59;
45const std::vector<std::pair<int32_t, int32_t>> FNAV_SISA_1_BIT({{95, 8}});
46const std::vector<std::pair<int32_t, int32_t>> FNAV_AI0_1_BIT({{103, 11}});
47constexpr double FNAV_AI0_1_LSB =
TWO_N2;
48const std::vector<std::pair<int32_t, int32_t>> FNAV_AI1_1_BIT({{114, 11}});
49constexpr double FNAV_AI1_1_LSB =
TWO_N8;
50const std::vector<std::pair<int32_t, int32_t>> FNAV_AI2_1_BIT({{125, 14}});
51constexpr double FNAV_AI2_1_LSB =
TWO_N15;
52const std::vector<std::pair<int32_t, int32_t>> FNAV_REGION1_1_BIT({{139, 1}});
53const std::vector<std::pair<int32_t, int32_t>> FNAV_REGION2_1_BIT({{140, 1}});
54const std::vector<std::pair<int32_t, int32_t>> FNAV_REGION3_1_BIT({{141, 1}});
55const std::vector<std::pair<int32_t, int32_t>> FNAV_REGION4_1_BIT({{142, 1}});
56const std::vector<std::pair<int32_t, int32_t>> FNAV_REGION5_1_BIT({{143, 1}});
57const std::vector<std::pair<int32_t, int32_t>> FNAV_BGD_1_BIT({{144, 10}});
58constexpr double FNAV_BGD_1_LSB =
TWO_N32;
59const std::vector<std::pair<int32_t, int32_t>> FNAV_E5AHS_1_BIT({{154, 2}});
60const std::vector<std::pair<int32_t, int32_t>> FNAV_WN_1_BIT({{156, 12}});
61const std::vector<std::pair<int32_t, int32_t>> FNAV_TOW_1_BIT({{168, 20}});
62const std::vector<std::pair<int32_t, int32_t>> FNAV_E5ADVS_1_BIT({{188, 1}});
65const std::vector<std::pair<int32_t, int32_t>> FNAV_IO_DNAV_2_BIT({{7, 10}});
66const std::vector<std::pair<int32_t, int32_t>> FNAV_M0_2_BIT({{17, 32}});
68const std::vector<std::pair<int32_t, int32_t>> FNAV_OMEGADOT_2_BIT({{49, 24}});
69constexpr double FNAV_OMEGADOT_2_LSB =
PI_TWO_N43;
70const std::vector<std::pair<int32_t, int32_t>> FNAV_E_2_BIT({{73, 32}});
71constexpr double FNAV_E_2_LSB =
TWO_N33;
72const std::vector<std::pair<int32_t, int32_t>> FNAV_A12_2_BIT({{105, 32}});
73constexpr double FNAV_A12_2_LSB =
TWO_N19;
74const std::vector<std::pair<int32_t, int32_t>> FNAV_OMEGA0_2_BIT({{137, 32}});
75constexpr double FNAV_OMEGA0_2_LSB =
PI_TWO_N31;
76const std::vector<std::pair<int32_t, int32_t>> FNAV_IDOT_2_BIT({{169, 14}});
78const std::vector<std::pair<int32_t, int32_t>> FNAV_WN_2_BIT({{183, 12}});
79const std::vector<std::pair<int32_t, int32_t>> FNAV_TOW_2_BIT({{195, 20}});
82const std::vector<std::pair<int32_t, int32_t>> FNAV_IO_DNAV_3_BIT({{7, 10}});
83const std::vector<std::pair<int32_t, int32_t>> FNAV_I0_3_BIT({{17, 32}});
85const std::vector<std::pair<int32_t, int32_t>> FNAV_W_3_BIT({{49, 32}});
87const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTAN_3_BIT({{81, 16}});
88constexpr double FNAV_DELTAN_3_LSB =
PI_TWO_N43;
89const std::vector<std::pair<int32_t, int32_t>> FNAV_CUC_3_BIT({{97, 16}});
90constexpr double FNAV_CUC_3_LSB =
TWO_N29;
91const std::vector<std::pair<int32_t, int32_t>> FNAV_CUS_3_BIT({{113, 16}});
92constexpr double FNAV_CUS_3_LSB =
TWO_N29;
93const std::vector<std::pair<int32_t, int32_t>> FNAV_CRC_3_BIT({{129, 16}});
94constexpr double FNAV_CRC_3_LSB =
TWO_N5;
95const std::vector<std::pair<int32_t, int32_t>> FNAV_CRS_3_BIT({{145, 16}});
96constexpr double FNAV_CRS_3_LSB =
TWO_N5;
97const std::vector<std::pair<int32_t, int32_t>> FNAV_T0E_3_BIT({{161, 14}});
98constexpr int32_t FNAV_T0E_3_LSB = 60;
99const std::vector<std::pair<int32_t, int32_t>> FNAV_WN_3_BIT({{175, 12}});
100const std::vector<std::pair<int32_t, int32_t>> FNAV_TOW_3_BIT({{187, 20}});
103const std::vector<std::pair<int32_t, int32_t>> FNAV_IO_DNAV_4_BIT({{7, 10}});
104const std::vector<std::pair<int32_t, int32_t>> FNAV_CIC_4_BIT({{17, 16}});
105constexpr double FNAV_CIC_4_LSB =
TWO_N29;
106const std::vector<std::pair<int32_t, int32_t>> FNAV_CIS_4_BIT({{33, 16}});
107constexpr double FNAV_CIS_4_LSB =
TWO_N29;
108const std::vector<std::pair<int32_t, int32_t>> FNAV_A0_4_BIT({{49, 32}});
109constexpr double FNAV_A0_4_LSB =
TWO_N30;
110const std::vector<std::pair<int32_t, int32_t>> FNAV_A1_4_BIT({{81, 24}});
111constexpr double FNAV_A1_4_LSB =
TWO_N50;
112const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTATLS_4_BIT({{105, 8}});
113const std::vector<std::pair<int32_t, int32_t>> FNAV_T0T_4_BIT({{113, 8}});
114constexpr int32_t FNAV_T0T_4_LSB = 3600;
115const std::vector<std::pair<int32_t, int32_t>> FNAV_W_NOT_4_BIT({{121, 8}});
116const std::vector<std::pair<int32_t, int32_t>> FNAV_W_NLSF_4_BIT({{129, 8}});
117const std::vector<std::pair<int32_t, int32_t>> FNAV_DN_4_BIT({{137, 3}});
118const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTATLSF_4_BIT({{140, 8}});
119const std::vector<std::pair<int32_t, int32_t>> FNAV_T0G_4_BIT({{148, 8}});
120constexpr int32_t FNAV_T0G_4_LSB = 3600;
121const std::vector<std::pair<int32_t, int32_t>> FNAV_A0G_4_BIT({{156, 16}});
122constexpr double FNAV_A0G_4_LSB =
TWO_N35;
123const std::vector<std::pair<int32_t, int32_t>> FNAV_A1G_4_BIT({{172, 12}});
124constexpr double FNAV_A1G_4_LSB =
TWO_N51;
125const std::vector<std::pair<int32_t, int32_t>> FNAV_W_N0G_4_BIT({{184, 6}});
126const std::vector<std::pair<int32_t, int32_t>> FNAV_TOW_4_BIT({{190, 20}});
129const std::vector<std::pair<int32_t, int32_t>> FNAV_IO_DA_5_BIT({{7, 4}});
130const std::vector<std::pair<int32_t, int32_t>> FNAV_W_NA_5_BIT({{11, 2}});
131const std::vector<std::pair<int32_t, int32_t>> FNAV_T0A_5_BIT({{13, 10}});
132constexpr int32_t FNAV_T0A_5_LSB = 600;
133const std::vector<std::pair<int32_t, int32_t>> FNAV_SVI_D1_5_BIT({{23, 6}});
134const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTAA12_1_5_BIT({{29, 13}});
135constexpr double FNAV_DELTAA12_5_LSB =
TWO_N9;
136const std::vector<std::pair<int32_t, int32_t>> FNAV_E_1_5_BIT({{42, 11}});
137constexpr double FNAV_E_5_LSB =
TWO_N16;
138const std::vector<std::pair<int32_t, int32_t>> FNAV_W_1_5_BIT({{53, 16}});
139constexpr double FNAV_W_5_LSB =
TWO_N15;
140const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTAI_1_5_BIT({{69, 11}});
141constexpr double FNAV_DELTAI_5_LSB =
TWO_N14;
142const std::vector<std::pair<int32_t, int32_t>> FNAV_OMEGA0_1_5_BIT({{80, 16}});
143constexpr double FNAV_OMEGA0_5_LSB =
TWO_N15;
144const std::vector<std::pair<int32_t, int32_t>> FNAV_OMEGADOT_1_5_BIT({{96, 11}});
145constexpr double FNAV_OMEGADOT_5_LSB =
TWO_N33;
146const std::vector<std::pair<int32_t, int32_t>> FNAV_M0_1_5_BIT({{107, 16}});
147constexpr double FNAV_M0_5_LSB =
TWO_N15;
148const std::vector<std::pair<int32_t, int32_t>> FNAV_AF0_1_5_BIT({{123, 16}});
149constexpr double FNAV_AF0_5_LSB =
TWO_N19;
150const std::vector<std::pair<int32_t, int32_t>> FNAV_AF1_1_5_BIT({{139, 13}});
151constexpr double FNAV_AF1_5_LSB =
TWO_N38;
152const std::vector<std::pair<int32_t, int32_t>> FNAV_E5AHS_1_5_BIT({{152, 2}});
153const std::vector<std::pair<int32_t, int32_t>> FNAV_SVI_D2_5_BIT({{154, 6}});
154const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTAA12_2_5_BIT({{160, 13}});
155const std::vector<std::pair<int32_t, int32_t>> FNAV_E_2_5_BIT({{173, 11}});
156const std::vector<std::pair<int32_t, int32_t>> FNAV_W_2_5_BIT({{184, 16}});
157const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTAI_2_5_BIT({{200, 11}});
161const std::vector<std::pair<int32_t, int32_t>> FNAV_IO_DA_6_BIT({{7, 4}});
163const std::vector<std::pair<int32_t, int32_t>> FNAV_OMEGADOT_2_6_BIT({{23, 11}});
164const std::vector<std::pair<int32_t, int32_t>> FNAV_M0_2_6_BIT({{34, 16}});
165const std::vector<std::pair<int32_t, int32_t>> FNAV_AF0_2_6_BIT({{50, 16}});
166const std::vector<std::pair<int32_t, int32_t>> FNAV_AF1_2_6_BIT({{66, 13}});
167const std::vector<std::pair<int32_t, int32_t>> FNAV_E5AHS_2_6_BIT({{79, 2}});
168const std::vector<std::pair<int32_t, int32_t>> FNAV_SVI_D3_6_BIT({{81, 6}});
169const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTAA12_3_6_BIT({{87, 13}});
170const std::vector<std::pair<int32_t, int32_t>> FNAV_E_3_6_BIT({{100, 11}});
171const std::vector<std::pair<int32_t, int32_t>> FNAV_W_3_6_BIT({{111, 16}});
172const std::vector<std::pair<int32_t, int32_t>> FNAV_DELTAI_3_6_BIT({{127, 11}});
173const std::vector<std::pair<int32_t, int32_t>> FNAV_OMEGA0_3_6_BIT({{138, 16}});
174const std::vector<std::pair<int32_t, int32_t>> FNAV_OMEGADOT_3_6_BIT({{154, 11}});
175const std::vector<std::pair<int32_t, int32_t>> FNAV_M0_3_6_BIT({{165, 16}});
176const std::vector<std::pair<int32_t, int32_t>> FNAV_AF0_3_6_BIT({{181, 16}});
177const std::vector<std::pair<int32_t, int32_t>> FNAV_AF1_3_6_BIT({{197, 13}});
178const std::vector<std::pair<int32_t, int32_t>> FNAV_E5AHS_3_6_BIT({{210, 2}});
Defines useful mathematical constants and their scaled versions.
constexpr double PI_TWO_N31
Pi*2^-31.
constexpr double TWO_N15
2^-15
constexpr double TWO_N16
2^-16
constexpr double PI_TWO_N43
Pi*2^-43.
constexpr double TWO_N5
2^-5
constexpr double TWO_N34
2^-34
constexpr double TWO_N51
2^-51
constexpr double TWO_N9
2^-9
constexpr double TWO_N19
2^-19
constexpr double TWO_N46
2^-46
constexpr double TWO_N59
2^-59
constexpr double TWO_N8
2^-8
constexpr double TWO_N2
2^-2
constexpr double TWO_N35
2^-35
constexpr double TWO_N32
2^-32
constexpr double TWO_N38
2^-38
constexpr double TWO_N29
2^-29
constexpr double TWO_N30
2^-30
constexpr double TWO_N50
2^-50
constexpr double TWO_N33
2^-33
constexpr double TWO_N14
2^-14