21 #ifndef GNSS_SDR_GALILEO_TELEMETRY_DECODER_GS_H 22 #define GNSS_SDR_GALILEO_TELEMETRY_DECODER_GS_H 31 #include <boost/circular_buffer.hpp> 32 #include <gnuradio/types.h> 44 using galileo_telemetry_decoder_gs_sptr = gnss_shared_ptr<galileo_telemetry_decoder_gs>;
46 galileo_telemetry_decoder_gs_sptr galileo_make_telemetry_decoder_gs(
60 void reset()
override;
65 int general_work(
int noutput_items, gr_vector_int &ninput_items,
66 gr_vector_const_void_star &input_items, gr_vector_void_star &output_items)
override;
69 friend galileo_telemetry_decoder_gs_sptr galileo_make_telemetry_decoder_gs(
76 void check_tlm_separation();
77 void msg_handler_read_galileo_tow_map(
const pmt::pmt_t &msg);
78 void deinterleaver(int32_t rows, int32_t cols,
const float *in,
float *out);
79 void decode_INAV_word(
float *page_part_symbols, int32_t frame_length,
double cn0);
80 void decode_FNAV_word(
float *page_symbols, int32_t frame_length,
double cn0);
81 void decode_CNAV_word(uint64_t time_stamp,
float *page_symbols, int32_t page_length,
double cn0);
83 std::unique_ptr<Viterbi_Decoder> d_viterbi;
84 std::vector<int32_t> d_preamble_samples;
85 std::vector<float> d_page_part_symbols;
87 std::string d_dump_filename;
88 std::ofstream d_dump_file;
90 boost::circular_buffer<float> d_symbol_history;
102 std::unique_ptr<Tlm_CRC_Stats> d_Tlm_CRC_Stats;
106 uint64_t d_symbol_counter;
107 uint64_t d_preamble_index;
108 uint64_t d_last_valid_preamble;
109 uint64_t d_received_sample_counter;
112 int32_t d_codelength;
113 int32_t d_datalength;
114 int32_t d_frame_type;
115 int32_t d_bits_per_preamble;
116 int32_t d_samples_per_preamble;
117 int32_t d_preamble_period_symbols;
118 int32_t d_CRC_error_counter;
120 int32_t d_flag_even_word_arrived;
122 uint32_t d_PRN_code_period_ms;
123 uint32_t d_required_symbols;
124 uint32_t d_frame_length_symbols;
126 uint32_t d_TOW_at_Preamble_ms;
127 uint32_t d_TOW_at_current_symbol_ms;
128 uint32_t d_max_symbols_without_valid_frame;
129 uint32_t d_received_tow_ms;
133 bool d_sent_tlm_failed_msg;
134 bool d_flag_frame_sync;
135 bool d_flag_PLL_180_deg_phase_locked;
136 bool d_flag_preamble;
140 bool d_first_eph_sent;
141 bool d_cnav_dummy_page;
142 bool d_print_cnav_page;
143 bool d_enable_navdata_monitor;
144 bool d_dump_crc_stats;
145 bool d_enable_reed_solomon_inav;
146 bool d_valid_timetag;
148 bool d_there_are_e1_channels;
149 bool d_there_are_e6_channels;
157 #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)...
Common base class for telemetry decoder GNU Radio implementations.
This class handles the Galileo F/NAV Data message, as described in the Galileo Open Service Signal in...
Class that contains all the configuration parameters for generic telemetry decoder block...
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 class handles the Galileo I/NAV Data message, as described in the Galileo Open Service Signal in...
This class represents a GNSS satellite.
Base class for telemetry decoder GNU Radio blocks.
void set_channel(int32_t channel) override
Set receiver's channel.
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...
This class implements a block that decodes the INAV and FNAV data defined in Galileo ICD...
void set_satellite(const Gnss_Satellite &satellite) override
Set satellite PRN.