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> 43 #include <unordered_map> 129 void set_configuration(
const std::shared_ptr<ConfigurationInterface>& configuration);
131 bool connected()
const 159 void priorize_satellites(
const std::vector<std::pair<int, Gnss_Satellite>>& visible_satellites);
162 void start_acquisition_helper();
164 void perform_hw_reset();
169 int connect_desktop_flowgraph();
171 int connect_signal_sources();
172 int connect_signal_conditioners();
173 int connect_channels();
174 int connect_observables();
176 int connect_sample_counter();
177 int connect_galileo_tow_map();
179 int connect_signal_sources_to_signal_conditioners();
180 int connect_signal_conditioners_to_channels();
181 int connect_channels_to_observables();
182 int connect_observables_to_pvt();
183 int connect_monitors();
185 int connect_gal_e6_has();
186 int connect_gnss_synchro_monitor();
187 int connect_acquisition_monitor();
188 int connect_tracking_monitor();
189 int connect_navdata_monitor();
192 int connect_fpga_flowgraph();
193 int connect_fpga_sample_counter();
196 int assign_channels();
197 void check_signal_conditioners();
199 void set_signals_list();
200 void set_channels_state();
202 Gnss_Signal search_next_signal(
const std::string& searched_signal,
203 bool& is_primary_frequency,
204 bool& assistance_available,
205 float& estimated_doppler,
211 void check_desktop_conf_in_fpga_env();
213 double project_doppler(
const std::string& searched_signal,
double primary_freq_doppler_hz);
214 bool is_multiband()
const;
216 std::vector<std::string> split_string(
const std::string& s,
char delim);
217 std::vector<bool> signal_conditioner_connected_;
219 gr::top_block_sptr top_block_;
221 std::shared_ptr<ConfigurationInterface> configuration_;
222 std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
224 std::vector<std::shared_ptr<SignalSourceInterface>> sig_source_;
225 std::vector<std::shared_ptr<GNSSBlockInterface>> sig_conditioner_;
226 std::vector<std::shared_ptr<ChannelInterface>> channels_;
227 std::shared_ptr<GNSSBlockInterface> observables_;
228 std::shared_ptr<GNSSBlockInterface> pvt_;
230 std::map<std::string, gr::basic_block_sptr> acq_resamplers_;
231 std::vector<gr::blocks::null_sink::sptr> null_sinks_;
233 gr::basic_block_sptr GnssSynchroMonitor_;
234 gr::basic_block_sptr GnssSynchroAcquisitionMonitor_;
235 gr::basic_block_sptr GnssSynchroTrackingMonitor_;
236 gr::basic_block_sptr NavDataMonitor_;
237 channel_status_msg_receiver_sptr channels_status_;
238 galileo_e6_has_msg_receiver_sptr gal_e6_has_rx_;
239 galileo_tow_map_sptr galileo_tow_map_;
240 osnma_msg_receiver_sptr osnma_rx_;
242 gnss_sdr_sample_counter_sptr ch_out_sample_counter_;
244 gnss_sdr_fpga_sample_counter_sptr ch_out_fpga_sample_counter_;
247 std::vector<unsigned int> channels_state_;
249 std::unordered_map<std::string, std::list<Gnss_Signal>> available_signals_map_;
268 std::map<std::string, StringValue> mapStringValues_;
270 std::string config_file_;
271 std::string help_hint_;
273 std::mutex signal_list_mutex_;
277 int acq_channels_count_;
278 int max_acq_channels_;
283 bool enable_monitor_;
284 bool enable_acquisition_monitor_;
285 bool enable_tracking_monitor_;
286 bool enable_navdata_monitor_;
287 bool enable_fpga_offloading_;
288 bool enable_osnma_rx_;
289 bool enable_e6_has_rx_;
295 #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...