24 #ifndef GNSS_SDR_GNSS_FLOWGRAPH_H 25 #define GNSS_SDR_GNSS_FLOWGRAPH_H 35 #include <gnuradio/blocks/null_sink.h> 36 #include <gnuradio/runtime_types.h> 128 void set_configuration(
const std::shared_ptr<ConfigurationInterface>& configuration);
130 bool connected()
const 158 void priorize_satellites(
const std::vector<std::pair<int, Gnss_Satellite>>& visible_satellites);
161 void start_acquisition_helper();
163 void perform_hw_reset();
168 int connect_desktop_flowgraph();
170 int connect_signal_sources();
171 int connect_signal_conditioners();
172 int connect_channels();
173 int connect_observables();
175 int connect_sample_counter();
176 int connect_galileo_tow_map();
178 int connect_signal_sources_to_signal_conditioners();
179 int connect_signal_conditioners_to_channels();
180 int connect_channels_to_observables();
181 int connect_observables_to_pvt();
182 int connect_monitors();
184 int connect_gal_e6_has();
185 int connect_gnss_synchro_monitor();
186 int connect_acquisition_monitor();
187 int connect_tracking_monitor();
188 int connect_navdata_monitor();
191 int connect_fpga_flowgraph();
192 int connect_fpga_sample_counter();
195 int assign_channels();
196 void check_signal_conditioners();
198 void set_signals_list();
199 void set_channels_state();
201 Gnss_Signal search_next_signal(
const std::string& searched_signal,
202 bool& is_primary_frequency,
203 bool& assistance_available,
204 float& estimated_doppler,
210 void check_desktop_conf_in_fpga_env();
212 double project_doppler(
const std::string& searched_signal,
double primary_freq_doppler_hz);
213 bool is_multiband()
const;
215 std::vector<std::string> split_string(
const std::string& s,
char delim);
216 std::vector<bool> signal_conditioner_connected_;
218 gr::top_block_sptr top_block_;
220 std::shared_ptr<ConfigurationInterface> configuration_;
221 std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
223 std::vector<std::shared_ptr<SignalSourceInterface>> sig_source_;
224 std::vector<std::shared_ptr<GNSSBlockInterface>> sig_conditioner_;
225 std::vector<std::shared_ptr<ChannelInterface>> channels_;
226 std::shared_ptr<GNSSBlockInterface> observables_;
227 std::shared_ptr<GNSSBlockInterface> pvt_;
229 std::map<std::string, gr::basic_block_sptr> acq_resamplers_;
230 std::vector<gr::blocks::null_sink::sptr> null_sinks_;
232 gr::basic_block_sptr GnssSynchroMonitor_;
233 gr::basic_block_sptr GnssSynchroAcquisitionMonitor_;
234 gr::basic_block_sptr GnssSynchroTrackingMonitor_;
235 gr::basic_block_sptr NavDataMonitor_;
236 channel_status_msg_receiver_sptr channels_status_;
237 galileo_e6_has_msg_receiver_sptr gal_e6_has_rx_;
238 galileo_tow_map_sptr galileo_tow_map_;
239 osnma_msg_receiver_sptr osnma_rx_;
241 gnss_sdr_sample_counter_sptr ch_out_sample_counter_;
243 gnss_sdr_fpga_sample_counter_sptr ch_out_fpga_sample_counter_;
246 std::vector<unsigned int> channels_state_;
248 std::list<Gnss_Signal> available_GPS_1C_signals_;
249 std::list<Gnss_Signal> available_GPS_2S_signals_;
250 std::list<Gnss_Signal> available_GPS_L5_signals_;
251 std::list<Gnss_Signal> available_SBAS_1C_signals_;
252 std::list<Gnss_Signal> available_GAL_1B_signals_;
253 std::list<Gnss_Signal> available_GAL_5X_signals_;
254 std::list<Gnss_Signal> available_GAL_7X_signals_;
255 std::list<Gnss_Signal> available_GAL_E6_signals_;
256 std::list<Gnss_Signal> available_GLO_1G_signals_;
257 std::list<Gnss_Signal> available_GLO_2G_signals_;
258 std::list<Gnss_Signal> available_BDS_B1_signals_;
259 std::list<Gnss_Signal> available_BDS_B3_signals_;
276 std::map<std::string, StringValue> mapStringValues_;
278 std::string config_file_;
279 std::string help_hint_;
281 std::mutex signal_list_mutex_;
285 int acq_channels_count_;
286 int max_acq_channels_;
291 bool enable_monitor_;
292 bool enable_acquisition_monitor_;
293 bool enable_tracking_monitor_;
294 bool enable_navdata_monitor_;
295 bool enable_fpga_offloading_;
296 bool enable_osnma_rx_;
297 bool enable_e6_has_rx_;
303 #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.
GNU Radio block that stores TOW for Galileo channels.
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.
GNU Radio block that processes Galileo OSNMA data received from Galileo E1B telemetry blocks...
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)
Prioritize visible satellites in the specified vector.
GNU Radio block that processes Galileo HAS message pages received from Galileo E6B telemetry blocks...