62class Galileo_Inav_Message
65 Galileo_Inav_Message();
67 ~Galileo_Inav_Message();
72 void split_page(std::string page_string, int32_t flag_even_word);
77 bool have_new_ephemeris();
82 bool have_new_iono_and_GST();
87 bool have_new_utc_model();
92 bool have_new_almanac();
97 bool have_new_reduced_ced();
147 std::string get_osnma_adkd_4_nav_bits();
152 void reset_osnma_nav_bits_adkd4();
157 std::string get_osnma_adkd_0_12_nav_bits();
162 void reset_osnma_nav_bits_adkd0_12();
164 inline bool get_flag_CRC_test()
const
166 return flag_CRC_test;
169 inline bool get_flag_TOW_set()
const
174 inline void set_flag_TOW_set(
bool flag_tow)
176 flag_TOW_set = flag_tow;
179 inline int32_t get_Galileo_week()
const
184 inline int32_t get_TOW5()
const
189 inline int32_t get_TOW6()
const
194 inline bool is_TOW5_set()
const
199 inline void set_TOW5_flag(
bool flag_tow5)
201 flag_TOW_5 = flag_tow5;
204 inline bool is_TOW6_set()
const
209 inline void set_TOW6_flag(
bool flag_tow6)
211 flag_TOW_6 = flag_tow6;
214 inline int32_t get_TOW0()
const
219 inline bool is_TOW0_set()
const
224 inline void set_TOW0_flag(
bool flag_tow0)
226 flag_TOW_0 = flag_tow0;
229 inline bool get_flag_GGTO()
const
231 return (flag_GGTO_1 ==
true and flag_GGTO_2 ==
true and flag_GGTO_3 ==
true and flag_GGTO_4 ==
true);
234 inline double get_A0G()
const
239 inline double get_A1G()
const
244 inline double get_t0G()
const
249 inline double get_WN0G()
const
257 inline void init_PRN(uint32_t prn)
261 nma_msg.mack = std::array<uint32_t, 15>{};
262 nma_msg.hkroot = std::array<uint8_t, 15>{};
263 page_position_in_inav_subframe = 255;
264 nma_position_filled = std::array<int8_t, 15>{};
270 inline void enable_reed_solomon()
276 bool CRC_test(
const std::bitset<GALILEO_DATA_FRAME_BITS>& bits, uint32_t checksum)
const;
277 bool read_navigation_bool(
const std::bitset<GALILEO_DATA_JK_BITS>& bits,
const std::vector<std::pair<int32_t, int32_t>>& parameter)
const;
278 uint64_t read_navigation_unsigned(
const std::bitset<GALILEO_DATA_JK_BITS>& bits,
const std::vector<std::pair<int32_t, int32_t>>& parameter)
const;
279 uint64_t read_page_type_unsigned(
const std::bitset<GALILEO_PAGE_TYPE_BITS>& bits,
const std::vector<std::pair<int32_t, int32_t>>& parameter)
const;
280 int64_t read_navigation_signed(
const std::bitset<GALILEO_DATA_JK_BITS>& bits,
const std::vector<std::pair<int32_t, int32_t>>& parameter)
const;
281 uint8_t read_octet_unsigned(
const std::bitset<GALILEO_DATA_JK_BITS>& bits,
const std::vector<std::pair<int32_t, int32_t>>& parameter)
const;
282 void read_page_1(
const std::bitset<GALILEO_DATA_JK_BITS>& data_bits);
283 void read_page_2(
const std::bitset<GALILEO_DATA_JK_BITS>& data_bits);
284 void read_page_3(
const std::bitset<GALILEO_DATA_JK_BITS>& data_bits);
285 void read_page_4(
const std::bitset<GALILEO_DATA_JK_BITS>& data_bits);
286 std::bitset<GALILEO_DATA_JK_BITS> regenerate_page_1(
const std::vector<uint8_t>& decoded)
const;
287 std::bitset<GALILEO_DATA_JK_BITS> regenerate_page_2(
const std::vector<uint8_t>& decoded)
const;
288 std::bitset<GALILEO_DATA_JK_BITS> regenerate_page_3(
const std::vector<uint8_t>& decoded)
const;
289 std::bitset<GALILEO_DATA_JK_BITS> regenerate_page_4(
const std::vector<uint8_t>& decoded)
const;
292 std::string page_Even{};
294 std::vector<uint8_t> rs_buffer;
295 std::unique_ptr<ReedSolomon> rs;
296 std::vector<int> inav_rs_pages;
298 int32_t page_jk_decoder(
const char* data_jk);
299 int32_t IOD_ephemeris{};
318 double OMEGA_dot_3{};
327 int32_t SV_ID_PRN_4{};
343 double BGD_E1E5a_5{};
344 double BGD_E1E5b_5{};
349 bool Region1_flag_5{};
350 bool Region2_flag_5{};
351 bool Region3_flag_5{};
352 bool Region4_flag_5{};
353 bool Region5_flag_5{};
365 int32_t Delta_tLS_6{};
370 int32_t Delta_tLSF_6{};
383 double Omega_dot_7{};
398 double Omega_dot_8{};
418 double Omega_dot_10{};
437 double ced_DeltaAred{};
440 double ced_Deltai0red{};
441 double ced_Omega0red{};
442 double ced_lambda0red{};
446 double Galileo_satClkDrift{};
448 int32_t current_IODnav{};
452 uint8_t hkroot_sis{};
453 uint8_t page_position_in_inav_subframe{255};
454 std::array<int8_t, 15> nma_position_filled{};
456 std::string nav_bits_adkd_4{};
457 std::string nav_bits_word_6{};
458 std::string nav_bits_word_10{};
459 std::string nav_bits_adkd_0_12{};
460 std::string nav_bits_word_1{};
461 std::string nav_bits_word_2{};
462 std::string nav_bits_word_3{};
463 std::string nav_bits_word_4{};
464 std::string nav_bits_word_5{};
466 uint8_t IODnav_LSB17{};
467 uint8_t IODnav_LSB18{};
468 uint8_t IODnav_LSB19{};
469 uint8_t IODnav_LSB20{};
471 uint8_t ism_constellation_id{};
472 uint8_t ism_service_level_id{};
474 bool flag_CRC_test{};
475 bool flag_all_ephemeris{};
476 bool flag_ephemeris_1{};
477 bool flag_ephemeris_2{};
478 bool flag_ephemeris_3{};
479 bool flag_ephemeris_4{};
481 bool flag_iono_and_GST{};
486 bool flag_utc_model{};
488 bool flag_all_almanac{};
489 bool flag_almanac_1{};
490 bool flag_almanac_2{};
491 bool flag_almanac_3{};
492 bool flag_almanac_4{};