21#ifndef GNSS_SDR_CHANNEL_H
22#define GNSS_SDR_CHANNEL_H
30#include <gnuradio/block.h>
66 std::shared_ptr<AcquisitionInterface> acq,
67 std::shared_ptr<TrackingInterface> trk,
68 std::shared_ptr<TelemetryDecoderInterface> nav,
69 const std::string& role,
70 const std::string& signal_str,
75 void connect(gr::top_block_sptr top_block)
override;
76 void disconnect(gr::top_block_sptr top_block)
override;
77 gr::basic_block_sptr get_left_block()
override;
84 inline std::string role()
override {
return role_; }
85 inline std::string
implementation()
override {
return std::string(
"Channel"); }
86 inline size_t item_size()
override {
return 2 *
sizeof(float); }
87 Gnss_Signal get_signal()
override;
92 void assist_acquisition_doppler(
double Carrier_Doppler_hz)
override;
94 inline std::shared_ptr<AcquisitionInterface> acquisition()
const {
return acq_; }
95 inline std::shared_ptr<TrackingInterface> tracking()
const {
return trk_; }
96 inline std::shared_ptr<TelemetryDecoderInterface> telemetry()
const {
return nav_; }
99 std::shared_ptr<ChannelFsm> channel_fsm_;
100 std::shared_ptr<AcquisitionInterface> acq_;
101 std::shared_ptr<TrackingInterface> trk_;
102 std::shared_ptr<TelemetryDecoderInterface> nav_;
103 channel_msg_receiver_cc_sptr channel_msg_rx_;
104 Gnss_Synchro gnss_synchro_{};
105 Gnss_Signal gnss_signal_;
109 int glonass_extend_correlation_ms_;
112 bool flag_enable_fpga_;
Interface of the State Machine for channel.
This class represents an interface to a channel GNSS block.
GNU Radio block that receives asynchronous channel messages from acquisition and tracking blocks.
This abstract class represents an interface to an acquisition GNSS block.
This abstract class represents an interface to a channel GNSS block.
gr::basic_block_sptr get_left_block_acq() override
Gets the GNU Radio acquisition block input pointer.
std::string implementation() override
Returns "Channel".
gr::basic_block_sptr get_left_block_trk() override
Gets the GNU Radio tracking block input pointer.
gr::basic_block_sptr get_right_block_trk() override
Gets the GNU Radio tracking block output pointer.
void set_signal(const Gnss_Signal &gnss_signal_) override
Sets the channel GNSS signal.
void start_acquisition() override
Start the State Machine.
Channel(const ConfigurationInterface *configuration, uint32_t channel, std::shared_ptr< AcquisitionInterface > acq, std::shared_ptr< TrackingInterface > trk, std::shared_ptr< TelemetryDecoderInterface > nav, const std::string &role, const std::string &signal_str, Concurrent_Queue< pmt::pmt_t > *queue)
Constructor.
void stop_channel() override
Stop the State Machine.
~Channel()=default
Destructor.
gr::basic_block_sptr get_right_block() override
Gets the GNU Radio channel block output pointer.
gr::basic_block_sptr get_right_block_acq() override
Gets the GNU Radio acquisition block output pointer.
void connect(gr::top_block_sptr top_block) override
Connects the tracking block to the top_block and to the telemetry.
This class implements a thread-safe std::queue.
This abstract class represents an interface to configuration parameters.
This class represents a GNSS signal.
This abstract class represents an interface to a navigation GNSS block.
This abstract class represents an interface to a tracking block.
Interface of a thread-safe std::queue.
Implementation of the Gnss_Signal class.
Interface of the Gnss_Synchro class.