mirror of
				https://github.com/gnss-sdr/gnss-sdr
				synced 2025-10-31 07:13:03 +00:00 
			
		
		
		
	Replace raw pointers by smart pointers
This commit is contained in:
		| @@ -46,8 +46,9 @@ | |||||||
| #define LMORE 5      // | #define LMORE 5      // | ||||||
|  |  | ||||||
|  |  | ||||||
| sbas_l1_telemetry_decoder_gs_sptr | sbas_l1_telemetry_decoder_gs_sptr sbas_l1_make_telemetry_decoder_gs( | ||||||
| sbas_l1_make_telemetry_decoder_gs(const Gnss_Satellite &satellite, bool dump) |     const Gnss_Satellite &satellite, | ||||||
|  |     bool dump) | ||||||
| { | { | ||||||
|     return sbas_l1_telemetry_decoder_gs_sptr(new sbas_l1_telemetry_decoder_gs(satellite, dump)); |     return sbas_l1_telemetry_decoder_gs_sptr(new sbas_l1_telemetry_decoder_gs(satellite, dump)); | ||||||
| } | } | ||||||
| @@ -114,9 +115,6 @@ sbas_l1_telemetry_decoder_gs::Sample_Aligner::Sample_Aligner() | |||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| sbas_l1_telemetry_decoder_gs::Sample_Aligner::~Sample_Aligner() = default; |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void sbas_l1_telemetry_decoder_gs::Sample_Aligner::reset() | void sbas_l1_telemetry_decoder_gs::Sample_Aligner::reset() | ||||||
| { | { | ||||||
|     d_past_sample = 0; |     d_past_sample = 0; | ||||||
| @@ -194,19 +192,12 @@ sbas_l1_telemetry_decoder_gs::Symbol_Aligner_And_Decoder::Symbol_Aligner_And_Dec | |||||||
|     const int32_t nn = 2; |     const int32_t nn = 2; | ||||||
|     std::array<int32_t, nn> g_encoder{121, 91}; |     std::array<int32_t, nn> g_encoder{121, 91}; | ||||||
|  |  | ||||||
|     d_vd1 = new Viterbi_Decoder(g_encoder.data(), d_KK, nn); |     d_vd1 = std::make_shared<Viterbi_Decoder>(g_encoder.data(), d_KK, nn); | ||||||
|     d_vd2 = new Viterbi_Decoder(g_encoder.data(), d_KK, nn); |     d_vd1 = std::make_shared<Viterbi_Decoder>(g_encoder.data(), d_KK, nn); | ||||||
|     d_past_symbol = 0; |     d_past_symbol = 0; | ||||||
| } | } | ||||||
|  |  | ||||||
|  |  | ||||||
| sbas_l1_telemetry_decoder_gs::Symbol_Aligner_And_Decoder::~Symbol_Aligner_And_Decoder() |  | ||||||
| { |  | ||||||
|     delete d_vd1; |  | ||||||
|     delete d_vd2; |  | ||||||
| } |  | ||||||
|  |  | ||||||
|  |  | ||||||
| void sbas_l1_telemetry_decoder_gs::Symbol_Aligner_And_Decoder::reset() | void sbas_l1_telemetry_decoder_gs::Symbol_Aligner_And_Decoder::reset() | ||||||
| { | { | ||||||
|     d_past_symbol = 0; |     d_past_symbol = 0; | ||||||
| @@ -229,11 +220,11 @@ bool sbas_l1_telemetry_decoder_gs::Symbol_Aligner_And_Decoder::get_bits(const st | |||||||
|             symbols_vd2.push_back(*symbol_it); |             symbols_vd2.push_back(*symbol_it); | ||||||
|         } |         } | ||||||
|     // arrays for decoded bits |     // arrays for decoded bits | ||||||
|     auto *bits_vd1 = new int32_t[nbits_requested]; |     std::vector<int32_t> bits_vd1(nbits_requested); | ||||||
|     auto *bits_vd2 = new int32_t[nbits_requested]; |     std::vector<int32_t> bits_vd2(nbits_requested); | ||||||
|     // decode |     // decode | ||||||
|     float metric_vd1 = d_vd1->decode_continuous(symbols_vd1.data(), traceback_depth, bits_vd1, nbits_requested, nbits_decoded); |     float metric_vd1 = d_vd1->decode_continuous(symbols_vd1.data(), traceback_depth, bits_vd1.data(), nbits_requested, nbits_decoded); | ||||||
|     float metric_vd2 = d_vd2->decode_continuous(symbols_vd2.data(), traceback_depth, bits_vd2, nbits_requested, nbits_decoded); |     float metric_vd2 = d_vd2->decode_continuous(symbols_vd2.data(), traceback_depth, bits_vd2.data(), nbits_requested, nbits_decoded); | ||||||
|     // choose the bits with the better metric |     // choose the bits with the better metric | ||||||
|     for (int32_t i = 0; i < nbits_decoded; i++) |     for (int32_t i = 0; i < nbits_decoded; i++) | ||||||
|         { |         { | ||||||
| @@ -247,8 +238,6 @@ bool sbas_l1_telemetry_decoder_gs::Symbol_Aligner_And_Decoder::get_bits(const st | |||||||
|                 } |                 } | ||||||
|         } |         } | ||||||
|     d_past_symbol = symbols.back(); |     d_past_symbol = symbols.back(); | ||||||
|     delete[] bits_vd1; |  | ||||||
|     delete[] bits_vd2; |  | ||||||
|     return metric_vd1 > metric_vd2; |     return metric_vd1 > metric_vd2; | ||||||
| } | } | ||||||
|  |  | ||||||
|   | |||||||
| @@ -5,7 +5,7 @@ | |||||||
|  * |  * | ||||||
|  * ------------------------------------------------------------------------- |  * ------------------------------------------------------------------------- | ||||||
|  * |  * | ||||||
|  * Copyright (C) 2010-2018  (see AUTHORS file for a list of contributors) |  * Copyright (C) 2010-2019  (see AUTHORS file for a list of contributors) | ||||||
|  * |  * | ||||||
|  * GNSS-SDR is a software defined Global Navigation |  * GNSS-SDR is a software defined Global Navigation | ||||||
|  *          Satellite Systems receiver |  *          Satellite Systems receiver | ||||||
| @@ -40,6 +40,7 @@ | |||||||
| #include <cstdint> | #include <cstdint> | ||||||
| #include <deque> | #include <deque> | ||||||
| #include <fstream> | #include <fstream> | ||||||
|  | #include <memory> | ||||||
| #include <string> | #include <string> | ||||||
| #include <utility>  // for pair | #include <utility>  // for pair | ||||||
| #include <vector> | #include <vector> | ||||||
| @@ -50,12 +51,13 @@ class sbas_l1_telemetry_decoder_gs; | |||||||
|  |  | ||||||
| using sbas_l1_telemetry_decoder_gs_sptr = boost::shared_ptr<sbas_l1_telemetry_decoder_gs>; | using sbas_l1_telemetry_decoder_gs_sptr = boost::shared_ptr<sbas_l1_telemetry_decoder_gs>; | ||||||
|  |  | ||||||
| sbas_l1_telemetry_decoder_gs_sptr | sbas_l1_telemetry_decoder_gs_sptr sbas_l1_make_telemetry_decoder_gs( | ||||||
| sbas_l1_make_telemetry_decoder_gs(const Gnss_Satellite &satellite, bool dump); |     const Gnss_Satellite &satellite, | ||||||
|  |     bool dump); | ||||||
|  |  | ||||||
| /*! | /*! | ||||||
|  * \brief This class implements a block that decodes the SBAS integrity and corrections data defined in RTCA MOPS DO-229 |  * \brief This class implements a block that decodes the SBAS integrity and | ||||||
|  * |  * corrections data defined in RTCA MOPS DO-229 | ||||||
|  */ |  */ | ||||||
| class sbas_l1_telemetry_decoder_gs : public gr::block | class sbas_l1_telemetry_decoder_gs : public gr::block | ||||||
| { | { | ||||||
| @@ -67,6 +69,7 @@ public: | |||||||
|     { |     { | ||||||
|         return; |         return; | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     /*! |     /*! | ||||||
|      * \brief This is where all signal processing takes place |      * \brief This is where all signal processing takes place | ||||||
|      */ |      */ | ||||||
| @@ -74,8 +77,10 @@ public: | |||||||
|         gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); |         gr_vector_const_void_star &input_items, gr_vector_void_star &output_items); | ||||||
|  |  | ||||||
| private: | private: | ||||||
|     friend sbas_l1_telemetry_decoder_gs_sptr |     friend sbas_l1_telemetry_decoder_gs_sptr sbas_l1_make_telemetry_decoder_gs( | ||||||
|     sbas_l1_make_telemetry_decoder_gs(const Gnss_Satellite &satellite, bool dump); |         const Gnss_Satellite &satellite, | ||||||
|  |         bool dump); | ||||||
|  |  | ||||||
|     sbas_l1_telemetry_decoder_gs(const Gnss_Satellite &satellite, bool dump); |     sbas_l1_telemetry_decoder_gs(const Gnss_Satellite &satellite, bool dump); | ||||||
|  |  | ||||||
|     void viterbi_decoder(double *page_part_symbols, int32_t *page_part_bits); |     void viterbi_decoder(double *page_part_symbols, int32_t *page_part_bits); | ||||||
| @@ -103,7 +108,7 @@ private: | |||||||
|     { |     { | ||||||
|     public: |     public: | ||||||
|         Sample_Aligner(); |         Sample_Aligner(); | ||||||
|         ~Sample_Aligner(); |         ~Sample_Aligner() = default; | ||||||
|         void reset(); |         void reset(); | ||||||
|         /* |         /* | ||||||
|          * samples length must be a multiple of two |          * samples length must be a multiple of two | ||||||
| @@ -125,14 +130,14 @@ private: | |||||||
|     { |     { | ||||||
|     public: |     public: | ||||||
|         Symbol_Aligner_And_Decoder(); |         Symbol_Aligner_And_Decoder(); | ||||||
|         ~Symbol_Aligner_And_Decoder(); |         ~Symbol_Aligner_And_Decoder() = default; | ||||||
|         void reset(); |         void reset(); | ||||||
|         bool get_bits(const std::vector<double> &symbols, std::vector<int32_t> &bits); |         bool get_bits(const std::vector<double> &symbols, std::vector<int32_t> &bits); | ||||||
|  |  | ||||||
|     private: |     private: | ||||||
|         int32_t d_KK; |         int32_t d_KK; | ||||||
|         Viterbi_Decoder *d_vd1; |         std::shared_ptr<Viterbi_Decoder> d_vd1; | ||||||
|         Viterbi_Decoder *d_vd2; |         std::shared_ptr<Viterbi_Decoder> d_vd2; | ||||||
|         double d_past_symbol; |         double d_past_symbol; | ||||||
|     } d_symbol_aligner_and_decoder; |     } d_symbol_aligner_and_decoder; | ||||||
|  |  | ||||||
| @@ -157,7 +162,7 @@ private: | |||||||
|         void get_valid_frames(const std::vector<msg_candiate_int_t> &msg_candidates, std::vector<msg_candiate_char_t> &valid_msgs); |         void get_valid_frames(const std::vector<msg_candiate_int_t> &msg_candidates, std::vector<msg_candiate_char_t> &valid_msgs); | ||||||
|  |  | ||||||
|     private: |     private: | ||||||
|         typedef boost::crc_optimal<24, 0x1864CFBu, 0x0, 0x0, false, false> crc_24_q_type; |         typedef boost::crc_optimal<24, 0x1864CFBU, 0x0, 0x0, false, false> crc_24_q_type; | ||||||
|         crc_24_q_type d_checksum_agent; |         crc_24_q_type d_checksum_agent; | ||||||
|         void zerropad_front_and_convert_to_bytes(const std::vector<int32_t> &msg_candidate, std::vector<uint8_t> &bytes); |         void zerropad_front_and_convert_to_bytes(const std::vector<int32_t> &msg_candidate, std::vector<uint8_t> &bytes); | ||||||
|         void zerropad_back_and_convert_to_bytes(const std::vector<int32_t> &msg_candidate, std::vector<uint8_t> &bytes); |         void zerropad_back_and_convert_to_bytes(const std::vector<int32_t> &msg_candidate, std::vector<uint8_t> &bytes); | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 Carles Fernandez
					Carles Fernandez