GNSS-SDR  0.0.21
An Open Source GNSS Software Defined Receiver
osnma_nav_data_manager.h
Go to the documentation of this file.
1 /*!
2  * \file osnma_nav_data_manager.h
3  * \brief Class for Galileo OSNMA navigation data management
4  * \author Cesare Ghionoiu-Martinez, 2020-2023 cesare.martinez(at)proton.me
5  *
6  * -----------------------------------------------------------------------------
7  *
8  * GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
9  * This file is part of GNSS-SDR.
10  *
11  * Copyright (C) 2010-2023 (see AUTHORS file for a list of contributors)
12  * SPDX-License-Identifier: GPL-3.0-or-later
13  *
14  * -----------------------------------------------------------------------------
15  */
16 
17 #ifndef GNSS_SDR_OSNMA_NAV_DATA_MANAGER_H
18 #define GNSS_SDR_OSNMA_NAV_DATA_MANAGER_H
19 
20 #include "osnma_data.h" // for OSNMA_NavData, Tag
21 #include <cstdint> // for uint32_t
22 #include <map>
23 #include <string>
24 #include <vector>
25 
26 /** \addtogroup Core
27  * \{ */
28 /** \addtogroup Core_Receiver_Library
29  * \{ */
30 
31 /**
32  * @class OSNMA_NavDataManager
33  * @brief Class for managing OSNMA navigation data
34  */
36 {
37 public:
38  OSNMA_NavDataManager() = default;
39 
40  void log_status() const;
41  bool have_nav_data(const Tag& t) const;
42  bool have_nav_data(uint32_t PRNd, uint32_t TOW, uint8_t ADKD) const;
43  std::string get_navigation_data(const Tag& t) const;
44 
45  void add_navigation_data(const std::string& nav_bits, uint32_t PRNd, uint32_t TOW);
46  void update_nav_data(const std::multimap<uint32_t, Tag>& tags_verified, uint8_t tag_size);
47  bool have_nav_data(const std::string& nav_bits, uint32_t PRNd, uint32_t TOW);
48  std::vector<OSNMA_NavData> get_verified_data();
49 
50 private:
51  std::map<uint32_t, std::map<uint32_t, OSNMA_NavData>> d_satellite_nav_data{}; // NavData sorted by [PRNd][TOW_start]
52  const uint32_t L_t_min{40};
53  const uint16_t EPH_SIZE{549};
54  const uint16_t UTC_SIZE{141};
55 };
56 
57 /** \} */
58 /** \} */
59 #endif // GNSS_SDR_OSNMA_NAV_DATA_MANAGER_H
Class for Galileo OSNMA data storage.
Class for managing OSNMA navigation data.