mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 15:23:04 +00:00 
			
		
		
		
	[TAS-203] bug osnma_test_vector_config_1 II
bug in build_message (PRN_d instead of PRNa) tags_awaiting_verification increase buffer size Reporting: modify tag reporting
This commit is contained in:
		| @@ -453,9 +453,9 @@ void osnma_msg_receiver::process_dsm_message(const std::vector<uint8_t>& dsm_msg | ||||
|                             d_kroot_verified = d_crypto->verify_signature(message, d_osnma_data.d_dsm_kroot_message.ds); | ||||
|                             if (d_kroot_verified) | ||||
|                                 { | ||||
|                                     LOG(INFO) << "Galileo OSNMA: KROOT authentication successful !" << std::endl; | ||||
|                                     LOG(INFO) << "Galileo OSNMA: KROOT authentication successful !" << std::endl; | ||||
|                                     LOG(INFO) << "Galileo OSNMA: NMA Status is " << d_dsm_reader->get_nmas_status(d_osnma_data.d_nma_header.nmas) << ", " | ||||
|                                     LOG(WARNING) << "Galileo OSNMA: KROOT authentication successful !" << std::endl; | ||||
|                                     LOG(WARNING) << "Galileo OSNMA: KROOT authentication successful !" << std::endl; | ||||
|                                     LOG(WARNING) << "Galileo OSNMA: NMA Status is " << d_dsm_reader->get_nmas_status(d_osnma_data.d_nma_header.nmas) << ", " | ||||
|                                               << "Chain in force is " << static_cast<uint32_t>(d_osnma_data.d_nma_header.cid) << ", " | ||||
|                                               << "Chain and Public Key Status is " << d_dsm_reader->get_cpks_status(d_osnma_data.d_nma_header.cpks) << std::endl; | ||||
|                                 } | ||||
| @@ -860,12 +860,15 @@ void osnma_msg_receiver::process_mack_message() | ||||
|                 LOG(WARNING) << "But it will be processed for debugging purposes."; | ||||
|         } | ||||
|     // verify tesla key and add it to the container of verified keys if successful | ||||
|     // TODO not verify tesla key for each satellite if already verified. | ||||
|     bool retV = verify_tesla_key(d_osnma_data.d_mack_message.key, d_osnma_data.d_nav_data.TOW_sf0); | ||||
|     if(retV){ | ||||
|             d_tesla_keys.insert(std::pair(d_osnma_data.d_nav_data.TOW_sf0, d_osnma_data.d_mack_message.key)); | ||||
|     if (d_tesla_keys.find(d_osnma_data.d_nav_data.TOW_sf0) == d_tesla_keys.end()) // check if already available => no need to verify | ||||
|         { | ||||
|             bool retV = verify_tesla_key(d_osnma_data.d_mack_message.key, d_osnma_data.d_nav_data.TOW_sf0); | ||||
|             if(retV){ | ||||
|                     d_tesla_keys.insert(std::pair(d_osnma_data.d_nav_data.TOW_sf0, d_osnma_data.d_mack_message.key)); | ||||
|                 } | ||||
|         } | ||||
|  | ||||
|  | ||||
|     // MACSEQ - verify current macks, then add current retrieved mack to the end. | ||||
|     auto mack = d_macks_awaiting_MACSEQ_verification.begin(); | ||||
|     while (mack != d_macks_awaiting_MACSEQ_verification.end()){ | ||||
| @@ -925,7 +928,7 @@ void osnma_msg_receiver::process_mack_message() | ||||
|                     else | ||||
|                     { | ||||
|                         it.second.status = Tag::FAIL; | ||||
|                         LOG(ERROR) << "Galileo OSNMA: Tag verification failure for tag Id= " | ||||
|                         LOG(ERROR) << "Galileo OSNMA: Tag verification :: FAILURE  for tag Id= " | ||||
|                                   << it.second.tag_id | ||||
|                                   << ", TOW=" | ||||
|                                   << it.second.TOW | ||||
| @@ -937,7 +940,7 @@ void osnma_msg_receiver::process_mack_message() | ||||
|                     } | ||||
|                 } | ||||
|             else { | ||||
|                     LOG(INFO) << "Galileo OSNMA: Tag verification skipped for Tag Id= " | ||||
|                     LOG(WARNING) << "Galileo OSNMA: Tag verification :: SKIPPED  for Tag Id= " | ||||
|                               << it.second.tag_id | ||||
|                               << ", TOW=" | ||||
|                               << it.second.TOW | ||||
| @@ -1080,7 +1083,7 @@ std::vector<uint8_t> osnma_msg_receiver::build_message(const Tag& tag) | ||||
|     m.push_back(two_bits_nmas); | ||||
|  | ||||
|     // convert std::string to vector<uint8_t> | ||||
|      std::string ephemeris_iono_vector_2 = d_satellite_nav_data[tag.PRNa][tag.TOW - 30].ephemeris_iono_vector_2; | ||||
|      std::string ephemeris_iono_vector_2 = d_satellite_nav_data[tag.PRN_d][tag.TOW - 30].ephemeris_iono_vector_2; | ||||
|     std::vector<uint8_t> ephemeris_iono_vector_2_bytes = d_helper->bytes(ephemeris_iono_vector_2); | ||||
|  | ||||
|     // Convert and add ephemeris_iono_vector_2 into the vector | ||||
| @@ -1210,10 +1213,16 @@ void osnma_msg_receiver::remove_verified_tags() | ||||
|  */ | ||||
| void osnma_msg_receiver::control_tags_awaiting_verify_size() | ||||
| { | ||||
|     while(d_tags_awaiting_verify.size() > 60) | ||||
|     while(d_tags_awaiting_verify.size() > 500) | ||||
|         { | ||||
|             LOG(WARNING) << "Galileo OSNMA: delete tag due to exceeding buffer size. "; | ||||
|             d_tags_awaiting_verify.erase(d_tags_awaiting_verify.begin()); | ||||
|             auto it = d_tags_awaiting_verify.begin(); | ||||
|             LOG(WARNING) << "Galileo OSNMA: Tag verification :: DELETED tag due to exceeding buffer size. " | ||||
|                          << "Tag Id= " << it->second.tag_id | ||||
|                          << ", TOW=" << it->first | ||||
|                          << ", ADKD=" << static_cast<unsigned>(it->second.ADKD) | ||||
|                          << ", from satellite " << it->second.PRNa | ||||
|                          << std::endl; | ||||
|             d_tags_awaiting_verify.erase(it); | ||||
|         } | ||||
| } | ||||
|  | ||||
| @@ -1328,12 +1337,12 @@ bool osnma_msg_receiver::verify_macseq(const MACK_message& mack) | ||||
| } | ||||
| bool osnma_msg_receiver::tag_has_nav_data_available(Tag& t) | ||||
| { | ||||
|     auto prn_it = d_satellite_nav_data.find(t.PRNa); | ||||
|     auto prn_it = d_satellite_nav_data.find(t.PRN_d); | ||||
|     if (prn_it != d_satellite_nav_data.end()) { | ||||
|             // PRN was found, check if TOW exists in inner map | ||||
|             LOG(INFO) << "Galileo OSNMA: hasData = true " << std::endl; | ||||
|             std::map<uint32_t, NavData>& tow_map = prn_it->second; | ||||
|             auto tow_it = tow_map.find(t.TOW-30); // TODO check ADKD to decide | ||||
|             auto tow_it = tow_map.find(t.TOW - 30); | ||||
|             if (tow_it != tow_map.end()) { | ||||
|                     return true; | ||||
|                 } else { | ||||
|   | ||||
| @@ -113,7 +113,7 @@ TEST_F(OsnmaMsgReceiverTest, OsnmaTestVectorsSimulation) | ||||
|     // Act | ||||
|     while (end_of_hex_stream == false){ // loop over all bytes of data. Note all TestVectors have same amount of data. | ||||
|             for(const TestVector& tv : testVectors) { // loop over all SVs, extract a subframe | ||||
|                     std::cout << "OsnmaTestVectorsSimulation: SVID "<< tv.svId << std::endl; | ||||
|                     std::cout << "OsnmaTestVectorsSimulation: SVID (PRN_a) "<< tv.svId << std::endl; | ||||
|                     auto osnmaMsg_sptr = std::make_shared<OSNMA_msg>(); | ||||
|                     std::array<uint8_t, 15> hkroot{}; | ||||
|                     std::array<uint32_t, 15> mack{}; | ||||
| @@ -191,7 +191,7 @@ TEST_F(OsnmaMsgReceiverTest, OsnmaTestVectorsSimulation) | ||||
|  | ||||
|                     osnmaMsg_sptr->TOW_sf0 = d_GST_SIS & 0x000FFFFF; | ||||
|                     osnmaMsg_sptr->WN_sf0 = (d_GST_SIS & 0xFFF00000) >> 20 ; | ||||
|                     osnmaMsg_sptr->PRN = tv.svId; | ||||
|                     osnmaMsg_sptr->PRN = tv.svId; // PRNa | ||||
|  | ||||
|                     bool allWordsReceived = true; | ||||
|                     for (int i = 1; i <= 5; ++i) | ||||
| @@ -216,7 +216,7 @@ TEST_F(OsnmaMsgReceiverTest, OsnmaTestVectorsSimulation) | ||||
|                                 // TODO words 6 and 10 for TimingData | ||||
|                             }; | ||||
|  | ||||
|                             // Iterate over the extraction parameters | ||||
|                             // Fill NavData bits -- Iterate over the extraction parameters | ||||
|                             for (const auto& param : extractionParams) { | ||||
|                                     uint8_t wordKey = param.first; | ||||
|                                     uint8_t start = param.second.first; | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 cesaaargm
					cesaaargm