mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	[TAS-249][Bug][Tag] new NavDataManager causes less tags to be verified
[TAS-234][Feature] Dummy tags verification * Fixed the navData retrieval which caused many tags to be skipped * Dummy tags verification added. * Replaced direct field access with getters/setters for OSNMA navigation data.
This commit is contained in:
		| @@ -1413,20 +1413,15 @@ int32_t Galileo_Inav_Message::page_jk_decoder(const char* data_jk) | ||||
|  */ | ||||
| OSNMA_msg Galileo_Inav_Message::get_osnma_msg() | ||||
| { | ||||
|     // TODO - why PRN of word 4 is done separately? | ||||
|     nma_position_filled = std::array<int8_t, 15>{}; | ||||
|     // Fill TOW and WN | ||||
|     nma_msg.WN_sf0 = WN_0; | ||||
|     int32_t TOW_sf0 = TOW_5 - 25;  //- 24; // according to OS SIS ICD, TOW of word 5 is 25 seconds after Sf start TODO review | ||||
|     int32_t TOW_sf0 = TOW_5 - 25; | ||||
|     if (TOW_sf0 < 0) | ||||
|         { | ||||
|             TOW_sf0 += 604800; | ||||
|         } | ||||
|     nma_msg.TOW_sf0 = static_cast<uint32_t>(TOW_sf0); | ||||
|     // get ephemeris, clock and iono correction datn and GST-UTC and GST-GPS converstion parameters (may be incomplete) | ||||
|     nma_msg.EphemerisData = get_ephemeris(); | ||||
|     nma_msg.IonoData = get_iono(); | ||||
|     nma_msg.UtcModelData = get_utc_model(); | ||||
|     return nma_msg; | ||||
| } | ||||
|  | ||||
|   | ||||
| @@ -48,16 +48,9 @@ public: | ||||
|     OSNMA_msg() = default; | ||||
|     std::array<uint32_t, 15> mack{}; | ||||
|     std::array<uint8_t, 15> hkroot{}; | ||||
|     uint32_t PRN{}; | ||||
|     uint32_t WN_sf0{}; | ||||
|     uint32_t TOW_sf0{}; | ||||
|     std::vector<uint8_t> EphemerisClockAndStatusData{};  // TODO _2 rename and substitute this | ||||
|     std::string EphemerisClockAndStatusData_2{}; | ||||
|     std::vector<uint8_t> TimingData{}; | ||||
|     std::string TimingData_2{}; | ||||
|     Galileo_Ephemeris EphemerisData{}; | ||||
|     Galileo_Iono IonoData{}; | ||||
|     Galileo_Utc_Model UtcModelData{}; | ||||
|     uint32_t PRN{};      // PRN_a authentication data PRN | ||||
|     uint32_t WN_sf0{};   // Week number at the start of OSNMA subframe | ||||
|     uint32_t TOW_sf0{};  // TOW at the start of OSNMA subframe | ||||
| }; | ||||
|  | ||||
| /*! | ||||
|   | ||||
| @@ -35,25 +35,11 @@ bool OSNMA_NavData::add_nav_data(const std::string& nav_data) | ||||
|         } | ||||
|     return false; | ||||
| } | ||||
|  | ||||
|  | ||||
| std::string OSNMA_NavData::get_utc_data() const | ||||
| { | ||||
|     return d_utc; | ||||
| } | ||||
|  | ||||
|  | ||||
| std::string OSNMA_NavData::get_ephemeris_data() const | ||||
| { | ||||
|     return d_ephemeris_iono; | ||||
| } | ||||
|  | ||||
|  | ||||
| /** | ||||
|  * Updates the last TOW the NavData bits were received. | ||||
|  * @param TOW | ||||
|  */ | ||||
| void OSNMA_NavData::update_last_received_timestamp(uint32_t TOW) | ||||
| { | ||||
|     d_last_received_TOW = TOW; | ||||
| } | ||||
|   | ||||
| @@ -137,30 +137,36 @@ class OSNMA_NavData | ||||
| public: | ||||
|     OSNMA_NavData() : nav_data_id(id_counter++) {} | ||||
|     const uint32_t nav_data_id; | ||||
|  | ||||
|     std::string get_utc_data() const; | ||||
|     std::string get_ephemeris_data() const; | ||||
|     uint32_t get_verified_bits() const { return verified_bits; } | ||||
|     uint32_t get_prn_d() const { return PRNd; } | ||||
|     uint32_t get_IOD_nav() const { return IOD_nav; } | ||||
|     uint32_t get_last_received_TOW() const { return d_last_received_TOW; } | ||||
|     uint32_t get_tow_sf0() const { return d_TOW_sf0; } | ||||
|  | ||||
|     bool have_this_bits(std::string nav_data); | ||||
|     bool get_verified_status() const { return verified; } | ||||
|     bool add_nav_data(const std::string& nav_data); | ||||
|     void set_tow_sf0(int value) { d_TOW_sf0 = value; } | ||||
|     void set_ephemeris_data(std::string value) { d_ephemeris_iono = value; } | ||||
|     void set_utc_data(std::string value) { d_utc = value; } | ||||
|     void update_last_received_timestamp(uint32_t TOW); | ||||
|  | ||||
|     uint32_t verified_bits{0}; | ||||
|     uint32_t IOD_nav{0}; | ||||
|     uint32_t PRNd{0}; | ||||
|     uint32_t ADKD{}; | ||||
|     bool verified{false}; | ||||
|     void set_prn_d(uint32_t value) { PRNd = value; } | ||||
|     void set_last_received_TOW(uint32_t TOW) { d_last_received_TOW = TOW; }; | ||||
|     void set_update_verified_bits(uint32_t morebits) { verified_bits += morebits; } | ||||
|     void set_verified_status(bool value) { verified = value; } | ||||
|     void set_IOD_nav(uint32_t value) { IOD_nav = value; } | ||||
|  | ||||
| private: | ||||
|     static uint32_t id_counter; | ||||
|     std::string d_ephemeris_iono{""}; | ||||
|     std::string d_utc{""}; | ||||
|     uint32_t d_TOW_sf0{0}; | ||||
|     uint32_t d_last_received_TOW{0}; | ||||
|     static uint32_t id_counter; | ||||
|     uint32_t PRNd{0}; | ||||
|     uint32_t verified_bits{0}; | ||||
|     uint32_t IOD_nav{0}; | ||||
|     bool verified{false}; | ||||
| }; | ||||
|  | ||||
|  | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 cesaaargm
					cesaaargm