54class galileo_telemetry_decoder_gs :
public telemetry_impl_interface
57 ~galileo_telemetry_decoder_gs()
override;
60 void reset()
override;
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;
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.