24 #ifndef GNSS_SDR_GNSS_FLOWGRAPH_H 25 #define GNSS_SDR_GNSS_FLOWGRAPH_H 34 #include <gnuradio/blocks/null_sink.h> 35 #include <gnuradio/runtime_types.h> 127 void set_configuration(
const std::shared_ptr<ConfigurationInterface>& configuration);
129 bool connected()
const 157 void priorize_satellites(
const std::vector<std::pair<int, Gnss_Satellite>>& visible_satellites);
160 void start_acquisition_helper();
162 void perform_hw_reset();
167 int connect_desktop_flowgraph();
169 int connect_signal_sources();
170 int connect_signal_conditioners();
171 int connect_channels();
172 int connect_observables();
174 int connect_sample_counter();
175 int connect_galileo_tow_map();
177 int connect_signal_sources_to_signal_conditioners();
178 int connect_signal_conditioners_to_channels();
179 int connect_channels_to_observables();
180 int connect_observables_to_pvt();
181 int connect_monitors();
182 int connect_gal_e6_has();
183 int connect_gnss_synchro_monitor();
184 int connect_acquisition_monitor();
185 int connect_tracking_monitor();
186 int connect_navdata_monitor();
189 int connect_fpga_flowgraph();
190 int connect_fpga_sample_counter();
193 int assign_channels();
194 void check_signal_conditioners();
196 void set_signals_list();
197 void set_channels_state();
199 Gnss_Signal search_next_signal(
const std::string& searched_signal,
200 bool& is_primary_frequency,
201 bool& assistance_available,
202 float& estimated_doppler,
208 void check_desktop_conf_in_fpga_env();
210 double project_doppler(
const std::string& searched_signal,
double primary_freq_doppler_hz);
211 bool is_multiband()
const;
213 std::vector<std::string> split_string(
const std::string& s,
char delim);
214 std::vector<bool> signal_conditioner_connected_;
216 gr::top_block_sptr top_block_;
218 std::shared_ptr<ConfigurationInterface> configuration_;
219 std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
221 std::vector<std::shared_ptr<SignalSourceInterface>> sig_source_;
222 std::vector<std::shared_ptr<GNSSBlockInterface>> sig_conditioner_;
223 std::vector<std::shared_ptr<ChannelInterface>> channels_;
224 std::shared_ptr<GNSSBlockInterface> observables_;
225 std::shared_ptr<GNSSBlockInterface> pvt_;
227 std::map<std::string, gr::basic_block_sptr> acq_resamplers_;
228 std::vector<gr::blocks::null_sink::sptr> null_sinks_;
230 gr::basic_block_sptr GnssSynchroMonitor_;
231 gr::basic_block_sptr GnssSynchroAcquisitionMonitor_;
232 gr::basic_block_sptr GnssSynchroTrackingMonitor_;
233 gr::basic_block_sptr NavDataMonitor_;
234 channel_status_msg_receiver_sptr channels_status_;
235 galileo_e6_has_msg_receiver_sptr gal_e6_has_rx_;
236 galileo_tow_map_sptr galileo_tow_map_;
238 gnss_sdr_sample_counter_sptr ch_out_sample_counter_;
240 gnss_sdr_fpga_sample_counter_sptr ch_out_fpga_sample_counter_;
243 std::vector<unsigned int> channels_state_;
245 std::list<Gnss_Signal> available_GPS_1C_signals_;
246 std::list<Gnss_Signal> available_GPS_2S_signals_;
247 std::list<Gnss_Signal> available_GPS_L5_signals_;
248 std::list<Gnss_Signal> available_SBAS_1C_signals_;
249 std::list<Gnss_Signal> available_GAL_1B_signals_;
250 std::list<Gnss_Signal> available_GAL_5X_signals_;
251 std::list<Gnss_Signal> available_GAL_7X_signals_;
252 std::list<Gnss_Signal> available_GAL_E6_signals_;
253 std::list<Gnss_Signal> available_GLO_1G_signals_;
254 std::list<Gnss_Signal> available_GLO_2G_signals_;
255 std::list<Gnss_Signal> available_BDS_B1_signals_;
256 std::list<Gnss_Signal> available_BDS_B3_signals_;
273 std::map<std::string, StringValue> mapStringValues_;
275 std::string config_file_;
276 std::string help_hint_;
278 std::mutex signal_list_mutex_;
282 int acq_channels_count_;
283 int max_acq_channels_;
288 bool enable_monitor_;
289 bool enable_acquisition_monitor_;
290 bool enable_tracking_monitor_;
291 bool enable_navdata_monitor_;
292 bool enable_fpga_offloading_;
293 bool enable_e6_has_rx_;
299 #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.
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...