21 #ifndef GNSS_SDR_GALILEO_TELEMETRY_DECODER_GS_H 22 #define GNSS_SDR_GALILEO_TELEMETRY_DECODER_GS_H 32 #include <boost/circular_buffer.hpp> 33 #include <gnuradio/block.h> 34 #include <gnuradio/types.h> 50 using galileo_telemetry_decoder_gs_sptr = gnss_shared_ptr<galileo_telemetry_decoder_gs>;
52 galileo_telemetry_decoder_gs_sptr galileo_make_telemetry_decoder_gs(
71 int general_work(
int noutput_items, gr_vector_int &ninput_items,
72 gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
override;
76 friend galileo_telemetry_decoder_gs_sptr galileo_make_telemetry_decoder_gs(
83 void deinterleaver(int32_t rows, int32_t cols,
const float *in,
float *out);
84 void decode_INAV_word(
float *page_part_symbols, int32_t frame_length);
85 void decode_FNAV_word(
float *page_symbols, int32_t frame_length);
86 void decode_CNAV_word(
float *page_symbols, int32_t page_length);
88 std::unique_ptr<Viterbi_Decoder> d_viterbi;
89 std::vector<int32_t> d_preamble_samples;
90 std::vector<float> d_page_part_symbols;
92 std::string d_dump_filename;
93 std::ofstream d_dump_file;
95 boost::circular_buffer<float> d_symbol_history;
107 std::unique_ptr<Tlm_CRC_Stats> d_Tlm_CRC_Stats;
111 uint64_t d_sample_counter;
112 uint64_t d_preamble_index;
113 uint64_t d_last_valid_preamble;
116 int32_t d_codelength;
117 int32_t d_datalength;
118 int32_t d_frame_type;
119 int32_t d_bits_per_preamble;
120 int32_t d_samples_per_preamble;
121 int32_t d_preamble_period_symbols;
122 int32_t d_CRC_error_counter;
124 int32_t d_flag_even_word_arrived;
126 uint32_t d_PRN_code_period_ms;
127 uint32_t d_required_symbols;
128 uint32_t d_frame_length_symbols;
130 uint32_t d_TOW_at_Preamble_ms;
131 uint32_t d_TOW_at_current_symbol_ms;
132 uint32_t d_max_symbols_without_valid_frame;
136 bool d_sent_tlm_failed_msg;
137 bool d_flag_frame_sync;
138 bool d_flag_PLL_180_deg_phase_locked;
139 bool d_flag_preamble;
143 bool d_first_eph_sent;
144 bool d_cnav_dummy_page;
145 bool d_print_cnav_page;
146 bool d_enable_navdata_monitor;
147 bool d_dump_crc_stats;
148 bool d_enable_reed_solomon_inav;
149 bool d_valid_timetag;
155 #endif // GNSS_SDR_GALILEO_TELEMETRY_DECODER_GS_H class that stores both the receiver time, relative to the receiver start and the GNSS time (absolute)...
This class handles the Galileo F/NAV Data message, as described in the Galileo Open Service Signal in...
Class that computes the telemetry CRC statistics.
Class that contains all the configuration parameters for generic telemetry decoder block...
void set_satellite(const Gnss_Satellite &satellite)
Set satellite PRN.
This class handles the Galileo CNAV Data message, as described in the Galileo High Accuracy Service E...
Implementation of a Galileo I/NAV Data message as described in Galileo OS SIS ICD Issue 2...
This interface represents a GNSS block.
Interface of the Gnss_Satellite class.
This class handles the Galileo I/NAV Data message, as described in the Galileo Open Service Signal in...
This class represents a GNSS satellite.
Class that implements a Viterbi decoder.
int general_work(int noutput_items, gr_vector_int &ninput_items, gr_vector_const_void_star &input_items, gr_vector_void_star &output_items) override
This is where all signal processing takes place.
Class for storage of decoded navigation messages.
Implementation of a Galileo CNAV Data message as described in Galileo High Accuracy Service E6-B Sign...
Implementation of a Galileo F/NAV Data message as described in Galileo OS SIS ICD Issue 1...
void set_channel(int32_t channel)
Set receiver's channel.
This class implements a block that decodes the INAV and FNAV data defined in Galileo ICD...