20 #ifndef GNSS_SDR_HYBRID_OBSERVABLES_GS_H 21 #define GNSS_SDR_HYBRID_OBSERVABLES_GS_H 26 #include <boost/circular_buffer.hpp> 27 #include <gnuradio/block.h> 28 #include <gnuradio/types.h> 51 using hybrid_observables_gs_sptr = gnss_shared_ptr<hybrid_observables_gs>;
53 hybrid_observables_gs_sptr hybrid_observables_gs_make(
const Obs_Conf& conf_);
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_);
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);
81 void set_tag_timestamp_in_sdr_timeframe(
const std::vector<Gnss_Synchro>& data, uint64_t rx_clock);
82 int32_t save_matfile()
const;
86 std::unique_ptr<Gnss_circular_deque<Gnss_Synchro>> d_gnss_synchro_history;
88 boost::circular_buffer<uint64_t> d_Rx_clock_buffer;
90 std::vector<std::queue<GnssTime>> d_SourceTagTimestamps;
91 std::queue<GnssTime> d_TimeChannelTagTimestamps;
93 std::vector<bool> d_channel_last_pll_lock;
94 std::vector<double> d_channel_last_pseudorange_smooth;
95 std::vector<double> d_channel_last_carrier_phase_rads;
97 std::string d_dump_filename;
99 std::ofstream d_dump_file;
101 double d_smooth_filter_M;
102 double d_T_rx_step_s;
103 double d_last_rx_clock_round20ms_error;
105 uint32_t d_T_rx_TOW_ms;
106 uint32_t d_T_rx_step_ms;
107 uint32_t d_T_status_report_timer_ms;
108 uint32_t d_nchannels_in;
109 uint32_t d_nchannels_out;
112 bool d_always_output_gs;
119 #endif // GNSS_SDR_HYBRID_OBSERVABLES_GS_H class that stores both the receiver time, relative to the receiver start and the GNSS time (absolute)...
This class implements a block that computes observables.
This is the class that contains the information that is shared by the processing blocks.
This interface represents a GNSS block.
Class that contains all the configuration parameters for generic observables block.