24 #ifndef GNSS_SDR_GNSS_FLOWGRAPH_H 25 #define GNSS_SDR_GNSS_FLOWGRAPH_H 33 #include <gnuradio/blocks/null_sink.h> 34 #include <gnuradio/runtime_types.h> 126 void set_configuration(
const std::shared_ptr<ConfigurationInterface>& configuration);
128 bool connected()
const 156 void priorize_satellites(
const std::vector<std::pair<int, Gnss_Satellite>>& visible_satellites);
159 void start_acquisition_helper();
161 void perform_hw_reset();
166 int connect_desktop_flowgraph();
168 int connect_signal_sources();
169 int connect_signal_conditioners();
170 int connect_channels();
171 int connect_observables();
173 int connect_sample_counter();
175 int connect_signal_sources_to_signal_conditioners();
176 int connect_signal_conditioners_to_channels();
177 int connect_channels_to_observables();
178 int connect_observables_to_pvt();
179 int connect_monitors();
180 int connect_gal_e6_has();
181 int connect_gnss_synchro_monitor();
182 int connect_acquisition_monitor();
183 int connect_tracking_monitor();
184 int connect_navdata_monitor();
187 int connect_fpga_flowgraph();
188 int connect_fpga_sample_counter();
191 int assign_channels();
192 void check_signal_conditioners();
194 void set_signals_list();
195 void set_channels_state();
197 Gnss_Signal search_next_signal(
const std::string& searched_signal,
198 bool& is_primary_frequency,
199 bool& assistance_available,
200 float& estimated_doppler,
206 void check_desktop_conf_in_fpga_env();
208 double project_doppler(
const std::string& searched_signal,
double primary_freq_doppler_hz);
209 bool is_multiband()
const;
211 std::vector<std::string> split_string(
const std::string& s,
char delim);
212 std::vector<bool> signal_conditioner_connected_;
214 gr::top_block_sptr top_block_;
216 std::shared_ptr<ConfigurationInterface> configuration_;
217 std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
219 std::vector<std::shared_ptr<SignalSourceInterface>> sig_source_;
220 std::vector<std::shared_ptr<GNSSBlockInterface>> sig_conditioner_;
221 std::vector<std::shared_ptr<ChannelInterface>> channels_;
222 std::shared_ptr<GNSSBlockInterface> observables_;
223 std::shared_ptr<GNSSBlockInterface> pvt_;
225 std::map<std::string, gr::basic_block_sptr> acq_resamplers_;
226 std::vector<gr::blocks::null_sink::sptr> null_sinks_;
228 gr::basic_block_sptr GnssSynchroMonitor_;
229 gr::basic_block_sptr GnssSynchroAcquisitionMonitor_;
230 gr::basic_block_sptr GnssSynchroTrackingMonitor_;
231 gr::basic_block_sptr NavDataMonitor_;
232 channel_status_msg_receiver_sptr channels_status_;
233 galileo_e6_has_msg_receiver_sptr gal_e6_has_rx_;
235 gnss_sdr_sample_counter_sptr ch_out_sample_counter_;
237 gnss_sdr_fpga_sample_counter_sptr ch_out_fpga_sample_counter_;
240 std::vector<unsigned int> channels_state_;
242 std::list<Gnss_Signal> available_GPS_1C_signals_;
243 std::list<Gnss_Signal> available_GPS_2S_signals_;
244 std::list<Gnss_Signal> available_GPS_L5_signals_;
245 std::list<Gnss_Signal> available_SBAS_1C_signals_;
246 std::list<Gnss_Signal> available_GAL_1B_signals_;
247 std::list<Gnss_Signal> available_GAL_5X_signals_;
248 std::list<Gnss_Signal> available_GAL_7X_signals_;
249 std::list<Gnss_Signal> available_GAL_E6_signals_;
250 std::list<Gnss_Signal> available_GLO_1G_signals_;
251 std::list<Gnss_Signal> available_GLO_2G_signals_;
252 std::list<Gnss_Signal> available_BDS_B1_signals_;
253 std::list<Gnss_Signal> available_BDS_B3_signals_;
270 std::map<std::string, StringValue> mapStringValues_;
272 std::string config_file_;
273 std::string help_hint_;
275 std::mutex signal_list_mutex_;
279 int acq_channels_count_;
280 int max_acq_channels_;
285 bool enable_monitor_;
286 bool enable_acquisition_monitor_;
287 bool enable_tracking_monitor_;
288 bool enable_navdata_monitor_;
289 bool enable_fpga_offloading_;
290 bool enable_e6_has_rx_;
296 #endif // GNSS_SDR_GNSS_FLOWGRAPH_H Interface of a thread-safe std::queue.
void stop()
Stop the flow graph.
This class represents an interface to a PVT block.
This abstract class represents an interface to signal_source GNSS block.
This class represents a GNSS flow graph.
void disconnect()
Disconnect the blocks in the flow graph.
bool send_telemetry_msg(const pmt::pmt_t &msg)
Sends a GNU Radio asynchronous message from telemetry to PVT.
~GNSSFlowgraph()
Destructor.
Simple block to report the current receiver time based on the output of the tracking or telemetry blo...
void wait()
Wait for a flowgraph to complete.
This class represents an interface to a PVT block.
Implementation of the Gnss_Signal class.
void acquisition_manager(unsigned int who)
Manage satellite acquisition.
This abstract class represents an interface to configuration parameters.
Simple block to report the current receiver time based on the output of the tracking or telemetry blo...
void set_configuration(const std::shared_ptr< ConfigurationInterface > &configuration)
Set flow graph configuratiob.
This class represents a GNSS satellite.
GNSSFlowgraph(std::shared_ptr< ConfigurationInterface > configuration, std::shared_ptr< Concurrent_Queue< pmt::pmt_t >> queue)
Constructor that initializes the receiver flow graph.
This abstract class represents an interface to a channel GNSS block.
std::shared_ptr< PvtInterface > get_pvt()
Returns a smart pointer to the PVT object.
void connect()
Connects the defined blocks in the flow graph.
This class represents a GNSS signal.
This abstract class represents an interface to GNSS blocks.
GNU Radio block that receives asynchronous channel messages from acquisition and tracking blocks...
void start()
Start the flow graph.
void apply_action(unsigned int who, unsigned int what)
Applies an action to the flow graph.
void priorize_satellites(const std::vector< std::pair< int, Gnss_Satellite >> &visible_satellites)
Priorize visible satellites in the specified vector.
GNU Radio block that processes Galileo HAS message pages received from Galileo E6B telemetry blocks...