24 #ifndef GNSS_SDR_GNSS_FLOWGRAPH_H 25 #define GNSS_SDR_GNSS_FLOWGRAPH_H 32 #include <gnuradio/blocks/null_sink.h> 33 #include <gnuradio/runtime_types.h> 124 void set_configuration(
const std::shared_ptr<ConfigurationInterface>& configuration);
126 bool connected()
const 154 void priorize_satellites(
const std::vector<std::pair<int, Gnss_Satellite>>& visible_satellites);
157 void start_acquisition_helper();
159 void perform_hw_reset();
164 void set_signals_list();
165 void set_channels_state();
167 Gnss_Signal search_next_signal(
const std::string& searched_signal,
169 bool& is_primary_frequency,
170 bool& assistance_available,
171 float& estimated_doppler,
177 double project_doppler(
const std::string& searched_signal,
double primary_freq_doppler_hz);
178 bool is_multiband()
const;
180 std::vector<std::string> split_string(
const std::string& s,
char delim);
182 gr::top_block_sptr top_block_;
184 std::shared_ptr<ConfigurationInterface> configuration_;
185 std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
187 std::vector<std::shared_ptr<GNSSBlockInterface>> sig_source_;
188 std::vector<std::shared_ptr<GNSSBlockInterface>> sig_conditioner_;
189 std::vector<std::shared_ptr<ChannelInterface>> channels_;
190 std::shared_ptr<GNSSBlockInterface> observables_;
191 std::shared_ptr<GNSSBlockInterface> pvt_;
193 std::map<std::string, gr::basic_block_sptr> acq_resamplers_;
194 std::vector<gr::blocks::null_sink::sptr> null_sinks_;
196 gr::basic_block_sptr GnssSynchroMonitor_;
197 gr::basic_block_sptr GnssSynchroAcquisitionMonitor_;
198 gr::basic_block_sptr GnssSynchroTrackingMonitor_;
199 channel_status_msg_receiver_sptr channels_status_;
200 gnss_sdr_sample_counter_sptr ch_out_sample_counter_;
202 gnss_sdr_fpga_sample_counter_sptr ch_out_fpga_sample_counter_;
205 std::vector<unsigned int> channels_state_;
207 std::list<Gnss_Signal> available_GPS_1C_signals_;
208 std::list<Gnss_Signal> available_GPS_2S_signals_;
209 std::list<Gnss_Signal> available_GPS_L5_signals_;
210 std::list<Gnss_Signal> available_SBAS_1C_signals_;
211 std::list<Gnss_Signal> available_GAL_1B_signals_;
212 std::list<Gnss_Signal> available_GAL_5X_signals_;
213 std::list<Gnss_Signal> available_GAL_7X_signals_;
214 std::list<Gnss_Signal> available_GAL_E6_signals_;
215 std::list<Gnss_Signal> available_GLO_1G_signals_;
216 std::list<Gnss_Signal> available_GLO_2G_signals_;
217 std::list<Gnss_Signal> available_BDS_B1_signals_;
218 std::list<Gnss_Signal> available_BDS_B3_signals_;
235 std::map<std::string, StringValue> mapStringValues_;
237 std::string config_file_;
239 std::mutex signal_list_mutex_;
243 int acq_channels_count_;
244 int max_acq_channels_;
249 bool enable_monitor_;
250 bool enable_acquisition_monitor_;
251 bool enable_tracking_monitor_;
257 #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 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.