58class hybrid_observables_gs :
public gr::block
61 ~hybrid_observables_gs();
62 void forecast(
int noutput_items, gr_vector_int& ninput_items_required);
63 int general_work(
int noutput_items, gr_vector_int& ninput_items,
64 gr_vector_const_void_star& input_items, gr_vector_void_star& output_items);
67 friend hybrid_observables_gs_sptr hybrid_observables_gs_make(
const Obs_Conf& conf_);
69 explicit hybrid_observables_gs(
const Obs_Conf& conf_);
71 const size_t d_double_type_hash_code =
typeid(double).hash_code();
72 const size_t d_int_type_hash_code =
typeid(int).hash_code();
74 void msg_handler_pvt_to_observables(
const pmt::pmt_t& msg);
76 bool interp_trk_obs(
Gnss_Synchro& interpolated_obs, uint32_t ch, uint64_t rx_clock)
const;
77 void update_TOW(
const std::vector<Gnss_Synchro>& data);
78 void compute_pranges(std::vector<Gnss_Synchro>& data)
const;
79 void smooth_pseudoranges(std::vector<Gnss_Synchro>& data);
80 void detect_cycle_slips(std::vector<Gnss_Synchro>& data, uint64_t rx_clock);
82 void set_tag_timestamp_in_sdr_timeframe(
const std::vector<Gnss_Synchro>& data, uint64_t rx_clock);
84 void propagate_sensor_data(
const std::vector<Gnss_Synchro>& data);
86 int32_t save_matfile()
const;
90 std::unique_ptr<Gnss_circular_deque<Gnss_Synchro>> d_gnss_synchro_history;
92 boost::circular_buffer<uint64_t> d_Rx_clock_buffer;
94 std::vector<std::queue<GnssTime>> d_SourceTagTimestamps;
95 std::queue<GnssTime> d_TimeChannelTagTimestamps;
97 std::queue<gr::tag_t> d_sensor_data_tags;
98 std::uint64_t d_trq_last_sample{0};
100 std::vector<bool> d_channel_last_pll_lock;
101 std::vector<double> d_channel_last_pseudorange_smooth;
102 std::vector<double> d_channel_last_carrier_phase_rads;
103 std::vector<bool> d_channel_last_rx_time_valid;
105 std::string d_dump_filename;
107 std::ofstream d_dump_file;
109 double d_smooth_filter_M;
110 double d_T_rx_step_s;
111 double d_last_rx_clock_round20ms_error;
113 uint32_t d_T_rx_TOW_ms;
114 uint32_t d_T_rx_step_ms;
115 uint32_t d_T_status_report_timer_ms;
116 uint32_t d_nchannels_in;
117 uint32_t d_nchannels_out;
120 bool d_always_output_gs;