mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-11-04 09:13:05 +00:00 
			
		
		
		
	Clang Tidy fixes
This commit is contained in:
		@@ -1013,7 +1013,6 @@ void osnma_msg_receiver::process_mack_message()
 | 
			
		||||
            LOG(WARNING) << "Galileo OSNMA: MACK cannot be processed, "
 | 
			
		||||
                         << "no Kroot nor TESLA key available.";
 | 
			
		||||
            return;  // early return, cannot proceed further without one of the two verified. this equals to having Kroot but no TESLa key yet.
 | 
			
		||||
 | 
			
		||||
        }
 | 
			
		||||
    // verify tesla key and add it to the container of verified keys if successful
 | 
			
		||||
    if (d_tesla_keys.find(d_osnma_data.d_nav_data.get_tow_sf0()) == d_tesla_keys.end())  // check if already available => no need to verify
 | 
			
		||||
@@ -1921,13 +1920,13 @@ std::vector<MACK_tag_and_info> osnma_msg_receiver::verify_macseq_new(const MACK_
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
void osnma_msg_receiver::send_data_to_pvt(std::vector<OSNMA_NavData> data)
 | 
			
		||||
void osnma_msg_receiver::send_data_to_pvt(const std::vector<OSNMA_NavData>& data)
 | 
			
		||||
{
 | 
			
		||||
    if (!data.empty())
 | 
			
		||||
        {
 | 
			
		||||
            for (size_t i = 0; i < data.size(); i++)
 | 
			
		||||
            for (auto & i : data)
 | 
			
		||||
                {
 | 
			
		||||
                    const auto tmp_obj = std::make_shared<OSNMA_NavData>(data[i]);
 | 
			
		||||
                    const auto tmp_obj = std::make_shared<OSNMA_NavData>(i);
 | 
			
		||||
                    this->message_port_pub(pmt::mp("OSNMA_to_PVT"), pmt::make_any(tmp_obj));
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
 
 | 
			
		||||
@@ -82,7 +82,7 @@ private:
 | 
			
		||||
    void remove_verified_tags();
 | 
			
		||||
    void control_tags_awaiting_verify_size();
 | 
			
		||||
    void display_data();
 | 
			
		||||
    void send_data_to_pvt(std::vector<OSNMA_NavData>);
 | 
			
		||||
    void send_data_to_pvt(const std::vector<OSNMA_NavData>& data);
 | 
			
		||||
 | 
			
		||||
    bool verify_tesla_key(std::vector<uint8_t>& key, uint32_t TOW);
 | 
			
		||||
    bool verify_tag(Tag& tag) const;
 | 
			
		||||
 
 | 
			
		||||
@@ -897,8 +897,9 @@ void Gnss_Crypto::set_public_key(const std::vector<uint8_t>& publicKey)
 | 
			
		||||
    param_bld = OSSL_PARAM_BLD_new();
 | 
			
		||||
    if (param_bld != nullptr &&
 | 
			
		||||
        OSSL_PARAM_BLD_push_utf8_string(param_bld, "group", (publicKey.size() == 33) ? "prime256v1" : "secp521r1", 0) &&
 | 
			
		||||
        OSSL_PARAM_BLD_push_octet_string(param_bld, "pub", publicKey.data(), publicKey.size()))
 | 
			
		||||
        OSSL_PARAM_BLD_push_octet_string(param_bld, "pub", publicKey.data(), publicKey.size())) {
 | 
			
		||||
        params = OSSL_PARAM_BLD_to_param(param_bld);
 | 
			
		||||
        }
 | 
			
		||||
 | 
			
		||||
    ctx = EVP_PKEY_CTX_new_from_name(nullptr, "EC", nullptr);
 | 
			
		||||
    if (ctx == nullptr || params == nullptr || EVP_PKEY_fromdata_init(ctx) <= 0 || EVP_PKEY_fromdata(ctx, &pkey, EVP_PKEY_PUBLIC_KEY, params) <= 0)
 | 
			
		||||
@@ -1192,7 +1193,7 @@ bool Gnss_Crypto::readPublicKeyFromCRT(const std::string& crtFilePath)
 | 
			
		||||
 | 
			
		||||
    // store the key type - needed for the Kroot in case no DSM-PKR available
 | 
			
		||||
    // TODO - only way I have found to find the curve type
 | 
			
		||||
    auto ec_key = EVP_PKEY_get0_EC_KEY(pubkey);
 | 
			
		||||
    const auto *const ec_key = EVP_PKEY_get0_EC_KEY(pubkey);
 | 
			
		||||
    const EC_GROUP *group = EC_KEY_get0_group(ec_key);
 | 
			
		||||
    int nid = EC_GROUP_get_curve_name(group);
 | 
			
		||||
    if (nid == NID_X9_62_prime256v1) {
 | 
			
		||||
 
 | 
			
		||||
@@ -19,7 +19,7 @@
 | 
			
		||||
uint32_t Tag::id_counter = 0;
 | 
			
		||||
uint32_t OSNMA_NavData::id_counter = 0;
 | 
			
		||||
 | 
			
		||||
bool OSNMA_NavData::add_nav_data(std::string nav_data)
 | 
			
		||||
bool OSNMA_NavData::add_nav_data(const std::string& nav_data)
 | 
			
		||||
{
 | 
			
		||||
    if (nav_data.size() == 549)
 | 
			
		||||
        {
 | 
			
		||||
 
 | 
			
		||||
@@ -129,7 +129,7 @@ class OSNMA_NavData
 | 
			
		||||
public:
 | 
			
		||||
    OSNMA_NavData(): nav_data_id(id_counter++){}
 | 
			
		||||
    bool have_this_bits(std::string nav_data);
 | 
			
		||||
    bool add_nav_data(std::string nav_data);
 | 
			
		||||
    bool add_nav_data(const std::string& nav_data);
 | 
			
		||||
    void update_last_received_timestamp(uint32_t TOW);
 | 
			
		||||
    const uint32_t nav_data_id;
 | 
			
		||||
    uint32_t verified_bits{0};
 | 
			
		||||
 
 | 
			
		||||
@@ -39,7 +39,6 @@ public:
 | 
			
		||||
    std::vector<uint8_t> convert_from_hex_string(const std::string& hex_string) const;  // TODO remove similar function in gnss_crypto
 | 
			
		||||
 | 
			
		||||
    std::tm GST_START_EPOCH = {0, 0, 0, 22, 8 - 1, 1999 - 1900, 0, 0, 0, 0, 0};
 | 
			
		||||
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
#endif  // GNSS_SDR_OSNMA_HELPER_H
 | 
			
		||||
 
 | 
			
		||||
@@ -29,7 +29,7 @@
 | 
			
		||||
 * @param PRNd The satellite ID.
 | 
			
		||||
 * @param TOW The TOW of the received data.
 | 
			
		||||
 */
 | 
			
		||||
void OSNMA_nav_data_Manager::add_navigation_data(std::string nav_bits, uint32_t PRNd, uint32_t TOW)
 | 
			
		||||
void OSNMA_nav_data_Manager::add_navigation_data(const std::string& nav_bits, uint32_t PRNd, uint32_t TOW)
 | 
			
		||||
{
 | 
			
		||||
    if (not have_nav_data(nav_bits, PRNd, TOW))
 | 
			
		||||
        {
 | 
			
		||||
@@ -52,18 +52,18 @@ void OSNMA_nav_data_Manager::update_nav_data(const std::multimap<uint32_t, Tag>&
 | 
			
		||||
                    if (have_PRNd_nav_data(tag.second.PRN_d))
 | 
			
		||||
                        {
 | 
			
		||||
                            std::map<uint32_t, OSNMA_NavData> tow_map = _satellite_nav_data.find(tag.second.PRN_d)->second;
 | 
			
		||||
                            for (auto tow_it = tow_map.begin(); tow_it != tow_map.end(); ++tow_it)  // note: starts with smallest (i.e. oldest) navigation dataset
 | 
			
		||||
                            for (auto & tow_it : tow_map)  // note: starts with smallest (i.e. oldest) navigation dataset
 | 
			
		||||
                                {
 | 
			
		||||
                                    std::string nav_data;
 | 
			
		||||
                                    if (tag.second.ADKD == 0 || tag.second.ADKD == 12){
 | 
			
		||||
                                            nav_data = tow_it->second.get_ephemeris_data();
 | 
			
		||||
                                            nav_data = tow_it.second.get_ephemeris_data();
 | 
			
		||||
                                        }
 | 
			
		||||
                                    else if (tag.second.ADKD == 4){
 | 
			
		||||
                                            nav_data = tow_it->second.get_utc_data();
 | 
			
		||||
                                            nav_data = tow_it.second.get_utc_data();
 | 
			
		||||
                                        }
 | 
			
		||||
                                    // find associated OSNMA_NavData
 | 
			
		||||
                                    if (tag.second.nav_data == nav_data){
 | 
			
		||||
                                            _satellite_nav_data[tag.second.PRN_d][tow_it->first].verified_bits += tag_size;
 | 
			
		||||
                                            _satellite_nav_data[tag.second.PRN_d][tow_it.first].verified_bits += tag_size;
 | 
			
		||||
                                        }
 | 
			
		||||
                                }
 | 
			
		||||
                        }
 | 
			
		||||
@@ -99,7 +99,7 @@ bool OSNMA_nav_data_Manager::have_nav_data(uint32_t PRNd, uint32_t TOW, uint8_t
 | 
			
		||||
            if (it != _satellite_nav_data.cend())
 | 
			
		||||
                {
 | 
			
		||||
                    const auto it2 = it->second.find(TOW);
 | 
			
		||||
                    if (it2 != it->second.cend() && it->second[TOW].get_ephemeris_data() != "")
 | 
			
		||||
                    if (it2 != it->second.cend() && !it->second[TOW].get_ephemeris_data().empty())
 | 
			
		||||
                        {
 | 
			
		||||
                            return true;
 | 
			
		||||
                        }
 | 
			
		||||
@@ -111,7 +111,7 @@ bool OSNMA_nav_data_Manager::have_nav_data(uint32_t PRNd, uint32_t TOW, uint8_t
 | 
			
		||||
            if (it != _satellite_nav_data.cend())
 | 
			
		||||
                {
 | 
			
		||||
                    const auto it2 = it->second.find(TOW);
 | 
			
		||||
                    if (it2 != it->second.cend() && it->second[TOW].get_utc_data() != "")
 | 
			
		||||
                    if (it2 != it->second.cend() && !it->second[TOW].get_utc_data().empty())
 | 
			
		||||
                        {
 | 
			
		||||
                            return true;
 | 
			
		||||
                        }
 | 
			
		||||
@@ -133,21 +133,21 @@ std::string OSNMA_nav_data_Manager::get_navigation_data(const Tag& tag)
 | 
			
		||||
 | 
			
		||||
    // satellite was found, check if TOW exists in inner map
 | 
			
		||||
    std::map<uint32_t, OSNMA_NavData> tow_map = prn_it->second;
 | 
			
		||||
    for (auto tow_it = tow_map.begin(); tow_it != tow_map.end(); ++tow_it)  // note: starts with smallest (i.e. oldest) navigation dataset
 | 
			
		||||
    for (auto & tow_it : tow_map)  // note: starts with smallest (i.e. oldest) navigation dataset
 | 
			
		||||
        {
 | 
			
		||||
            // Check if current key (TOW) fulfills condition
 | 
			
		||||
            if ((tag.TOW - 30 * tag.cop) <= tow_it->first &&  tow_it->first <= tag.TOW - 30)
 | 
			
		||||
            if ((tag.TOW - 30 * tag.cop) <= tow_it.first &&  tow_it.first <= tag.TOW - 30)
 | 
			
		||||
                {
 | 
			
		||||
                    if (tag.ADKD == 0 || tag.ADKD == 12)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (tow_it->second.get_ephemeris_data() != ""){
 | 
			
		||||
                                    return tow_it->second.get_ephemeris_data();
 | 
			
		||||
                            if (!tow_it.second.get_ephemeris_data().empty()){
 | 
			
		||||
                                    return tow_it.second.get_ephemeris_data();
 | 
			
		||||
                                }
 | 
			
		||||
                        }
 | 
			
		||||
                    else if(tag.ADKD == 4)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (tow_it->second.get_utc_data() != ""){
 | 
			
		||||
                                    return tow_it->second.get_utc_data();
 | 
			
		||||
                            if (!tow_it.second.get_utc_data().empty()){
 | 
			
		||||
                                    return tow_it.second.get_utc_data();
 | 
			
		||||
                                }
 | 
			
		||||
                        }
 | 
			
		||||
                }
 | 
			
		||||
@@ -161,7 +161,7 @@ std::string OSNMA_nav_data_Manager::get_navigation_data(const Tag& tag)
 | 
			
		||||
 * @param PRNd
 | 
			
		||||
 * @return
 | 
			
		||||
 */
 | 
			
		||||
bool OSNMA_nav_data_Manager::have_nav_data(std::string nav_bits, uint32_t PRNd, uint32_t TOW)
 | 
			
		||||
bool OSNMA_nav_data_Manager::have_nav_data(const std::string& nav_bits, uint32_t PRNd, uint32_t TOW)
 | 
			
		||||
{
 | 
			
		||||
    if (_satellite_nav_data.find(PRNd) != _satellite_nav_data.end()){
 | 
			
		||||
            for (auto& data_timestamp : _satellite_nav_data[PRNd])
 | 
			
		||||
@@ -195,20 +195,20 @@ bool OSNMA_nav_data_Manager::have_nav_data(const Tag& t) const
 | 
			
		||||
        }
 | 
			
		||||
    // satellite was found, check if TOW exists in inner map
 | 
			
		||||
    std::map<uint32_t, OSNMA_NavData> tow_map = prn_it->second;
 | 
			
		||||
    for (auto tow_it = tow_map.begin(); tow_it != tow_map.end(); ++tow_it)  // note: starts with smallest (i.e. oldest) navigation dataset
 | 
			
		||||
    for (auto & tow_it : tow_map)  // note: starts with smallest (i.e. oldest) navigation dataset
 | 
			
		||||
        {
 | 
			
		||||
            // Check if current key (TOW) fulfills condition
 | 
			
		||||
            if (t.TOW - 30 * t.cop <= tow_it->first &&  tow_it->first <= t.TOW - 30)
 | 
			
		||||
            if (t.TOW - 30 * t.cop <= tow_it.first &&  tow_it.first <= t.TOW - 30)
 | 
			
		||||
                {
 | 
			
		||||
                    if (t.ADKD == 0 || t.ADKD == 12)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (tow_it->second.get_ephemeris_data() != ""){
 | 
			
		||||
                            if (!tow_it.second.get_ephemeris_data().empty()){
 | 
			
		||||
                                    return true;
 | 
			
		||||
                                }
 | 
			
		||||
                        }
 | 
			
		||||
                    else if (t.ADKD == 4)
 | 
			
		||||
                        {
 | 
			
		||||
                            if (tow_it->second.get_utc_data() != ""){
 | 
			
		||||
                            if (!tow_it.second.get_utc_data().empty()){
 | 
			
		||||
                                    return true;
 | 
			
		||||
                                }
 | 
			
		||||
                        }
 | 
			
		||||
@@ -220,19 +220,20 @@ void OSNMA_nav_data_Manager::print_status()
 | 
			
		||||
{
 | 
			
		||||
    for (const auto& satellite : _satellite_nav_data){
 | 
			
		||||
            LOG(INFO) << "Galileo OSNMA: NavData status :: SVID=" << satellite.first;
 | 
			
		||||
            auto& tow_data = satellite.second;
 | 
			
		||||
            for (const auto& nav_data : tow_data)
 | 
			
		||||
                LOG(INFO) << "Galileo OSNMA: IOD_nav=0b"  << std::uppercase
 | 
			
		||||
                      << std::bitset<10>(nav_data.second.IOD_nav)
 | 
			
		||||
                      << ", TOW_start="
 | 
			
		||||
                      << nav_data.second.get_tow_sf0()
 | 
			
		||||
                      << ", TOW_last="
 | 
			
		||||
                      << nav_data.second.last_received_TOW
 | 
			
		||||
                      << ", l_t="
 | 
			
		||||
                      << nav_data.second.verified_bits
 | 
			
		||||
                      << ", PRNd="
 | 
			
		||||
                      << nav_data.second.PRNd
 | 
			
		||||
                      << ", verified="
 | 
			
		||||
                      << nav_data.second.verified;
 | 
			
		||||
            const auto& tow_data = satellite.second;
 | 
			
		||||
            for (const auto& nav_data : tow_data) {
 | 
			
		||||
                    LOG(INFO) << "Galileo OSNMA: IOD_nav=0b" << std::uppercase
 | 
			
		||||
                              << std::bitset<10>(nav_data.second.IOD_nav)
 | 
			
		||||
                              << ", TOW_start="
 | 
			
		||||
                              << nav_data.second.get_tow_sf0()
 | 
			
		||||
                              << ", TOW_last="
 | 
			
		||||
                              << nav_data.second.last_received_TOW
 | 
			
		||||
                              << ", l_t="
 | 
			
		||||
                              << nav_data.second.verified_bits
 | 
			
		||||
                              << ", PRNd="
 | 
			
		||||
                              << nav_data.second.PRNd
 | 
			
		||||
                              << ", verified="
 | 
			
		||||
                              << nav_data.second.verified;
 | 
			
		||||
                }
 | 
			
		||||
        }
 | 
			
		||||
}
 | 
			
		||||
 
 | 
			
		||||
@@ -32,10 +32,10 @@
 | 
			
		||||
class OSNMA_nav_data_Manager{
 | 
			
		||||
public:
 | 
			
		||||
    OSNMA_nav_data_Manager() = default;
 | 
			
		||||
    bool have_nav_data(std::string nav_bits, uint32_t PRNd, uint32_t TOW);
 | 
			
		||||
    bool have_nav_data(const std::string& nav_bits, uint32_t PRNd, uint32_t TOW);
 | 
			
		||||
    bool have_nav_data(uint32_t PRNd,  uint32_t TOW, uint8_t ADKD);
 | 
			
		||||
    bool have_nav_data(const Tag& t) const;
 | 
			
		||||
    void add_navigation_data(std::string nav_bits, uint32_t PRNd, uint32_t TOW);  // gets the bits and adds them to the list
 | 
			
		||||
    void add_navigation_data(const std::string& nav_bits, uint32_t PRNd, uint32_t TOW);  // gets the bits and adds them to the list
 | 
			
		||||
    std::string get_navigation_data(const Tag& t);
 | 
			
		||||
 | 
			
		||||
    void update_nav_data(const std::multimap<uint32_t, Tag>& tags_verified, const uint8_t tag_size);
 | 
			
		||||
 
 | 
			
		||||
		Reference in New Issue
	
	Block a user