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> 51 using galileo_telemetry_decoder_gs_sptr = gnss_shared_ptr<galileo_telemetry_decoder_gs>;
53 galileo_telemetry_decoder_gs_sptr galileo_make_telemetry_decoder_gs(
72 int general_work(
int noutput_items, gr_vector_int &ninput_items,
73 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 check_tlm_separation();
84 void msg_handler_read_galileo_tow_map(
const pmt::pmt_t &msg);
85 void deinterleaver(int32_t rows, int32_t cols,
const float *in,
float *out);
86 void decode_INAV_word(
float *page_part_symbols, int32_t frame_length,
double cn0);
87 void decode_FNAV_word(
float *page_symbols, int32_t frame_length,
double cn0);
88 void decode_CNAV_word(uint64_t time_stamp,
float *page_symbols, int32_t page_length,
double cn0);
90 std::unique_ptr<Viterbi_Decoder> d_viterbi;
91 std::vector<int32_t> d_preamble_samples;
92 std::vector<float> d_page_part_symbols;
94 std::string d_dump_filename;
95 std::ofstream d_dump_file;
97 boost::circular_buffer<float> d_symbol_history;
109 std::unique_ptr<Tlm_CRC_Stats> d_Tlm_CRC_Stats;
113 uint64_t d_symbol_counter;
114 uint64_t d_preamble_index;
115 uint64_t d_last_valid_preamble;
116 uint64_t d_received_sample_counter;
119 int32_t d_codelength;
120 int32_t d_datalength;
121 int32_t d_frame_type;
122 int32_t d_bits_per_preamble;
123 int32_t d_samples_per_preamble;
124 int32_t d_preamble_period_symbols;
125 int32_t d_CRC_error_counter;
127 int32_t d_flag_even_word_arrived;
129 uint32_t d_PRN_code_period_ms;
130 uint32_t d_required_symbols;
131 uint32_t d_frame_length_symbols;
133 uint32_t d_TOW_at_Preamble_ms;
134 uint32_t d_TOW_at_current_symbol_ms;
135 uint32_t d_max_symbols_without_valid_frame;
136 uint32_t d_received_tow_ms;
140 bool d_sent_tlm_failed_msg;
141 bool d_flag_frame_sync;
142 bool d_flag_PLL_180_deg_phase_locked;
143 bool d_flag_preamble;
147 bool d_first_eph_sent;
148 bool d_cnav_dummy_page;
149 bool d_print_cnav_page;
150 bool d_enable_navdata_monitor;
151 bool d_dump_crc_stats;
152 bool d_enable_reed_solomon_inav;
153 bool d_valid_timetag;
155 bool d_there_are_e6_channels;
162 #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 S...
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 Signal-In...
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...