diff --git a/src/algorithms/PVT/libs/rtcm.h b/src/algorithms/PVT/libs/rtcm.h index 792eafb9a..75dcd4c50 100644 --- a/src/algorithms/PVT/libs/rtcm.h +++ b/src/algorithms/PVT/libs/rtcm.h @@ -43,6 +43,7 @@ #include #include #include +#include #include #include // for size_t #include diff --git a/src/algorithms/channel/adapters/CMakeLists.txt b/src/algorithms/channel/adapters/CMakeLists.txt index 7f439ce56..48f293df5 100644 --- a/src/algorithms/channel/adapters/CMakeLists.txt +++ b/src/algorithms/channel/adapters/CMakeLists.txt @@ -31,6 +31,7 @@ target_link_libraries(channel_adapters Gnuradio::runtime channel_libs core_system_parameters + core_receiver PRIVATE Gflags::gflags Glog::glog diff --git a/src/algorithms/channel/adapters/channel.cc b/src/algorithms/channel/adapters/channel.cc index 98574b3eb..2cea8e915 100644 --- a/src/algorithms/channel/adapters/channel.cc +++ b/src/algorithms/channel/adapters/channel.cc @@ -42,7 +42,7 @@ Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, std::shared_ptr acq, std::shared_ptr trk, std::shared_ptr nav, - std::string role, std::string implementation, gr::msg_queue::sptr queue) + std::string role, std::string implementation, std::shared_ptr > queue) { acq_ = std::move(acq); trk_ = std::move(trk); diff --git a/src/algorithms/channel/adapters/channel.h b/src/algorithms/channel/adapters/channel.h index a238f490c..083608331 100644 --- a/src/algorithms/channel/adapters/channel.h +++ b/src/algorithms/channel/adapters/channel.h @@ -38,10 +38,11 @@ #include "channel_fsm.h" #include "channel_interface.h" #include "channel_msg_receiver_cc.h" +#include "concurrent_queue.h" #include "gnss_signal.h" #include "gnss_synchro.h" #include -#include +#include #include #include #include @@ -66,7 +67,7 @@ public: //! Constructor Channel(ConfigurationInterface* configuration, uint32_t channel, std::shared_ptr acq, std::shared_ptr trk, std::shared_ptr nav, - std::string role, std::string implementation, gr::msg_queue::sptr queue); + std::string role, std::string implementation, std::shared_ptr> queue); virtual ~Channel(); //!< Virtual destructor @@ -105,7 +106,7 @@ private: bool connected_; bool repeat_; std::shared_ptr channel_fsm_; - gr::msg_queue::sptr queue_; + std::shared_ptr> queue_; std::mutex mx; }; diff --git a/src/algorithms/channel/libs/CMakeLists.txt b/src/algorithms/channel/libs/CMakeLists.txt index ba6e2a274..2a5773dfc 100644 --- a/src/algorithms/channel/libs/CMakeLists.txt +++ b/src/algorithms/channel/libs/CMakeLists.txt @@ -38,6 +38,7 @@ target_link_libraries(channel_libs Gnuradio::runtime Gnuradio::pmt core_system_parameters + core_receiver PRIVATE Boost::boost Gflags::gflags diff --git a/src/algorithms/channel/libs/channel_fsm.cc b/src/algorithms/channel/libs/channel_fsm.cc index ac533d310..ffc491634 100644 --- a/src/algorithms/channel/libs/channel_fsm.cc +++ b/src/algorithms/channel/libs/channel_fsm.cc @@ -31,7 +31,7 @@ */ #include "channel_fsm.h" -#include "control_message_factory.h" +#include "channel_event.h" #include #include @@ -179,7 +179,7 @@ void ChannelFsm::set_telemetry(std::shared_ptr teleme } -void ChannelFsm::set_queue(gr::msg_queue::sptr queue) +void ChannelFsm::set_queue(std::shared_ptr> queue) { std::lock_guard lk(mx); queue_ = std::move(queue); @@ -215,29 +215,17 @@ void ChannelFsm::start_acquisition() void ChannelFsm::start_tracking() { trk_->start_tracking(); - std::unique_ptr cmf(new ControlMessageFactory()); - if (queue_ != gr::msg_queue::make()) - { - queue_->handle(cmf->GetQueueMessage(channel_, 1)); - } + queue_->push(pmt::make_any(channel_event_make(channel_, 1))); } void ChannelFsm::request_satellite() { - std::unique_ptr cmf(new ControlMessageFactory()); - if (queue_ != gr::msg_queue::make()) - { - queue_->handle(cmf->GetQueueMessage(channel_, 0)); - } + queue_->push(pmt::make_any(channel_event_make(channel_, 0))); } void ChannelFsm::notify_stop_tracking() { - std::unique_ptr cmf(new ControlMessageFactory()); - if (queue_ != gr::msg_queue::make()) - { - queue_->handle(cmf->GetQueueMessage(channel_, 2)); - } + queue_->push(pmt::make_any(channel_event_make(channel_, 2))); } diff --git a/src/algorithms/channel/libs/channel_fsm.h b/src/algorithms/channel/libs/channel_fsm.h index 8a3342511..a083a1507 100644 --- a/src/algorithms/channel/libs/channel_fsm.h +++ b/src/algorithms/channel/libs/channel_fsm.h @@ -34,9 +34,10 @@ #define GNSS_SDR_CHANNEL_FSM_H #include "acquisition_interface.h" +#include "concurrent_queue.h" #include "telemetry_decoder_interface.h" #include "tracking_interface.h" -#include +#include #include #include #include @@ -54,7 +55,7 @@ public: void set_acquisition(std::shared_ptr acquisition); void set_tracking(std::shared_ptr tracking); void set_telemetry(std::shared_ptr telemetry); - void set_queue(gr::msg_queue::sptr queue); + void set_queue(std::shared_ptr> queue); void set_channel(uint32_t channel); void start_acquisition(); // FSM EVENTS @@ -76,7 +77,7 @@ private: std::shared_ptr acq_; std::shared_ptr trk_; std::shared_ptr nav_; - gr::msg_queue::sptr queue_; + std::shared_ptr> queue_; uint32_t channel_; uint32_t d_state; std::mutex mx; diff --git a/src/algorithms/libs/pass_through.cc b/src/algorithms/libs/pass_through.cc index 1a517a96b..7b4144dd1 100644 --- a/src/algorithms/libs/pass_through.cc +++ b/src/algorithms/libs/pass_through.cc @@ -109,6 +109,12 @@ Pass_Through::Pass_Through(ConfigurationInterface* configuration, const std::str } kludge_copy_ = gr::blocks::copy::make(item_size_); + unsigned long int max_source_buffer_samples = configuration->property("GNSS-SDR.max_source_buffer_samples", 0); + if (max_source_buffer_samples > 0) + { + kludge_copy_->set_max_output_buffer(max_source_buffer_samples); + LOG(INFO) << "Set signal conditioner max output buffer to " << max_source_buffer_samples; + } DLOG(INFO) << "kludge_copy(" << kludge_copy_->unique_id() << ")"; if (in_streams_ > 1) { diff --git a/src/algorithms/signal_generator/adapters/CMakeLists.txt b/src/algorithms/signal_generator/adapters/CMakeLists.txt index fb651871e..a519eaa3f 100644 --- a/src/algorithms/signal_generator/adapters/CMakeLists.txt +++ b/src/algorithms/signal_generator/adapters/CMakeLists.txt @@ -34,6 +34,7 @@ target_link_libraries(signal_generator_adapters Gflags::gflags Glog::glog algorithms_libs + core_receiver ) target_include_directories(signal_generator_adapters diff --git a/src/algorithms/signal_generator/adapters/signal_generator.cc b/src/algorithms/signal_generator/adapters/signal_generator.cc index c4dc9dc3d..31636f246 100644 --- a/src/algorithms/signal_generator/adapters/signal_generator.cc +++ b/src/algorithms/signal_generator/adapters/signal_generator.cc @@ -44,7 +44,7 @@ SignalGenerator::SignalGenerator(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) + unsigned int out_stream, std::shared_ptr > queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/gen_source.dat"; diff --git a/src/algorithms/signal_generator/adapters/signal_generator.h b/src/algorithms/signal_generator/adapters/signal_generator.h index e32c431b8..d2adfc27e 100644 --- a/src/algorithms/signal_generator/adapters/signal_generator.h +++ b/src/algorithms/signal_generator/adapters/signal_generator.h @@ -33,12 +33,13 @@ #ifndef GNSS_SDR_SIGNAL_GENERATOR_H_ #define GNSS_SDR_SIGNAL_GENERATOR_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include "signal_generator_c.h" #include #include #include -#include +#include #include #include @@ -53,7 +54,7 @@ class SignalGenerator : public GNSSBlockInterface public: SignalGenerator(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue); + unsigned int out_stream, std::shared_ptr > queue); virtual ~SignalGenerator(); @@ -91,6 +92,6 @@ private: boost::shared_ptr gen_source_; gr::blocks::vector_to_stream::sptr vector_to_stream_; gr::blocks::file_sink::sptr file_sink_; - boost::shared_ptr queue_; + std::shared_ptr > queue_; }; #endif /*GNSS_SDR_SIGNAL_GENERATOR_H_*/ diff --git a/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.cc b/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.cc index f83c64f25..dac665cc4 100644 --- a/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.cc +++ b/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.cc @@ -48,7 +48,7 @@ Ad9361FpgaSignalSource::Ad9361FpgaSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/signal_source.dat"; diff --git a/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.h b/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.h index 9277c4c2b..e5a917199 100644 --- a/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.h +++ b/src/algorithms/signal_source/adapters/ad9361_fpga_signal_source.h @@ -32,10 +32,11 @@ #ifndef GNSS_SDR_AD9361_FPGA_SIGNAL_SOURCE_H_ #define GNSS_SDR_AD9361_FPGA_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "fpga_switch.h" #include "gnss_block_interface.h" #include -#include +#include #include #include @@ -46,7 +47,7 @@ class Ad9361FpgaSignalSource : public GNSSBlockInterface public: Ad9361FpgaSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue); + unsigned int out_stream, std::shared_ptr> queue); ~Ad9361FpgaSignalSource(); @@ -112,7 +113,7 @@ private: bool dump_; std::string dump_filename_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; std::shared_ptr switch_fpga; }; diff --git a/src/algorithms/signal_source/adapters/custom_udp_signal_source.cc b/src/algorithms/signal_source/adapters/custom_udp_signal_source.cc index 024966d0e..a130b32f8 100644 --- a/src/algorithms/signal_source/adapters/custom_udp_signal_source.cc +++ b/src/algorithms/signal_source/adapters/custom_udp_signal_source.cc @@ -40,7 +40,7 @@ CustomUDPSignalSource::CustomUDPSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { // DUMP PARAMETERS std::string empty = ""; diff --git a/src/algorithms/signal_source/adapters/custom_udp_signal_source.h b/src/algorithms/signal_source/adapters/custom_udp_signal_source.h index 37e80caf7..3d8d400de 100644 --- a/src/algorithms/signal_source/adapters/custom_udp_signal_source.h +++ b/src/algorithms/signal_source/adapters/custom_udp_signal_source.h @@ -32,12 +32,13 @@ #ifndef GNSS_SDR_CUSTOM_UDP_SIGNAL_SOURCE_H #define GNSS_SDR_CUSTOM_UDP_SIGNAL_SOURCE_H +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include "gr_complex_ip_packet_source.h" #include #include #include -#include +#include #include #include #include @@ -54,7 +55,7 @@ class CustomUDPSignalSource : public GNSSBlockInterface public: CustomUDPSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~CustomUDPSignalSource(); @@ -98,7 +99,7 @@ private: std::vector> null_sinks_; Gr_Complex_Ip_Packet_Source::sptr udp_gnss_rx_source_; std::vector> file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_CUSTOM_UDP_SIGNAL_SOURCE_H */ diff --git a/src/algorithms/signal_source/adapters/file_signal_source.cc b/src/algorithms/signal_source/adapters/file_signal_source.cc index 59ad90f50..b478b6363 100644 --- a/src/algorithms/signal_source/adapters/file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/file_signal_source.cc @@ -44,7 +44,7 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "./example_capture.dat"; std::string default_item_type = "short"; diff --git a/src/algorithms/signal_source/adapters/file_signal_source.h b/src/algorithms/signal_source/adapters/file_signal_source.h index bfded2ce8..86d87798a 100644 --- a/src/algorithms/signal_source/adapters/file_signal_source.h +++ b/src/algorithms/signal_source/adapters/file_signal_source.h @@ -35,13 +35,15 @@ #ifndef GNSS_SDR_FILE_SIGNAL_SOURCE_H_ #define GNSS_SDR_FILE_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include #include #include #include -#include +#include #include +#include #include class ConfigurationInterface; @@ -55,7 +57,7 @@ class FileSignalSource : public GNSSBlockInterface public: FileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue); + std::shared_ptr> queue); virtual ~FileSignalSource(); @@ -122,7 +124,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr sink_; gr::blocks::throttle::sptr throttle_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; size_t item_size_; // Throttle control bool enable_throttle_control_; diff --git a/src/algorithms/signal_source/adapters/flexiband_signal_source.cc b/src/algorithms/signal_source/adapters/flexiband_signal_source.cc index ff3f3f9a0..478a6973d 100644 --- a/src/algorithms/signal_source/adapters/flexiband_signal_source.cc +++ b/src/algorithms/signal_source/adapters/flexiband_signal_source.cc @@ -34,7 +34,6 @@ #include "configuration_interface.h" #include #include -#include #include #include @@ -43,10 +42,10 @@ FlexibandSignalSource::FlexibandSignalSource(ConfigurationInterface* configurati const std::string& role, unsigned int in_stream, unsigned int out_stream, - gr::msg_queue::sptr queue) : role_(role), - in_stream_(in_stream), - out_stream_(out_stream), - queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), + in_stream_(in_stream), + out_stream_(out_stream), + queue_(std::move(queue)) { std::string default_item_type = "byte"; item_type_ = configuration->property(role + ".item_type", default_item_type); diff --git a/src/algorithms/signal_source/adapters/flexiband_signal_source.h b/src/algorithms/signal_source/adapters/flexiband_signal_source.h index 7da5839a8..56c2aff09 100644 --- a/src/algorithms/signal_source/adapters/flexiband_signal_source.h +++ b/src/algorithms/signal_source/adapters/flexiband_signal_source.h @@ -34,13 +34,14 @@ #ifndef GNSS_SDR_FLEXIBAND_SIGNAL_SOURCE_H_ #define GNSS_SDR_FLEXIBAND_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include #include #include #include #include -#include +#include #include #include @@ -56,7 +57,7 @@ class FlexibandSignalSource : public GNSSBlockInterface public: FlexibandSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, gr::msg_queue::sptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~FlexibandSignalSource(); @@ -109,7 +110,7 @@ private: std::vector> float_to_complex_; std::vector null_sinks_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif // GNSS_SDR_FLEXIBAND_SIGNAL_SOURCE_H_ diff --git a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc index 704c5b01e..bfc470dbc 100644 --- a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc +++ b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.cc @@ -43,7 +43,7 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/signal_source.dat"; diff --git a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h index 1388a514d..44870c182 100644 --- a/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h +++ b/src/algorithms/signal_source/adapters/fmcomms2_signal_source.h @@ -41,7 +41,8 @@ #else #include #endif -#include +#include "concurrent_queue.h" +#include #include class ConfigurationInterface; @@ -51,7 +52,7 @@ class Fmcomms2SignalSource : public GNSSBlockInterface public: Fmcomms2SignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~Fmcomms2SignalSource(); @@ -122,7 +123,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_FMCOMMS2_SIGNAL_SOURCE_H_*/ diff --git a/src/algorithms/signal_source/adapters/gen_signal_source.cc b/src/algorithms/signal_source/adapters/gen_signal_source.cc index ef8441853..057650ac0 100644 --- a/src/algorithms/signal_source/adapters/gen_signal_source.cc +++ b/src/algorithms/signal_source/adapters/gen_signal_source.cc @@ -42,7 +42,7 @@ // Constructor GenSignalSource::GenSignalSource(GNSSBlockInterface *signal_generator, GNSSBlockInterface *filter, - std::string role, boost::shared_ptr queue) : signal_generator_(signal_generator), + std::string role, std::shared_ptr> queue) : signal_generator_(signal_generator), filter_(filter), role_(std::move(role)), queue_(std::move(queue)) diff --git a/src/algorithms/signal_source/adapters/gen_signal_source.h b/src/algorithms/signal_source/adapters/gen_signal_source.h index 49fb25293..d30f8935b 100644 --- a/src/algorithms/signal_source/adapters/gen_signal_source.h +++ b/src/algorithms/signal_source/adapters/gen_signal_source.h @@ -34,8 +34,9 @@ #define GNSS_SDR_GEN_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" -#include +#include #include /*! @@ -47,7 +48,7 @@ class GenSignalSource : public GNSSBlockInterface public: //! Constructor GenSignalSource(GNSSBlockInterface *signal_generator, GNSSBlockInterface *filter, - std::string role, boost::shared_ptr queue); + std::string role, std::shared_ptr> queue); //! Virtual destructor virtual ~GenSignalSource(); @@ -58,20 +59,17 @@ public: gr::basic_block_sptr get_right_block() override; inline std::string role() override { return role_; } - //! Returns "Signal Source" inline std::string implementation() override { return "Signal Source"; } inline size_t item_size() override { return 0; } - inline GNSSBlockInterface *signal_generator() const { return signal_generator_; } - private: GNSSBlockInterface *signal_generator_; GNSSBlockInterface *filter_; std::string role_; std::string implementation_; bool connected_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_GEN_SIGNAL_SOURCE_H*/ diff --git a/src/algorithms/signal_source/adapters/gn3s_signal_source.cc b/src/algorithms/signal_source/adapters/gn3s_signal_source.cc index 3f66591e9..4a699d09d 100644 --- a/src/algorithms/signal_source/adapters/gn3s_signal_source.cc +++ b/src/algorithms/signal_source/adapters/gn3s_signal_source.cc @@ -32,12 +32,11 @@ #include "configuration_interface.h" #include #include -#include #include Gn3sSignalSource::Gn3sSignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, gr::msg_queue::sptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + std::string role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) { std::string default_item_type = "short"; std::string default_dump_file = "./data/gn3s_source.dat"; diff --git a/src/algorithms/signal_source/adapters/gn3s_signal_source.h b/src/algorithms/signal_source/adapters/gn3s_signal_source.h index df799f019..e34b91afe 100644 --- a/src/algorithms/signal_source/adapters/gn3s_signal_source.h +++ b/src/algorithms/signal_source/adapters/gn3s_signal_source.h @@ -32,10 +32,11 @@ #ifndef GNSS_SDR_GN3S_SIGNAL_SOURCE_H_ #define GNSS_SDR_GN3S_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include #include -#include +#include #include @@ -49,7 +50,7 @@ class Gn3sSignalSource : public GNSSBlockInterface public: Gn3sSignalSource(ConfigurationInterface* configuration, std::string role, unsigned int in_stream, - unsigned int out_stream, gr::msg_queue::sptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~Gn3sSignalSource(); @@ -87,7 +88,7 @@ private: std::string dump_filename_; gr::block_sptr gn3s_source_; gr::blocks::file_sink::sptr file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_GN3S_SIGNAL_SOURCE_H_*/ diff --git a/src/algorithms/signal_source/adapters/labsat_signal_source.cc b/src/algorithms/signal_source/adapters/labsat_signal_source.cc index 2fb8ba3b7..e6366261a 100644 --- a/src/algorithms/signal_source/adapters/labsat_signal_source.cc +++ b/src/algorithms/signal_source/adapters/labsat_signal_source.cc @@ -37,7 +37,7 @@ LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration, - const std::string& role, unsigned int in_stream, unsigned int out_stream, gr::msg_queue::sptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) + const std::string& role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./labsat_output.dat"; diff --git a/src/algorithms/signal_source/adapters/labsat_signal_source.h b/src/algorithms/signal_source/adapters/labsat_signal_source.h index 1d9e333bf..9bf5d2057 100644 --- a/src/algorithms/signal_source/adapters/labsat_signal_source.h +++ b/src/algorithms/signal_source/adapters/labsat_signal_source.h @@ -32,10 +32,11 @@ #ifndef GNSS_SDR_LABSAT_SIGNAL_SOURCE_H_ #define GNSS_SDR_LABSAT_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include #include -#include +#include #include class ConfigurationInterface; @@ -48,7 +49,7 @@ class LabsatSignalSource : public GNSSBlockInterface public: LabsatSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, gr::msg_queue::sptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~LabsatSignalSource(); @@ -86,7 +87,7 @@ private: std::string dump_filename_; gr::block_sptr labsat23_source_; gr::blocks::file_sink::sptr file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_LABSAT_SIGNAL_SOURCE_H_*/ diff --git a/src/algorithms/signal_source/adapters/multichannel_file_signal_source.cc b/src/algorithms/signal_source/adapters/multichannel_file_signal_source.cc index 11efe4fd9..330b3e43c 100644 --- a/src/algorithms/signal_source/adapters/multichannel_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/multichannel_file_signal_source.cc @@ -43,7 +43,7 @@ MultichannelFileSignalSource::MultichannelFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "./example_capture.dat"; std::string default_item_type = "short"; diff --git a/src/algorithms/signal_source/adapters/multichannel_file_signal_source.h b/src/algorithms/signal_source/adapters/multichannel_file_signal_source.h index b248073dd..db3a9c57c 100644 --- a/src/algorithms/signal_source/adapters/multichannel_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/multichannel_file_signal_source.h @@ -35,12 +35,13 @@ #ifndef GNSS_SDR_MULTICHANNEL_FILE_SIGNAL_SOURCE_H_ #define GNSS_SDR_MULTICHANNEL_FILE_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include #include #include #include -#include +#include #include #include #include @@ -56,7 +57,7 @@ class MultichannelFileSignalSource : public GNSSBlockInterface public: MultichannelFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue); + std::shared_ptr> queue); virtual ~MultichannelFileSignalSource(); @@ -122,7 +123,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr sink_; std::vector throttle_vec_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; size_t item_size_; // Throttle control bool enable_throttle_control_; diff --git a/src/algorithms/signal_source/adapters/nsr_file_signal_source.cc b/src/algorithms/signal_source/adapters/nsr_file_signal_source.cc index aa31e75a6..dc00bcecb 100644 --- a/src/algorithms/signal_source/adapters/nsr_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/nsr_file_signal_source.cc @@ -44,7 +44,7 @@ NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "../data/my_capture.dat"; std::string default_item_type = "byte"; diff --git a/src/algorithms/signal_source/adapters/nsr_file_signal_source.h b/src/algorithms/signal_source/adapters/nsr_file_signal_source.h index a2b3ee547..2efaa09b3 100644 --- a/src/algorithms/signal_source/adapters/nsr_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/nsr_file_signal_source.h @@ -35,13 +35,14 @@ #ifndef GNSS_SDR_NSR_FILE_SIGNAL_SOURCE_H_ #define GNSS_SDR_NSR_FILE_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include "unpack_byte_2bit_samples.h" #include #include #include #include -#include +#include #include class ConfigurationInterface; @@ -55,7 +56,7 @@ class NsrFileSignalSource : public GNSSBlockInterface public: NsrFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue); + std::shared_ptr> queue); virtual ~NsrFileSignalSource(); inline std::string role() override @@ -122,7 +123,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr sink_; gr::blocks::throttle::sptr throttle_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; size_t item_size_; // Throttle control bool enable_throttle_control_; diff --git a/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc b/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc index 32ea28cf0..38f823248 100644 --- a/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc +++ b/src/algorithms/signal_source/adapters/osmosdr_signal_source.cc @@ -42,7 +42,7 @@ OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { // DUMP PARAMETERS std::string empty = ""; diff --git a/src/algorithms/signal_source/adapters/osmosdr_signal_source.h b/src/algorithms/signal_source/adapters/osmosdr_signal_source.h index 15f38b2a3..8a96f32d6 100644 --- a/src/algorithms/signal_source/adapters/osmosdr_signal_source.h +++ b/src/algorithms/signal_source/adapters/osmosdr_signal_source.h @@ -33,10 +33,11 @@ #ifndef GNSS_SDR_OSMOSDR_SIGNAL_SOURCE_H_ #define GNSS_SDR_OSMOSDR_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include #include -#include +#include #include #include #include @@ -54,7 +55,7 @@ class OsmosdrSignalSource : public GNSSBlockInterface public: OsmosdrSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~OsmosdrSignalSource(); @@ -110,7 +111,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_OSMOSDR_SIGNAL_SOURCE_H_*/ diff --git a/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc b/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc index fc41bd3a9..ba6af1fd6 100644 --- a/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc +++ b/src/algorithms/signal_source/adapters/plutosdr_signal_source.cc @@ -39,7 +39,7 @@ PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/signal_source.dat"; diff --git a/src/algorithms/signal_source/adapters/plutosdr_signal_source.h b/src/algorithms/signal_source/adapters/plutosdr_signal_source.h index e765ff7c4..bc105d171 100644 --- a/src/algorithms/signal_source/adapters/plutosdr_signal_source.h +++ b/src/algorithms/signal_source/adapters/plutosdr_signal_source.h @@ -40,7 +40,8 @@ #else #include #endif -#include +#include "concurrent_queue.h" +#include #include @@ -53,7 +54,7 @@ class PlutosdrSignalSource : public GNSSBlockInterface public: PlutosdrSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~PlutosdrSignalSource(); @@ -109,7 +110,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_PLUTOSDR_SIGNAL_SOURCE_H_*/ diff --git a/src/algorithms/signal_source/adapters/raw_array_signal_source.cc b/src/algorithms/signal_source/adapters/raw_array_signal_source.cc index f9aab0987..d54a7cb19 100644 --- a/src/algorithms/signal_source/adapters/raw_array_signal_source.cc +++ b/src/algorithms/signal_source/adapters/raw_array_signal_source.cc @@ -29,15 +29,16 @@ */ #include "raw_array_signal_source.h" +#include "concurrent_queue.h" #include "configuration_interface.h" #include #include -#include +#include #include RawArraySignalSource::RawArraySignalSource(ConfigurationInterface* configuration, - std::string role, unsigned int in_stream, unsigned int out_stream, gr::msg_queue::sptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) + std::string role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue) { std::string default_item_type = "gr_complex"; std::string default_dump_file = "./data/raw_array_source.dat"; diff --git a/src/algorithms/signal_source/adapters/raw_array_signal_source.h b/src/algorithms/signal_source/adapters/raw_array_signal_source.h index 321895cef..750efb3fe 100644 --- a/src/algorithms/signal_source/adapters/raw_array_signal_source.h +++ b/src/algorithms/signal_source/adapters/raw_array_signal_source.h @@ -32,10 +32,11 @@ #ifndef GNSS_SDR_RAW_ARRAY_SIGNAL_SOURCE_H_ #define GNSS_SDR_RAW_ARRAY_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include #include -#include +#include #include class ConfigurationInterface; @@ -48,7 +49,7 @@ class RawArraySignalSource : public GNSSBlockInterface public: RawArraySignalSource(ConfigurationInterface* configuration, std::string role, unsigned int in_stream, - unsigned int out_stream, gr::msg_queue::sptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~RawArraySignalSource(); @@ -87,7 +88,7 @@ private: std::string eth_device_; gr::block_sptr raw_array_source_; gr::blocks::file_sink::sptr file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_RAW_ARRAY_SIGNAL_SOURCE_H_*/ diff --git a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc index 2b9574708..478e6b1c7 100644 --- a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc +++ b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.cc @@ -45,7 +45,7 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), + std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) diff --git a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.h b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.h index 74f2b02d5..2fcb9d871 100644 --- a/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.h +++ b/src/algorithms/signal_source/adapters/rtl_tcp_signal_source.h @@ -32,13 +32,14 @@ #ifndef GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H #define GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include "rtl_tcp_signal_source_c.h" #include #include #include #include -#include +#include #include #include @@ -57,7 +58,7 @@ public: const std::string& role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue); + std::shared_ptr> queue); virtual ~RtlTcpSignalSource(); @@ -113,7 +114,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H */ diff --git a/src/algorithms/signal_source/adapters/spir_file_signal_source.cc b/src/algorithms/signal_source/adapters/spir_file_signal_source.cc index 52964abba..91287020c 100644 --- a/src/algorithms/signal_source/adapters/spir_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/spir_file_signal_source.cc @@ -43,7 +43,7 @@ SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "../data/my_capture.dat"; std::string default_item_type = "int"; diff --git a/src/algorithms/signal_source/adapters/spir_file_signal_source.h b/src/algorithms/signal_source/adapters/spir_file_signal_source.h index ad76ce23b..09aff8c09 100644 --- a/src/algorithms/signal_source/adapters/spir_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/spir_file_signal_source.h @@ -32,13 +32,14 @@ #ifndef GNSS_SDR_SPIR_FILE_SIGNAL_SOURCE_H_ #define GNSS_SDR_SPIR_FILE_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include "unpack_intspir_1bit_samples.h" #include #include #include #include -#include +#include #include #include @@ -53,7 +54,7 @@ class SpirFileSignalSource : public GNSSBlockInterface public: SpirFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue); + std::shared_ptr> queue); virtual ~SpirFileSignalSource(); inline std::string role() override @@ -120,7 +121,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr sink_; gr::blocks::throttle::sptr throttle_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; size_t item_size_; // Throttle control bool enable_throttle_control_; diff --git a/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc b/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc index 7e1c3f1ce..1ba2d5bf0 100644 --- a/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.cc @@ -40,7 +40,7 @@ SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, - const std::string& role, uint32_t in_streams, uint32_t out_streams, gr::msg_queue::sptr queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) + const std::string& role, uint32_t in_streams, uint32_t out_streams, std::shared_ptr> queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) { std::string default_filename = "../data/my_capture.dat"; std::string default_dump_filename = "../data/my_capture_dump.dat"; diff --git a/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h b/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h index 0757c24af..61edd479c 100644 --- a/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/spir_gss6450_file_signal_source.h @@ -32,6 +32,7 @@ #ifndef GNSS_SDR_SPIR_GSS6450_FILE_SIGNAL_SOURCE_H_ #define GNSS_SDR_SPIR_GSS6450_FILE_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include "gnss_sdr_valve.h" #include "unpack_spir_gss6450_samples.h" @@ -42,7 +43,7 @@ #include #include #include -#include +#include #include #include #include @@ -58,7 +59,7 @@ class SpirGSS6450FileSignalSource : public GNSSBlockInterface { public: SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, const std::string& role, - uint32_t in_streams, uint32_t out_streams, gr::msg_queue::sptr queue); + uint32_t in_streams, uint32_t out_streams, std::shared_ptr> queue); virtual ~SpirGSS6450FileSignalSource(); inline std::string role() override @@ -131,7 +132,7 @@ private: std::vector> valve_vec_; std::vector sink_vec_; std::vector throttle_vec_; - gr::msg_queue::sptr queue_; + std::shared_ptr> queue_; size_t item_size_; }; diff --git a/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc b/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc index 604f9c536..9e0b802d4 100644 --- a/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.cc @@ -45,7 +45,7 @@ TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* con const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), + std::shared_ptr> queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) diff --git a/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h b/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h index a66a87965..dea315cec 100644 --- a/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/two_bit_cpx_file_signal_source.h @@ -34,6 +34,7 @@ #ifndef GNSS_SDR_TWO_BIT_CPX_FILE_SIGNAL_SOURCE_H_ #define GNSS_SDR_TWO_BIT_CPX_FILE_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include "unpack_byte_2bit_cpx_samples.h" #include @@ -41,7 +42,7 @@ #include #include #include -#include +#include #include #include @@ -59,7 +60,7 @@ public: const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue); + std::shared_ptr> queue); virtual ~TwoBitCpxFileSignalSource(); inline std::string role() override @@ -127,7 +128,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr sink_; gr::blocks::throttle::sptr throttle_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; size_t item_size_; // Throttle control bool enable_throttle_control_; diff --git a/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc b/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc index 684cb5b86..4b0c00345 100644 --- a/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc +++ b/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.cc @@ -47,7 +47,7 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue) : role_(role), + std::shared_ptr> queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(std::move(queue)) diff --git a/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h b/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h index 1e98d737b..ea2bb2d5a 100644 --- a/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h +++ b/src/algorithms/signal_source/adapters/two_bit_packed_file_signal_source.h @@ -35,6 +35,7 @@ #ifndef GNSS_SDR_TWO_BIT_PACKED_FILE_SIGNAL_SOURCE_H_ #define GNSS_SDR_TWO_BIT_PACKED_FILE_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include "unpack_2bit_samples.h" #include @@ -42,7 +43,7 @@ #include #include #include -#include +#include #include #include @@ -58,7 +59,7 @@ class TwoBitPackedFileSignalSource : public GNSSBlockInterface public: TwoBitPackedFileSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_streams, unsigned int out_streams, - boost::shared_ptr queue); + std::shared_ptr> queue); virtual ~TwoBitPackedFileSignalSource(); inline std::string role() override @@ -146,7 +147,7 @@ private: boost::shared_ptr valve_; gr::blocks::file_sink::sptr sink_; gr::blocks::throttle::sptr throttle_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; size_t item_size_; bool big_endian_items_; bool big_endian_bytes_; diff --git a/src/algorithms/signal_source/adapters/uhd_signal_source.cc b/src/algorithms/signal_source/adapters/uhd_signal_source.cc index ee58eb551..646d2ad00 100644 --- a/src/algorithms/signal_source/adapters/uhd_signal_source.cc +++ b/src/algorithms/signal_source/adapters/uhd_signal_source.cc @@ -42,7 +42,7 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, unsigned int out_stream, - boost::shared_ptr queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) + std::shared_ptr> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue)) { // DUMP PARAMETERS std::string empty = ""; diff --git a/src/algorithms/signal_source/adapters/uhd_signal_source.h b/src/algorithms/signal_source/adapters/uhd_signal_source.h index 50d233c2e..232f6934f 100644 --- a/src/algorithms/signal_source/adapters/uhd_signal_source.h +++ b/src/algorithms/signal_source/adapters/uhd_signal_source.h @@ -31,12 +31,13 @@ #ifndef GNSS_SDR_UHD_SIGNAL_SOURCE_H_ #define GNSS_SDR_UHD_SIGNAL_SOURCE_H_ +#include "concurrent_queue.h" #include "gnss_block_interface.h" #include #include #include -#include #include +#include #include #include #include @@ -52,7 +53,7 @@ class UhdSignalSource : public GNSSBlockInterface public: UhdSignalSource(ConfigurationInterface* configuration, const std::string& role, unsigned int in_stream, - unsigned int out_stream, boost::shared_ptr queue); + unsigned int out_stream, std::shared_ptr> queue); virtual ~UhdSignalSource(); @@ -107,7 +108,7 @@ private: std::vector> valve_; std::vector file_sink_; - boost::shared_ptr queue_; + std::shared_ptr> queue_; }; #endif /*GNSS_SDR_UHD_SIGNAL_SOURCE_H_*/ diff --git a/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc b/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc index 06972a25a..366eb558f 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc +++ b/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.cc @@ -30,7 +30,8 @@ #include "labsat23_source.h" -#include "control_message_factory.h" +#include "command_event.h" +#include #include #include #include @@ -39,7 +40,7 @@ #include -labsat23_source_sptr labsat23_make_source_sptr(const char *signal_file_basename, int channel_selector, gr::msg_queue::sptr queue) +labsat23_source_sptr labsat23_make_source_sptr(const char *signal_file_basename, int channel_selector, std::shared_ptr> queue) { return labsat23_source_sptr(new labsat23_source(signal_file_basename, channel_selector, std::move(queue))); } @@ -47,10 +48,10 @@ labsat23_source_sptr labsat23_make_source_sptr(const char *signal_file_basename, labsat23_source::labsat23_source(const char *signal_file_basename, int channel_selector, - gr::msg_queue::sptr queue) : gr::block("labsat23_source", - gr::io_signature::make(0, 0, 0), - gr::io_signature::make(1, 1, sizeof(gr_complex))), - d_queue(std::move(queue)) + std::shared_ptr> queue) : gr::block("labsat23_source", + gr::io_signature::make(0, 0, 0), + gr::io_signature::make(1, 1, sizeof(gr_complex))), + d_queue(std::move(queue)) { if (channel_selector < 1 or channel_selector > 2) { @@ -467,9 +468,8 @@ int labsat23_source::general_work(int noutput_items, { std::cout << "End of file reached, LabSat source stop" << std::endl; } - auto *cmf = new ControlMessageFactory(); - d_queue->handle(cmf->GetQueueMessage(200, 0)); - delete cmf; + + d_queue->push(pmt::make_any(command_event_make(200, 0))); return -1; } } @@ -528,9 +528,7 @@ int labsat23_source::general_work(int noutput_items, { std::cout << "End of file reached, LabSat source stop" << std::endl; } - auto *cmf = new ControlMessageFactory(); - d_queue->handle(cmf->GetQueueMessage(200, 0)); - delete cmf; + d_queue->push(pmt::make_any(command_event_make(200, 0))); return -1; } } diff --git a/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.h b/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.h index a09c0f3a8..49c74bc61 100644 --- a/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.h +++ b/src/algorithms/signal_source/gnuradio_blocks/labsat23_source.h @@ -31,8 +31,9 @@ #ifndef GNSS_SDR_LABSAT23_SOURCE_H #define GNSS_SDR_LABSAT23_SOURCE_H +#include "concurrent_queue.h" #include -#include // for msg_queue, msg_queue::sptr +#include #include #include #include @@ -45,7 +46,7 @@ using labsat23_source_sptr = boost::shared_ptr; labsat23_source_sptr labsat23_make_source_sptr( const char *signal_file_basename, int channel_selector, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); /*! * \brief This class implements conversion between Labsat2 and 3 format byte packet samples to gr_complex @@ -64,11 +65,11 @@ private: friend labsat23_source_sptr labsat23_make_source_sptr( const char *signal_file_basename, int channel_selector, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); labsat23_source(const char *signal_file_basename, int channel_selector, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::string generate_filename(); void decode_samples_one_channel(int16_t input_short, gr_complex *out, int type); @@ -82,7 +83,7 @@ private: std::ifstream *binary_input_file; uint8_t d_ref_clock; uint8_t d_bits_per_sample; - gr::msg_queue::sptr d_queue; + std::shared_ptr> d_queue; }; #endif diff --git a/src/algorithms/signal_source/libs/CMakeLists.txt b/src/algorithms/signal_source/libs/CMakeLists.txt index f6015ec59..1045967b4 100644 --- a/src/algorithms/signal_source/libs/CMakeLists.txt +++ b/src/algorithms/signal_source/libs/CMakeLists.txt @@ -71,10 +71,10 @@ target_link_libraries(signal_source_libs PUBLIC Boost::boost Gnuradio::runtime + core_receiver PRIVATE Gflags::gflags Glog::glog - core_receiver ) if(ENABLE_PLUTOSDR OR ENABLE_FMCOMMS2) diff --git a/src/algorithms/signal_source/libs/gnss_sdr_valve.cc b/src/algorithms/signal_source/libs/gnss_sdr_valve.cc index 615cb65b7..7a5fc18a9 100644 --- a/src/algorithms/signal_source/libs/gnss_sdr_valve.cc +++ b/src/algorithms/signal_source/libs/gnss_sdr_valve.cc @@ -32,17 +32,17 @@ */ #include "gnss_sdr_valve.h" -#include "control_message_factory.h" // for ControlMessageFactory -#include // for LOG -#include // for io_signature -#include // for min -#include // for memcpy -#include // for usleep +#include "command_event.h" +#include // for LOG +#include // for io_signature +#include // for min +#include // for memcpy +#include // for usleep #include Gnss_Sdr_Valve::Gnss_Sdr_Valve(size_t sizeof_stream_item, uint64_t nitems, - gr::msg_queue::sptr queue, + std::shared_ptr> queue, bool stop_flowgraph) : gr::sync_block("valve", gr::io_signature::make(1, 20, sizeof_stream_item), gr::io_signature::make(1, 20, sizeof_stream_item)), @@ -55,14 +55,14 @@ Gnss_Sdr_Valve::Gnss_Sdr_Valve(size_t sizeof_stream_item, } -boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, gr::msg_queue::sptr queue, bool stop_flowgraph) +boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, std::shared_ptr> queue, bool stop_flowgraph) { boost::shared_ptr valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, std::move(queue), stop_flowgraph)); return valve_; } -boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, gr::msg_queue::sptr queue) +boost::shared_ptr gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, std::shared_ptr> queue) { boost::shared_ptr valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, std::move(queue), true)); return valve_; @@ -83,10 +83,8 @@ int Gnss_Sdr_Valve::work(int noutput_items, { if (d_ncopied_items >= d_nitems) { - auto *cmf = new ControlMessageFactory(); - d_queue->handle(cmf->GetQueueMessage(200, 0)); LOG(INFO) << "Stopping receiver, " << d_ncopied_items << " samples processed"; - delete cmf; + d_queue->push(pmt::make_any(command_event_make(200, 0))); if (d_stop_flowgraph) { return -1; // Done! diff --git a/src/algorithms/signal_source/libs/gnss_sdr_valve.h b/src/algorithms/signal_source/libs/gnss_sdr_valve.h index b56807c2b..6c28f28f5 100644 --- a/src/algorithms/signal_source/libs/gnss_sdr_valve.h +++ b/src/algorithms/signal_source/libs/gnss_sdr_valve.h @@ -34,11 +34,12 @@ #ifndef GNSS_SDR_GNSS_SDR_VALVE_H_ #define GNSS_SDR_GNSS_SDR_VALVE_H_ +#include "concurrent_queue.h" #include -#include // for msg_queue, msg_queue::sptr #include // for sync_block #include // for gr_vector_const_void_star -#include // for size_t +#include +#include // for size_t #include class Gnss_Sdr_Valve; @@ -46,12 +47,12 @@ class Gnss_Sdr_Valve; boost::shared_ptr gnss_sdr_make_valve( size_t sizeof_stream_item, uint64_t nitems, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); boost::shared_ptr gnss_sdr_make_valve( size_t sizeof_stream_item, uint64_t nitems, - gr::msg_queue::sptr queue, + std::shared_ptr> queue, bool stop_flowgraph); /*! @@ -71,21 +72,21 @@ private: friend boost::shared_ptr gnss_sdr_make_valve( size_t sizeof_stream_item, uint64_t nitems, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); friend boost::shared_ptr gnss_sdr_make_valve( size_t sizeof_stream_item, uint64_t nitems, - gr::msg_queue::sptr queue, + std::shared_ptr> queue, bool stop_flowgraph); Gnss_Sdr_Valve(size_t sizeof_stream_item, uint64_t nitems, - gr::msg_queue::sptr queue, bool stop_flowgraph); + std::shared_ptr> queue, bool stop_flowgraph); uint64_t d_nitems; uint64_t d_ncopied_items; - gr::msg_queue::sptr d_queue; + std::shared_ptr> d_queue; bool d_stop_flowgraph; bool d_open_valve; }; diff --git a/src/core/receiver/CMakeLists.txt b/src/core/receiver/CMakeLists.txt index 83d684906..7f80fddbd 100644 --- a/src/core/receiver/CMakeLists.txt +++ b/src/core/receiver/CMakeLists.txt @@ -19,17 +19,17 @@ set(GNSS_RECEIVER_SOURCES control_thread.cc - control_message_factory.cc file_configuration.cc gnss_block_factory.cc gnss_flowgraph.cc in_memory_configuration.cc tcp_cmd_interface.cc + channel_event.cc + command_event.cc ) set(GNSS_RECEIVER_HEADERS control_thread.h - control_message_factory.h file_configuration.h gnss_block_factory.h gnss_flowgraph.h @@ -38,6 +38,8 @@ set(GNSS_RECEIVER_HEADERS concurrent_map.h concurrent_queue.h control_message.h + channel_event.h + command_event.h ) list(SORT GNSS_RECEIVER_HEADERS) diff --git a/src/core/receiver/channel_event.cc b/src/core/receiver/channel_event.cc new file mode 100644 index 000000000..7c6862d76 --- /dev/null +++ b/src/core/receiver/channel_event.cc @@ -0,0 +1,42 @@ +/*! + * \file channel_event.cc + * \brief Class that defines a channel event + * \author Javier Arribas, 2019. jarribas(at)cttc.es + * + * ------------------------------------------------------------------------- + * + * Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) + * + * GNSS-SDR is a software defined Global Navigation + * Satellite Systems receiver + * + * This file is part of GNSS-SDR. + * + * GNSS-SDR is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GNSS-SDR is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNSS-SDR. If not, see . + * + * ------------------------------------------------------------------------- + */ + +#include "channel_event.h" + +channel_event_sptr channel_event_make(int channel_id, int event_type) +{ + return channel_event_sptr(new channel_event(channel_id, event_type)); +} + +channel_event::channel_event(int channel_id_, int event_type_) +{ + channel_id = channel_id_; + event_type = event_type_; +} diff --git a/src/core/receiver/channel_event.h b/src/core/receiver/channel_event.h new file mode 100644 index 000000000..51c1a3a8f --- /dev/null +++ b/src/core/receiver/channel_event.h @@ -0,0 +1,53 @@ +/*! + * \file channel_event.h + * \brief Class that defines a channel event + * \author Javier Arribas, 2019. jarribas(at)cttc.es + * + * ------------------------------------------------------------------------- + * + * Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) + * + * GNSS-SDR is a software defined Global Navigation + * Satellite Systems receiver + * + * This file is part of GNSS-SDR. + * + * GNSS-SDR is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GNSS-SDR is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNSS-SDR. If not, see . + * + * ------------------------------------------------------------------------- + */ + +#ifndef GNSS_SDR_CHANNEL_EVENT_H +#define GNSS_SDR_CHANNEL_EVENT_H + +#include + +class channel_event; + +using channel_event_sptr = std::shared_ptr; + +channel_event_sptr channel_event_make(int channel_id, int event_type); + +class channel_event +{ +public: + int channel_id; + int event_type; +private: + friend channel_event_sptr channel_event_make(int channel_id, int event_type); + channel_event(int channel_id_, int event_type_); + +}; + +#endif diff --git a/src/core/receiver/command_event.cc b/src/core/receiver/command_event.cc new file mode 100644 index 000000000..771061255 --- /dev/null +++ b/src/core/receiver/command_event.cc @@ -0,0 +1,42 @@ +/*! + * \file command_event.cc + * \brief Class that defines a receiver command event + * \author Javier Arribas, 2019. jarribas(at)cttc.es + * + * ------------------------------------------------------------------------- + * + * Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) + * + * GNSS-SDR is a software defined Global Navigation + * Satellite Systems receiver + * + * This file is part of GNSS-SDR. + * + * GNSS-SDR is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GNSS-SDR is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNSS-SDR. If not, see . + * + * ------------------------------------------------------------------------- + */ + +#include "command_event.h" + +command_event_sptr command_event_make(int command_id, int event_type) +{ + return command_event_sptr(new command_event(command_id, event_type)); +} + +command_event::command_event(int command_id_, int event_type_) +{ + command_id = command_id_; + event_type = event_type_; +} diff --git a/src/core/receiver/command_event.h b/src/core/receiver/command_event.h new file mode 100644 index 000000000..094281578 --- /dev/null +++ b/src/core/receiver/command_event.h @@ -0,0 +1,53 @@ +/*! + * \file command_event.h + * \brief Class that defines a receiver command event + * \author Javier Arribas, 2019. jarribas(at)cttc.es + * + * ------------------------------------------------------------------------- + * + * Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors) + * + * GNSS-SDR is a software defined Global Navigation + * Satellite Systems receiver + * + * This file is part of GNSS-SDR. + * + * GNSS-SDR is free software: you can redistribute it and/or modify + * it under the terms of the GNU General Public License as published by + * the Free Software Foundation, either version 3 of the License, or + * (at your option) any later version. + * + * GNSS-SDR is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with GNSS-SDR. If not, see . + * + * ------------------------------------------------------------------------- + */ + +#ifndef GNSS_SDR_command_EVENT_H +#define GNSS_SDR_command_EVENT_H + +#include + +class command_event; + +using command_event_sptr = std::shared_ptr; + +command_event_sptr command_event_make(int command_id, int event_type); + +class command_event +{ +public: + int command_id; + int event_type; + +private: + friend command_event_sptr command_event_make(int command_id, int event_type); + command_event(int command_id_, int event_type_); +}; + +#endif diff --git a/src/core/receiver/control_message_factory.cc b/src/core/receiver/control_message_factory.cc deleted file mode 100644 index 566f884a4..000000000 --- a/src/core/receiver/control_message_factory.cc +++ /dev/null @@ -1,72 +0,0 @@ -/*! - * \file control_message_factory.cc - * \brief Implementation of a Control Message Factory - * \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com - * - * ------------------------------------------------------------------------- - * - * Copyright (C) 2010-2018 (see AUTHORS file for a list of contributors) - * - * GNSS-SDR is a software defined Global Navigation - * Satellite Systems receiver - * - * This file is part of GNSS-SDR. - * - * GNSS-SDR is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * GNSS-SDR is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNSS-SDR. If not, see . - * - * ------------------------------------------------------------------------- - */ - -#include "control_message_factory.h" -#include -#include // for memcpy -#include // for operator<<, basic_ostream - -// Constructor -ControlMessageFactory::ControlMessageFactory() = default; - - -// Destructor -ControlMessageFactory::~ControlMessageFactory() = default; - - -gr::message::sptr ControlMessageFactory::GetQueueMessage(unsigned int who, unsigned int what) -{ - std::shared_ptr control_message = std::make_shared(); - control_message->who = who; - control_message->what = what; - gr::message::sptr queue_message = gr::message::make(0, 0, 0, sizeof(ControlMessage)); - memcpy(queue_message->msg(), control_message.get(), sizeof(ControlMessage)); - return queue_message; -} - - -std::shared_ptr>> ControlMessageFactory::GetControlMessages(const gr::message::sptr queue_message) // NOLINT(performance-unnecessary-value-param) -{ - std::shared_ptr>> control_messages = std::make_shared>>(); - unsigned int control_messages_count = queue_message->length() / sizeof(ControlMessage); - if (queue_message->length() % sizeof(ControlMessage) != 0) - { - LOG(WARNING) << "Queue message has size " << queue_message->length() << ", which is not" - << " multiple of control message size " << sizeof(ControlMessage); - LOG(WARNING) << "Ignoring this queue message to prevent unexpected results."; - return control_messages; - } - for (unsigned int i = 0; i < control_messages_count; i++) - { - control_messages->push_back(std::make_shared()); - memcpy(control_messages->at(i).get(), queue_message->msg() + (i * sizeof(ControlMessage)), sizeof(ControlMessage)); - } - return control_messages; -} diff --git a/src/core/receiver/control_message_factory.h b/src/core/receiver/control_message_factory.h deleted file mode 100644 index f8a4666f6..000000000 --- a/src/core/receiver/control_message_factory.h +++ /dev/null @@ -1,64 +0,0 @@ -/*! - * \file control_message_factory.h - * \brief Interface of a factory for control messages. - * \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com - * - * ------------------------------------------------------------------------- - * - * Copyright (C) 2010-2018 (see AUTHORS file for a list of contributors) - * - * GNSS-SDR is a software defined Global Navigation - * Satellite Systems receiver - * - * This file is part of GNSS-SDR. - * - * GNSS-SDR is free software: you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation, either version 3 of the License, or - * (at your option) any later version. - * - * GNSS-SDR is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License - * along with GNSS-SDR. If not, see . - * - * ------------------------------------------------------------------------- - */ - -#ifndef GNSS_SDR_CONTROL_MESSAGE_FACTORY_H_ -#define GNSS_SDR_CONTROL_MESSAGE_FACTORY_H_ - -#include -#include -#include - -//! Message described by who sent it and what it says -typedef struct control_message -{ - unsigned int who; - unsigned int what; -} ControlMessage; - - -/*! - * \brief This class implements a factory for Control Messages. - * - * It encapsulates the complexity behind getting Queue Messages and associated Control Messages - */ -class ControlMessageFactory -{ -public: - //! Constructor - ControlMessageFactory(); - - //! Virtual destructor - virtual ~ControlMessageFactory(); - - gr::message::sptr GetQueueMessage(unsigned int who, unsigned int what); - std::shared_ptr>> GetControlMessages(const gr::message::sptr queue_message); // NOLINT(performance-unnecessary-value-param) -}; - -#endif /*GNSS_SDR_CONTROL_MESSAGE_FACTORY_H_*/ diff --git a/src/core/receiver/control_thread.cc b/src/core/receiver/control_thread.cc index 384d6f041..154f9ec7b 100644 --- a/src/core/receiver/control_thread.cc +++ b/src/core/receiver/control_thread.cc @@ -34,9 +34,7 @@ #include "control_thread.h" #include "concurrent_map.h" -#include "concurrent_queue.h" #include "configuration_interface.h" -#include "control_message_factory.h" #include "file_configuration.h" #include "galileo_almanac.h" #include "galileo_ephemeris.h" @@ -110,7 +108,7 @@ ControlThread::ControlThread(std::shared_ptr configurati void ControlThread::init() { // Instantiates a control queue, a GNSS flowgraph, and a control message factory - control_queue_ = gr::msg_queue::make(0); + control_queue_ = std::make_shared>(); cmd_interface_.set_msg_queue(control_queue_); //set also the queue pointer for the telecommand thread try { @@ -120,7 +118,6 @@ void ControlThread::init() { std::cout << "Caught bad lexical cast with error " << e.what() << std::endl; } - control_message_factory_ = std::make_shared(); stop_ = false; processed_control_messages_ = 0; applied_actions_ = 0; @@ -287,12 +284,13 @@ int ControlThread::run() // Main loop to read and process the control messages while (flowgraph_->running() && !stop_) { - //TODO re-enable the blocking read messages functions and fork the process - read_control_messages(); - if (control_messages_ != nullptr) - { - process_control_messages(); - } + //TODO call here the new sat dispatcher and receiver controller + // read_control_messages(); + // if (control_messages_ != nullptr) + // { + // process_control_messages(); + // } + std::cout << "tick\n"; } std::cout << "Stopping GNSS-SDR, please wait!" << std::endl; flowgraph_->stop(); @@ -325,7 +323,7 @@ int ControlThread::run() } -void ControlThread::set_control_queue(const gr::msg_queue::sptr control_queue) // NOLINT(performance-unnecessary-value-param) +void ControlThread::set_control_queue(const std::shared_ptr> control_queue) // NOLINT(performance-unnecessary-value-param) { if (flowgraph_->running()) { @@ -794,42 +792,42 @@ void ControlThread::assist_GNSS() void ControlThread::read_control_messages() { DLOG(INFO) << "Reading control messages from queue"; - gr::message::sptr queue_message = control_queue_->delete_head(); - if (queue_message != nullptr) - { - control_messages_ = control_message_factory_->GetControlMessages(queue_message); - } - else - { - control_messages_->clear(); - } + // gr::message::sptr queue_message = control_queue_->delete_head(); + // if (queue_message != nullptr) + // { + // control_messages_ = control_message_factory_->GetControlMessages(queue_message); + // } + // else + // { + // control_messages_->clear(); + // } } // Apply the corresponding control actions void ControlThread::process_control_messages() { - for (auto &i : *control_messages_) - { - if (stop_) - { - break; - } - if (i->who == 200) - { - apply_action(i->what); - } - else - { - if (i->who == 300) // some TC commands require also actions from control_thread - { - apply_action(i->what); - } - flowgraph_->apply_action(i->who, i->what); - } - processed_control_messages_++; - } - control_messages_->clear(); + // for (auto &i : *control_messages_) + // { + // if (stop_) + // { + // break; + // } + // if (i->who == 200) + // { + // apply_action(i->what); + // } + // else + // { + // if (i->who == 300) // some TC commands require also actions from control_thread + // { + // apply_action(i->what); + // } + // flowgraph_->apply_action(i->who, i->what); + // } + // processed_control_messages_++; + // } + // control_messages_->clear(); DLOG(INFO) << "Processed all control messages"; } @@ -1092,11 +1090,12 @@ void ControlThread::sysv_queue_listener() if ((std::abs(received_message - (-200.0)) < 10 * std::numeric_limits::epsilon())) { std::cout << "Quit order received, stopping GNSS-SDR !!" << std::endl; - std::unique_ptr cmf(new ControlMessageFactory()); - if (control_queue_ != gr::msg_queue::sptr()) - { - control_queue_->handle(cmf->GetQueueMessage(200, 0)); - } + //todo: remplace old shutdown mechanism + // std::unique_ptr cmf(new ControlMessageFactory()); + // if (control_queue_ != std::shared_ptr>()) + // { + // control_queue_->handle(cmf->GetQueueMessage(200, 0)); + // } read_queue = false; } } @@ -1114,11 +1113,12 @@ void ControlThread::keyboard_listener() if (c == 'q') { std::cout << "Quit keystroke order received, stopping GNSS-SDR !!" << std::endl; - std::unique_ptr cmf(new ControlMessageFactory()); - if (control_queue_ != gr::msg_queue::sptr()) - { - control_queue_->handle(cmf->GetQueueMessage(200, 0)); - } + //todo: remplace old shutdown mechanism + // std::unique_ptr cmf(new ControlMessageFactory()); + // if (control_queue_ != std::shared_ptr>()) + // { + // control_queue_->handle(cmf->GetQueueMessage(200, 0)); + // } read_keys = false; } std::this_thread::sleep_for(std::chrono::milliseconds(100)); diff --git a/src/core/receiver/control_thread.h b/src/core/receiver/control_thread.h index 7d58226e9..a35283ac1 100644 --- a/src/core/receiver/control_thread.h +++ b/src/core/receiver/control_thread.h @@ -35,20 +35,20 @@ #ifndef GNSS_SDR_CONTROL_THREAD_H_ #define GNSS_SDR_CONTROL_THREAD_H_ -#include "agnss_ref_location.h" // for Agnss_Ref_Location -#include "agnss_ref_time.h" // for Agnss_Ref_Time -#include "control_message_factory.h" // for ControlMessage -#include "gnss_sdr_supl_client.h" // for Gnss_Sdr_Supl_Client -#include "tcp_cmd_interface.h" // for TcpCmdInterface -#include // for arma::vec -#include // for boost::thread -#include // for msg_queue, msg_queue::sptr -#include // for time_t -#include // for shared_ptr -#include // for string -#include // for std::thread -#include // for pair -#include // for vector +#include "agnss_ref_location.h" // for Agnss_Ref_Location +#include "agnss_ref_time.h" // for Agnss_Ref_Time +#include "concurrent_queue.h" +#include "gnss_sdr_supl_client.h" // for Gnss_Sdr_Supl_Client +#include "tcp_cmd_interface.h" // for TcpCmdInterface +#include // for arma::vec +#include // for boost::thread +#include +#include // for time_t +#include // for shared_ptr +#include // for string +#include // for std::thread +#include // for pair +#include // for vector class ConfigurationInterface; class GNSSFlowgraph; @@ -97,7 +97,7 @@ public: * * \param[in] boost::shared_ptr control_queue */ - void set_control_queue(const gr::msg_queue::sptr control_queue); // NOLINT(performance-unnecessary-value-param) + void set_control_queue(const std::shared_ptr> control_queue); // NOLINT(performance-unnecessary-value-param) unsigned int processed_control_messages() { @@ -163,9 +163,7 @@ private: void apply_action(unsigned int what); std::shared_ptr flowgraph_; std::shared_ptr configuration_; - gr::msg_queue::sptr control_queue_; - std::shared_ptr control_message_factory_; - std::shared_ptr>> control_messages_; + std::shared_ptr> control_queue_; bool stop_; bool restart_; bool delete_configuration_; diff --git a/src/core/receiver/gnss_block_factory.cc b/src/core/receiver/gnss_block_factory.cc index 7976d99da..f7574a986 100644 --- a/src/core/receiver/gnss_block_factory.cc +++ b/src/core/receiver/gnss_block_factory.cc @@ -182,7 +182,7 @@ GNSSBlockFactory::~GNSSBlockFactory() = default; std::unique_ptr GNSSBlockFactory::GetSignalSource( - const std::shared_ptr& configuration, const gr::msg_queue::sptr queue, int ID) // NOLINT(performance-unnecessary-value-param) + const std::shared_ptr& configuration, const std::shared_ptr> queue, int ID) // NOLINT(performance-unnecessary-value-param) { std::string default_implementation = "File_Signal_Source"; std::string role = "SignalSource"; //backwards compatibility for old conf files @@ -321,7 +321,7 @@ std::unique_ptr GNSSBlockFactory::GetPVT(const std::shared_p std::unique_ptr GNSSBlockFactory::GetChannel_1C( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { //"appendix" is added to the "role" with the aim of Acquisition, Tracking and Telemetry Decoder adapters //can find their specific configurations when they read the config @@ -389,7 +389,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1C( std::unique_ptr GNSSBlockFactory::GetChannel_2S( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { LOG(INFO) << "Instantiating Channel " << channel << " with Acquisition Implementation: " << acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm; @@ -453,7 +453,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2S( std::unique_ptr GNSSBlockFactory::GetChannel_1B( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { std::stringstream stream; stream << channel; @@ -520,7 +520,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1B( std::unique_ptr GNSSBlockFactory::GetChannel_5X( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { std::stringstream stream; stream << channel; @@ -587,7 +587,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_5X( std::unique_ptr GNSSBlockFactory::GetChannel_1G( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { std::stringstream stream; stream << channel; @@ -655,7 +655,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_1G( std::unique_ptr GNSSBlockFactory::GetChannel_2G( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { std::stringstream stream; stream << channel; @@ -723,7 +723,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_2G( std::unique_ptr GNSSBlockFactory::GetChannel_L5( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { std::stringstream stream; stream << channel; @@ -790,7 +790,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_L5( std::unique_ptr GNSSBlockFactory::GetChannel_B1( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { std::stringstream stream; stream << channel; @@ -857,7 +857,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_B1( std::unique_ptr GNSSBlockFactory::GetChannel_B3( const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue) + std::shared_ptr> queue) { std::stringstream stream; stream << channel; @@ -921,7 +921,7 @@ std::unique_ptr GNSSBlockFactory::GetChannel_B3( std::unique_ptr>> GNSSBlockFactory::GetChannels( - const std::shared_ptr& configuration, const gr::msg_queue::sptr queue) // NOLINT(performance-unnecessary-value-param) + const std::shared_ptr& configuration, const std::shared_ptr> queue) // NOLINT(performance-unnecessary-value-param) { std::string default_implementation = "Pass_Through"; std::string tracking_implementation; @@ -1241,7 +1241,7 @@ std::unique_ptr GNSSBlockFactory::GetBlock( const std::shared_ptr& configuration, const std::string& role, const std::string& implementation, unsigned int in_streams, - unsigned int out_streams, const gr::msg_queue::sptr queue) // NOLINT(performance-unnecessary-value-param) + unsigned int out_streams, const std::shared_ptr> queue) // NOLINT(performance-unnecessary-value-param) { std::unique_ptr block; diff --git a/src/core/receiver/gnss_block_factory.h b/src/core/receiver/gnss_block_factory.h index 3076c879d..af9889c89 100644 --- a/src/core/receiver/gnss_block_factory.h +++ b/src/core/receiver/gnss_block_factory.h @@ -37,10 +37,11 @@ #ifndef GNSS_SDR_BLOCK_FACTORY_H_ #define GNSS_SDR_BLOCK_FACTORY_H_ -#include // for msg_queue::sptr -#include // for unique_ptr, shared_ptr -#include // for string -#include // for vector +#include "concurrent_queue.h" +#include +#include // for unique_ptr, shared_ptr +#include // for string +#include // for vector class ConfigurationInterface; @@ -59,12 +60,12 @@ public: virtual ~GNSSBlockFactory(); std::unique_ptr GetSignalSource(const std::shared_ptr& configuration, - const gr::msg_queue::sptr queue, int ID = -1); // NOLINT(performance-unnecessary-value-param) + const std::shared_ptr> queue, int ID = -1); // NOLINT(performance-unnecessary-value-param) std::unique_ptr GetSignalConditioner(const std::shared_ptr& configuration, int ID = -1); std::unique_ptr>> GetChannels(const std::shared_ptr& configuration, - const gr::msg_queue::sptr queue); // NOLINT(performance-unnecessary-value-param) + const std::shared_ptr> queue); // NOLINT(performance-unnecessary-value-param) std::unique_ptr GetObservables(const std::shared_ptr& configuration); @@ -76,44 +77,44 @@ public: std::unique_ptr GetBlock(const std::shared_ptr& configuration, const std::string& role, const std::string& implementation, unsigned int in_streams, unsigned int out_streams, - const gr::msg_queue::sptr queue = nullptr); // NOLINT(performance-unnecessary-value-param) + const std::shared_ptr> queue = nullptr); // NOLINT(performance-unnecessary-value-param) private: std::unique_ptr GetChannel_1C(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::unique_ptr GetChannel_2S(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::unique_ptr GetChannel_1B(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::unique_ptr GetChannel_5X(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::unique_ptr GetChannel_L5(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::unique_ptr GetChannel_1G(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::unique_ptr GetChannel_2G(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::unique_ptr GetChannel_B1(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - gr::msg_queue::sptr queue); + std::shared_ptr> queue); std::unique_ptr GetChannel_B3(const std::shared_ptr& configuration, const std::string& acq, const std::string& trk, const std::string& tlm, int channel, - boost::shared_ptr queue); + std::shared_ptr> queue); std::unique_ptr GetAcqBlock( const std::shared_ptr& configuration, diff --git a/src/core/receiver/gnss_flowgraph.cc b/src/core/receiver/gnss_flowgraph.cc index 5efa45f2b..4488971b7 100644 --- a/src/core/receiver/gnss_flowgraph.cc +++ b/src/core/receiver/gnss_flowgraph.cc @@ -75,7 +75,7 @@ #define GNSS_SDR_ARRAY_SIGNAL_CONDITIONER_CHANNELS 8 -GNSSFlowgraph::GNSSFlowgraph(std::shared_ptr configuration, const gr::msg_queue::sptr queue) // NOLINT(performance-unnecessary-value-param) +GNSSFlowgraph::GNSSFlowgraph(std::shared_ptr configuration, const std::shared_ptr> queue) // NOLINT(performance-unnecessary-value-param) { connected_ = false; running_ = false; @@ -1061,7 +1061,106 @@ bool GNSSFlowgraph::send_telemetry_msg(const pmt::pmt_t& msg) return true; } +void GNSSFlowgraph::push_back_signal(Gnss_Signal gs) +{ + switch (mapStringValues_[gs.get_signal_str()]) + { + case evGPS_1C: + available_GPS_1C_signals_.remove(gs); + available_GPS_1C_signals_.push_back(gs); + break; + case evGPS_2S: + available_GPS_2S_signals_.remove(gs); + available_GPS_2S_signals_.push_back(gs); + break; + + case evGPS_L5: + available_GPS_L5_signals_.remove(gs); + available_GPS_L5_signals_.push_back(gs); + break; + + case evGAL_1B: + available_GAL_1B_signals_.remove(gs); + available_GAL_1B_signals_.push_back(gs); + break; + + case evGAL_5X: + available_GAL_5X_signals_.remove(gs); + available_GAL_5X_signals_.push_back(gs); + break; + + case evGLO_1G: + available_GLO_1G_signals_.remove(gs); + available_GLO_1G_signals_.push_back(gs); + break; + + case evGLO_2G: + available_GLO_2G_signals_.remove(gs); + available_GLO_2G_signals_.push_back(gs); + break; + + case evBDS_B1: + available_BDS_B1_signals_.remove(gs); + available_BDS_B1_signals_.push_back(gs); + break; + + case evBDS_B3: + available_BDS_B3_signals_.remove(gs); + available_BDS_B3_signals_.push_back(gs); + break; + + default: + LOG(ERROR) << "This should not happen :-("; + break; + } +} + +void GNSSFlowgraph::remove_signal(Gnss_Signal gs) +{ + switch (mapStringValues_[gs.get_signal_str()]) + { + case evGPS_1C: + available_GPS_1C_signals_.remove(gs); + break; + + case evGPS_2S: + available_GPS_2S_signals_.remove(gs); + break; + + case evGPS_L5: + available_GPS_L5_signals_.remove(gs); + break; + + case evGAL_1B: + available_GAL_1B_signals_.remove(gs); + break; + + case evGAL_5X: + available_GAL_5X_signals_.remove(gs); + break; + + case evGLO_1G: + available_GLO_1G_signals_.remove(gs); + break; + + case evGLO_2G: + available_GLO_2G_signals_.remove(gs); + break; + + case evBDS_B1: + available_BDS_B1_signals_.remove(gs); + break; + + case evBDS_B3: + available_BDS_B3_signals_.remove(gs); + break; + + default: + LOG(ERROR) << "This should not happen :-("; + break; + } +} /* * Applies an action to the flow graph * @@ -1089,6 +1188,7 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) //todo: the acquisition events are initiated from the acquisition success or failure queued msg. If the acquisition is disabled for non-assisted secondary freq channels, the engine stops.. std::lock_guard lock(signal_list_mutex); + std::cout << "Received " << what << " from " << who << ". acq_channels_count_ = " << acq_channels_count_ << "\n"; DLOG(INFO) << "Received " << what << " from " << who << ". Number of applied actions = " << applied_actions_; unsigned int sat = 0; if (who < 200) @@ -1109,60 +1209,10 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) if (sat == 0) { Gnss_Signal gs = channels_[who]->get_signal(); - switch (mapStringValues_[gs.get_signal_str()]) - { - case evGPS_1C: - available_GPS_1C_signals_.remove(gs); - available_GPS_1C_signals_.push_back(gs); - break; - - case evGPS_2S: - available_GPS_2S_signals_.remove(gs); - available_GPS_2S_signals_.push_back(gs); - break; - - case evGPS_L5: - available_GPS_L5_signals_.remove(gs); - available_GPS_L5_signals_.push_back(gs); - break; - - case evGAL_1B: - available_GAL_1B_signals_.remove(gs); - available_GAL_1B_signals_.push_back(gs); - break; - - case evGAL_5X: - available_GAL_5X_signals_.remove(gs); - available_GAL_5X_signals_.push_back(gs); - break; - - case evGLO_1G: - available_GLO_1G_signals_.remove(gs); - available_GLO_1G_signals_.push_back(gs); - break; - - case evGLO_2G: - available_GLO_2G_signals_.remove(gs); - available_GLO_2G_signals_.push_back(gs); - break; - - case evBDS_B1: - available_BDS_B1_signals_.remove(gs); - available_BDS_B1_signals_.push_back(gs); - break; - - case evBDS_B3: - available_BDS_B3_signals_.remove(gs); - available_BDS_B3_signals_.push_back(gs); - break; - - default: - LOG(ERROR) << "This should not happen :-("; - break; - } + push_back_signal(gs); } channels_state_[who] = 0; - acq_channels_count_--; + if (acq_channels_count_ > 0) acq_channels_count_--; for (unsigned int i = 0; i < channels_count_; i++) { unsigned int ch_index = (who + i + 1) % channels_count_; @@ -1179,19 +1229,27 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) { bool is_primary_freq = true; bool assistance_available = false; + bool start_acquisition = false; + Gnss_Signal gnss_signal; if (sat_ == 0) { float estimated_doppler; double RX_time; - Gnss_Signal gnss_signal; + gnss_signal = search_next_signal(channels_[ch_index]->get_signal().get_signal_str(), false, is_primary_freq, assistance_available, estimated_doppler, RX_time); channels_[ch_index]->set_signal(gnss_signal); + start_acquisition = is_primary_freq or assistance_available; + } + else + { + start_acquisition = true; } //todo: add configuration parameter to enable the mandatory acquisition assistance in secondary freq - if (is_primary_freq == true or assistance_available == true) + if (start_acquisition == true) { channels_state_[ch_index] = 1; acq_channels_count_++; + std::cout << "Channel " << ch_index << " Starting acquisition " << channels_[ch_index]->get_signal().get_satellite() << ", Signal " << channels_[ch_index]->get_signal().get_signal_str(); DLOG(INFO) << "Channel " << ch_index << " Starting acquisition " << channels_[ch_index]->get_signal().get_satellite() << ", Signal " << channels_[ch_index]->get_signal().get_signal_str(); #ifndef ENABLE_FPGA channels_[ch_index]->start_acquisition(); @@ -1203,6 +1261,10 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) } else { + push_back_signal(gnss_signal); + //todo: rewrite all + // std::unique_ptr cmf(new ControlMessageFactory()); + // queue_->handle(cmf->GetQueueMessage(i, 0)); DLOG(INFO) << "Channel " << ch_index << " secondary frequency acquisition assistance not available in " << channels_[ch_index]->get_signal().get_satellite() << ", Signal " << channels_[ch_index]->get_signal().get_signal_str(); } } @@ -1214,51 +1276,10 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) LOG(INFO) << "Channel " << who << " ACQ SUCCESS satellite " << channels_[who]->get_signal().get_satellite(); // If the satellite is in the list of available ones, remove it. - switch (mapStringValues_[channels_[who]->get_signal().get_signal_str()]) - { - case evGPS_1C: - available_GPS_1C_signals_.remove(channels_[who]->get_signal()); - break; - - case evGPS_2S: - available_GPS_2S_signals_.remove(channels_[who]->get_signal()); - break; - - case evGPS_L5: - available_GPS_L5_signals_.remove(channels_[who]->get_signal()); - break; - - case evGAL_1B: - available_GAL_1B_signals_.remove(channels_[who]->get_signal()); - break; - - case evGAL_5X: - available_GAL_5X_signals_.remove(channels_[who]->get_signal()); - break; - - case evGLO_1G: - available_GLO_1G_signals_.remove(channels_[who]->get_signal()); - break; - - case evGLO_2G: - available_GLO_2G_signals_.remove(channels_[who]->get_signal()); - break; - - case evBDS_B1: - available_BDS_B1_signals_.remove(channels_[who]->get_signal()); - break; - - case evBDS_B3: - available_BDS_B3_signals_.remove(channels_[who]->get_signal()); - break; - - default: - LOG(ERROR) << "This should not happen :-("; - break; - } + remove_signal(channels_[who]->get_signal()); channels_state_[who] = 2; - acq_channels_count_--; + if (acq_channels_count_ > 0) acq_channels_count_--; for (unsigned int i = 0; i < channels_count_; i++) { unsigned int sat_ = 0; @@ -1274,16 +1295,22 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) { bool is_primary_freq = true; bool assistance_available = false; + bool start_acquisition = false; + Gnss_Signal gnss_signal; if (sat_ == 0) { float estimated_doppler; double RX_time; - Gnss_Signal gnss_signal; gnss_signal = search_next_signal(channels_[i]->get_signal().get_signal_str(), true, is_primary_freq, assistance_available, estimated_doppler, RX_time); + channels_[i]->set_signal(gnss_signal); + } + else + { + start_acquisition = true; } //todo: add configuration parameter to enable the mandatory acquisition assistance in secondary freq - if (is_primary_freq == true or assistance_available == true) + if (start_acquisition == true) { channels_state_[i] = 1; acq_channels_count_++; @@ -1294,11 +1321,17 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) // create a task for the FPGA such that it doesn't stop the flow std::thread tmp_thread(&ChannelInterface::start_acquisition, channels_[i]); tmp_thread.detach(); + start_acquisition = is_primary_freq or assistance_available; #endif } else { + push_back_signal(gnss_signal); + //todo: rewrite all + // std::unique_ptr cmf(new ControlMessageFactory()); + // queue_->handle(cmf->GetQueueMessage(i, 0)); DLOG(INFO) << "Channel " << i << " secondary frequency acquisition assistance not available in " << channels_[i]->get_signal().get_satellite() << ", Signal " << channels_[i]->get_signal().get_signal_str(); + std::cout << "Channel " << i << " secondary frequency acquisition assistance not available in " << channels_[i]->get_signal().get_satellite() << ", Signal " << channels_[i]->get_signal().get_signal_str(); } } DLOG(INFO) << "Channel " << i << " in state " << channels_state_[i]; @@ -1328,48 +1361,7 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) LOG(INFO) << "Channel " << who << " Idle state"; if (sat == 0) { - switch (mapStringValues_[channels_[who]->get_signal().get_signal_str()]) - { - case evGPS_1C: - available_GPS_1C_signals_.push_back(channels_[who]->get_signal()); - break; - - case evGPS_2S: - available_GPS_2S_signals_.push_back(channels_[who]->get_signal()); - break; - - case evGPS_L5: - available_GPS_L5_signals_.push_back(channels_[who]->get_signal()); - break; - - case evGAL_1B: - available_GAL_1B_signals_.push_back(channels_[who]->get_signal()); - break; - - case evGAL_5X: - available_GAL_5X_signals_.push_back(channels_[who]->get_signal()); - break; - - case evGLO_1G: - available_GLO_1G_signals_.push_back(channels_[who]->get_signal()); - break; - - case evGLO_2G: - available_GLO_2G_signals_.push_back(channels_[who]->get_signal()); - break; - - case evBDS_B1: - available_BDS_B1_signals_.push_back(channels_[who]->get_signal()); - break; - - case evBDS_B3: - available_BDS_B3_signals_.push_back(channels_[who]->get_signal()); - break; - - default: - LOG(ERROR) << "This should not happen :-("; - break; - } + push_back_signal(channels_[who]->get_signal()); } } break; @@ -1381,57 +1373,8 @@ void GNSSFlowgraph::apply_action(unsigned int who, unsigned int what) { //recover the satellite assigned Gnss_Signal gs = channels_[n]->get_signal(); - switch (mapStringValues_[gs.get_signal_str()]) - { - case evGPS_1C: - available_GPS_1C_signals_.remove(gs); - available_GPS_1C_signals_.push_back(gs); - break; + push_back_signal(gs); - case evGPS_2S: - available_GPS_2S_signals_.remove(gs); - available_GPS_2S_signals_.push_back(gs); - break; - - case evGPS_L5: - available_GPS_L5_signals_.remove(gs); - available_GPS_L5_signals_.push_back(gs); - break; - - case evGAL_1B: - available_GAL_1B_signals_.remove(gs); - available_GAL_1B_signals_.push_back(gs); - break; - - case evGAL_5X: - available_GAL_5X_signals_.remove(gs); - available_GAL_5X_signals_.push_back(gs); - break; - - case evGLO_1G: - available_GLO_1G_signals_.remove(gs); - available_GLO_1G_signals_.push_back(gs); - break; - - case evGLO_2G: - available_GLO_2G_signals_.remove(gs); - available_GLO_2G_signals_.push_back(gs); - break; - - case evBDS_B1: - available_BDS_B1_signals_.remove(gs); - available_BDS_B1_signals_.push_back(gs); - break; - - case evBDS_B3: - available_BDS_B3_signals_.remove(gs); - available_BDS_B3_signals_.push_back(gs); - break; - - default: - LOG(ERROR) << "This should not happen :-("; - break; - } channels_[n]->stop_channel(); // stop the acquisition or tracking operation channels_state_[n] = 0; } @@ -2071,6 +2014,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(const std::string& searched_signal { is_primary_frequency = false; Gnss_Signal result; + bool found_signal = false; switch (mapStringValues_[searched_signal]) { case evGPS_1C: @@ -2090,6 +2034,7 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(const std::string& searched_signal //1. Get the current channel status map std::map> current_channels_status = channels_status_->get_current_status_map(); //2. search the currently tracked GPS L1 satellites and assist the GPS L2 acquisition if the satellite is not tracked on L2 + bool found_signal = false; for (std::map>::iterator it = current_channels_status.begin(); it != current_channels_status.end(); ++it) { if (std::string(it->second->Signal) == "1C") @@ -2107,16 +2052,21 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(const std::string& searched_signal { available_GPS_2S_signals_.erase(it2); } + found_signal = true; + break; } } } //fallback: pick the front satellite because there is no tracked satellites in L1 to assist L2 - result = available_GPS_2S_signals_.front(); - available_GPS_2S_signals_.pop_front(); - if (!pop) + if (found_signal == false) { - available_GPS_2S_signals_.push_back(result); + result = available_GPS_2S_signals_.front(); + available_GPS_2S_signals_.pop_front(); + if (!pop) + { + available_GPS_2S_signals_.push_back(result); + } } } else @@ -2153,19 +2103,14 @@ Gnss_Signal GNSSFlowgraph::search_next_signal(const std::string& searched_signal { available_GPS_L5_signals_.erase(it2); } + found_signal = true; break; } } } - //fallback: pick the front satellite because there is no tracked satellites in L1 to assist L5 - result = available_GPS_L5_signals_.front(); - available_GPS_L5_signals_.pop_front(); - if (!pop) - { - available_GPS_L5_signals_.push_back(result); - } } - else + //fallback: pick the front satellite because there is no tracked satellites in L1 to assist L5 + if (found_signal == false) { result = available_GPS_L5_signals_.front(); available_GPS_L5_signals_.pop_front(); diff --git a/src/core/receiver/gnss_flowgraph.h b/src/core/receiver/gnss_flowgraph.h index ea2ecc2ad..cfba9914f 100644 --- a/src/core/receiver/gnss_flowgraph.h +++ b/src/core/receiver/gnss_flowgraph.h @@ -38,11 +38,11 @@ #define GNSS_SDR_GNSS_FLOWGRAPH_H_ #include "channel_status_msg_receiver.h" +#include "concurrent_queue.h" #include "gnss_sdr_sample_counter.h" #include "gnss_signal.h" #include "pvt_interface.h" #include //for null_sink -#include // for msg_queue, msg_queue::sptr #include // for basic_block_sptr, top_block_sptr #include // for pmt_t #include // for list @@ -72,7 +72,7 @@ public: /*! * \brief Constructor that initializes the receiver flow graph */ - GNSSFlowgraph(std::shared_ptr configuration, const gr::msg_queue::sptr queue); // NOLINT(performance-unnecessary-value-param) + GNSSFlowgraph(std::shared_ptr configuration, const std::shared_ptr> queue); // NOLINT(performance-unnecessary-value-param) /*! * \brief Destructor @@ -108,6 +108,10 @@ public: */ void apply_action(unsigned int who, unsigned int what); + + void push_back_signal(Gnss_Signal gs); + void remove_signal(Gnss_Signal gs); + void set_configuration(std::shared_ptr configuration); unsigned int applied_actions() const @@ -181,7 +185,7 @@ private: gnss_sdr_fpga_sample_counter_sptr ch_out_fpga_sample_counter; #endif gr::top_block_sptr top_block_; - gr::msg_queue::sptr queue_; + std::shared_ptr> queue_; std::list available_GPS_1C_signals_; std::list available_GPS_2S_signals_; diff --git a/src/core/receiver/tcp_cmd_interface.cc b/src/core/receiver/tcp_cmd_interface.cc index 5cac461ad..f274c82dc 100644 --- a/src/core/receiver/tcp_cmd_interface.cc +++ b/src/core/receiver/tcp_cmd_interface.cc @@ -30,7 +30,7 @@ */ #include "tcp_cmd_interface.h" -#include "control_message_factory.h" +#include "command_event.h" #include "pvt_interface.h" #include #include @@ -94,17 +94,16 @@ arma::vec TcpCmdInterface::get_LLH() std::string TcpCmdInterface::reset(const std::vector &commandLine __attribute__((unused))) { std::string response; - std::unique_ptr cmf(new ControlMessageFactory()); if (control_queue_ != nullptr) { - control_queue_->handle(cmf->GetQueueMessage(200, 1)); //send the restart message (who=200,what=1) + command_event_sptr new_evnt = command_event_make(200, 1); //send the restart message (who=200,what=1) + control_queue_->push(pmt::make_any(new_evnt)); response = "OK\n"; } else { response = "ERROR\n"; } - return response; } @@ -112,10 +111,10 @@ std::string TcpCmdInterface::reset(const std::vector &commandLine _ std::string TcpCmdInterface::standby(const std::vector &commandLine __attribute__((unused))) { std::string response; - std::unique_ptr cmf(new ControlMessageFactory()); if (control_queue_ != nullptr) { - control_queue_->handle(cmf->GetQueueMessage(300, 10)); //send the standby message (who=300,what=10) + command_event_sptr new_evnt = command_event_make(300, 10); //send the standby message (who=300,what=10) + control_queue_->push(pmt::make_any(new_evnt)); response = "OK\n"; } else @@ -203,10 +202,10 @@ std::string TcpCmdInterface::hotstart(const std::vector &commandLin } else { - std::unique_ptr cmf(new ControlMessageFactory()); if (control_queue_ != nullptr) { - control_queue_->handle(cmf->GetQueueMessage(300, 12)); //send the standby message (who=300,what=12) + command_event_sptr new_evnt = command_event_make(300, 12); //send the standby message (who=300,what=12) + control_queue_->push(pmt::make_any(new_evnt)); response = "OK\n"; } else @@ -250,10 +249,10 @@ std::string TcpCmdInterface::warmstart(const std::vector &commandLi } else { - std::unique_ptr cmf(new ControlMessageFactory()); if (control_queue_ != nullptr) { - control_queue_->handle(cmf->GetQueueMessage(300, 13)); // send the warmstart message (who=300,what=13) + command_event_sptr new_evnt = command_event_make(300, 13); // send the warmstart message (who=300,what=13) + control_queue_->push(pmt::make_any(new_evnt)); response = "OK\n"; } else @@ -273,16 +272,17 @@ std::string TcpCmdInterface::warmstart(const std::vector &commandLi std::string TcpCmdInterface::coldstart(const std::vector &commandLine __attribute__((unused))) { std::string response; - std::unique_ptr cmf(new ControlMessageFactory()); if (control_queue_ != nullptr) { - control_queue_->handle(cmf->GetQueueMessage(300, 11)); // send the coldstart message (who=300,what=11) + command_event_sptr new_evnt = command_event_make(300, 11); // send the coldstart message (who=300,what=11) + control_queue_->push(pmt::make_any(new_evnt)); response = "OK\n"; } else { response = "ERROR\n"; } + return response; } @@ -296,7 +296,7 @@ std::string TcpCmdInterface::set_ch_satellite(const std::vector &co } -void TcpCmdInterface::set_msg_queue(gr::msg_queue::sptr control_queue) +void TcpCmdInterface::set_msg_queue(std::shared_ptr> control_queue) { control_queue_ = std::move(control_queue); } diff --git a/src/core/receiver/tcp_cmd_interface.h b/src/core/receiver/tcp_cmd_interface.h index e5658a6d9..0b6276e92 100644 --- a/src/core/receiver/tcp_cmd_interface.h +++ b/src/core/receiver/tcp_cmd_interface.h @@ -32,8 +32,9 @@ #define GNSS_SDR_TCP_CMD_INTERFACE_H_ +#include "concurrent_queue.h" #include -#include +#include #include #include #include @@ -50,7 +51,7 @@ public: TcpCmdInterface(); virtual ~TcpCmdInterface(); void run_cmd_server(int tcp_port); - void set_msg_queue(gr::msg_queue::sptr control_queue); + void set_msg_queue(std::shared_ptr> control_queue); /*! * \brief gets the UTC time parsed from the last TC command issued @@ -77,7 +78,7 @@ private: void register_functions(); - gr::msg_queue::sptr control_queue_; + std::shared_ptr> control_queue_; bool keep_running_; time_t receiver_utc_time_; diff --git a/src/tests/data/high_dynamics_signal.bin b/src/tests/data/high_dynamics_signal.bin new file mode 100644 index 000000000..ba463e31c Binary files /dev/null and b/src/tests/data/high_dynamics_signal.bin differ diff --git a/src/tests/data/high_dynamics_signal.mat b/src/tests/data/high_dynamics_signal.mat new file mode 100644 index 000000000..39c1312d5 Binary files /dev/null and b/src/tests/data/high_dynamics_signal.mat differ diff --git a/src/tests/unit-tests/control-plane/control_message_factory_test.cc b/src/tests/unit-tests/control-plane/control_message_factory_test.cc index 7440d37f4..a2b4448b8 100644 --- a/src/tests/unit-tests/control-plane/control_message_factory_test.cc +++ b/src/tests/unit-tests/control-plane/control_message_factory_test.cc @@ -31,7 +31,6 @@ */ -#include "control_message_factory.h" #include #include diff --git a/src/tests/unit-tests/control-plane/control_thread_test.cc b/src/tests/unit-tests/control-plane/control_thread_test.cc index 781a5af76..2f13cfaa2 100644 --- a/src/tests/unit-tests/control-plane/control_thread_test.cc +++ b/src/tests/unit-tests/control-plane/control_thread_test.cc @@ -32,7 +32,7 @@ #include "control_thread.h" -#include "control_message_factory.h" +#include "concurrent_queue.h" #include "in_memory_configuration.h" #include #include @@ -40,7 +40,6 @@ #include #include #include -#include #include #include #include @@ -121,7 +120,7 @@ TEST_F(ControlThreadTest /*unused*/, InstantiateRunControlMessages /*unused*/) std::shared_ptr control_thread = std::make_shared(config); - gr::msg_queue::sptr control_queue = gr::msg_queue::make(0); + std::shared_ptr> control_queue = gr::msg_queue::make(0); std::unique_ptr control_msg_factory(new ControlMessageFactory()); @@ -182,7 +181,7 @@ TEST_F(ControlThreadTest /*unused*/, InstantiateRunControlMessages2 /*unused*/) std::unique_ptr control_thread2(new ControlThread(config)); - gr::msg_queue::sptr control_queue2 = gr::msg_queue::make(0); + std::shared_ptr> control_queue2 = gr::msg_queue::make(0); std::unique_ptr control_msg_factory2(new ControlMessageFactory()); @@ -245,7 +244,7 @@ TEST_F(ControlThreadTest /*unused*/, StopReceiverProgrammatically /*unused*/) config->set_property("GNSS-SDR.internal_fs_sps", "4000000"); std::shared_ptr control_thread = std::make_shared(config); - gr::msg_queue::sptr control_queue = gr::msg_queue::make(0); + std::shared_ptr> control_queue = gr::msg_queue::make(0); control_thread->set_control_queue(control_queue); std::thread stop_receiver_thread(stop_receiver); diff --git a/src/tests/unit-tests/control-plane/gnss_block_factory_test.cc b/src/tests/unit-tests/control-plane/gnss_block_factory_test.cc index 0af18c4e1..c8a427ee6 100644 --- a/src/tests/unit-tests/control-plane/gnss_block_factory_test.cc +++ b/src/tests/unit-tests/control-plane/gnss_block_factory_test.cc @@ -42,7 +42,7 @@ #include "pvt_interface.h" #include "telemetry_decoder_interface.h" #include "tracking_interface.h" -#include +#include "concurrent_queue.h" #include #include @@ -53,7 +53,7 @@ TEST(GNSSBlockFactoryTest, InstantiateFileSignalSource) std::string path = std::string(TEST_PATH); std::string filename = path + "signal_samples/GPS_L1_CA_ID_1_Fs_4Msps_2ms.dat"; configuration->set_property("SignalSource.filename", filename); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); // Example of a factory as a shared_ptr std::shared_ptr factory = std::make_shared(); // Example of a block as a shared_ptr @@ -67,7 +67,7 @@ TEST(GNSSBlockFactoryTest, InstantiateWrongSignalSource) { std::shared_ptr configuration = std::make_shared(); configuration->set_property("SignalSource.implementation", "Pepito"); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); // Example of a factory as a unique_ptr std::unique_ptr factory; // Example of a block as a unique_ptr @@ -90,7 +90,7 @@ TEST(GNSSBlockFactoryTest, InstantiateSignalConditioner) TEST(GNSSBlockFactoryTest, InstantiateFIRFilter) { std::shared_ptr configuration = std::make_shared(); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); configuration->set_property("InputFilter.implementation", "Fir_Filter"); @@ -123,7 +123,7 @@ TEST(GNSSBlockFactoryTest, InstantiateFIRFilter) TEST(GNSSBlockFactoryTest, InstantiateFreqXlatingFIRFilter) { std::shared_ptr configuration = std::make_shared(); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); configuration->set_property("InputFilter.implementation", "Freq_Xlating_Fir_Filter"); @@ -158,7 +158,7 @@ TEST(GNSSBlockFactoryTest, InstantiateFreqXlatingFIRFilter) TEST(GNSSBlockFactoryTest, InstantiatePulseBlankingFilter) { std::shared_ptr configuration = std::make_shared(); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); configuration->set_property("InputFilter.implementation", "Pulse_Blanking_Filter"); std::unique_ptr factory; @@ -171,7 +171,7 @@ TEST(GNSSBlockFactoryTest, InstantiatePulseBlankingFilter) TEST(GNSSBlockFactoryTest, InstantiateNotchFilter) { std::shared_ptr configuration = std::make_shared(); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); configuration->set_property("InputFilter.implementation", "Notch_Filter"); std::unique_ptr factory; @@ -184,7 +184,7 @@ TEST(GNSSBlockFactoryTest, InstantiateNotchFilter) TEST(GNSSBlockFactoryTest, InstantiateNotchFilterLite) { std::shared_ptr configuration = std::make_shared(); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); configuration->set_property("InputFilter.implementation", "Notch_Filter_Lite"); std::unique_ptr factory; @@ -309,7 +309,7 @@ TEST(GNSSBlockFactoryTest, InstantiateChannels) configuration->set_property("Channel0.item_type", "gr_complex"); configuration->set_property("Acquisition_1C.implementation", "GPS_L1_CA_PCPS_Acquisition"); configuration->set_property("Channel1.item_type", "gr_complex"); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); std::unique_ptr factory; std::unique_ptr>> channels = factory->GetChannels(configuration, queue); EXPECT_EQ(static_cast(2), channels->size()); diff --git a/src/tests/unit-tests/control-plane/gnss_flowgraph_test.cc b/src/tests/unit-tests/control-plane/gnss_flowgraph_test.cc index 711b49d5f..9d26e4477 100644 --- a/src/tests/unit-tests/control-plane/gnss_flowgraph_test.cc +++ b/src/tests/unit-tests/control-plane/gnss_flowgraph_test.cc @@ -40,7 +40,7 @@ #include "in_memory_configuration.h" #include "pass_through.h" #include "tracking_interface.h" -#include +#include "concurrent_queue.h" #include diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc index 73e09e9ec..be5a5016a 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/acq_performance_test.cc @@ -342,7 +342,7 @@ protected: Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/beidou_b1i_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/beidou_b1i_pcps_acquisition_test.cc index c2658889a..e220e5792 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/beidou_b1i_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/beidou_b1i_pcps_acquisition_test.cc @@ -46,7 +46,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -261,7 +261,7 @@ TEST_F(BeidouB1iPcpsAcquisitionTest, ConnectAndRun) int nsamples = 25000; std::chrono::time_point start, end; std::chrono::duration elapsed_seconds(0); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); top_block = gr::make_top_block("Acquisition test"); init(); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/beidou_b3i_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/beidou_b3i_pcps_acquisition_test.cc index 725135d5b..d01343db0 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/beidou_b3i_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/beidou_b3i_pcps_acquisition_test.cc @@ -46,7 +46,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -260,7 +260,7 @@ TEST_F(BeidouB3iPcpsAcquisitionTest, ConnectAndRun) int nsamples = 50000; std::chrono::time_point start, end; std::chrono::duration elapsed_seconds(0); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); top_block = gr::make_top_block("Acquisition test"); init(); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc index a1517dd8f..b63216526 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_8ms_ambiguous_acquisition_gsoc2013_test.cc @@ -43,7 +43,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -134,7 +134,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; std::shared_ptr factory; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc index b9c692c4b..ac9244bc2 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc2013_test.cc @@ -43,7 +43,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -134,7 +134,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; std::shared_ptr factory; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc index 591f7bf25..8c0ad9381 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_gsoc_test.cc @@ -52,7 +52,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -140,7 +140,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc index 58fa9b8e6..f105841f4 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_ambiguous_acquisition_test.cc @@ -47,7 +47,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -265,7 +265,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, ConnectAndRun) std::chrono::time_point start, end; std::chrono::duration elapsed_seconds(0); top_block = gr::make_top_block("Acquisition test"); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); init(); std::shared_ptr acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0); std::shared_ptr acquisition = std::dynamic_pointer_cast(acq_); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc index 60d23b6ba..f757b3edd 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_cccwsr_ambiguous_acquisition_gsoc2013_test.cc @@ -44,7 +44,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -135,7 +135,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; std::shared_ptr factory; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc index 8c06a3419..dc4058ea8 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_quicksync_ambiguous_acquisition_gsoc2014_test.cc @@ -142,7 +142,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; std::shared_ptr factory; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc index a021e5196..a9af18c8b 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e1_pcps_tong_ambiguous_acquisition_gsoc2013_test.cc @@ -44,7 +44,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -135,7 +135,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; std::shared_ptr factory; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc index 652384472..671350e1b 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/galileo_e5a_pcps_acquisition_gsoc2014_gensource_test.cc @@ -42,7 +42,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -131,7 +131,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc index dbee4f413..8192a3408 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_gsoc2017_test.cc @@ -46,7 +46,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -140,7 +140,7 @@ protected: Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; GlonassL1CaPcpsAcquisition* acquisition; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc index 86602ec9c..cdaa14cde 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l1_ca_pcps_acquisition_test.cc @@ -41,7 +41,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -184,7 +184,7 @@ TEST_F(GlonassL1CaPcpsAcquisitionTest, ConnectAndRun) int nsamples = 62314; std::chrono::time_point begin, end; std::chrono::duration elapsed_seconds(0); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); top_block = gr::make_top_block("Acquisition test"); init(); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc index ba0611f90..3cb98fe03 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/glonass_l2_ca_pcps_acquisition_test.cc @@ -45,7 +45,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -142,7 +142,7 @@ protected: concurrent_queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; GlonassL2CaPcpsAcquisition* acquisition; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc index e4ef9974b..ecb757d87 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_gsoc2013_test.cc @@ -46,7 +46,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -140,7 +140,7 @@ protected: Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; GpsL1CaPcpsAcquisition* acquisition; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc index 0ec417ee0..3134eb558 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test.cc @@ -46,7 +46,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -262,7 +262,7 @@ TEST_F(GpsL1CaPcpsAcquisitionTest, ConnectAndRun) int nsamples = 4000; std::chrono::time_point start, end; std::chrono::duration elapsed_seconds(0); - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); top_block = gr::make_top_block("Acquisition test"); init(); diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc index 58dd36719..dcc07a9e5 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_acquisition_test_fpga.cc @@ -41,7 +41,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc index 702b89f31..f20f491d9 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_opencl_acquisition_gsoc2013_test.cc @@ -45,7 +45,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -140,7 +140,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc index 7dfcc5ea1..c8c1847d3 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_quicksync_acquisition_gsoc2014_test.cc @@ -43,7 +43,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -141,7 +141,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr acquisition; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc index b5977ff39..b65748a81 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l1_ca_pcps_tong_acquisition_gsoc2013_test.cc @@ -45,7 +45,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -135,7 +135,7 @@ protected: void stop_queue(); Concurrent_Queue channel_internal_queue; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr acquisition; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc index de7bc4e27..2541d7f75 100644 --- a/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/acquisition/gps_l2_m_pcps_acquisition_test.cc @@ -47,7 +47,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -143,7 +143,7 @@ protected: void init(); void plot_grid(); - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc index 03d055fac..a662020d5 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/fir_filter_test.cc @@ -48,7 +48,7 @@ #include "interleaved_byte_to_complex_byte.h" #include "interleaved_short_to_complex_short.h" #include -#include +#include "concurrent_queue.h" #include diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc index 69c1dddf9..8743a11be 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_lite_test.cc @@ -46,7 +46,7 @@ #include "in_memory_configuration.h" #include "notch_filter_lite.h" #include -#include +#include "concurrent_queue.h" #include diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc index 8fb783b5f..4b44af6d6 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/notch_filter_test.cc @@ -46,7 +46,7 @@ #include "in_memory_configuration.h" #include "notch_filter.h" #include -#include +#include "concurrent_queue.h" #include diff --git a/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc b/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc index d31b971fb..56aa82fd5 100644 --- a/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/filter/pulse_blanking_filter_test.cc @@ -46,7 +46,7 @@ #include "in_memory_configuration.h" #include "pulse_blanking_filter.h" #include -#include +#include "concurrent_queue.h" #include diff --git a/src/tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc b/src/tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc index 497805de7..0e7774842 100644 --- a/src/tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/observables/hybrid_observables_test.cc @@ -30,6 +30,7 @@ * ------------------------------------------------------------------------- */ +#include "hybrid_observables.h" #include "GPS_L1_CA.h" #include "GPS_L2C.h" #include "GPS_L5.h" @@ -51,7 +52,6 @@ #include "gps_l1_ca_pcps_acquisition.h" #include "gps_l2_m_pcps_acquisition.h" #include "gps_l5i_pcps_acquisition.h" -#include "hybrid_observables.h" #include "in_memory_configuration.h" #include "observable_tests_flags.h" #include "observables_dump_reader.h" @@ -707,9 +707,9 @@ void HybridObservablesTest::configure_receiver( std::memcpy(static_cast(gnss_synchro_master.Signal), str, 3); // copy string into synchro char array: 2 char + null config->set_property("Tracking.early_late_space_chips", "0.15"); - config->set_property("Tracking.very_early_late_space_chips", "0.6"); + config->set_property("Tracking.very_early_late_space_chips", "0.5"); config->set_property("Tracking.early_late_space_narrow_chips", "0.15"); - config->set_property("Tracking.very_early_late_space_narrow_chips", "0.6"); + config->set_property("Tracking.very_early_late_space_narrow_chips", "0.5"); config->set_property("Tracking.track_pilot", "true"); config->set_property("TelemetryDecoder.implementation", "Galileo_E1B_Telemetry_Decoder"); @@ -741,7 +741,8 @@ void HybridObservablesTest::configure_receiver( } config->set_property("Tracking.early_late_space_chips", "0.5"); config->set_property("Tracking.track_pilot", "true"); - config->set_property("Tracking.order", "2"); + config->set_property("Tracking.pll_filter_order", "2"); + config->set_property("Tracking.dll_filter_order", "2"); config->set_property("TelemetryDecoder.implementation", "Galileo_E5a_Telemetry_Decoder"); } @@ -755,7 +756,8 @@ void HybridObservablesTest::configure_receiver( config->set_property("Tracking.early_late_space_chips", "0.5"); config->set_property("Tracking.track_pilot", "true"); - config->set_property("Tracking.order", "2"); + config->set_property("Tracking.pll_filter_order", "2"); + config->set_property("Tracking.dll_filter_order", "2"); config->set_property("TelemetryDecoder.implementation", "GPS_L5_Telemetry_Decoder"); } @@ -875,78 +877,81 @@ void HybridObservablesTest::check_results_carrier_phase_double_diff( int size2 = measured_ch1.col(0).n_rows; double t1 = std::min(measured_ch0(size1 - 1, 0), measured_ch1(size2 - 1, 0)); - arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); - //conversion between arma::vec and std:vector - arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); - std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); - - - arma::vec true_ch0_carrier_phase_interp; - arma::vec true_ch1_carrier_phase_interp; - arma::interp1(true_tow_ch0_s, true_ch0.col(3), t, true_ch0_carrier_phase_interp); - arma::interp1(true_tow_ch1_s, true_ch1.col(3), t, true_ch1_carrier_phase_interp); - - arma::vec meas_ch0_carrier_phase_interp; - arma::vec meas_ch1_carrier_phase_interp; - arma::interp1(measured_ch0.col(0), measured_ch0.col(3), t, meas_ch0_carrier_phase_interp); - arma::interp1(measured_ch1.col(0), measured_ch1.col(3), t, meas_ch1_carrier_phase_interp); - - // generate double difference accumulated carrier phases - //compute error without the accumulated carrier phase offsets (which depends on the receiver starting time) - arma::vec delta_true_carrier_phase_cycles = (true_ch0_carrier_phase_interp - true_ch0_carrier_phase_interp(0)) - (true_ch1_carrier_phase_interp - true_ch1_carrier_phase_interp(0)); - arma::vec delta_measured_carrier_phase_cycles = (meas_ch0_carrier_phase_interp - meas_ch0_carrier_phase_interp(0)) - (meas_ch1_carrier_phase_interp - meas_ch1_carrier_phase_interp(0)); - - //2. RMSE - arma::vec err; - - err = delta_measured_carrier_phase_cycles - delta_true_carrier_phase_cycles; - arma::vec err2 = arma::square(err); - double rmse = sqrt(arma::mean(err2)); - - //3. Mean err and variance - double error_mean = arma::mean(err); - double error_var = arma::var(err); - - // 4. Peaks - double max_error = arma::max(err); - double min_error = arma::min(err); - - //5. report - std::streamsize ss = std::cout.precision(); - std::cout << std::setprecision(10) << data_title << "Double diff Carrier Phase RMSE = " - << rmse << ", mean = " << error_mean - << ", stdev = " << sqrt(error_var) - << " (max,min) = " << max_error - << "," << min_error - << " [Cycles]" << std::endl; - std::cout.precision(ss); - - //plots - if (FLAGS_show_plots) + if ((t1 - t0) > 0) { - Gnuplot g3("linespoints"); - g3.set_title(data_title + "Double diff Carrier Phase error [Cycles]"); - g3.set_grid(); - g3.set_xlabel("Time [s]"); - g3.set_ylabel("Double diff Carrier Phase error [Cycles]"); + arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); //conversion between arma::vec and std:vector - std::vector range_error_m(err.colptr(0), err.colptr(0) + err.n_rows); - g3.cmd("set key box opaque"); - g3.plot_xy(time_vector, range_error_m, - "Double diff Carrier Phase error"); - g3.set_legend(); - g3.savetops(data_title + "double_diff_carrier_phase_error"); + arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); + std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); - g3.showonscreen(); // window output + + arma::vec true_ch0_carrier_phase_interp; + arma::vec true_ch1_carrier_phase_interp; + arma::interp1(true_tow_ch0_s, true_ch0.col(3), t, true_ch0_carrier_phase_interp); + arma::interp1(true_tow_ch1_s, true_ch1.col(3), t, true_ch1_carrier_phase_interp); + + arma::vec meas_ch0_carrier_phase_interp; + arma::vec meas_ch1_carrier_phase_interp; + arma::interp1(measured_ch0.col(0), measured_ch0.col(3), t, meas_ch0_carrier_phase_interp); + arma::interp1(measured_ch1.col(0), measured_ch1.col(3), t, meas_ch1_carrier_phase_interp); + + // generate double difference accumulated carrier phases + //compute error without the accumulated carrier phase offsets (which depends on the receiver starting time) + arma::vec delta_true_carrier_phase_cycles = (true_ch0_carrier_phase_interp - true_ch0_carrier_phase_interp(0)) - (true_ch1_carrier_phase_interp - true_ch1_carrier_phase_interp(0)); + arma::vec delta_measured_carrier_phase_cycles = (meas_ch0_carrier_phase_interp - meas_ch0_carrier_phase_interp(0)) - (meas_ch1_carrier_phase_interp - meas_ch1_carrier_phase_interp(0)); + + //2. RMSE + arma::vec err; + + err = delta_measured_carrier_phase_cycles - delta_true_carrier_phase_cycles; + arma::vec err2 = arma::square(err); + double rmse = sqrt(arma::mean(err2)); + + //3. Mean err and variance + double error_mean = arma::mean(err); + double error_var = arma::var(err); + + // 4. Peaks + double max_error = arma::max(err); + double min_error = arma::min(err); + + //5. report + std::streamsize ss = std::cout.precision(); + std::cout << std::setprecision(10) << data_title << "Double diff Carrier Phase RMSE = " + << rmse << ", mean = " << error_mean + << ", stdev = " << sqrt(error_var) + << " (max,min) = " << max_error + << "," << min_error + << " [Cycles]" << std::endl; + std::cout.precision(ss); + + //plots + if (FLAGS_show_plots) + { + Gnuplot g3("linespoints"); + g3.set_title(data_title + "Double diff Carrier Phase error [Cycles]"); + g3.set_grid(); + g3.set_xlabel("Time [s]"); + g3.set_ylabel("Double diff Carrier Phase error [Cycles]"); + //conversion between arma::vec and std:vector + std::vector range_error_m(err.colptr(0), err.colptr(0) + err.n_rows); + g3.cmd("set key box opaque"); + g3.plot_xy(time_vector, range_error_m, + "Double diff Carrier Phase error"); + g3.set_legend(); + g3.savetops(data_title + "double_diff_carrier_phase_error"); + + g3.showonscreen(); // window output + } + + //check results against the test tolerance + ASSERT_LT(rmse, 0.25); + ASSERT_LT(error_mean, 0.2); + ASSERT_GT(error_mean, -0.2); + ASSERT_LT(error_var, 0.5); + ASSERT_LT(max_error, 0.5); + ASSERT_GT(min_error, -0.5); } - - //check results against the test tolerance - ASSERT_LT(rmse, 0.25); - ASSERT_LT(error_mean, 0.2); - ASSERT_GT(error_mean, -0.2); - ASSERT_LT(error_var, 0.5); - ASSERT_LT(max_error, 0.5); - ASSERT_GT(min_error, -0.5); } @@ -966,78 +971,81 @@ void HybridObservablesTest::check_results_carrier_doppler_double_diff( int size2 = measured_ch1.col(0).n_rows; double t1 = std::min(measured_ch0(size1 - 1, 0), measured_ch1(size2 - 1, 0)); - arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); - //conversion between arma::vec and std:vector - arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); - std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); - - - arma::vec true_ch0_carrier_doppler_interp; - arma::vec true_ch1_carrier_doppler_interp; - arma::interp1(true_tow_ch0_s, true_ch0.col(2), t, true_ch0_carrier_doppler_interp); - arma::interp1(true_tow_ch1_s, true_ch1.col(2), t, true_ch1_carrier_doppler_interp); - - arma::vec meas_ch0_carrier_doppler_interp; - arma::vec meas_ch1_carrier_doppler_interp; - arma::interp1(measured_ch0.col(0), measured_ch0.col(2), t, meas_ch0_carrier_doppler_interp); - arma::interp1(measured_ch1.col(0), measured_ch1.col(2), t, meas_ch1_carrier_doppler_interp); - - // generate double difference carrier Doppler - arma::vec delta_true_carrier_doppler_cycles = true_ch0_carrier_doppler_interp - true_ch1_carrier_doppler_interp; - arma::vec delta_measured_carrier_doppler_cycles = meas_ch0_carrier_doppler_interp - meas_ch1_carrier_doppler_interp; - - //2. RMSE - arma::vec err; - - err = delta_measured_carrier_doppler_cycles - delta_true_carrier_doppler_cycles; - arma::vec err2 = arma::square(err); - double rmse = sqrt(arma::mean(err2)); - - //3. Mean err and variance - double error_mean = arma::mean(err); - double error_var = arma::var(err); - - // 4. Peaks - double max_error = arma::max(err); - double min_error = arma::min(err); - - //5. report - std::streamsize ss = std::cout.precision(); - std::cout << std::setprecision(10) << data_title << "Double diff Carrier Doppler RMSE = " - << rmse << ", mean = " << error_mean - << ", stdev = " << sqrt(error_var) - << " (max,min) = " << max_error - << "," << min_error - << " [Hz]" << std::endl; - std::cout.precision(ss); - - //plots - if (FLAGS_show_plots) + if ((t1 - t0) > 0) { - Gnuplot g3("linespoints"); - g3.set_title(data_title + "Double diff Carrier Doppler error [Hz]"); - g3.set_grid(); - g3.set_xlabel("Time [s]"); - g3.set_ylabel("Double diff Carrier Doppler error [Hz]"); + arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); //conversion between arma::vec and std:vector - std::vector range_error_m(err.colptr(0), err.colptr(0) + err.n_rows); - g3.cmd("set key box opaque"); - g3.plot_xy(time_vector, range_error_m, - "Double diff Carrier Doppler error"); - g3.set_legend(); - g3.savetops(data_title + "double_diff_carrier_doppler_error"); + arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); + std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); - g3.showonscreen(); // window output + + arma::vec true_ch0_carrier_doppler_interp; + arma::vec true_ch1_carrier_doppler_interp; + arma::interp1(true_tow_ch0_s, true_ch0.col(2), t, true_ch0_carrier_doppler_interp); + arma::interp1(true_tow_ch1_s, true_ch1.col(2), t, true_ch1_carrier_doppler_interp); + + arma::vec meas_ch0_carrier_doppler_interp; + arma::vec meas_ch1_carrier_doppler_interp; + arma::interp1(measured_ch0.col(0), measured_ch0.col(2), t, meas_ch0_carrier_doppler_interp); + arma::interp1(measured_ch1.col(0), measured_ch1.col(2), t, meas_ch1_carrier_doppler_interp); + + // generate double difference carrier Doppler + arma::vec delta_true_carrier_doppler_cycles = true_ch0_carrier_doppler_interp - true_ch1_carrier_doppler_interp; + arma::vec delta_measured_carrier_doppler_cycles = meas_ch0_carrier_doppler_interp - meas_ch1_carrier_doppler_interp; + + //2. RMSE + arma::vec err; + + err = delta_measured_carrier_doppler_cycles - delta_true_carrier_doppler_cycles; + arma::vec err2 = arma::square(err); + double rmse = sqrt(arma::mean(err2)); + + //3. Mean err and variance + double error_mean = arma::mean(err); + double error_var = arma::var(err); + + // 4. Peaks + double max_error = arma::max(err); + double min_error = arma::min(err); + + //5. report + std::streamsize ss = std::cout.precision(); + std::cout << std::setprecision(10) << data_title << "Double diff Carrier Doppler RMSE = " + << rmse << ", mean = " << error_mean + << ", stdev = " << sqrt(error_var) + << " (max,min) = " << max_error + << "," << min_error + << " [Hz]" << std::endl; + std::cout.precision(ss); + + //plots + if (FLAGS_show_plots) + { + Gnuplot g3("linespoints"); + g3.set_title(data_title + "Double diff Carrier Doppler error [Hz]"); + g3.set_grid(); + g3.set_xlabel("Time [s]"); + g3.set_ylabel("Double diff Carrier Doppler error [Hz]"); + //conversion between arma::vec and std:vector + std::vector range_error_m(err.colptr(0), err.colptr(0) + err.n_rows); + g3.cmd("set key box opaque"); + g3.plot_xy(time_vector, range_error_m, + "Double diff Carrier Doppler error"); + g3.set_legend(); + g3.savetops(data_title + "double_diff_carrier_doppler_error"); + + g3.showonscreen(); // window output + } + + //check results against the test tolerance + ASSERT_LT(error_mean, 5); + ASSERT_GT(error_mean, -5); + //assuming PLL BW=35 + ASSERT_LT(error_var, 250); + ASSERT_LT(max_error, 100); + ASSERT_GT(min_error, -100); + ASSERT_LT(rmse, 30); } - - //check results against the test tolerance - ASSERT_LT(error_mean, 5); - ASSERT_GT(error_mean, -5); - //assuming PLL BW=35 - ASSERT_LT(error_var, 250); - ASSERT_LT(max_error, 100); - ASSERT_GT(min_error, -100); - ASSERT_LT(rmse, 30); } @@ -1052,71 +1060,75 @@ void HybridObservablesTest::check_results_carrier_doppler( double t0 = measured_ch0(0, 0); int size1 = measured_ch0.col(0).n_rows; double t1 = measured_ch0(size1 - 1, 0); - arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); - //conversion between arma::vec and std:vector - arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); - std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); - arma::vec true_ch0_doppler_interp; - arma::interp1(true_tow_s, true_ch0.col(2), t, true_ch0_doppler_interp); - - arma::vec meas_ch0_doppler_interp; - arma::interp1(measured_ch0.col(0), measured_ch0.col(2), t, meas_ch0_doppler_interp); - - //2. RMSE - arma::vec err_ch0_hz; - - //compute error - err_ch0_hz = meas_ch0_doppler_interp - true_ch0_doppler_interp; - - arma::vec err2_ch0 = arma::square(err_ch0_hz); - double rmse_ch0 = sqrt(arma::mean(err2_ch0)); - - //3. Mean err and variance - double error_mean_ch0 = arma::mean(err_ch0_hz); - double error_var_ch0 = arma::var(err_ch0_hz); - - // 4. Peaks - double max_error_ch0 = arma::max(err_ch0_hz); - double min_error_ch0 = arma::min(err_ch0_hz); - - //5. report - std::streamsize ss = std::cout.precision(); - std::cout << std::setprecision(10) << data_title << "Carrier Doppler RMSE = " - << rmse_ch0 << ", mean = " << error_mean_ch0 - << ", stdev = " << sqrt(error_var_ch0) - << " (max,min) = " << max_error_ch0 - << "," << min_error_ch0 - << " [Hz]" << std::endl; - std::cout.precision(ss); - - //plots - if (FLAGS_show_plots) + if ((t1 - t0) > 0) { - Gnuplot g3("linespoints"); - g3.set_title(data_title + "Carrier Doppler error [Hz]"); - g3.set_grid(); - g3.set_xlabel("Time [s]"); - g3.set_ylabel("Carrier Doppler error [Hz]"); + arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); //conversion between arma::vec and std:vector - std::vector error_vec(err_ch0_hz.colptr(0), err_ch0_hz.colptr(0) + err_ch0_hz.n_rows); - g3.cmd("set key box opaque"); - g3.plot_xy(time_vector, error_vec, - "Carrier Doppler error"); - g3.set_legend(); - g3.savetops(data_title + "Carrier_doppler_error"); + arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); + std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); - g3.showonscreen(); // window output + arma::vec true_ch0_doppler_interp; + arma::interp1(true_tow_s, true_ch0.col(2), t, true_ch0_doppler_interp); + + arma::vec meas_ch0_doppler_interp; + arma::interp1(measured_ch0.col(0), measured_ch0.col(2), t, meas_ch0_doppler_interp); + + //2. RMSE + arma::vec err_ch0_hz; + + //compute error + err_ch0_hz = meas_ch0_doppler_interp - true_ch0_doppler_interp; + + arma::vec err2_ch0 = arma::square(err_ch0_hz); + double rmse_ch0 = sqrt(arma::mean(err2_ch0)); + + //3. Mean err and variance + double error_mean_ch0 = arma::mean(err_ch0_hz); + double error_var_ch0 = arma::var(err_ch0_hz); + + // 4. Peaks + double max_error_ch0 = arma::max(err_ch0_hz); + double min_error_ch0 = arma::min(err_ch0_hz); + + //5. report + std::streamsize ss = std::cout.precision(); + std::cout << std::setprecision(10) << data_title << "Carrier Doppler RMSE = " + << rmse_ch0 << ", mean = " << error_mean_ch0 + << ", stdev = " << sqrt(error_var_ch0) + << " (max,min) = " << max_error_ch0 + << "," << min_error_ch0 + << " [Hz]" << std::endl; + std::cout.precision(ss); + + //plots + if (FLAGS_show_plots) + { + Gnuplot g3("linespoints"); + g3.set_title(data_title + "Carrier Doppler error [Hz]"); + g3.set_grid(); + g3.set_xlabel("Time [s]"); + g3.set_ylabel("Carrier Doppler error [Hz]"); + //conversion between arma::vec and std:vector + std::vector error_vec(err_ch0_hz.colptr(0), err_ch0_hz.colptr(0) + err_ch0_hz.n_rows); + g3.cmd("set key box opaque"); + g3.plot_xy(time_vector, error_vec, + "Carrier Doppler error"); + g3.set_legend(); + g3.savetops(data_title + "Carrier_doppler_error"); + + g3.showonscreen(); // window output + } + + //check results against the test tolerance + ASSERT_LT(error_mean_ch0, 5); + ASSERT_GT(error_mean_ch0, -5); + //assuming PLL BW=35 + ASSERT_LT(error_var_ch0, 250); + ASSERT_LT(max_error_ch0, 100); + ASSERT_GT(min_error_ch0, -100); + ASSERT_LT(rmse_ch0, 30); } - - //check results against the test tolerance - ASSERT_LT(error_mean_ch0, 5); - ASSERT_GT(error_mean_ch0, -5); - //assuming PLL BW=35 - ASSERT_LT(error_var_ch0, 250); - ASSERT_LT(max_error_ch0, 100); - ASSERT_GT(min_error_ch0, -100); - ASSERT_LT(rmse_ch0, 30); } void HybridObservablesTest::check_results_duplicated_satellite( @@ -1156,217 +1168,220 @@ void HybridObservablesTest::check_results_duplicated_satellite( t1 = t1_sat1; } - arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); - //conversion between arma::vec and std:vector - arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); - std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); - //Doppler - arma::vec meas_sat1_doppler_interp; - arma::interp1(measured_sat1.col(0), measured_sat1.col(2), t, meas_sat1_doppler_interp); - arma::vec meas_sat2_doppler_interp; - arma::interp1(measured_sat2.col(0), measured_sat2.col(2), t, meas_sat2_doppler_interp); - - //Carrier Phase - arma::vec meas_sat1_carrier_phase_interp; - arma::vec meas_sat2_carrier_phase_interp; - arma::interp1(measured_sat1.col(0), measured_sat1.col(3), t, meas_sat1_carrier_phase_interp); - arma::interp1(measured_sat2.col(0), measured_sat2.col(3), t, meas_sat2_carrier_phase_interp); - - // generate double difference accumulated carrier phases - //compute error without the accumulated carrier phase offsets (which depends on the receiver starting time) - arma::vec delta_measured_carrier_phase_cycles = (meas_sat1_carrier_phase_interp - meas_sat1_carrier_phase_interp(0)) - (meas_sat2_carrier_phase_interp - meas_sat2_carrier_phase_interp(0)); - - //Pseudoranges - arma::vec meas_sat1_dist_interp; - arma::vec meas_sat2_dist_interp; - arma::interp1(measured_sat1.col(0), measured_sat1.col(4), t, meas_sat1_dist_interp); - arma::interp1(measured_sat2.col(0), measured_sat2.col(4), t, meas_sat2_dist_interp); - // generate delta pseudoranges - arma::vec delta_measured_dist_m = meas_sat1_dist_interp - meas_sat2_dist_interp; - - //Carrier Doppler error - //2. RMSE - arma::vec err_ch0_hz; - - //compute error - err_ch0_hz = meas_sat1_doppler_interp - meas_sat2_doppler_interp; - - //save matlab file for further analysis - std::vector tmp_vector_common_time_s(t.colptr(0), - t.colptr(0) + t.n_rows); - - std::vector tmp_vector_err_ch0_hz(err_ch0_hz.colptr(0), - err_ch0_hz.colptr(0) + err_ch0_hz.n_rows); - save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_ch0_hz, std::string("measured_doppler_error_ch_" + std::to_string(ch_id))); - - //compute statistics - arma::vec err2_ch0 = arma::square(err_ch0_hz); - double rmse_ch0 = sqrt(arma::mean(err2_ch0)); - - //3. Mean err and variance - double error_mean_ch0 = arma::mean(err_ch0_hz); - double error_var_ch0 = arma::var(err_ch0_hz); - - // 4. Peaks - double max_error_ch0 = arma::max(err_ch0_hz); - double min_error_ch0 = arma::min(err_ch0_hz); - - //5. report - std::streamsize ss = std::cout.precision(); - std::cout << std::setprecision(10) << data_title << "Carrier Doppler RMSE = " - << rmse_ch0 << ", mean = " << error_mean_ch0 - << ", stdev = " << sqrt(error_var_ch0) - << " (max,min) = " << max_error_ch0 - << "," << min_error_ch0 - << " [Hz]" << std::endl; - std::cout.precision(ss); - - //plots - if (FLAGS_show_plots) + if ((t1 - t0) > 0) { - Gnuplot g3("linespoints"); - g3.set_title(data_title + "Carrier Doppler error [Hz]"); - g3.set_grid(); - g3.set_xlabel("Time [s]"); - g3.set_ylabel("Carrier Doppler error [Hz]"); + arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); //conversion between arma::vec and std:vector - std::vector error_vec(err_ch0_hz.colptr(0), err_ch0_hz.colptr(0) + err_ch0_hz.n_rows); - g3.cmd("set key box opaque"); - g3.plot_xy(time_vector, error_vec, - "Carrier Doppler error"); - g3.set_legend(); - g3.savetops(data_title + "Carrier_doppler_error"); + arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); + std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); + //Doppler + arma::vec meas_sat1_doppler_interp; + arma::interp1(measured_sat1.col(0), measured_sat1.col(2), t, meas_sat1_doppler_interp); + arma::vec meas_sat2_doppler_interp; + arma::interp1(measured_sat2.col(0), measured_sat2.col(2), t, meas_sat2_doppler_interp); - g3.showonscreen(); // window output + //Carrier Phase + arma::vec meas_sat1_carrier_phase_interp; + arma::vec meas_sat2_carrier_phase_interp; + arma::interp1(measured_sat1.col(0), measured_sat1.col(3), t, meas_sat1_carrier_phase_interp); + arma::interp1(measured_sat2.col(0), measured_sat2.col(3), t, meas_sat2_carrier_phase_interp); + + // generate double difference accumulated carrier phases + //compute error without the accumulated carrier phase offsets (which depends on the receiver starting time) + arma::vec delta_measured_carrier_phase_cycles = (meas_sat1_carrier_phase_interp - meas_sat1_carrier_phase_interp(0)) - (meas_sat2_carrier_phase_interp - meas_sat2_carrier_phase_interp(0)); + + //Pseudoranges + arma::vec meas_sat1_dist_interp; + arma::vec meas_sat2_dist_interp; + arma::interp1(measured_sat1.col(0), measured_sat1.col(4), t, meas_sat1_dist_interp); + arma::interp1(measured_sat2.col(0), measured_sat2.col(4), t, meas_sat2_dist_interp); + // generate delta pseudoranges + arma::vec delta_measured_dist_m = meas_sat1_dist_interp - meas_sat2_dist_interp; + + //Carrier Doppler error + //2. RMSE + arma::vec err_ch0_hz; + + //compute error + err_ch0_hz = meas_sat1_doppler_interp - meas_sat2_doppler_interp; + + //save matlab file for further analysis + std::vector tmp_vector_common_time_s(t.colptr(0), + t.colptr(0) + t.n_rows); + + std::vector tmp_vector_err_ch0_hz(err_ch0_hz.colptr(0), + err_ch0_hz.colptr(0) + err_ch0_hz.n_rows); + save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_ch0_hz, std::string("measured_doppler_error_ch_" + std::to_string(ch_id))); + + //compute statistics + arma::vec err2_ch0 = arma::square(err_ch0_hz); + double rmse_ch0 = sqrt(arma::mean(err2_ch0)); + + //3. Mean err and variance + double error_mean_ch0 = arma::mean(err_ch0_hz); + double error_var_ch0 = arma::var(err_ch0_hz); + + // 4. Peaks + double max_error_ch0 = arma::max(err_ch0_hz); + double min_error_ch0 = arma::min(err_ch0_hz); + + //5. report + std::streamsize ss = std::cout.precision(); + std::cout << std::setprecision(10) << data_title << "Carrier Doppler RMSE = " + << rmse_ch0 << ", mean = " << error_mean_ch0 + << ", stdev = " << sqrt(error_var_ch0) + << " (max,min) = " << max_error_ch0 + << "," << min_error_ch0 + << " [Hz]" << std::endl; + std::cout.precision(ss); + + //plots + if (FLAGS_show_plots) + { + Gnuplot g3("linespoints"); + g3.set_title(data_title + "Carrier Doppler error [Hz]"); + g3.set_grid(); + g3.set_xlabel("Time [s]"); + g3.set_ylabel("Carrier Doppler error [Hz]"); + //conversion between arma::vec and std:vector + std::vector error_vec(err_ch0_hz.colptr(0), err_ch0_hz.colptr(0) + err_ch0_hz.n_rows); + g3.cmd("set key box opaque"); + g3.plot_xy(time_vector, error_vec, + "Carrier Doppler error"); + g3.set_legend(); + g3.savetops(data_title + "Carrier_doppler_error"); + + g3.showonscreen(); // window output + } + + //check results against the test tolerance + EXPECT_LT(error_mean_ch0, 5); + EXPECT_GT(error_mean_ch0, -5); + //assuming PLL BW=35 + EXPECT_LT(error_var_ch0, 250); + EXPECT_LT(max_error_ch0, 100); + EXPECT_GT(min_error_ch0, -100); + EXPECT_LT(rmse_ch0, 30); + + //Carrier Phase error + //2. RMSE + arma::vec err_carrier_phase; + + err_carrier_phase = delta_measured_carrier_phase_cycles; + + //save matlab file for further analysis + std::vector tmp_vector_err_carrier_phase(err_carrier_phase.colptr(0), + err_carrier_phase.colptr(0) + err_carrier_phase.n_rows); + save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_carrier_phase, std::string("measured_carrier_phase_error_ch_" + std::to_string(ch_id))); + + + arma::vec err2_carrier_phase = arma::square(err_carrier_phase); + double rmse_carrier_phase = sqrt(arma::mean(err2_carrier_phase)); + + //3. Mean err and variance + double error_mean_carrier_phase = arma::mean(err_carrier_phase); + double error_var_carrier_phase = arma::var(err_carrier_phase); + + // 4. Peaks + double max_error_carrier_phase = arma::max(err_carrier_phase); + double min_error_carrier_phase = arma::min(err_carrier_phase); + + //5. report + ss = std::cout.precision(); + std::cout << std::setprecision(10) << data_title << "Carrier Phase RMSE = " + << rmse_carrier_phase << ", mean = " << error_mean_carrier_phase + << ", stdev = " << sqrt(error_var_carrier_phase) + << " (max,min) = " << max_error_carrier_phase + << "," << min_error_carrier_phase + << " [Cycles]" << std::endl; + std::cout.precision(ss); + + //plots + if (FLAGS_show_plots) + { + Gnuplot g3("linespoints"); + g3.set_title(data_title + "Carrier Phase error [Cycles]"); + g3.set_grid(); + g3.set_xlabel("Time [s]"); + g3.set_ylabel("Carrier Phase error [Cycles]"); + //conversion between arma::vec and std:vector + std::vector range_error_m(err_carrier_phase.colptr(0), err_carrier_phase.colptr(0) + err_carrier_phase.n_rows); + g3.cmd("set key box opaque"); + g3.plot_xy(time_vector, range_error_m, + "Carrier Phase error"); + g3.set_legend(); + g3.savetops(data_title + "duplicated_satellite_carrier_phase_error"); + + g3.showonscreen(); // window output + } + + //check results against the test tolerance + EXPECT_LT(rmse_carrier_phase, 0.25); + EXPECT_LT(error_mean_carrier_phase, 0.2); + EXPECT_GT(error_mean_carrier_phase, -0.2); + EXPECT_LT(error_var_carrier_phase, 0.5); + EXPECT_LT(max_error_carrier_phase, 0.5); + EXPECT_GT(min_error_carrier_phase, -0.5); + + //Pseudorange error + //2. RMSE + arma::vec err_pseudorange; + + err_pseudorange = delta_measured_dist_m; + + //save matlab file for further analysis + std::vector tmp_vector_err_pseudorange(err_pseudorange.colptr(0), + err_pseudorange.colptr(0) + err_pseudorange.n_rows); + save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_pseudorange, std::string("measured_pr_error_ch_" + std::to_string(ch_id))); + + arma::vec err2_pseudorange = arma::square(err_pseudorange); + double rmse_pseudorange = sqrt(arma::mean(err2_pseudorange)); + + //3. Mean err and variance + double error_mean_pseudorange = arma::mean(err_pseudorange); + double error_var_pseudorange = arma::var(err_pseudorange); + + // 4. Peaks + double max_error_pseudorange = arma::max(err_pseudorange); + double min_error_pseudorange = arma::min(err_pseudorange); + + //5. report + ss = std::cout.precision(); + std::cout << std::setprecision(10) << data_title << "Pseudorange RMSE = " + << rmse_pseudorange << ", mean = " << error_mean_pseudorange + << ", stdev = " << sqrt(error_var_pseudorange) + << " (max,min) = " << max_error_pseudorange + << "," << min_error_pseudorange + << " [meters]" << std::endl; + std::cout.precision(ss); + + //plots + if (FLAGS_show_plots) + { + Gnuplot g3("linespoints"); + g3.set_title(data_title + "Pseudorange error [m]"); + g3.set_grid(); + g3.set_xlabel("Time [s]"); + g3.set_ylabel("Pseudorange error [m]"); + //conversion between arma::vec and std:vector + std::vector range_error_m(err_pseudorange.colptr(0), err_pseudorange.colptr(0) + err_pseudorange.n_rows); + g3.cmd("set key box opaque"); + g3.plot_xy(time_vector, range_error_m, + "Pseudorrange error"); + g3.set_legend(); + g3.savetops(data_title + "duplicated_satellite_pseudorrange_error"); + + g3.showonscreen(); // window output + } + + //check results against the test tolerance + EXPECT_LT(rmse_pseudorange, 3.0); + EXPECT_LT(error_mean_pseudorange, 1.0); + EXPECT_GT(error_mean_pseudorange, -1.0); + EXPECT_LT(error_var_pseudorange, 10.0); + EXPECT_LT(max_error_pseudorange, 10.0); + EXPECT_GT(min_error_pseudorange, -10.0); } - - //check results against the test tolerance - EXPECT_LT(error_mean_ch0, 5); - EXPECT_GT(error_mean_ch0, -5); - //assuming PLL BW=35 - EXPECT_LT(error_var_ch0, 250); - EXPECT_LT(max_error_ch0, 100); - EXPECT_GT(min_error_ch0, -100); - EXPECT_LT(rmse_ch0, 30); - - //Carrier Phase error - //2. RMSE - arma::vec err_carrier_phase; - - err_carrier_phase = delta_measured_carrier_phase_cycles; - - //save matlab file for further analysis - std::vector tmp_vector_err_carrier_phase(err_carrier_phase.colptr(0), - err_carrier_phase.colptr(0) + err_carrier_phase.n_rows); - save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_carrier_phase, std::string("measured_carrier_phase_error_ch_" + std::to_string(ch_id))); - - - arma::vec err2_carrier_phase = arma::square(err_carrier_phase); - double rmse_carrier_phase = sqrt(arma::mean(err2_carrier_phase)); - - //3. Mean err and variance - double error_mean_carrier_phase = arma::mean(err_carrier_phase); - double error_var_carrier_phase = arma::var(err_carrier_phase); - - // 4. Peaks - double max_error_carrier_phase = arma::max(err_carrier_phase); - double min_error_carrier_phase = arma::min(err_carrier_phase); - - //5. report - ss = std::cout.precision(); - std::cout << std::setprecision(10) << data_title << "Carrier Phase RMSE = " - << rmse_carrier_phase << ", mean = " << error_mean_carrier_phase - << ", stdev = " << sqrt(error_var_carrier_phase) - << " (max,min) = " << max_error_carrier_phase - << "," << min_error_carrier_phase - << " [Cycles]" << std::endl; - std::cout.precision(ss); - - //plots - if (FLAGS_show_plots) - { - Gnuplot g3("linespoints"); - g3.set_title(data_title + "Carrier Phase error [Cycles]"); - g3.set_grid(); - g3.set_xlabel("Time [s]"); - g3.set_ylabel("Carrier Phase error [Cycles]"); - //conversion between arma::vec and std:vector - std::vector range_error_m(err_carrier_phase.colptr(0), err_carrier_phase.colptr(0) + err_carrier_phase.n_rows); - g3.cmd("set key box opaque"); - g3.plot_xy(time_vector, range_error_m, - "Carrier Phase error"); - g3.set_legend(); - g3.savetops(data_title + "duplicated_satellite_carrier_phase_error"); - - g3.showonscreen(); // window output - } - - //check results against the test tolerance - EXPECT_LT(rmse_carrier_phase, 0.25); - EXPECT_LT(error_mean_carrier_phase, 0.2); - EXPECT_GT(error_mean_carrier_phase, -0.2); - EXPECT_LT(error_var_carrier_phase, 0.5); - EXPECT_LT(max_error_carrier_phase, 0.5); - EXPECT_GT(min_error_carrier_phase, -0.5); - - //Pseudorange error - //2. RMSE - arma::vec err_pseudorange; - - err_pseudorange = delta_measured_dist_m; - - //save matlab file for further analysis - std::vector tmp_vector_err_pseudorange(err_pseudorange.colptr(0), - err_pseudorange.colptr(0) + err_pseudorange.n_rows); - save_mat_xy(tmp_vector_common_time_s, tmp_vector_err_pseudorange, std::string("measured_pr_error_ch_" + std::to_string(ch_id))); - - arma::vec err2_pseudorange = arma::square(err_pseudorange); - double rmse_pseudorange = sqrt(arma::mean(err2_pseudorange)); - - //3. Mean err and variance - double error_mean_pseudorange = arma::mean(err_pseudorange); - double error_var_pseudorange = arma::var(err_pseudorange); - - // 4. Peaks - double max_error_pseudorange = arma::max(err_pseudorange); - double min_error_pseudorange = arma::min(err_pseudorange); - - //5. report - ss = std::cout.precision(); - std::cout << std::setprecision(10) << data_title << "Pseudorange RMSE = " - << rmse_pseudorange << ", mean = " << error_mean_pseudorange - << ", stdev = " << sqrt(error_var_pseudorange) - << " (max,min) = " << max_error_pseudorange - << "," << min_error_pseudorange - << " [meters]" << std::endl; - std::cout.precision(ss); - - //plots - if (FLAGS_show_plots) - { - Gnuplot g3("linespoints"); - g3.set_title(data_title + "Pseudorange error [m]"); - g3.set_grid(); - g3.set_xlabel("Time [s]"); - g3.set_ylabel("Pseudorange error [m]"); - //conversion between arma::vec and std:vector - std::vector range_error_m(err_pseudorange.colptr(0), err_pseudorange.colptr(0) + err_pseudorange.n_rows); - g3.cmd("set key box opaque"); - g3.plot_xy(time_vector, range_error_m, - "Pseudorrange error"); - g3.set_legend(); - g3.savetops(data_title + "duplicated_satellite_pseudorrange_error"); - - g3.showonscreen(); // window output - } - - //check results against the test tolerance - EXPECT_LT(rmse_pseudorange, 3.0); - EXPECT_LT(error_mean_pseudorange, 1.0); - EXPECT_GT(error_mean_pseudorange, -1.0); - EXPECT_LT(error_var_pseudorange, 10.0); - EXPECT_LT(max_error_pseudorange, 10.0); - EXPECT_GT(min_error_pseudorange, -10.0); } bool HybridObservablesTest::save_mat_xy(std::vector& x, std::vector& y, std::string filename) @@ -1420,77 +1435,82 @@ void HybridObservablesTest::check_results_code_pseudorange( int size2 = measured_ch1.col(0).n_rows; double t1 = std::min(measured_ch0(size1 - 1, 0), measured_ch1(size2 - 1, 0)); - arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); - //conversion between arma::vec and std:vector - arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); - std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); - - - arma::vec true_ch0_dist_interp; - arma::vec true_ch1_dist_interp; - arma::interp1(true_tow_ch0_s, true_ch0.col(1), t, true_ch0_dist_interp); - arma::interp1(true_tow_ch1_s, true_ch1.col(1), t, true_ch1_dist_interp); - - arma::vec meas_ch0_dist_interp; - arma::vec meas_ch1_dist_interp; - arma::interp1(measured_ch0.col(0), measured_ch0.col(4), t, meas_ch0_dist_interp); - arma::interp1(measured_ch1.col(0), measured_ch1.col(4), t, meas_ch1_dist_interp); - - // generate delta pseudoranges - arma::vec delta_true_dist_m = true_ch0_dist_interp - true_ch1_dist_interp; - arma::vec delta_measured_dist_m = meas_ch0_dist_interp - meas_ch1_dist_interp; - - //2. RMSE - arma::vec err; - - err = delta_measured_dist_m - delta_true_dist_m; - arma::vec err2 = arma::square(err); - double rmse = sqrt(arma::mean(err2)); - - //3. Mean err and variance - double error_mean = arma::mean(err); - double error_var = arma::var(err); - - // 4. Peaks - double max_error = arma::max(err); - double min_error = arma::min(err); - - //5. report - std::streamsize ss = std::cout.precision(); - std::cout << std::setprecision(10) << data_title << "Double diff Pseudorange RMSE = " - << rmse << ", mean = " << error_mean - << ", stdev = " << sqrt(error_var) - << " (max,min) = " << max_error - << "," << min_error - << " [meters]" << std::endl; - std::cout.precision(ss); - - //plots - if (FLAGS_show_plots) + if ((t1 - t0) > 0) { - Gnuplot g3("linespoints"); - g3.set_title(data_title + "Double diff Pseudorange error [m]"); - g3.set_grid(); - g3.set_xlabel("Time [s]"); - g3.set_ylabel("Double diff Pseudorange error [m]"); + arma::vec t = arma::linspace(t0, t1, floor((t1 - t0) * 1e3)); //conversion between arma::vec and std:vector - std::vector range_error_m(err.colptr(0), err.colptr(0) + err.n_rows); - g3.cmd("set key box opaque"); - g3.plot_xy(time_vector, range_error_m, - "Double diff Pseudorrange error"); - g3.set_legend(); - g3.savetops(data_title + "double_diff_pseudorrange_error"); + arma::vec t_from_start = arma::linspace(0, t1 - t0, floor((t1 - t0) * 1e3)); + std::vector time_vector(t_from_start.colptr(0), t_from_start.colptr(0) + t_from_start.n_rows); + arma::vec true_ch0_dist_interp; + arma::vec true_ch1_dist_interp; + arma::interp1(true_tow_ch0_s, true_ch0.col(1), t, true_ch0_dist_interp); + arma::interp1(true_tow_ch1_s, true_ch1.col(1), t, true_ch1_dist_interp); - g3.showonscreen(); // window output + arma::vec meas_ch0_dist_interp; + arma::vec meas_ch1_dist_interp; + arma::interp1(measured_ch0.col(0), measured_ch0.col(4), t, meas_ch0_dist_interp); + arma::interp1(measured_ch1.col(0), measured_ch1.col(4), t, meas_ch1_dist_interp); + + // generate delta pseudoranges + arma::vec delta_true_dist_m = true_ch0_dist_interp - true_ch1_dist_interp; + arma::vec delta_measured_dist_m = meas_ch0_dist_interp - meas_ch1_dist_interp; + + //2. RMSE + arma::vec err; + + err = delta_measured_dist_m - delta_true_dist_m; + arma::vec err2 = arma::square(err); + double rmse = sqrt(arma::mean(err2)); + + //3. Mean err and variance + double error_mean = arma::mean(err); + double error_var = arma::var(err); + + // 4. Peaks + double max_error = arma::max(err); + double min_error = arma::min(err); + + //5. report + std::streamsize ss = std::cout.precision(); + std::cout << std::setprecision(10) << data_title << "Double diff Pseudorange RMSE = " + << rmse << ", mean = " << error_mean + << ", stdev = " << sqrt(error_var) + << " (max,min) = " << max_error + << "," << min_error + << " [meters]" << std::endl; + std::cout.precision(ss); + + //plots + if (FLAGS_show_plots) + { + Gnuplot g3("linespoints"); + g3.set_title(data_title + "Double diff Pseudorange error [m]"); + g3.set_grid(); + g3.set_xlabel("Time [s]"); + g3.set_ylabel("Double diff Pseudorange error [m]"); + //conversion between arma::vec and std:vector + std::vector range_error_m(err.colptr(0), err.colptr(0) + err.n_rows); + g3.cmd("set key box opaque"); + g3.plot_xy(time_vector, range_error_m, + "Double diff Pseudorrange error"); + g3.set_legend(); + g3.savetops(data_title + "double_diff_pseudorrange_error"); + + g3.showonscreen(); // window output + } + + //check results against the test tolerance + ASSERT_LT(rmse, 3.0); + ASSERT_LT(error_mean, 1.0); + ASSERT_GT(error_mean, -1.0); + ASSERT_LT(error_var, 10.0); + ASSERT_LT(max_error, 10.0); + ASSERT_GT(min_error, -10.0); + } + else + { + std::cout << "Problem with observables in " << data_title << std::endl; } - - //check results against the test tolerance - ASSERT_LT(rmse, 3.0); - ASSERT_LT(error_mean, 1.0); - ASSERT_GT(error_mean, -1.0); - ASSERT_LT(error_var, 10.0); - ASSERT_LT(max_error, 10.0); - ASSERT_GT(min_error, -10.0); } bool HybridObservablesTest::ReadRinexObs(std::vector* obs_vec, Gnss_Synchro gnss) @@ -1981,7 +2001,7 @@ TEST_F(HybridObservablesTest, ValidationOfResults) int sat2_ch_id = -1; for (unsigned int ch = 0; ch < measured_obs_vec.size(); ch++) { - if (epoch_counters_vec.at(ch) > 10) //discard non-valid channels + if (epoch_counters_vec.at(ch) > 100) //discard non-valid channels { if (gnss_synchro_vec.at(ch).PRN == prn_pairs.at(n)) { @@ -2023,7 +2043,7 @@ TEST_F(HybridObservablesTest, ValidationOfResults) unsigned int min_pr_ch_id = 0; for (unsigned int n = 0; n < measured_obs_vec.size(); n++) { - if (epoch_counters_vec.at(n) > 10) //discard non-valid channels + if (epoch_counters_vec.at(n) > 100) //discard non-valid channels { { if (measured_obs_vec.at(n)(0, 4) < min_pr) @@ -2040,8 +2060,20 @@ TEST_F(HybridObservablesTest, ValidationOfResults) } arma::vec receiver_time_offset_ref_channel_s; - receiver_time_offset_ref_channel_s = (true_obs_vec.at(min_pr_ch_id).col(1)(0) - measured_obs_vec.at(min_pr_ch_id).col(4)(0)) / GPS_C_M_S; - std::cout << "Ref. channel initial Receiver time offset " << receiver_time_offset_ref_channel_s(0) * 1e3 << " [ms]" << std::endl; + arma::uvec index2; + index2 = arma::find(true_obs_vec.at(min_pr_ch_id).col(0) >= measured_obs_vec.at(min_pr_ch_id).col(0)(0), 1, "first"); + if ((!index2.empty()) and (index2(0) > 0)) + { + receiver_time_offset_ref_channel_s = (true_obs_vec.at(min_pr_ch_id).col(1)(index2(0)) - measured_obs_vec.at(min_pr_ch_id).col(4)(0)) / GPS_C_M_S; + std::cout << "Ref. channel initial Receiver time offset " << receiver_time_offset_ref_channel_s(0) * 1e3 << " [ms]" << std::endl; + } + else + { + ASSERT_NO_THROW( + throw std::exception();) + << "Error finding observation time epoch in the reference data"; + } + for (unsigned int n = 0; n < measured_obs_vec.size(); n++) { @@ -2083,7 +2115,7 @@ TEST_F(HybridObservablesTest, ValidationOfResults) save_mat_xy(tmp_vector_x6, tmp_vector_y6, std::string("measured_cp_ch_" + std::to_string(n))); - if (epoch_counters_vec.at(n) > 10) //discard non-valid channels + if (epoch_counters_vec.at(n) > 100) //discard non-valid channels { arma::vec true_TOW_ref_ch_s = true_obs_vec.at(min_pr_ch_id).col(0) - receiver_time_offset_ref_channel_s(0); arma::vec true_TOW_ch_s = true_obs_vec.at(n).col(0) - receiver_time_offset_ref_channel_s(0); @@ -2097,7 +2129,6 @@ TEST_F(HybridObservablesTest, ValidationOfResults) measured_obs_vec.at(n), measured_obs_vec.at(min_pr_ch_id), "[CH " + std::to_string(n) + "] PRN " + std::to_string(gnss_synchro_vec.at(n).PRN) + " "); - //Do not compare E5a with E5 RINEX due to the Doppler frequency discrepancy caused by the different center frequencies //E5a_fc=1176.45e6, E5b_fc=1207.14e6, E5_fc=1191.795e6; if (strcmp("5X\0", gnss_synchro_vec.at(n).Signal) != 0 or FLAGS_compare_with_5X) diff --git a/src/tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc b/src/tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc index d8ce67450..553637df8 100644 --- a/src/tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/resampler/direct_resampler_conditioner_cc_test.cc @@ -42,7 +42,7 @@ #include "direct_resampler_conditioner_cc.h" #include "gnss_sdr_valve.h" #include -#include +#include "concurrent_queue.h" TEST(DirectResamplerConditionerCcTest, InstantiationAndRunTest) @@ -52,7 +52,7 @@ TEST(DirectResamplerConditionerCcTest, InstantiationAndRunTest) std::chrono::time_point start, end; std::chrono::duration elapsed_seconds(0); int nsamples = 1000000; //Number of samples to be computed - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); gr::top_block_sptr top_block = gr::make_top_block("direct_resampler_conditioner_cc_test"); boost::shared_ptr source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000.0, 1.0, gr_complex(0.0)); boost::shared_ptr valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue); diff --git a/src/tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc b/src/tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc index 2bc26b8b4..571230f03 100644 --- a/src/tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/resampler/mmse_resampler_test.cc @@ -40,7 +40,7 @@ #include "gnss_sdr_valve.h" #include "mmse_resampler_conditioner.h" #include -#include +#include "concurrent_queue.h" TEST(MmseResamplerTest, InstantiationAndRunTestWarning) { @@ -49,7 +49,7 @@ TEST(MmseResamplerTest, InstantiationAndRunTestWarning) std::chrono::time_point start, end; std::chrono::duration elapsed_seconds(0); int nsamples = 1000000; //Number of samples to be computed - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); gr::top_block_sptr top_block = gr::make_top_block("mmse_resampler_conditioner_cc_test"); boost::shared_ptr source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000.0, 1.0, gr_complex(0.0)); boost::shared_ptr valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue); @@ -90,7 +90,7 @@ TEST(MmseResamplerTest, InstantiationAndRunTest2) std::chrono::time_point start, end; std::chrono::duration elapsed_seconds(0); int nsamples = 1000000; //Number of samples to be computed - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); gr::top_block_sptr top_block = gr::make_top_block("mmse_resampler_conditioner_cc_test"); boost::shared_ptr source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000.0, 1.0, gr_complex(0.0)); boost::shared_ptr valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue); diff --git a/src/tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc b/src/tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc index dd1020249..bc7eb5acb 100644 --- a/src/tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/sources/file_signal_source_test.cc @@ -31,7 +31,7 @@ #include "file_signal_source.h" #include "in_memory_configuration.h" -#include +#include "concurrent_queue.h" #include #include #include diff --git a/src/tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc b/src/tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc index 02e1b09df..4c460b63f 100644 --- a/src/tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/sources/gnss_sdr_valve_test.cc @@ -40,11 +40,11 @@ #endif #include "gnss_sdr_valve.h" #include -#include +#include "concurrent_queue.h" TEST(ValveTest, CheckEventSentAfter100Samples) { - gr::msg_queue::sptr queue = gr::msg_queue::make(0); + std::shared_ptr> queue = gr::msg_queue::make(0); gr::top_block_sptr top_block = gr::make_top_block("gnss_sdr_valve_test"); diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc index 469ec2c27..bf78395bf 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e1_dll_pll_veml_tracking_test.cc @@ -41,7 +41,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -68,7 +68,7 @@ protected: void init(); - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc index 122184eb7..6c4b8e0ef 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/galileo_e5a_tracking_test.cc @@ -41,7 +41,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -69,7 +69,7 @@ protected: void init(); - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc index 003c63a9d..1fa07acc4 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_c_aid_tracking_test.cc @@ -42,7 +42,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -119,7 +119,7 @@ protected: void init(); - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc index 20a910ce4..207217937 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/glonass_l1_ca_dll_pll_tracking_test.cc @@ -42,7 +42,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -120,7 +120,7 @@ protected: void init(); - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc index a640db425..59a63480e 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/gps_l2_m_dll_pll_tracking_test.cc @@ -42,7 +42,7 @@ #include #include #include -#include +#include "concurrent_queue.h" #include #include #include @@ -123,7 +123,7 @@ protected: void init(); - gr::msg_queue::sptr queue; + std::shared_ptr> queue; gr::top_block_sptr top_block; std::shared_ptr factory; std::shared_ptr config; diff --git a/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc b/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc index fb38b8efa..9b9e04baf 100644 --- a/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc +++ b/src/tests/unit-tests/signal-processing-blocks/tracking/tracking_pull-in_test.cc @@ -36,7 +36,7 @@ #include "Galileo_E1.h" #include "Galileo_E5a.h" #include "acquisition_msg_rx.h" -#include "control_message_factory.h" +#include "concurrent_queue.h" #include "galileo_e1_pcps_ambiguous_acquisition.h" #include "galileo_e5a_noncoherent_iq_acquisition_caf.h" #include "galileo_e5a_pcps_acquisition.h" @@ -61,7 +61,6 @@ #include #include #include -#include #include #include #include @@ -229,7 +228,7 @@ public: Gnss_Synchro gnss_synchro; size_t item_size; - gr::msg_queue::sptr queue; + std::shared_ptr> queue; }; diff --git a/src/utils/front-end-cal/main.cc b/src/utils/front-end-cal/main.cc index 54723dfc5..e5f8e8520 100644 --- a/src/utils/front-end-cal/main.cc +++ b/src/utils/front-end-cal/main.cc @@ -62,7 +62,7 @@ #include #include // for gr_complex #include // for io_signature -#include +#include "concurrent_queue.h" #include // for block_sptr #include #include // for pmt_t, to_long