mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-15 12:40:35 +00:00
Merge branch 'make-unique' into next
This commit is contained in:
commit
c237f72a51
@ -26,6 +26,9 @@ SPDX-FileCopyrightText: 2011-2020 Carles Fernandez-Prades <carles.fernandez@cttc
|
|||||||
smart pointers instead of Boost smart pointers.
|
smart pointers instead of Boost smart pointers.
|
||||||
- The software can now be built against Boost <= 1.73 (minimum version: 1.53).
|
- The software can now be built against Boost <= 1.73 (minimum version: 1.53).
|
||||||
- Removed python six module as a dependency if using Python 3.x.
|
- Removed python six module as a dependency if using Python 3.x.
|
||||||
|
- Improved usage of smart pointers to better express ownership.
|
||||||
|
- Add definition of std::make_unique for buidings with C++11, and make use of it
|
||||||
|
along the source code.
|
||||||
- Fixed building with GCC 10 (gcc-10 and above flipped a default from `-fcommon`
|
- Fixed building with GCC 10 (gcc-10 and above flipped a default from `-fcommon`
|
||||||
to `-fno-common`, causing an error due to multiple defined lambda functions).
|
to `-fno-common`, causing an error due to multiple defined lambda functions).
|
||||||
- Fixed warnings risen by GCC 10 and Clang 10.
|
- Fixed warnings risen by GCC 10 and Clang 10.
|
||||||
|
@ -35,6 +35,7 @@
|
|||||||
#include "glonass_gnav_utc_model.h"
|
#include "glonass_gnav_utc_model.h"
|
||||||
#include "gnss_frequencies.h"
|
#include "gnss_frequencies.h"
|
||||||
#include "gnss_sdr_create_directory.h"
|
#include "gnss_sdr_create_directory.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gps_almanac.h"
|
#include "gps_almanac.h"
|
||||||
#include "gps_cnav_ephemeris.h"
|
#include "gps_cnav_ephemeris.h"
|
||||||
#include "gps_cnav_iono.h"
|
#include "gps_cnav_iono.h"
|
||||||
@ -137,13 +138,11 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
mapStringValues_["B2"] = evBDS_B2;
|
mapStringValues_["B2"] = evBDS_B2;
|
||||||
mapStringValues_["B3"] = evBDS_B3;
|
mapStringValues_["B3"] = evBDS_B3;
|
||||||
|
|
||||||
|
|
||||||
initial_carrier_phase_offset_estimation_rads = std::vector<double>(nchannels, 0.0);
|
initial_carrier_phase_offset_estimation_rads = std::vector<double>(nchannels, 0.0);
|
||||||
channel_initialized = std::vector<bool>(nchannels, false);
|
channel_initialized = std::vector<bool>(nchannels, false);
|
||||||
|
|
||||||
max_obs_block_rx_clock_offset_ms = conf_.max_obs_block_rx_clock_offset_ms;
|
max_obs_block_rx_clock_offset_ms = conf_.max_obs_block_rx_clock_offset_ms;
|
||||||
|
|
||||||
|
|
||||||
d_output_rate_ms = conf_.output_rate_ms;
|
d_output_rate_ms = conf_.output_rate_ms;
|
||||||
d_display_rate_ms = conf_.display_rate_ms;
|
d_display_rate_ms = conf_.display_rate_ms;
|
||||||
d_report_rate_ms = 1000; // report every second PVT to gnss_synchro
|
d_report_rate_ms = 1000; // report every second PVT to gnss_synchro
|
||||||
@ -211,7 +210,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
}
|
}
|
||||||
if (d_kml_output_enabled)
|
if (d_kml_output_enabled)
|
||||||
{
|
{
|
||||||
d_kml_dump = std::make_shared<Kml_Printer>(conf_.kml_output_path);
|
d_kml_dump = std::make_unique<Kml_Printer>(conf_.kml_output_path);
|
||||||
d_kml_dump->set_headers(kml_dump_filename);
|
d_kml_dump->set_headers(kml_dump_filename);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -230,7 +229,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
}
|
}
|
||||||
if (d_gpx_output_enabled)
|
if (d_gpx_output_enabled)
|
||||||
{
|
{
|
||||||
d_gpx_dump = std::make_shared<Gpx_Printer>(conf_.gpx_output_path);
|
d_gpx_dump = std::make_unique<Gpx_Printer>(conf_.gpx_output_path);
|
||||||
d_gpx_dump->set_headers(gpx_dump_filename);
|
d_gpx_dump->set_headers(gpx_dump_filename);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -249,7 +248,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
}
|
}
|
||||||
if (d_geojson_output_enabled)
|
if (d_geojson_output_enabled)
|
||||||
{
|
{
|
||||||
d_geojson_printer = std::make_shared<GeoJSON_Printer>(conf_.geojson_output_path);
|
d_geojson_printer = std::make_unique<GeoJSON_Printer>(conf_.geojson_output_path);
|
||||||
d_geojson_printer->set_headers(geojson_dump_filename);
|
d_geojson_printer->set_headers(geojson_dump_filename);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -267,7 +266,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
|
|
||||||
if (d_nmea_output_file_enabled)
|
if (d_nmea_output_file_enabled)
|
||||||
{
|
{
|
||||||
d_nmea_printer = std::make_shared<Nmea_Printer>(conf_.nmea_dump_filename, conf_.nmea_output_file_enabled, conf_.flag_nmea_tty_port, conf_.nmea_dump_devname, conf_.nmea_output_file_path);
|
d_nmea_printer = std::make_unique<Nmea_Printer>(conf_.nmea_dump_filename, conf_.nmea_output_file_enabled, conf_.flag_nmea_tty_port, conf_.nmea_dump_devname, conf_.nmea_output_file_path);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -279,7 +278,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
rtcm_dump_filename = d_dump_filename;
|
rtcm_dump_filename = d_dump_filename;
|
||||||
if (conf_.flag_rtcm_server or conf_.flag_rtcm_tty_port or conf_.rtcm_output_file_enabled)
|
if (conf_.flag_rtcm_server or conf_.flag_rtcm_tty_port or conf_.rtcm_output_file_enabled)
|
||||||
{
|
{
|
||||||
d_rtcm_printer = std::make_shared<Rtcm_Printer>(rtcm_dump_filename, conf_.rtcm_output_file_enabled, conf_.flag_rtcm_server, conf_.flag_rtcm_tty_port, conf_.rtcm_tcp_port, conf_.rtcm_station_id, conf_.rtcm_dump_devname, true, conf_.rtcm_output_file_path);
|
d_rtcm_printer = std::make_unique<Rtcm_Printer>(rtcm_dump_filename, conf_.rtcm_output_file_enabled, conf_.flag_rtcm_server, conf_.flag_rtcm_tty_port, conf_.rtcm_tcp_port, conf_.rtcm_station_id, conf_.rtcm_dump_devname, true, conf_.rtcm_output_file_path);
|
||||||
std::map<int, int> rtcm_msg_rate_ms = conf_.rtcm_msg_rate_ms;
|
std::map<int, int> rtcm_msg_rate_ms = conf_.rtcm_msg_rate_ms;
|
||||||
if (rtcm_msg_rate_ms.find(1019) != rtcm_msg_rate_ms.end())
|
if (rtcm_msg_rate_ms.find(1019) != rtcm_msg_rate_ms.end())
|
||||||
{
|
{
|
||||||
@ -355,7 +354,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
d_rinex_version = conf_.rinex_version;
|
d_rinex_version = conf_.rinex_version;
|
||||||
if (b_rinex_output_enabled)
|
if (b_rinex_output_enabled)
|
||||||
{
|
{
|
||||||
rp = std::make_shared<Rinex_Printer>(d_rinex_version, conf_.rinex_output_path, conf_.rinex_name);
|
rp = std::make_unique<Rinex_Printer>(d_rinex_version, conf_.rinex_output_path, conf_.rinex_name);
|
||||||
rp->set_pre_2009_file(conf_.pre_2009_file);
|
rp->set_pre_2009_file(conf_.pre_2009_file);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
@ -413,7 +412,7 @@ rtklib_pvt_gs::rtklib_pvt_gs(uint32_t nchannels,
|
|||||||
std::sort(udp_addr_vec.begin(), udp_addr_vec.end());
|
std::sort(udp_addr_vec.begin(), udp_addr_vec.end());
|
||||||
udp_addr_vec.erase(std::unique(udp_addr_vec.begin(), udp_addr_vec.end()), udp_addr_vec.end());
|
udp_addr_vec.erase(std::unique(udp_addr_vec.begin(), udp_addr_vec.end()), udp_addr_vec.end());
|
||||||
|
|
||||||
udp_sink_ptr = std::unique_ptr<Monitor_Pvt_Udp_Sink>(new Monitor_Pvt_Udp_Sink(udp_addr_vec, conf_.udp_port, conf_.protobuf_enabled));
|
udp_sink_ptr = std::make_unique<Monitor_Pvt_Udp_Sink>(udp_addr_vec, conf_.udp_port, conf_.protobuf_enabled);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
@ -2283,28 +2282,28 @@ int rtklib_pvt_gs::work(int noutput_items, gr_vector_const_void_star& input_item
|
|||||||
{
|
{
|
||||||
if (current_RX_time_ms % d_kml_rate_ms == 0)
|
if (current_RX_time_ms % d_kml_rate_ms == 0)
|
||||||
{
|
{
|
||||||
d_kml_dump->print_position(d_user_pvt_solver, false);
|
d_kml_dump->print_position(d_user_pvt_solver.get(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d_gpx_output_enabled)
|
if (d_gpx_output_enabled)
|
||||||
{
|
{
|
||||||
if (current_RX_time_ms % d_gpx_rate_ms == 0)
|
if (current_RX_time_ms % d_gpx_rate_ms == 0)
|
||||||
{
|
{
|
||||||
d_gpx_dump->print_position(d_user_pvt_solver, false);
|
d_gpx_dump->print_position(d_user_pvt_solver.get(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d_geojson_output_enabled)
|
if (d_geojson_output_enabled)
|
||||||
{
|
{
|
||||||
if (current_RX_time_ms % d_geojson_rate_ms == 0)
|
if (current_RX_time_ms % d_geojson_rate_ms == 0)
|
||||||
{
|
{
|
||||||
d_geojson_printer->print_position(d_user_pvt_solver, false);
|
d_geojson_printer->print_position(d_user_pvt_solver.get(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (d_nmea_output_file_enabled)
|
if (d_nmea_output_file_enabled)
|
||||||
{
|
{
|
||||||
if (current_RX_time_ms % d_nmea_rate_ms == 0)
|
if (current_RX_time_ms % d_nmea_rate_ms == 0)
|
||||||
{
|
{
|
||||||
d_nmea_printer->Print_Nmea_Line(d_user_pvt_solver, false);
|
d_nmea_printer->Print_Nmea_Line(d_user_pvt_solver.get(), false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -191,12 +191,12 @@ private:
|
|||||||
int32_t d_display_rate_ms;
|
int32_t d_display_rate_ms;
|
||||||
int32_t d_report_rate_ms;
|
int32_t d_report_rate_ms;
|
||||||
|
|
||||||
std::shared_ptr<Rinex_Printer> rp;
|
std::unique_ptr<Rinex_Printer> rp;
|
||||||
std::shared_ptr<Kml_Printer> d_kml_dump;
|
std::unique_ptr<Kml_Printer> d_kml_dump;
|
||||||
std::shared_ptr<Gpx_Printer> d_gpx_dump;
|
std::unique_ptr<Gpx_Printer> d_gpx_dump;
|
||||||
std::shared_ptr<Nmea_Printer> d_nmea_printer;
|
std::unique_ptr<Nmea_Printer> d_nmea_printer;
|
||||||
std::shared_ptr<GeoJSON_Printer> d_geojson_printer;
|
std::unique_ptr<GeoJSON_Printer> d_geojson_printer;
|
||||||
std::shared_ptr<Rtcm_Printer> d_rtcm_printer;
|
std::unique_ptr<Rtcm_Printer> d_rtcm_printer;
|
||||||
double d_rx_time;
|
double d_rx_time;
|
||||||
|
|
||||||
bool d_geojson_output_enabled;
|
bool d_geojson_output_enabled;
|
||||||
|
@ -176,25 +176,23 @@ bool GeoJSON_Printer::set_headers(const std::string& filename, bool time_tag_nam
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool GeoJSON_Printer::print_position(const std::shared_ptr<Pvt_Solution>& position, bool print_average_values)
|
bool GeoJSON_Printer::print_position(const Pvt_Solution* position, bool print_average_values)
|
||||||
{
|
{
|
||||||
double latitude;
|
double latitude;
|
||||||
double longitude;
|
double longitude;
|
||||||
double height;
|
double height;
|
||||||
|
|
||||||
const std::shared_ptr<Pvt_Solution>& position_ = position;
|
|
||||||
|
|
||||||
if (print_average_values == false)
|
if (print_average_values == false)
|
||||||
{
|
{
|
||||||
latitude = position_->get_latitude();
|
latitude = position->get_latitude();
|
||||||
longitude = position_->get_longitude();
|
longitude = position->get_longitude();
|
||||||
height = position_->get_height();
|
height = position->get_height();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
latitude = position_->get_avg_latitude();
|
latitude = position->get_avg_latitude();
|
||||||
longitude = position_->get_avg_longitude();
|
longitude = position->get_avg_longitude();
|
||||||
height = position_->get_avg_height();
|
height = position->get_avg_height();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (geojson_file.is_open())
|
if (geojson_file.is_open())
|
||||||
|
@ -40,7 +40,7 @@ public:
|
|||||||
explicit GeoJSON_Printer(const std::string& base_path = ".");
|
explicit GeoJSON_Printer(const std::string& base_path = ".");
|
||||||
~GeoJSON_Printer();
|
~GeoJSON_Printer();
|
||||||
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
||||||
bool print_position(const std::shared_ptr<Pvt_Solution>& position, bool print_average_values);
|
bool print_position(const Pvt_Solution* position, bool print_average_values);
|
||||||
bool close_file();
|
bool close_file();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "gpx_printer.h"
|
#include "gpx_printer.h"
|
||||||
#include "rtklib_solver.h"
|
#include "pvt_solution.h"
|
||||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <ctime> // for tm
|
#include <ctime> // for tm
|
||||||
@ -162,22 +162,21 @@ bool Gpx_Printer::set_headers(const std::string& filename, bool time_tag_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Gpx_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position, bool print_average_values)
|
bool Gpx_Printer::print_position(const Pvt_Solution* position, bool print_average_values)
|
||||||
{
|
{
|
||||||
double latitude;
|
double latitude;
|
||||||
double longitude;
|
double longitude;
|
||||||
double height;
|
double height;
|
||||||
|
|
||||||
positions_printed = true;
|
positions_printed = true;
|
||||||
const std::shared_ptr<Rtklib_Solver>& position_ = position;
|
|
||||||
|
|
||||||
double speed_over_ground = position_->get_speed_over_ground(); // expressed in m/s
|
double speed_over_ground = position->get_speed_over_ground(); // expressed in m/s
|
||||||
double course_over_ground = position_->get_course_over_ground(); // expressed in deg
|
double course_over_ground = position->get_course_over_ground(); // expressed in deg
|
||||||
|
|
||||||
double hdop = position_->get_hdop();
|
double hdop = position->get_hdop();
|
||||||
double vdop = position_->get_vdop();
|
double vdop = position->get_vdop();
|
||||||
double pdop = position_->get_pdop();
|
double pdop = position->get_pdop();
|
||||||
std::string utc_time = to_iso_extended_string(position_->get_position_UTC_time());
|
std::string utc_time = to_iso_extended_string(position->get_position_UTC_time());
|
||||||
if (utc_time.length() < 23)
|
if (utc_time.length() < 23)
|
||||||
{
|
{
|
||||||
utc_time += ".";
|
utc_time += ".";
|
||||||
@ -187,15 +186,15 @@ bool Gpx_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position,
|
|||||||
|
|
||||||
if (print_average_values == false)
|
if (print_average_values == false)
|
||||||
{
|
{
|
||||||
latitude = position_->get_latitude();
|
latitude = position->get_latitude();
|
||||||
longitude = position_->get_longitude();
|
longitude = position->get_longitude();
|
||||||
height = position_->get_height();
|
height = position->get_height();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
latitude = position_->get_avg_latitude();
|
latitude = position->get_avg_latitude();
|
||||||
longitude = position_->get_avg_longitude();
|
longitude = position->get_avg_longitude();
|
||||||
height = position_->get_avg_height();
|
height = position->get_avg_height();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (gpx_file.is_open())
|
if (gpx_file.is_open())
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
#include <memory>
|
#include <memory>
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class Rtklib_Solver;
|
class Pvt_Solution;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Prints PVT information to GPX format file
|
* \brief Prints PVT information to GPX format file
|
||||||
@ -40,7 +40,7 @@ public:
|
|||||||
explicit Gpx_Printer(const std::string& base_path = ".");
|
explicit Gpx_Printer(const std::string& base_path = ".");
|
||||||
~Gpx_Printer();
|
~Gpx_Printer();
|
||||||
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
||||||
bool print_position(const std::shared_ptr<Rtklib_Solver>& position, bool print_average_values);
|
bool print_position(const Pvt_Solution* position, bool print_average_values);
|
||||||
bool close_file();
|
bool close_file();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -20,7 +20,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "kml_printer.h"
|
#include "kml_printer.h"
|
||||||
#include "rtklib_solver.h"
|
#include "pvt_solution.h"
|
||||||
#include <boost/date_time/posix_time/posix_time.hpp>
|
#include <boost/date_time/posix_time/posix_time.hpp>
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <cstdlib> // for mkstemp
|
#include <cstdlib> // for mkstemp
|
||||||
@ -231,7 +231,7 @@ bool Kml_Printer::set_headers(const std::string& filename, bool time_tag_name)
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Kml_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position, bool print_average_values)
|
bool Kml_Printer::print_position(const Pvt_Solution* position, bool print_average_values)
|
||||||
{
|
{
|
||||||
double latitude;
|
double latitude;
|
||||||
double longitude;
|
double longitude;
|
||||||
@ -239,15 +239,13 @@ bool Kml_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position,
|
|||||||
|
|
||||||
positions_printed = true;
|
positions_printed = true;
|
||||||
|
|
||||||
const std::shared_ptr<Rtklib_Solver>& position_ = position;
|
double speed_over_ground = position->get_speed_over_ground(); // expressed in m/s
|
||||||
|
double course_over_ground = position->get_course_over_ground(); // expressed in deg
|
||||||
|
|
||||||
double speed_over_ground = position_->get_speed_over_ground(); // expressed in m/s
|
double hdop = position->get_hdop();
|
||||||
double course_over_ground = position_->get_course_over_ground(); // expressed in deg
|
double vdop = position->get_vdop();
|
||||||
|
double pdop = position->get_pdop();
|
||||||
double hdop = position_->get_hdop();
|
std::string utc_time = to_iso_extended_string(position->get_position_UTC_time());
|
||||||
double vdop = position_->get_vdop();
|
|
||||||
double pdop = position_->get_pdop();
|
|
||||||
std::string utc_time = to_iso_extended_string(position_->get_position_UTC_time());
|
|
||||||
if (utc_time.length() < 23)
|
if (utc_time.length() < 23)
|
||||||
{
|
{
|
||||||
utc_time += ".";
|
utc_time += ".";
|
||||||
@ -257,15 +255,15 @@ bool Kml_Printer::print_position(const std::shared_ptr<Rtklib_Solver>& position,
|
|||||||
|
|
||||||
if (print_average_values == false)
|
if (print_average_values == false)
|
||||||
{
|
{
|
||||||
latitude = position_->get_latitude();
|
latitude = position->get_latitude();
|
||||||
longitude = position_->get_longitude();
|
longitude = position->get_longitude();
|
||||||
height = position_->get_height();
|
height = position->get_height();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
latitude = position_->get_avg_latitude();
|
latitude = position->get_avg_latitude();
|
||||||
longitude = position_->get_avg_longitude();
|
longitude = position->get_avg_longitude();
|
||||||
height = position_->get_avg_height();
|
height = position->get_avg_height();
|
||||||
}
|
}
|
||||||
|
|
||||||
if (kml_file.is_open() && tmp_file.is_open())
|
if (kml_file.is_open() && tmp_file.is_open())
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
#include <memory> // for shared_ptr
|
#include <memory> // for shared_ptr
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
class Rtklib_Solver;
|
class Pvt_Solution;
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Prints PVT information to OGC KML format file (can be viewed with Google Earth)
|
* \brief Prints PVT information to OGC KML format file (can be viewed with Google Earth)
|
||||||
@ -39,7 +39,7 @@ public:
|
|||||||
explicit Kml_Printer(const std::string& base_path = std::string("."));
|
explicit Kml_Printer(const std::string& base_path = std::string("."));
|
||||||
~Kml_Printer();
|
~Kml_Printer();
|
||||||
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
bool set_headers(const std::string& filename, bool time_tag_name = true);
|
||||||
bool print_position(const std::shared_ptr<Rtklib_Solver>& position, bool print_average_values);
|
bool print_position(const Pvt_Solution* position, bool print_average_values);
|
||||||
bool close_file();
|
bool close_file();
|
||||||
|
|
||||||
private:
|
private:
|
||||||
|
@ -22,6 +22,7 @@
|
|||||||
#include <boost/archive/binary_oarchive.hpp>
|
#include <boost/archive/binary_oarchive.hpp>
|
||||||
#include <iostream>
|
#include <iostream>
|
||||||
#include <sstream>
|
#include <sstream>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
|
||||||
Monitor_Pvt_Udp_Sink::Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addresses, const uint16_t& port, bool protobuf_enabled) : socket{io_context}
|
Monitor_Pvt_Udp_Sink::Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addresses, const uint16_t& port, bool protobuf_enabled) : socket{io_context}
|
||||||
@ -40,19 +41,20 @@ Monitor_Pvt_Udp_Sink::Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addre
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Monitor_Pvt_Udp_Sink::write_monitor_pvt(const std::shared_ptr<Monitor_Pvt>& monitor_pvt)
|
bool Monitor_Pvt_Udp_Sink::write_monitor_pvt(std::shared_ptr<Monitor_Pvt> monitor_pvt)
|
||||||
{
|
{
|
||||||
|
monitor_pvt_ = std::move(monitor_pvt);
|
||||||
std::string outbound_data;
|
std::string outbound_data;
|
||||||
if (use_protobuf == false)
|
if (use_protobuf == false)
|
||||||
{
|
{
|
||||||
std::ostringstream archive_stream;
|
std::ostringstream archive_stream;
|
||||||
boost::archive::binary_oarchive oa{archive_stream};
|
boost::archive::binary_oarchive oa{archive_stream};
|
||||||
oa << *monitor_pvt.get();
|
oa << *monitor_pvt_.get();
|
||||||
outbound_data = archive_stream.str();
|
outbound_data = archive_stream.str();
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
outbound_data = serdes.createProtobuffer(monitor_pvt);
|
outbound_data = serdes.createProtobuffer(monitor_pvt_);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (const auto& endpoint : endpoints)
|
for (const auto& endpoint : endpoints)
|
||||||
|
@ -38,7 +38,7 @@ class Monitor_Pvt_Udp_Sink
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addresses, const uint16_t& port, bool protobuf_enabled);
|
Monitor_Pvt_Udp_Sink(const std::vector<std::string>& addresses, const uint16_t& port, bool protobuf_enabled);
|
||||||
bool write_monitor_pvt(const std::shared_ptr<Monitor_Pvt>& monitor_pvt);
|
bool write_monitor_pvt(std::shared_ptr<Monitor_Pvt> monitor_pvt);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
b_io_context io_context;
|
b_io_context io_context;
|
||||||
@ -46,6 +46,7 @@ private:
|
|||||||
boost::system::error_code error;
|
boost::system::error_code error;
|
||||||
std::vector<boost::asio::ip::udp::endpoint> endpoints;
|
std::vector<boost::asio::ip::udp::endpoint> endpoints;
|
||||||
Serdes_Monitor_Pvt serdes;
|
Serdes_Monitor_Pvt serdes;
|
||||||
|
std::shared_ptr<Monitor_Pvt> monitor_pvt_;
|
||||||
bool use_protobuf;
|
bool use_protobuf;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -119,6 +119,7 @@ Nmea_Printer::Nmea_Printer(const std::string& filename, bool flag_nmea_output_fi
|
|||||||
nmea_dev_descriptor = -1;
|
nmea_dev_descriptor = -1;
|
||||||
}
|
}
|
||||||
print_avg_pos = false;
|
print_avg_pos = false;
|
||||||
|
d_PVT_data = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -213,7 +214,7 @@ void Nmea_Printer::close_serial()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
bool Nmea_Printer::Print_Nmea_Line(const std::shared_ptr<Rtklib_Solver>& pvt_data, bool print_average_values)
|
bool Nmea_Printer::Print_Nmea_Line(const Rtklib_Solver* pvt_data, bool print_average_values)
|
||||||
{
|
{
|
||||||
std::string GPRMC;
|
std::string GPRMC;
|
||||||
std::string GPGGA;
|
std::string GPGGA;
|
||||||
|
@ -49,7 +49,7 @@ public:
|
|||||||
/*!
|
/*!
|
||||||
* \brief Print NMEA PVT and satellite info to the initialized device
|
* \brief Print NMEA PVT and satellite info to the initialized device
|
||||||
*/
|
*/
|
||||||
bool Print_Nmea_Line(const std::shared_ptr<Rtklib_Solver>& pvt_data, bool print_average_values);
|
bool Print_Nmea_Line(const Rtklib_Solver* pvt_data, bool print_average_values);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Default destructor.
|
* \brief Default destructor.
|
||||||
@ -62,7 +62,7 @@ private:
|
|||||||
std::ofstream nmea_file_descriptor; // Output file stream for NMEA log file
|
std::ofstream nmea_file_descriptor; // Output file stream for NMEA log file
|
||||||
std::string nmea_devname;
|
std::string nmea_devname;
|
||||||
int nmea_dev_descriptor; // NMEA serial device descriptor (i.e. COM port)
|
int nmea_dev_descriptor; // NMEA serial device descriptor (i.e. COM port)
|
||||||
std::shared_ptr<Rtklib_Solver> d_PVT_data;
|
const Rtklib_Solver* d_PVT_data;
|
||||||
int init_serial(const std::string& serial_device); // serial port control
|
int init_serial(const std::string& serial_device); // serial port control
|
||||||
void close_serial();
|
void close_serial();
|
||||||
std::string get_GPGGA(); // fix data
|
std::string get_GPGGA(); // fix data
|
||||||
|
@ -38,6 +38,7 @@ class Pvt_Solution
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Pvt_Solution();
|
Pvt_Solution();
|
||||||
|
virtual ~Pvt_Solution() = default;
|
||||||
void set_pre_2009_file(bool pre_2009_file); //!< Flag for the week rollover computation in post processing mode for signals older than 2009
|
void set_pre_2009_file(bool pre_2009_file); //!< Flag for the week rollover computation in post processing mode for signals older than 2009
|
||||||
double get_time_offset_s() const; //!< Get RX time offset [s]
|
double get_time_offset_s() const; //!< Get RX time offset [s]
|
||||||
void set_time_offset_s(double offset); //!< Set RX time offset [s]
|
void set_time_offset_s(double offset); //!< Set RX time offset [s]
|
||||||
@ -123,6 +124,11 @@ public:
|
|||||||
*/
|
*/
|
||||||
int tropo(double *ddr_m, double sinel, double hsta_km, double p_mb, double t_kel, double hum, double hp_km, double htkel_km, double hhum_km);
|
int tropo(double *ddr_m, double sinel, double hsta_km, double p_mb, double t_kel, double hum, double hp_km, double htkel_km, double hhum_km);
|
||||||
|
|
||||||
|
virtual double get_hdop() const = 0;
|
||||||
|
virtual double get_vdop() const = 0;
|
||||||
|
virtual double get_pdop() const = 0;
|
||||||
|
virtual double get_gdop() const = 0;
|
||||||
|
|
||||||
protected:
|
protected:
|
||||||
bool d_pre_2009_file; // Flag to correct week rollover in post processing mode for signals older than 2009
|
bool d_pre_2009_file; // Flag to correct week rollover in post processing mode for signals older than 2009
|
||||||
private:
|
private:
|
||||||
|
@ -75,10 +75,10 @@ public:
|
|||||||
|
|
||||||
sol_t pvt_sol{};
|
sol_t pvt_sol{};
|
||||||
std::array<ssat_t, MAXSAT> pvt_ssat{};
|
std::array<ssat_t, MAXSAT> pvt_ssat{};
|
||||||
double get_hdop() const;
|
double get_hdop() const override;
|
||||||
double get_vdop() const;
|
double get_vdop() const override;
|
||||||
double get_pdop() const;
|
double get_pdop() const override;
|
||||||
double get_gdop() const;
|
double get_gdop() const override;
|
||||||
Monitor_Pvt get_monitor_pvt() const;
|
Monitor_Pvt get_monitor_pvt() const;
|
||||||
|
|
||||||
std::map<int, Galileo_Ephemeris> galileo_ephemeris_map; //!< Map storing new Galileo_Ephemeris
|
std::map<int, Galileo_Ephemeris> galileo_ephemeris_map; //!< Map storing new Galileo_Ephemeris
|
||||||
|
@ -118,6 +118,7 @@ endif()
|
|||||||
if(ENABLE_FPGA)
|
if(ENABLE_FPGA)
|
||||||
target_link_libraries(acquisition_adapters
|
target_link_libraries(acquisition_adapters
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
algorithms_libs
|
||||||
Gnuradio::fft
|
Gnuradio::fft
|
||||||
Volk::volk
|
Volk::volk
|
||||||
Volkgnsssdr::volkgnsssdr
|
Volkgnsssdr::volkgnsssdr
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "galileo_e1_signal_processing.h"
|
#include "galileo_e1_signal_processing.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/fft/fft.h> // for fft_complex
|
#include <gnuradio/fft/fft.h> // for fft_complex
|
||||||
#include <gnuradio/gr_complex.h> // for gr_complex
|
#include <gnuradio/gr_complex.h> // for gr_complex
|
||||||
@ -87,8 +88,8 @@ GalileoE1PcpsAmbiguousAcquisitionFpga::GalileoE1PcpsAmbiguousAcquisitionFpga(
|
|||||||
|
|
||||||
// compute all the GALILEO E1 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GALILEO E1 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true)); // Direct FFT
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true); // Direct FFT
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total); // buffer for the local code
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total); // buffer for the local code
|
||||||
volk_gnsssdr::vector<gr_complex> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<gr_complex> fft_codes_padded(nsamples_total);
|
||||||
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * GALILEO_E1_NUMBER_OF_CODES); // memory containing all the possible fft codes for PRN 0 to 32
|
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * GALILEO_E1_NUMBER_OF_CODES); // memory containing all the possible fft codes for PRN 0 to 32
|
||||||
|
|
||||||
|
@ -23,6 +23,7 @@
|
|||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "galileo_e5_signal_processing.h"
|
#include "galileo_e5_signal_processing.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/fft/fft.h> // for fft_complex
|
#include <gnuradio/fft/fft.h> // for fft_complex
|
||||||
#include <gnuradio/gr_complex.h> // for gr_complex
|
#include <gnuradio/gr_complex.h> // for gr_complex
|
||||||
@ -88,7 +89,7 @@ GalileoE5aPcpsAcquisitionFpga::GalileoE5aPcpsAcquisitionFpga(ConfigurationInterf
|
|||||||
|
|
||||||
// compute all the GALILEO E5 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GALILEO E5 PRN Codes (this is done only once in the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true)); // Direct FFT
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true); // Direct FFT
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
||||||
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
||||||
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * GALILEO_E5A_NUMBER_OF_CODES); // memory containing all the possible fft codes for PRN 0 to 32
|
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * GALILEO_E5A_NUMBER_OF_CODES); // memory containing all the possible fft codes for PRN 0 to 32
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gps_sdr_signal_processing.h"
|
#include "gps_sdr_signal_processing.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/fft/fft.h>
|
#include <gnuradio/fft/fft.h>
|
||||||
@ -80,7 +81,7 @@ GpsL1CaPcpsAcquisitionFpga::GpsL1CaPcpsAcquisitionFpga(
|
|||||||
|
|
||||||
// compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GPS L1 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true));
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true);
|
||||||
// allocate memory to compute all the PRNs and compute all the possible codes
|
// allocate memory to compute all the PRNs and compute all the possible codes
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
||||||
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "GPS_L2C.h"
|
#include "GPS_L2C.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gnss_synchro.h"
|
#include "gnss_synchro.h"
|
||||||
#include "gps_l2c_signal.h"
|
#include "gps_l2c_signal.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
@ -81,7 +82,7 @@ GpsL2MPcpsAcquisitionFpga::GpsL2MPcpsAcquisitionFpga(
|
|||||||
|
|
||||||
// compute all the GPS L2C PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GPS L2C PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true)); // Direct FFT
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true); // Direct FFT
|
||||||
// allocate memory to compute all the PRNs and compute all the possible codes
|
// allocate memory to compute all the PRNs and compute all the possible codes
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
||||||
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#include "GPS_L5.h"
|
#include "GPS_L5.h"
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
#include "gnss_sdr_flags.h"
|
#include "gnss_sdr_flags.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gps_l5_signal.h"
|
#include "gps_l5_signal.h"
|
||||||
#include <glog/logging.h>
|
#include <glog/logging.h>
|
||||||
#include <gnuradio/fft/fft.h> // for fft_complex
|
#include <gnuradio/fft/fft.h> // for fft_complex
|
||||||
@ -85,7 +86,7 @@ GpsL5iPcpsAcquisitionFpga::GpsL5iPcpsAcquisitionFpga(
|
|||||||
|
|
||||||
// compute all the GPS L5 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
// compute all the GPS L5 PRN Codes (this is done only once upon the class constructor in order to avoid re-computing the PRN codes every time
|
||||||
// a channel is assigned)
|
// a channel is assigned)
|
||||||
auto fft_if = std::unique_ptr<gr::fft::fft_complex>(new gr::fft::fft_complex(nsamples_total, true)); // Direct FFT
|
auto fft_if = std::make_unique<gr::fft::fft_complex>(nsamples_total, true); // Direct FFT
|
||||||
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> code(nsamples_total);
|
||||||
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
volk_gnsssdr::vector<std::complex<float>> fft_codes_padded(nsamples_total);
|
||||||
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * NUM_PRNs); // memory containing all the possible fft codes for PRN 0 to 32
|
d_all_fft_codes_ = std::vector<uint32_t>(nsamples_total * NUM_PRNs); // memory containing all the possible fft codes for PRN 0 to 32
|
||||||
|
@ -29,17 +29,17 @@
|
|||||||
#include <utility> // for std::move
|
#include <utility> // for std::move
|
||||||
|
|
||||||
|
|
||||||
Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, const std::shared_ptr<AcquisitionInterface>& acq,
|
Channel::Channel(ConfigurationInterface* configuration, uint32_t channel, std::shared_ptr<AcquisitionInterface> acq,
|
||||||
const std::shared_ptr<TrackingInterface>& trk, const std::shared_ptr<TelemetryDecoderInterface>& nav,
|
std::shared_ptr<TrackingInterface> trk, std::shared_ptr<TelemetryDecoderInterface> nav,
|
||||||
const std::string& role, const std::string& implementation, const std::shared_ptr<Concurrent_Queue<pmt::pmt_t> >& queue)
|
const std::string& role, const std::string& implementation, Concurrent_Queue<pmt::pmt_t>* queue)
|
||||||
{
|
{
|
||||||
acq_ = acq;
|
acq_ = std::move(acq);
|
||||||
trk_ = trk;
|
trk_ = std::move(trk);
|
||||||
nav_ = nav;
|
nav_ = std::move(nav);
|
||||||
|
queue_ = queue;
|
||||||
role_ = role;
|
role_ = role;
|
||||||
implementation_ = implementation;
|
implementation_ = implementation;
|
||||||
channel_ = channel;
|
channel_ = channel;
|
||||||
queue_ = queue;
|
|
||||||
channel_fsm_ = std::make_shared<ChannelFsm>();
|
channel_fsm_ = std::make_shared<ChannelFsm>();
|
||||||
|
|
||||||
flag_enable_fpga = configuration->property("GNSS-SDR.enable_FPGA", false);
|
flag_enable_fpga = configuration->property("GNSS-SDR.enable_FPGA", false);
|
||||||
|
@ -54,9 +54,9 @@ class Channel : public ChannelInterface
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
Channel(ConfigurationInterface* configuration, uint32_t channel, const std::shared_ptr<AcquisitionInterface>& acq,
|
Channel(ConfigurationInterface* configuration, uint32_t channel, std::shared_ptr<AcquisitionInterface> acq,
|
||||||
const std::shared_ptr<TrackingInterface>& trk, const std::shared_ptr<TelemetryDecoderInterface>& nav,
|
std::shared_ptr<TrackingInterface> trk, std::shared_ptr<TelemetryDecoderInterface> nav,
|
||||||
const std::string& role, const std::string& implementation, const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
const std::string& role, const std::string& implementation, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~Channel() = default; //!< Destructor
|
~Channel() = default; //!< Destructor
|
||||||
|
|
||||||
@ -97,7 +97,7 @@ private:
|
|||||||
bool connected_;
|
bool connected_;
|
||||||
bool repeat_;
|
bool repeat_;
|
||||||
std::shared_ptr<ChannelFsm> channel_fsm_;
|
std::shared_ptr<ChannelFsm> channel_fsm_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
Concurrent_Queue<pmt::pmt_t>* queue_;
|
||||||
std::mutex mx;
|
std::mutex mx;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -30,6 +30,7 @@ ChannelFsm::ChannelFsm()
|
|||||||
trk_ = nullptr;
|
trk_ = nullptr;
|
||||||
channel_ = 0U;
|
channel_ = 0U;
|
||||||
d_state = 0U;
|
d_state = 0U;
|
||||||
|
queue_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -38,6 +39,7 @@ ChannelFsm::ChannelFsm(std::shared_ptr<AcquisitionInterface> acquisition) : acq_
|
|||||||
trk_ = nullptr;
|
trk_ = nullptr;
|
||||||
channel_ = 0U;
|
channel_ = 0U;
|
||||||
d_state = 0U;
|
d_state = 0U;
|
||||||
|
queue_ = nullptr;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -168,10 +170,10 @@ void ChannelFsm::set_telemetry(std::shared_ptr<TelemetryDecoderInterface> teleme
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
void ChannelFsm::set_queue(std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue)
|
void ChannelFsm::set_queue(Concurrent_Queue<pmt::pmt_t>* queue)
|
||||||
{
|
{
|
||||||
std::lock_guard<std::mutex> lk(mx);
|
std::lock_guard<std::mutex> lk(mx);
|
||||||
queue_ = std::move(queue);
|
queue_ = queue;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@ -45,7 +45,7 @@ public:
|
|||||||
void set_acquisition(std::shared_ptr<AcquisitionInterface> acquisition);
|
void set_acquisition(std::shared_ptr<AcquisitionInterface> acquisition);
|
||||||
void set_tracking(std::shared_ptr<TrackingInterface> tracking);
|
void set_tracking(std::shared_ptr<TrackingInterface> tracking);
|
||||||
void set_telemetry(std::shared_ptr<TelemetryDecoderInterface> telemetry);
|
void set_telemetry(std::shared_ptr<TelemetryDecoderInterface> telemetry);
|
||||||
void set_queue(std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
void set_queue(Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
void set_channel(uint32_t channel);
|
void set_channel(uint32_t channel);
|
||||||
void start_acquisition();
|
void start_acquisition();
|
||||||
// FSM EVENTS
|
// FSM EVENTS
|
||||||
@ -67,7 +67,7 @@ private:
|
|||||||
std::shared_ptr<AcquisitionInterface> acq_;
|
std::shared_ptr<AcquisitionInterface> acq_;
|
||||||
std::shared_ptr<TrackingInterface> trk_;
|
std::shared_ptr<TrackingInterface> trk_;
|
||||||
std::shared_ptr<TelemetryDecoderInterface> nav_;
|
std::shared_ptr<TelemetryDecoderInterface> nav_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
Concurrent_Queue<pmt::pmt_t>* queue_;
|
||||||
uint32_t channel_;
|
uint32_t channel_;
|
||||||
uint32_t d_state;
|
uint32_t d_state;
|
||||||
std::mutex mx;
|
std::mutex mx;
|
||||||
|
@ -55,6 +55,7 @@ set(GNSS_SPLIBS_HEADERS
|
|||||||
conjugate_sc.h
|
conjugate_sc.h
|
||||||
conjugate_ic.h
|
conjugate_ic.h
|
||||||
gnss_sdr_create_directory.h
|
gnss_sdr_create_directory.h
|
||||||
|
gnss_sdr_make_unique.h
|
||||||
gnss_circular_deque.h
|
gnss_circular_deque.h
|
||||||
geofunctions.h
|
geofunctions.h
|
||||||
item_type_helpers.h
|
item_type_helpers.h
|
||||||
|
76
src/algorithms/libs/gnss_sdr_make_unique.h
Normal file
76
src/algorithms/libs/gnss_sdr_make_unique.h
Normal file
@ -0,0 +1,76 @@
|
|||||||
|
/*!
|
||||||
|
* \file gnss_sdr_make_unique.h
|
||||||
|
* \brief This file implements std::make_unique for C++11
|
||||||
|
*
|
||||||
|
* \author Carles Fernandez-Prades, 2020. cfernandez(at)cttc.es
|
||||||
|
*
|
||||||
|
* Based on https://stackoverflow.com/a/17902439
|
||||||
|
*
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2020 (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.
|
||||||
|
*
|
||||||
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
|
*
|
||||||
|
* -------------------------------------------------------------------------
|
||||||
|
*/
|
||||||
|
|
||||||
|
#ifndef GNSS_SDR_GNSS_SDR_MAKE_UNIQUE_H
|
||||||
|
#define GNSS_SDR_GNSS_SDR_MAKE_UNIQUE_H
|
||||||
|
|
||||||
|
#if __cplusplus == 201103L
|
||||||
|
|
||||||
|
#include <cstddef>
|
||||||
|
#include <memory>
|
||||||
|
#include <type_traits>
|
||||||
|
#include <utility>
|
||||||
|
|
||||||
|
namespace std
|
||||||
|
{
|
||||||
|
template <class T>
|
||||||
|
struct _Unique_if
|
||||||
|
{
|
||||||
|
typedef unique_ptr<T> _Single_object;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
struct _Unique_if<T[]>
|
||||||
|
{
|
||||||
|
typedef unique_ptr<T[]> _Unknown_bound;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T, size_t N>
|
||||||
|
struct _Unique_if<T[N]>
|
||||||
|
{
|
||||||
|
typedef void _Known_bound;
|
||||||
|
};
|
||||||
|
|
||||||
|
template <class T, class... Args>
|
||||||
|
typename _Unique_if<T>::_Single_object
|
||||||
|
make_unique(Args&&... args)
|
||||||
|
{
|
||||||
|
return unique_ptr<T>(new T(std::forward<Args>(args)...));
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T>
|
||||||
|
typename _Unique_if<T>::_Unknown_bound
|
||||||
|
make_unique(size_t n)
|
||||||
|
{
|
||||||
|
typedef typename remove_extent<T>::type U;
|
||||||
|
return unique_ptr<T>(new U[n]());
|
||||||
|
}
|
||||||
|
|
||||||
|
template <class T, class... Args>
|
||||||
|
typename _Unique_if<T>::_Known_bound
|
||||||
|
make_unique(Args&&...) = delete;
|
||||||
|
} // namespace std
|
||||||
|
|
||||||
|
#endif // __cplusplus == 201103L
|
||||||
|
|
||||||
|
#endif // GNSS_SDR_GNSS_SDR_MAKE_UNIQUE_H
|
@ -33,7 +33,8 @@
|
|||||||
|
|
||||||
SignalGenerator::SignalGenerator(ConfigurationInterface* configuration,
|
SignalGenerator::SignalGenerator(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t> > queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
unsigned int out_stream,
|
||||||
|
Concurrent_Queue<pmt::pmt_t>* queue __attribute__((unused))) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./data/gen_source.dat";
|
std::string default_dump_file = "./data/gen_source.dat";
|
||||||
|
@ -44,7 +44,7 @@ class SignalGenerator : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
SignalGenerator(ConfigurationInterface* configuration,
|
SignalGenerator(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t> > queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~SignalGenerator() = default;
|
~SignalGenerator() = default;
|
||||||
|
|
||||||
@ -86,7 +86,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::vector_to_stream::sptr vector_to_stream_;
|
gr::blocks::vector_to_stream::sptr vector_to_stream_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t> > queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_SIGNAL_GENERATOR_H
|
#endif // GNSS_SDR_SIGNAL_GENERATOR_H
|
||||||
|
@ -40,238 +40,10 @@
|
|||||||
#include <utility>
|
#include <utility>
|
||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
void run_DMA_process(const std::string &FreqBand, const std::string &Filename1, const std::string &Filename2, const bool &enable_DMA)
|
|
||||||
{
|
|
||||||
const int MAX_INPUT_SAMPLES_TOTAL = 16384;
|
|
||||||
int max_value = 0;
|
|
||||||
int tx_fd; // DMA descriptor
|
|
||||||
std::ifstream infile1;
|
|
||||||
infile1.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.open(Filename1, std::ios::binary);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception opening file " << Filename1 << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
std::ifstream infile2;
|
|
||||||
infile2.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile2.open(Filename2, std::ios::binary);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
// could not exist
|
|
||||||
}
|
|
||||||
|
|
||||||
// rx signal
|
|
||||||
std::vector<int8_t> input_samples(MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
std::vector<int8_t> input_samples2(MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
std::vector<int8_t> input_samples_dma(MAX_INPUT_SAMPLES_TOTAL * 2 * 2);
|
|
||||||
|
|
||||||
int nread_elements;
|
|
||||||
int nread_elements2;
|
|
||||||
int file_completed = 0;
|
|
||||||
int num_transferred_bytes;
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// Open DMA device
|
|
||||||
//**************************************************************************
|
|
||||||
tx_fd = open("/dev/loop_tx", O_WRONLY);
|
|
||||||
if (tx_fd < 0)
|
|
||||||
{
|
|
||||||
std::cout << "Cannot open loop device" << std::endl;
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
|
|
||||||
//**************************************************************************
|
|
||||||
// Open input file
|
|
||||||
//**************************************************************************
|
|
||||||
int nsamples = 0;
|
|
||||||
|
|
||||||
while ((file_completed == 0) && (enable_DMA == true))
|
|
||||||
{
|
|
||||||
unsigned int dma_index = 0;
|
|
||||||
|
|
||||||
if (FreqBand == "L1")
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
|
||||||
}
|
|
||||||
if (infile1)
|
|
||||||
{
|
|
||||||
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nread_elements = 0;
|
|
||||||
}
|
|
||||||
nsamples += (nread_elements / 2);
|
|
||||||
|
|
||||||
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
|
||||||
{
|
|
||||||
// channel 1 (queue 1)
|
|
||||||
input_samples_dma[dma_index] = 0;
|
|
||||||
input_samples_dma[dma_index + 1] = 0;
|
|
||||||
// channel 0 (queue 0)
|
|
||||||
input_samples_dma[dma_index + 2] = input_samples[index0];
|
|
||||||
input_samples_dma[dma_index + 3] = input_samples[index0 + 1];
|
|
||||||
|
|
||||||
dma_index += 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (FreqBand == "L2")
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
|
||||||
}
|
|
||||||
if (infile1)
|
|
||||||
{
|
|
||||||
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nread_elements = 0;
|
|
||||||
}
|
|
||||||
nsamples += (nread_elements / 2);
|
|
||||||
|
|
||||||
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
|
||||||
{
|
|
||||||
// channel 1 (queue 1)
|
|
||||||
input_samples_dma[dma_index] = input_samples[index0];
|
|
||||||
input_samples_dma[dma_index + 1] = input_samples[index0 + 1];
|
|
||||||
// channel 0 (queue 0)
|
|
||||||
input_samples_dma[dma_index + 2] = 0;
|
|
||||||
input_samples_dma[dma_index + 3] = 0;
|
|
||||||
|
|
||||||
dma_index += 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
else if (FreqBand == "L1L2")
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
|
||||||
}
|
|
||||||
if (infile1)
|
|
||||||
{
|
|
||||||
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nread_elements = 0;
|
|
||||||
}
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile2.read(reinterpret_cast<char *>(input_samples2.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
|
||||||
}
|
|
||||||
if (infile2)
|
|
||||||
{
|
|
||||||
nread_elements2 = MAX_INPUT_SAMPLES_TOTAL * 2;
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
nread_elements2 = 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nread_elements > nread_elements2)
|
|
||||||
{
|
|
||||||
nread_elements = nread_elements2; // take the smallest
|
|
||||||
}
|
|
||||||
|
|
||||||
nsamples += (nread_elements / 2);
|
|
||||||
|
|
||||||
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
|
||||||
{
|
|
||||||
input_samples[index0] = input_samples[index0];
|
|
||||||
input_samples[index0 + 1] = input_samples[index0 + 1];
|
|
||||||
|
|
||||||
if (input_samples[index0] > max_value)
|
|
||||||
{
|
|
||||||
max_value = input_samples[index0];
|
|
||||||
}
|
|
||||||
else if (-input_samples[index0] > max_value)
|
|
||||||
{
|
|
||||||
max_value = -input_samples[index0];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (input_samples[index0 + 1] > max_value)
|
|
||||||
{
|
|
||||||
max_value = input_samples[index0 + 1];
|
|
||||||
}
|
|
||||||
else if (-input_samples[index0 + 1] > max_value)
|
|
||||||
{
|
|
||||||
max_value = -input_samples[index0 + 1];
|
|
||||||
}
|
|
||||||
|
|
||||||
// channel 1 (queue 1)
|
|
||||||
input_samples_dma[dma_index] = input_samples2[index0];
|
|
||||||
input_samples_dma[dma_index + 1] = input_samples2[index0 + 1];
|
|
||||||
// channel 0 (queue 0)
|
|
||||||
input_samples_dma[dma_index + 2] = input_samples[index0];
|
|
||||||
input_samples_dma[dma_index + 3] = input_samples[index0 + 1];
|
|
||||||
|
|
||||||
dma_index += 4;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nread_elements > 0)
|
|
||||||
{
|
|
||||||
num_transferred_bytes = nread_elements * 2;
|
|
||||||
int num_bytes_sent = write(tx_fd, input_samples_dma.data(), nread_elements * 2);
|
|
||||||
if (num_bytes_sent != num_transferred_bytes)
|
|
||||||
{
|
|
||||||
std::cerr << "Error: DMA could not send all the required samples " << std::endl;
|
|
||||||
}
|
|
||||||
|
|
||||||
// Throttle the DMA
|
|
||||||
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
|
||||||
}
|
|
||||||
|
|
||||||
if (nread_elements != MAX_INPUT_SAMPLES_TOTAL * 2)
|
|
||||||
{
|
|
||||||
file_completed = 1;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
try
|
|
||||||
{
|
|
||||||
infile1.close();
|
|
||||||
infile2.close();
|
|
||||||
}
|
|
||||||
catch (const std::ifstream::failure &e)
|
|
||||||
{
|
|
||||||
std::cerr << "Exception closing files " << Filename1 << " and " << Filename2 << std::endl;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
Ad9361FpgaSignalSource::Ad9361FpgaSignalSource(ConfigurationInterface *configuration,
|
Ad9361FpgaSignalSource::Ad9361FpgaSignalSource(ConfigurationInterface *configuration,
|
||||||
const std::string &role, unsigned int in_stream, unsigned int out_stream,
|
const std::string &role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t> *queue __attribute__((unused))) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_gain_mode("slow_attack");
|
std::string default_gain_mode("slow_attack");
|
||||||
double default_tx_attenuation_db = -10.0;
|
double default_tx_attenuation_db = -10.0;
|
||||||
@ -564,6 +336,235 @@ Ad9361FpgaSignalSource::~Ad9361FpgaSignalSource()
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Ad9361FpgaSignalSource::run_DMA_process(const std::string &FreqBand, const std::string &Filename1, const std::string &Filename2, const bool &enable_DMA)
|
||||||
|
{
|
||||||
|
const int MAX_INPUT_SAMPLES_TOTAL = 16384;
|
||||||
|
int max_value = 0;
|
||||||
|
int tx_fd; // DMA descriptor
|
||||||
|
std::ifstream infile1;
|
||||||
|
infile1.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.open(Filename1, std::ios::binary);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception opening file " << Filename1 << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
std::ifstream infile2;
|
||||||
|
infile2.exceptions(std::ifstream::failbit | std::ifstream::badbit);
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile2.open(Filename2, std::ios::binary);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
// could not exist
|
||||||
|
}
|
||||||
|
|
||||||
|
// rx signal
|
||||||
|
std::vector<int8_t> input_samples(MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
std::vector<int8_t> input_samples2(MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
std::vector<int8_t> input_samples_dma(MAX_INPUT_SAMPLES_TOTAL * 2 * 2);
|
||||||
|
|
||||||
|
int nread_elements;
|
||||||
|
int nread_elements2;
|
||||||
|
int file_completed = 0;
|
||||||
|
int num_transferred_bytes;
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// Open DMA device
|
||||||
|
//**************************************************************************
|
||||||
|
tx_fd = open("/dev/loop_tx", O_WRONLY);
|
||||||
|
if (tx_fd < 0)
|
||||||
|
{
|
||||||
|
std::cout << "Cannot open loop device" << std::endl;
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
//**************************************************************************
|
||||||
|
// Open input file
|
||||||
|
//**************************************************************************
|
||||||
|
int nsamples = 0;
|
||||||
|
|
||||||
|
while ((file_completed == 0) && (enable_DMA == true))
|
||||||
|
{
|
||||||
|
unsigned int dma_index = 0;
|
||||||
|
|
||||||
|
if (FreqBand == "L1")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
||||||
|
}
|
||||||
|
if (infile1)
|
||||||
|
{
|
||||||
|
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nread_elements = 0;
|
||||||
|
}
|
||||||
|
nsamples += (nread_elements / 2);
|
||||||
|
|
||||||
|
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
||||||
|
{
|
||||||
|
// channel 1 (queue 1)
|
||||||
|
input_samples_dma[dma_index] = 0;
|
||||||
|
input_samples_dma[dma_index + 1] = 0;
|
||||||
|
// channel 0 (queue 0)
|
||||||
|
input_samples_dma[dma_index + 2] = input_samples[index0];
|
||||||
|
input_samples_dma[dma_index + 3] = input_samples[index0 + 1];
|
||||||
|
|
||||||
|
dma_index += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (FreqBand == "L2")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
||||||
|
}
|
||||||
|
if (infile1)
|
||||||
|
{
|
||||||
|
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nread_elements = 0;
|
||||||
|
}
|
||||||
|
nsamples += (nread_elements / 2);
|
||||||
|
|
||||||
|
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
||||||
|
{
|
||||||
|
// channel 1 (queue 1)
|
||||||
|
input_samples_dma[dma_index] = input_samples[index0];
|
||||||
|
input_samples_dma[dma_index + 1] = input_samples[index0 + 1];
|
||||||
|
// channel 0 (queue 0)
|
||||||
|
input_samples_dma[dma_index + 2] = 0;
|
||||||
|
input_samples_dma[dma_index + 3] = 0;
|
||||||
|
|
||||||
|
dma_index += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (FreqBand == "L1L2")
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.read(reinterpret_cast<char *>(input_samples.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
||||||
|
}
|
||||||
|
if (infile1)
|
||||||
|
{
|
||||||
|
nread_elements = MAX_INPUT_SAMPLES_TOTAL * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nread_elements = 0;
|
||||||
|
}
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile2.read(reinterpret_cast<char *>(input_samples2.data()), MAX_INPUT_SAMPLES_TOTAL * 2);
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception reading file " << Filename1 << std::endl;
|
||||||
|
}
|
||||||
|
if (infile2)
|
||||||
|
{
|
||||||
|
nread_elements2 = MAX_INPUT_SAMPLES_TOTAL * 2;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
nread_elements2 = 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nread_elements > nread_elements2)
|
||||||
|
{
|
||||||
|
nread_elements = nread_elements2; // take the smallest
|
||||||
|
}
|
||||||
|
|
||||||
|
nsamples += (nread_elements / 2);
|
||||||
|
|
||||||
|
for (int index0 = 0; index0 < (nread_elements); index0 += 2)
|
||||||
|
{
|
||||||
|
input_samples[index0] = input_samples[index0];
|
||||||
|
input_samples[index0 + 1] = input_samples[index0 + 1];
|
||||||
|
|
||||||
|
if (input_samples[index0] > max_value)
|
||||||
|
{
|
||||||
|
max_value = input_samples[index0];
|
||||||
|
}
|
||||||
|
else if (-input_samples[index0] > max_value)
|
||||||
|
{
|
||||||
|
max_value = -input_samples[index0];
|
||||||
|
}
|
||||||
|
|
||||||
|
if (input_samples[index0 + 1] > max_value)
|
||||||
|
{
|
||||||
|
max_value = input_samples[index0 + 1];
|
||||||
|
}
|
||||||
|
else if (-input_samples[index0 + 1] > max_value)
|
||||||
|
{
|
||||||
|
max_value = -input_samples[index0 + 1];
|
||||||
|
}
|
||||||
|
|
||||||
|
// channel 1 (queue 1)
|
||||||
|
input_samples_dma[dma_index] = input_samples2[index0];
|
||||||
|
input_samples_dma[dma_index + 1] = input_samples2[index0 + 1];
|
||||||
|
// channel 0 (queue 0)
|
||||||
|
input_samples_dma[dma_index + 2] = input_samples[index0];
|
||||||
|
input_samples_dma[dma_index + 3] = input_samples[index0 + 1];
|
||||||
|
|
||||||
|
dma_index += 4;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nread_elements > 0)
|
||||||
|
{
|
||||||
|
num_transferred_bytes = nread_elements * 2;
|
||||||
|
int num_bytes_sent = write(tx_fd, input_samples_dma.data(), nread_elements * 2);
|
||||||
|
if (num_bytes_sent != num_transferred_bytes)
|
||||||
|
{
|
||||||
|
std::cerr << "Error: DMA could not send all the required samples " << std::endl;
|
||||||
|
}
|
||||||
|
|
||||||
|
// Throttle the DMA
|
||||||
|
std::this_thread::sleep_for(std::chrono::milliseconds(1));
|
||||||
|
}
|
||||||
|
|
||||||
|
if (nread_elements != MAX_INPUT_SAMPLES_TOTAL * 2)
|
||||||
|
{
|
||||||
|
file_completed = 1;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
try
|
||||||
|
{
|
||||||
|
infile1.close();
|
||||||
|
infile2.close();
|
||||||
|
}
|
||||||
|
catch (const std::ifstream::failure &e)
|
||||||
|
{
|
||||||
|
std::cerr << "Exception closing files " << Filename1 << " and " << Filename2 << std::endl;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
void Ad9361FpgaSignalSource::connect(gr::top_block_sptr top_block)
|
void Ad9361FpgaSignalSource::connect(gr::top_block_sptr top_block)
|
||||||
{
|
{
|
||||||
if (top_block)
|
if (top_block)
|
||||||
|
@ -35,9 +35,9 @@ class ConfigurationInterface;
|
|||||||
class Ad9361FpgaSignalSource : public GNSSBlockInterface
|
class Ad9361FpgaSignalSource : public GNSSBlockInterface
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
Ad9361FpgaSignalSource(ConfigurationInterface* configuration,
|
Ad9361FpgaSignalSource(ConfigurationInterface *configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string &role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t> *queue);
|
||||||
|
|
||||||
~Ad9361FpgaSignalSource();
|
~Ad9361FpgaSignalSource();
|
||||||
|
|
||||||
@ -102,8 +102,6 @@ private:
|
|||||||
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
|
|
||||||
std::shared_ptr<Fpga_Switch> switch_fpga;
|
std::shared_ptr<Fpga_Switch> switch_fpga;
|
||||||
int32_t switch_position;
|
int32_t switch_position;
|
||||||
|
|
||||||
@ -114,6 +112,7 @@ private:
|
|||||||
|
|
||||||
bool enable_DMA_;
|
bool enable_DMA_;
|
||||||
bool rf_shutdown_;
|
bool rf_shutdown_;
|
||||||
|
void run_DMA_process(const std::string &FreqBand, const std::string &Filename1, const std::string &Filename2, const bool &enable_DMA);
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_AD9361_FPGA_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_AD9361_FPGA_SIGNAL_SOURCE_H
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
CustomUDPSignalSource::CustomUDPSignalSource(ConfigurationInterface* configuration,
|
CustomUDPSignalSource::CustomUDPSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t>* queue __attribute__((unused))) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
// DUMP PARAMETERS
|
// DUMP PARAMETERS
|
||||||
std::string empty = "";
|
std::string empty = "";
|
||||||
|
@ -48,7 +48,7 @@ class CustomUDPSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
CustomUDPSignalSource(ConfigurationInterface* configuration,
|
CustomUDPSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~CustomUDPSignalSource() = default;
|
~CustomUDPSignalSource() = default;
|
||||||
|
|
||||||
@ -98,8 +98,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
Gr_Complex_Ip_Packet_Source::sptr udp_gnss_rx_source_;
|
Gr_Complex_Ip_Packet_Source::sptr udp_gnss_rx_source_;
|
||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_CUSTOM_UDP_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_CUSTOM_UDP_SIGNAL_SOURCE_H
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
|
FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue)
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "./example_capture.dat";
|
std::string default_filename = "./example_capture.dat";
|
||||||
std::string default_item_type = "short";
|
std::string default_item_type = "short";
|
||||||
@ -211,7 +211,7 @@ FileSignalSource::FileSignalSource(ConfigurationInterface* configuration,
|
|||||||
DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -50,7 +50,7 @@ class FileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
FileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
FileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~FileSignalSource() = default;
|
~FileSignalSource() = default;
|
||||||
|
|
||||||
@ -121,7 +121,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -31,10 +31,7 @@ FlexibandSignalSource::FlexibandSignalSource(ConfigurationInterface* configurati
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_stream,
|
unsigned int in_stream,
|
||||||
unsigned int out_stream,
|
unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role),
|
Concurrent_Queue<pmt::pmt_t>* queue __attribute__((unused))) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
in_stream_(in_stream),
|
|
||||||
out_stream_(out_stream),
|
|
||||||
queue_(std::move(queue))
|
|
||||||
{
|
{
|
||||||
std::string default_item_type = "byte";
|
std::string default_item_type = "byte";
|
||||||
item_type_ = configuration->property(role + ".item_type", default_item_type);
|
item_type_ = configuration->property(role + ".item_type", default_item_type);
|
||||||
|
@ -47,7 +47,7 @@ class FlexibandSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
FlexibandSignalSource(ConfigurationInterface* configuration,
|
FlexibandSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~FlexibandSignalSource() = default;
|
~FlexibandSignalSource() = default;
|
||||||
|
|
||||||
@ -94,13 +94,11 @@ private:
|
|||||||
int n_channels_;
|
int n_channels_;
|
||||||
int sel_ch_;
|
int sel_ch_;
|
||||||
|
|
||||||
gr::block_sptr flexiband_source_;
|
boost::shared_ptr<gr::block> flexiband_source_;
|
||||||
|
|
||||||
std::vector<std::shared_ptr<gr::block>> char_to_float;
|
std::vector<boost::shared_ptr<gr::block>> char_to_float;
|
||||||
std::vector<std::shared_ptr<gr::block>> float_to_complex_;
|
std::vector<boost::shared_ptr<gr::block>> float_to_complex_;
|
||||||
std::vector<gr::blocks::null_sink::sptr> null_sinks_;
|
std::vector<gr::blocks::null_sink::sptr> null_sinks_;
|
||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_FLEXIBAND_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_FLEXIBAND_SIGNAL_SOURCE_H
|
||||||
|
@ -34,7 +34,7 @@
|
|||||||
|
|
||||||
Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface *configuration,
|
Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface *configuration,
|
||||||
const std::string &role, unsigned int in_stream, unsigned int out_stream,
|
const std::string &role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t> *queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./data/signal_source.dat";
|
std::string default_dump_file = "./data/signal_source.dat";
|
||||||
@ -320,7 +320,7 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(ConfigurationInterface *configuration
|
|||||||
if (samples_ != 0)
|
if (samples_ != 0)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ class Fmcomms2SignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
Fmcomms2SignalSource(ConfigurationInterface* configuration,
|
Fmcomms2SignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~Fmcomms2SignalSource();
|
~Fmcomms2SignalSource();
|
||||||
|
|
||||||
@ -127,7 +127,6 @@ private:
|
|||||||
boost::shared_ptr<gr::block> valve_;
|
boost::shared_ptr<gr::block> valve_;
|
||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_FMCOMMS2_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_FMCOMMS2_SIGNAL_SOURCE_H
|
||||||
|
@ -29,24 +29,17 @@
|
|||||||
|
|
||||||
|
|
||||||
// Constructor
|
// Constructor
|
||||||
GenSignalSource::GenSignalSource(GNSSBlockInterface *signal_generator, GNSSBlockInterface *filter,
|
GenSignalSource::GenSignalSource(std::shared_ptr<GNSSBlockInterface> signal_generator,
|
||||||
std::string role, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : signal_generator_(signal_generator),
|
std::shared_ptr<GNSSBlockInterface> filter,
|
||||||
filter_(filter),
|
std::string role,
|
||||||
role_(std::move(role)),
|
Concurrent_Queue<pmt::pmt_t> *queue __attribute__((unused))) : signal_generator_(std::move(signal_generator)),
|
||||||
queue_(std::move(queue))
|
filter_(std::move(filter)),
|
||||||
|
role_(std::move(role))
|
||||||
{
|
{
|
||||||
connected_ = false;
|
connected_ = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
// Destructor
|
|
||||||
GenSignalSource::~GenSignalSource()
|
|
||||||
{
|
|
||||||
delete signal_generator_;
|
|
||||||
delete filter_;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
void GenSignalSource::connect(gr::top_block_sptr top_block)
|
void GenSignalSource::connect(gr::top_block_sptr top_block)
|
||||||
{
|
{
|
||||||
if (connected_)
|
if (connected_)
|
||||||
|
@ -37,11 +37,11 @@ class GenSignalSource : public GNSSBlockInterface
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
//! Constructor
|
//! Constructor
|
||||||
GenSignalSource(GNSSBlockInterface *signal_generator, GNSSBlockInterface *filter,
|
GenSignalSource(std::shared_ptr<GNSSBlockInterface> signal_generator, std::shared_ptr<GNSSBlockInterface> filter,
|
||||||
std::string role, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
std::string role, Concurrent_Queue<pmt::pmt_t> *queue);
|
||||||
|
|
||||||
//! Virtual destructor
|
//! Virtual destructor
|
||||||
virtual ~GenSignalSource();
|
virtual ~GenSignalSource() = default;
|
||||||
|
|
||||||
void connect(gr::top_block_sptr top_block) override;
|
void connect(gr::top_block_sptr top_block) override;
|
||||||
void disconnect(gr::top_block_sptr top_block) override;
|
void disconnect(gr::top_block_sptr top_block) override;
|
||||||
@ -52,15 +52,14 @@ public:
|
|||||||
//! Returns "Signal Source"
|
//! Returns "Signal Source"
|
||||||
inline std::string implementation() override { return "Signal Source"; }
|
inline std::string implementation() override { return "Signal Source"; }
|
||||||
inline size_t item_size() override { return 0; }
|
inline size_t item_size() override { return 0; }
|
||||||
inline GNSSBlockInterface *signal_generator() const { return signal_generator_; }
|
inline std::shared_ptr<GNSSBlockInterface> signal_generator() const { return signal_generator_; }
|
||||||
|
|
||||||
private:
|
private:
|
||||||
GNSSBlockInterface *signal_generator_;
|
std::shared_ptr<GNSSBlockInterface> signal_generator_;
|
||||||
GNSSBlockInterface *filter_;
|
std::shared_ptr<GNSSBlockInterface> filter_;
|
||||||
std::string role_;
|
std::string role_;
|
||||||
std::string implementation_;
|
std::string implementation_;
|
||||||
bool connected_;
|
bool connected_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_GEN_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_GEN_SIGNAL_SOURCE_H
|
||||||
|
@ -25,7 +25,10 @@
|
|||||||
|
|
||||||
|
|
||||||
Gn3sSignalSource::Gn3sSignalSource(ConfigurationInterface* configuration,
|
Gn3sSignalSource::Gn3sSignalSource(ConfigurationInterface* configuration,
|
||||||
std::string role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue)
|
std::string role,
|
||||||
|
unsigned int in_stream,
|
||||||
|
unsigned int out_stream,
|
||||||
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "short";
|
std::string default_item_type = "short";
|
||||||
std::string default_dump_file = "./data/gn3s_source.dat";
|
std::string default_dump_file = "./data/gn3s_source.dat";
|
||||||
|
@ -40,7 +40,7 @@ class Gn3sSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
Gn3sSignalSource(ConfigurationInterface* configuration,
|
Gn3sSignalSource(ConfigurationInterface* configuration,
|
||||||
std::string role, unsigned int in_stream,
|
std::string role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~Gn3sSignalSource() = default;
|
~Gn3sSignalSource() = default;
|
||||||
|
|
||||||
@ -78,7 +78,6 @@ private:
|
|||||||
std::string dump_filename_;
|
std::string dump_filename_;
|
||||||
gr::block_sptr gn3s_source_;
|
gr::block_sptr gn3s_source_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_GN3S_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_GN3S_SIGNAL_SOURCE_H
|
||||||
|
@ -26,7 +26,7 @@
|
|||||||
|
|
||||||
|
|
||||||
LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration,
|
LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> 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, Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./labsat_output.dat";
|
std::string default_dump_file = "./labsat_output.dat";
|
||||||
@ -42,7 +42,7 @@ LabsatSignalSource::LabsatSignalSource(ConfigurationInterface* configuration,
|
|||||||
if (item_type_ == "gr_complex")
|
if (item_type_ == "gr_complex")
|
||||||
{
|
{
|
||||||
item_size_ = sizeof(gr_complex);
|
item_size_ = sizeof(gr_complex);
|
||||||
labsat23_source_ = labsat23_make_source_sptr(filename_.c_str(), channel_selector, queue_);
|
labsat23_source_ = labsat23_make_source_sptr(filename_.c_str(), channel_selector, queue);
|
||||||
DLOG(INFO) << "Item size " << item_size_;
|
DLOG(INFO) << "Item size " << item_size_;
|
||||||
DLOG(INFO) << "labsat23_source_(" << labsat23_source_->unique_id() << ")";
|
DLOG(INFO) << "labsat23_source_(" << labsat23_source_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
@ -39,7 +39,7 @@ class LabsatSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
LabsatSignalSource(ConfigurationInterface* configuration,
|
LabsatSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~LabsatSignalSource() = default;
|
~LabsatSignalSource() = default;
|
||||||
|
|
||||||
@ -77,7 +77,6 @@ private:
|
|||||||
std::string dump_filename_;
|
std::string dump_filename_;
|
||||||
gr::block_sptr labsat23_source_;
|
gr::block_sptr labsat23_source_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_LABSAT_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_LABSAT_SIGNAL_SOURCE_H
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
MultichannelFileSignalSource::MultichannelFileSignalSource(ConfigurationInterface* configuration,
|
MultichannelFileSignalSource::MultichannelFileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue)
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "./example_capture.dat";
|
std::string default_filename = "./example_capture.dat";
|
||||||
std::string default_item_type = "short";
|
std::string default_item_type = "short";
|
||||||
@ -205,7 +205,7 @@ MultichannelFileSignalSource::MultichannelFileSignalSource(ConfigurationInterfac
|
|||||||
DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
DLOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (enable_throttle_control_)
|
if (enable_throttle_control_)
|
||||||
|
@ -51,7 +51,7 @@ class MultichannelFileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
MultichannelFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
MultichannelFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~MultichannelFileSignalSource() = default;
|
~MultichannelFileSignalSource() = default;
|
||||||
|
|
||||||
@ -121,7 +121,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
std::vector<gr::blocks::throttle::sptr> throttle_vec_;
|
std::vector<gr::blocks::throttle::sptr> throttle_vec_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -33,7 +33,7 @@
|
|||||||
|
|
||||||
NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration,
|
NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue)
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_item_type = "byte";
|
std::string default_item_type = "byte";
|
||||||
@ -137,7 +137,7 @@ NsrFileSignalSource::NsrFileSignalSource(ConfigurationInterface* configuration,
|
|||||||
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(sizeof(float), samples_, queue_);
|
valve_ = gnss_sdr_make_valve(sizeof(float), samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -50,7 +50,7 @@ class NsrFileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
NsrFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
NsrFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~NsrFileSignalSource() = default;
|
~NsrFileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -121,7 +121,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration,
|
OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
// DUMP PARAMETERS
|
// DUMP PARAMETERS
|
||||||
std::string empty = "";
|
std::string empty = "";
|
||||||
@ -123,7 +123,7 @@ OsmosdrSignalSource::OsmosdrSignalSource(ConfigurationInterface* configuration,
|
|||||||
if (samples_ != 0)
|
if (samples_ != 0)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ class OsmosdrSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
OsmosdrSignalSource(ConfigurationInterface* configuration,
|
OsmosdrSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~OsmosdrSignalSource() = default;
|
~OsmosdrSignalSource() = default;
|
||||||
|
|
||||||
@ -108,7 +108,6 @@ private:
|
|||||||
boost::shared_ptr<gr::block> valve_;
|
boost::shared_ptr<gr::block> valve_;
|
||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_OSMOSDR_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_OSMOSDR_SIGNAL_SOURCE_H
|
||||||
|
@ -28,7 +28,7 @@
|
|||||||
|
|
||||||
PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration,
|
PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./data/signal_source.dat";
|
std::string default_dump_file = "./data/signal_source.dat";
|
||||||
@ -135,7 +135,7 @@ PlutosdrSignalSource::PlutosdrSignalSource(ConfigurationInterface* configuration
|
|||||||
if (samples_ != 0)
|
if (samples_ != 0)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -48,7 +48,7 @@ class PlutosdrSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
PlutosdrSignalSource(ConfigurationInterface* configuration,
|
PlutosdrSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~PlutosdrSignalSource() = default;
|
~PlutosdrSignalSource() = default;
|
||||||
|
|
||||||
@ -112,7 +112,6 @@ private:
|
|||||||
boost::shared_ptr<gr::block> valve_;
|
boost::shared_ptr<gr::block> valve_;
|
||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_PLUTOSDR_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_PLUTOSDR_SIGNAL_SOURCE_H
|
||||||
|
@ -27,7 +27,7 @@
|
|||||||
|
|
||||||
|
|
||||||
RawArraySignalSource::RawArraySignalSource(ConfigurationInterface* configuration,
|
RawArraySignalSource::RawArraySignalSource(ConfigurationInterface* configuration,
|
||||||
std::string role, unsigned int in_stream, unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(queue)
|
std::string role, unsigned int in_stream, unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
std::string default_item_type = "gr_complex";
|
std::string default_item_type = "gr_complex";
|
||||||
std::string default_dump_file = "./data/raw_array_source.dat";
|
std::string default_dump_file = "./data/raw_array_source.dat";
|
||||||
|
@ -39,7 +39,7 @@ class RawArraySignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
RawArraySignalSource(ConfigurationInterface* configuration,
|
RawArraySignalSource(ConfigurationInterface* configuration,
|
||||||
std::string role, unsigned int in_stream,
|
std::string role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~RawArraySignalSource() = default;
|
~RawArraySignalSource() = default;
|
||||||
|
|
||||||
@ -78,7 +78,6 @@ private:
|
|||||||
std::string eth_device_;
|
std::string eth_device_;
|
||||||
gr::block_sptr raw_array_source_;
|
gr::block_sptr raw_array_source_;
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_RAW_ARRAY_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_RAW_ARRAY_SIGNAL_SOURCE_H
|
||||||
|
@ -34,10 +34,9 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration,
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_stream,
|
unsigned int in_stream,
|
||||||
unsigned int out_stream,
|
unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role),
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role),
|
||||||
in_stream_(in_stream),
|
in_stream_(in_stream),
|
||||||
out_stream_(out_stream),
|
out_stream_(out_stream)
|
||||||
queue_(std::move(queue))
|
|
||||||
{
|
{
|
||||||
// DUMP PARAMETERS
|
// DUMP PARAMETERS
|
||||||
std::string empty = "";
|
std::string empty = "";
|
||||||
@ -111,7 +110,7 @@ RtlTcpSignalSource::RtlTcpSignalSource(ConfigurationInterface* configuration,
|
|||||||
if (samples_ != 0ULL)
|
if (samples_ != 0ULL)
|
||||||
{
|
{
|
||||||
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
DLOG(INFO) << "Send STOP signal after " << samples_ << " samples";
|
||||||
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(item_size_, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -51,7 +51,7 @@ public:
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_stream,
|
unsigned int in_stream,
|
||||||
unsigned int out_stream,
|
unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~RtlTcpSignalSource() = default;
|
~RtlTcpSignalSource() = default;
|
||||||
|
|
||||||
@ -111,7 +111,6 @@ private:
|
|||||||
boost::shared_ptr<gr::block> valve_;
|
boost::shared_ptr<gr::block> valve_;
|
||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr file_sink_;
|
gr::blocks::file_sink::sptr file_sink_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_RTL_TCP_SIGNAL_SOURCE_H
|
||||||
|
@ -32,7 +32,7 @@
|
|||||||
|
|
||||||
SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration,
|
SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
const std::string& role, unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams), queue_(queue)
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_item_type = "int";
|
std::string default_item_type = "int";
|
||||||
@ -136,7 +136,7 @@ SpirFileSignalSource::SpirFileSignalSource(ConfigurationInterface* configuration
|
|||||||
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(sizeof(float), samples_, queue_);
|
valve_ = gnss_sdr_make_valve(sizeof(float), samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -48,7 +48,7 @@ class SpirFileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
SpirFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
SpirFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~SpirFileSignalSource() = default;
|
~SpirFileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -119,7 +119,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -29,7 +29,7 @@
|
|||||||
|
|
||||||
|
|
||||||
SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface* configuration,
|
SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, uint32_t in_streams, uint32_t out_streams, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> 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, Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_dump_filename = "../data/my_capture_dump.dat";
|
std::string default_dump_filename = "../data/my_capture_dump.dat";
|
||||||
@ -137,7 +137,7 @@ SpirGSS6450FileSignalSource::SpirGSS6450FileSignalSource(ConfigurationInterface*
|
|||||||
|
|
||||||
for (uint32_t i = 0; i < (n_channels_); i++)
|
for (uint32_t i = 0; i < (n_channels_); i++)
|
||||||
{
|
{
|
||||||
valve_vec_.emplace_back(gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue_));
|
valve_vec_.emplace_back(gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue));
|
||||||
if (dump_)
|
if (dump_)
|
||||||
{
|
{
|
||||||
std::string tmp_str = dump_filename_ + "_ch" + std::to_string(i);
|
std::string tmp_str = dump_filename_ + "_ch" + std::to_string(i);
|
||||||
|
@ -53,7 +53,7 @@ class SpirGSS6450FileSignalSource : public GNSSBlockInterface
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
SpirGSS6450FileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
uint32_t in_streams, uint32_t out_streams, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
uint32_t in_streams, uint32_t out_streams, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~SpirGSS6450FileSignalSource() = default;
|
~SpirGSS6450FileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -130,7 +130,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
std::vector<gr::blocks::file_sink::sptr> sink_vec_;
|
std::vector<gr::blocks::file_sink::sptr> sink_vec_;
|
||||||
std::vector<gr::blocks::throttle::sptr> throttle_vec_;
|
std::vector<gr::blocks::throttle::sptr> throttle_vec_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
};
|
};
|
||||||
|
|
||||||
|
@ -34,10 +34,9 @@ TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* con
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams,
|
unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role),
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role),
|
||||||
in_streams_(in_streams),
|
in_streams_(in_streams),
|
||||||
out_streams_(out_streams),
|
out_streams_(out_streams)
|
||||||
queue_(queue)
|
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_item_type = "byte";
|
std::string default_item_type = "byte";
|
||||||
@ -142,7 +141,7 @@ TwoBitCpxFileSignalSource::TwoBitCpxFileSignalSource(ConfigurationInterface* con
|
|||||||
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue_);
|
valve_ = gnss_sdr_make_valve(sizeof(gr_complex), samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -54,7 +54,7 @@ public:
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams,
|
unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~TwoBitCpxFileSignalSource() = default;
|
~TwoBitCpxFileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -126,7 +126,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
// Throttle control
|
// Throttle control
|
||||||
bool enable_throttle_control_;
|
bool enable_throttle_control_;
|
||||||
|
@ -36,10 +36,9 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac
|
|||||||
const std::string& role,
|
const std::string& role,
|
||||||
unsigned int in_streams,
|
unsigned int in_streams,
|
||||||
unsigned int out_streams,
|
unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue) : role_(role),
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role),
|
||||||
in_streams_(in_streams),
|
in_streams_(in_streams),
|
||||||
out_streams_(out_streams),
|
out_streams_(out_streams)
|
||||||
queue_(queue)
|
|
||||||
{
|
{
|
||||||
std::string default_filename = "../data/my_capture.dat";
|
std::string default_filename = "../data/my_capture.dat";
|
||||||
std::string default_item_type = "byte";
|
std::string default_item_type = "byte";
|
||||||
@ -206,7 +205,7 @@ TwoBitPackedFileSignalSource::TwoBitPackedFileSignalSource(ConfigurationInterfac
|
|||||||
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
LOG(INFO) << "Total number samples to be processed= " << samples_ << " GNSS signal duration= " << signal_duration_s << " [s]";
|
||||||
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
std::cout << "GNSS signal recorded time to be processed: " << signal_duration_s << " [s]" << std::endl;
|
||||||
|
|
||||||
valve_ = gnss_sdr_make_valve(output_item_size, samples_, queue_);
|
valve_ = gnss_sdr_make_valve(output_item_size, samples_, queue);
|
||||||
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_->unique_id() << ")";
|
||||||
|
|
||||||
if (dump_)
|
if (dump_)
|
||||||
|
@ -53,7 +53,7 @@ class TwoBitPackedFileSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
TwoBitPackedFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
TwoBitPackedFileSignalSource(ConfigurationInterface* configuration, const std::string& role,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~TwoBitPackedFileSignalSource() = default;
|
~TwoBitPackedFileSignalSource() = default;
|
||||||
inline std::string role() override
|
inline std::string role() override
|
||||||
@ -145,7 +145,6 @@ private:
|
|||||||
#endif
|
#endif
|
||||||
gr::blocks::file_sink::sptr sink_;
|
gr::blocks::file_sink::sptr sink_;
|
||||||
gr::blocks::throttle::sptr throttle_;
|
gr::blocks::throttle::sptr throttle_;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
size_t item_size_;
|
size_t item_size_;
|
||||||
bool big_endian_items_;
|
bool big_endian_items_;
|
||||||
bool big_endian_bytes_;
|
bool big_endian_bytes_;
|
||||||
|
@ -31,7 +31,7 @@
|
|||||||
|
|
||||||
UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration,
|
UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
const std::string& role, unsigned int in_stream, unsigned int out_stream,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream), queue_(std::move(queue))
|
Concurrent_Queue<pmt::pmt_t>* queue) : role_(role), in_stream_(in_stream), out_stream_(out_stream)
|
||||||
{
|
{
|
||||||
// DUMP PARAMETERS
|
// DUMP PARAMETERS
|
||||||
std::string empty = "";
|
std::string empty = "";
|
||||||
@ -204,7 +204,7 @@ UhdSignalSource::UhdSignalSource(ConfigurationInterface* configuration,
|
|||||||
if (samples_.at(i) != 0ULL)
|
if (samples_.at(i) != 0ULL)
|
||||||
{
|
{
|
||||||
LOG(INFO) << "RF_channel " << i << " Send STOP signal after " << samples_.at(i) << " samples";
|
LOG(INFO) << "RF_channel " << i << " Send STOP signal after " << samples_.at(i) << " samples";
|
||||||
valve_.emplace_back(gnss_sdr_make_valve(item_size_, samples_.at(i), queue_));
|
valve_.emplace_back(gnss_sdr_make_valve(item_size_, samples_.at(i), queue));
|
||||||
DLOG(INFO) << "valve(" << valve_.at(i)->unique_id() << ")";
|
DLOG(INFO) << "valve(" << valve_.at(i)->unique_id() << ")";
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -46,7 +46,7 @@ class UhdSignalSource : public GNSSBlockInterface
|
|||||||
public:
|
public:
|
||||||
UhdSignalSource(ConfigurationInterface* configuration,
|
UhdSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::string& role, unsigned int in_stream,
|
const std::string& role, unsigned int in_stream,
|
||||||
unsigned int out_stream, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
~UhdSignalSource() = default;
|
~UhdSignalSource() = default;
|
||||||
|
|
||||||
@ -103,8 +103,6 @@ private:
|
|||||||
std::vector<boost::shared_ptr<gr::block>> valve_;
|
std::vector<boost::shared_ptr<gr::block>> valve_;
|
||||||
#endif
|
#endif
|
||||||
std::vector<gr::blocks::file_sink::sptr> file_sink_;
|
std::vector<gr::blocks::file_sink::sptr> file_sink_;
|
||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue_;
|
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_UHD_SIGNAL_SOURCE_H
|
#endif // GNSS_SDR_UHD_SIGNAL_SOURCE_H
|
||||||
|
@ -30,18 +30,18 @@
|
|||||||
#include <vector>
|
#include <vector>
|
||||||
|
|
||||||
|
|
||||||
labsat23_source_sptr labsat23_make_source_sptr(const char *signal_file_basename, int channel_selector, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue)
|
labsat23_source_sptr labsat23_make_source_sptr(const char *signal_file_basename, int channel_selector, Concurrent_Queue<pmt::pmt_t> *queue)
|
||||||
{
|
{
|
||||||
return labsat23_source_sptr(new labsat23_source(signal_file_basename, channel_selector, std::move(queue)));
|
return labsat23_source_sptr(new labsat23_source(signal_file_basename, channel_selector, queue));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
labsat23_source::labsat23_source(const char *signal_file_basename,
|
labsat23_source::labsat23_source(const char *signal_file_basename,
|
||||||
int channel_selector,
|
int channel_selector,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) : gr::block("labsat23_source",
|
Concurrent_Queue<pmt::pmt_t> *queue) : gr::block("labsat23_source",
|
||||||
gr::io_signature::make(0, 0, 0),
|
gr::io_signature::make(0, 0, 0),
|
||||||
gr::io_signature::make(1, 1, sizeof(gr_complex))),
|
gr::io_signature::make(1, 1, sizeof(gr_complex))),
|
||||||
d_queue(std::move(queue))
|
d_queue(queue)
|
||||||
{
|
{
|
||||||
if (channel_selector < 1 or channel_selector > 2)
|
if (channel_selector < 1 or channel_selector > 2)
|
||||||
{
|
{
|
||||||
@ -60,16 +60,15 @@ labsat23_source::labsat23_source(const char *signal_file_basename,
|
|||||||
std::string signal_file;
|
std::string signal_file;
|
||||||
this->set_output_multiple(8);
|
this->set_output_multiple(8);
|
||||||
signal_file = generate_filename();
|
signal_file = generate_filename();
|
||||||
binary_input_file = new std::ifstream(signal_file.c_str(), std::ios::in | std::ios::binary);
|
binary_input_file.open(signal_file.c_str(), std::ios::in | std::ios::binary);
|
||||||
|
|
||||||
if (binary_input_file->is_open())
|
if (binary_input_file.is_open())
|
||||||
{
|
{
|
||||||
std::cout << "Labsat file source is reading samples from " << signal_file << std::endl;
|
std::cout << "Labsat file source is reading samples from " << signal_file << std::endl;
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
std::cout << "Labsat file " << signal_file << " could not be opened!" << std::endl;
|
std::cout << "Labsat file " << signal_file << " could not be opened!" << std::endl;
|
||||||
delete binary_input_file;
|
|
||||||
exit(1);
|
exit(1);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -79,9 +78,9 @@ labsat23_source::~labsat23_source()
|
|||||||
{
|
{
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
if (binary_input_file->is_open())
|
if (binary_input_file.is_open())
|
||||||
{
|
{
|
||||||
binary_input_file->close();
|
binary_input_file.close();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
catch (const std::ifstream::failure &e)
|
catch (const std::ifstream::failure &e)
|
||||||
@ -92,7 +91,6 @@ labsat23_source::~labsat23_source()
|
|||||||
{
|
{
|
||||||
std::cerr << e.what() << '\n';
|
std::cerr << e.what() << '\n';
|
||||||
}
|
}
|
||||||
delete binary_input_file;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -202,10 +200,10 @@ int labsat23_source::general_work(int noutput_items,
|
|||||||
|
|
||||||
if (d_header_parsed == false)
|
if (d_header_parsed == false)
|
||||||
{
|
{
|
||||||
if (binary_input_file->eof() == false)
|
if (binary_input_file.eof() == false)
|
||||||
{
|
{
|
||||||
std::array<char, 1024> memblock{};
|
std::array<char, 1024> memblock{};
|
||||||
binary_input_file->read(memblock.data(), 1024);
|
binary_input_file.read(memblock.data(), 1024);
|
||||||
// parse Labsat header
|
// parse Labsat header
|
||||||
// check preamble
|
// check preamble
|
||||||
int byte_counter = 0;
|
int byte_counter = 0;
|
||||||
@ -392,8 +390,8 @@ int labsat23_source::general_work(int noutput_items,
|
|||||||
// end of header
|
// end of header
|
||||||
d_header_parsed = true;
|
d_header_parsed = true;
|
||||||
// seek file to the first signal sample
|
// seek file to the first signal sample
|
||||||
binary_input_file->clear();
|
binary_input_file.clear();
|
||||||
binary_input_file->seekg(header_bytes, binary_input_file->beg);
|
binary_input_file.seekg(header_bytes, binary_input_file.beg);
|
||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
std::cout << "Labsat file header error: section 2 is not available." << std::endl;
|
std::cout << "Labsat file header error: section 2 is not available." << std::endl;
|
||||||
@ -419,8 +417,8 @@ int labsat23_source::general_work(int noutput_items,
|
|||||||
if (n_int16_to_read > 0)
|
if (n_int16_to_read > 0)
|
||||||
{
|
{
|
||||||
std::vector<int16_t> memblock(n_int16_to_read);
|
std::vector<int16_t> memblock(n_int16_to_read);
|
||||||
binary_input_file->read(reinterpret_cast<char *>(memblock.data()), n_int16_to_read * 2);
|
binary_input_file.read(reinterpret_cast<char *>(memblock.data()), n_int16_to_read * 2);
|
||||||
n_int16_to_read = binary_input_file->gcount() / 2; // from bytes to int16
|
n_int16_to_read = binary_input_file.gcount() / 2; // from bytes to int16
|
||||||
if (n_int16_to_read > 0)
|
if (n_int16_to_read > 0)
|
||||||
{
|
{
|
||||||
int output_pointer = 0;
|
int output_pointer = 0;
|
||||||
@ -438,9 +436,9 @@ int labsat23_source::general_work(int noutput_items,
|
|||||||
{
|
{
|
||||||
std::cout << "End of current file, reading the next Labsat file in sequence: " << generate_filename() << std::endl;
|
std::cout << "End of current file, reading the next Labsat file in sequence: " << generate_filename() << std::endl;
|
||||||
}
|
}
|
||||||
binary_input_file->close();
|
binary_input_file.close();
|
||||||
binary_input_file->open(generate_filename().c_str(), std::ios::in | std::ios::binary);
|
binary_input_file.open(generate_filename().c_str(), std::ios::in | std::ios::binary);
|
||||||
if (binary_input_file->is_open())
|
if (binary_input_file.is_open())
|
||||||
{
|
{
|
||||||
std::cout << "Labsat file source is reading samples from " << generate_filename() << std::endl;
|
std::cout << "Labsat file source is reading samples from " << generate_filename() << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
@ -477,8 +475,8 @@ int labsat23_source::general_work(int noutput_items,
|
|||||||
if (n_int16_to_read > 0)
|
if (n_int16_to_read > 0)
|
||||||
{
|
{
|
||||||
std::vector<int16_t> memblock(n_int16_to_read);
|
std::vector<int16_t> memblock(n_int16_to_read);
|
||||||
binary_input_file->read(reinterpret_cast<char *>(memblock.data()), n_int16_to_read * 2);
|
binary_input_file.read(reinterpret_cast<char *>(memblock.data()), n_int16_to_read * 2);
|
||||||
n_int16_to_read = binary_input_file->gcount() / 2; // from bytes to int16
|
n_int16_to_read = binary_input_file.gcount() / 2; // from bytes to int16
|
||||||
if (n_int16_to_read > 0)
|
if (n_int16_to_read > 0)
|
||||||
{
|
{
|
||||||
int output_pointer = 0;
|
int output_pointer = 0;
|
||||||
@ -496,9 +494,9 @@ int labsat23_source::general_work(int noutput_items,
|
|||||||
{
|
{
|
||||||
std::cout << "End of current file, reading the next Labsat file in sequence: " << generate_filename() << std::endl;
|
std::cout << "End of current file, reading the next Labsat file in sequence: " << generate_filename() << std::endl;
|
||||||
}
|
}
|
||||||
binary_input_file->close();
|
binary_input_file.close();
|
||||||
binary_input_file->open(generate_filename().c_str(), std::ios::in | std::ios::binary);
|
binary_input_file.open(generate_filename().c_str(), std::ios::in | std::ios::binary);
|
||||||
if (binary_input_file->is_open())
|
if (binary_input_file.is_open())
|
||||||
{
|
{
|
||||||
std::cout << "Labsat file source is reading samples from " << generate_filename() << std::endl;
|
std::cout << "Labsat file source is reading samples from " << generate_filename() << std::endl;
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -43,7 +43,7 @@ using labsat23_source_sptr = boost::shared_ptr<labsat23_source>;
|
|||||||
labsat23_source_sptr labsat23_make_source_sptr(
|
labsat23_source_sptr labsat23_make_source_sptr(
|
||||||
const char *signal_file_basename,
|
const char *signal_file_basename,
|
||||||
int channel_selector,
|
int channel_selector,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t> *queue);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief This class implements conversion between Labsat2 and 3 format byte packet samples to gr_complex
|
* \brief This class implements conversion between Labsat2 and 3 format byte packet samples to gr_complex
|
||||||
@ -62,11 +62,11 @@ private:
|
|||||||
friend labsat23_source_sptr labsat23_make_source_sptr(
|
friend labsat23_source_sptr labsat23_make_source_sptr(
|
||||||
const char *signal_file_basename,
|
const char *signal_file_basename,
|
||||||
int channel_selector,
|
int channel_selector,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t> *queue);
|
||||||
|
|
||||||
labsat23_source(const char *signal_file_basename,
|
labsat23_source(const char *signal_file_basename,
|
||||||
int channel_selector,
|
int channel_selector,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t> *queue);
|
||||||
|
|
||||||
std::string generate_filename();
|
std::string generate_filename();
|
||||||
void decode_samples_one_channel(int16_t input_short, gr_complex *out, int type);
|
void decode_samples_one_channel(int16_t input_short, gr_complex *out, int type);
|
||||||
@ -77,10 +77,10 @@ private:
|
|||||||
int d_current_file_number;
|
int d_current_file_number;
|
||||||
uint8_t d_labsat_version;
|
uint8_t d_labsat_version;
|
||||||
std::string d_signal_file_basename;
|
std::string d_signal_file_basename;
|
||||||
std::ifstream *binary_input_file;
|
std::ifstream binary_input_file;
|
||||||
uint8_t d_ref_clock;
|
uint8_t d_ref_clock;
|
||||||
uint8_t d_bits_per_sample;
|
uint8_t d_bits_per_sample;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> d_queue;
|
Concurrent_Queue<pmt::pmt_t> *d_queue;
|
||||||
};
|
};
|
||||||
|
|
||||||
#endif // GNSS_SDR_LABSAT23_SOURCE_H
|
#endif // GNSS_SDR_LABSAT23_SOURCE_H
|
||||||
|
@ -180,8 +180,8 @@ bool config_ad9361_rx_local(uint64_t bandwidth_,
|
|||||||
bool quadrature_,
|
bool quadrature_,
|
||||||
bool rfdc_,
|
bool rfdc_,
|
||||||
bool bbdc_,
|
bool bbdc_,
|
||||||
std::string filter_source_,
|
std::string filter_source_, // NOLINT(performance-unnecessary-value-param)
|
||||||
std::string filter_filename_,
|
std::string filter_filename_, // NOLINT(performance-unnecessary-value-param)
|
||||||
float Fpass_,
|
float Fpass_,
|
||||||
float Fstop_)
|
float Fstop_)
|
||||||
|
|
||||||
|
@ -31,42 +31,43 @@
|
|||||||
|
|
||||||
Gnss_Sdr_Valve::Gnss_Sdr_Valve(size_t sizeof_stream_item,
|
Gnss_Sdr_Valve::Gnss_Sdr_Valve(size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue,
|
Concurrent_Queue<pmt::pmt_t>* queue,
|
||||||
bool stop_flowgraph) : gr::sync_block("valve",
|
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),
|
||||||
gr::io_signature::make(1, 20, sizeof_stream_item)),
|
gr::io_signature::make(1, 20, sizeof_stream_item)),
|
||||||
d_nitems(nitems),
|
d_nitems(nitems),
|
||||||
d_ncopied_items(0),
|
d_ncopied_items(0),
|
||||||
d_queue(std::move(queue)),
|
d_queue(queue),
|
||||||
d_stop_flowgraph(stop_flowgraph)
|
d_stop_flowgraph(stop_flowgraph)
|
||||||
{
|
{
|
||||||
d_open_valve = false;
|
d_open_valve = false;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#if GNURADIO_USES_STD_POINTERS
|
#if GNURADIO_USES_STD_POINTERS
|
||||||
std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue, bool stop_flowgraph)
|
std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, Concurrent_Queue<pmt::pmt_t>* queue, bool stop_flowgraph)
|
||||||
{
|
{
|
||||||
std::shared_ptr<Gnss_Sdr_Valve> valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, std::move(queue), stop_flowgraph));
|
std::shared_ptr<Gnss_Sdr_Valve> valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, queue, stop_flowgraph));
|
||||||
return valve_;
|
return valve_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue)
|
std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, Concurrent_Queue<pmt::pmt_t>* queue)
|
||||||
{
|
{
|
||||||
std::shared_ptr<Gnss_Sdr_Valve> valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, std::move(queue), true));
|
std::shared_ptr<Gnss_Sdr_Valve> valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, queue, true));
|
||||||
return valve_;
|
return valve_;
|
||||||
}
|
}
|
||||||
#else
|
#else
|
||||||
boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue, bool stop_flowgraph)
|
boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, Concurrent_Queue<pmt::pmt_t>* queue, bool stop_flowgraph)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<Gnss_Sdr_Valve> valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, std::move(queue), stop_flowgraph));
|
boost::shared_ptr<Gnss_Sdr_Valve> valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, queue, stop_flowgraph));
|
||||||
return valve_;
|
return valve_;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue)
|
boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(size_t sizeof_stream_item, uint64_t nitems, Concurrent_Queue<pmt::pmt_t>* queue)
|
||||||
{
|
{
|
||||||
boost::shared_ptr<Gnss_Sdr_Valve> valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, std::move(queue), true));
|
boost::shared_ptr<Gnss_Sdr_Valve> valve_(new Gnss_Sdr_Valve(sizeof_stream_item, nitems, queue, true));
|
||||||
return valve_;
|
return valve_;
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
@ -79,8 +80,8 @@ void Gnss_Sdr_Valve::open_valve()
|
|||||||
|
|
||||||
|
|
||||||
int Gnss_Sdr_Valve::work(int noutput_items,
|
int Gnss_Sdr_Valve::work(int noutput_items,
|
||||||
gr_vector_const_void_star &input_items,
|
gr_vector_const_void_star& input_items,
|
||||||
gr_vector_void_star &output_items)
|
gr_vector_void_star& output_items)
|
||||||
{
|
{
|
||||||
if (d_open_valve == false)
|
if (d_open_valve == false)
|
||||||
{
|
{
|
||||||
|
@ -41,23 +41,23 @@ class Gnss_Sdr_Valve;
|
|||||||
std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
||||||
size_t sizeof_stream_item,
|
size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
||||||
size_t sizeof_stream_item,
|
size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue,
|
Concurrent_Queue<pmt::pmt_t>* queue,
|
||||||
bool stop_flowgraph);
|
bool stop_flowgraph);
|
||||||
#else
|
#else
|
||||||
boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
||||||
size_t sizeof_stream_item,
|
size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
||||||
size_t sizeof_stream_item,
|
size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue,
|
Concurrent_Queue<pmt::pmt_t>* queue,
|
||||||
bool stop_flowgraph);
|
bool stop_flowgraph);
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
@ -71,40 +71,40 @@ public:
|
|||||||
void open_valve();
|
void open_valve();
|
||||||
|
|
||||||
int work(int noutput_items,
|
int work(int noutput_items,
|
||||||
gr_vector_const_void_star &input_items,
|
gr_vector_const_void_star& input_items,
|
||||||
gr_vector_void_star &output_items);
|
gr_vector_void_star& output_items);
|
||||||
|
|
||||||
private:
|
private:
|
||||||
#if GNURADIO_USES_STD_POINTERS
|
#if GNURADIO_USES_STD_POINTERS
|
||||||
friend std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
friend std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
||||||
size_t sizeof_stream_item,
|
size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
friend std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
friend std::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
||||||
size_t sizeof_stream_item,
|
size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue,
|
Concurrent_Queue<pmt::pmt_t>* queue,
|
||||||
bool stop_flowgraph);
|
bool stop_flowgraph);
|
||||||
#else
|
#else
|
||||||
friend boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
friend boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
||||||
size_t sizeof_stream_item,
|
size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
friend boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
friend boost::shared_ptr<Gnss_Sdr_Valve> gnss_sdr_make_valve(
|
||||||
size_t sizeof_stream_item,
|
size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue,
|
Concurrent_Queue<pmt::pmt_t>* queue,
|
||||||
bool stop_flowgraph);
|
bool stop_flowgraph);
|
||||||
#endif
|
#endif
|
||||||
Gnss_Sdr_Valve(size_t sizeof_stream_item,
|
Gnss_Sdr_Valve(size_t sizeof_stream_item,
|
||||||
uint64_t nitems,
|
uint64_t nitems,
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue, bool stop_flowgraph);
|
Concurrent_Queue<pmt::pmt_t>* queue, bool stop_flowgraph);
|
||||||
|
|
||||||
uint64_t d_nitems;
|
uint64_t d_nitems;
|
||||||
uint64_t d_ncopied_items;
|
uint64_t d_ncopied_items;
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> d_queue;
|
Concurrent_Queue<pmt::pmt_t>* d_queue;
|
||||||
bool d_stop_flowgraph;
|
bool d_stop_flowgraph;
|
||||||
bool d_open_valve;
|
bool d_open_valve;
|
||||||
};
|
};
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -4,14 +4,15 @@
|
|||||||
* \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com
|
* \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com
|
||||||
* Luis Esteve, 2011. luis(at)epsilon-formacion.com
|
* Luis Esteve, 2011. luis(at)epsilon-formacion.com
|
||||||
* Javier Arribas, 2011. jarribas(at)cttc.es
|
* Javier Arribas, 2011. jarribas(at)cttc.es
|
||||||
* Carles Fernandez-Prades, 2014. cfernandez(at)cttc.es
|
* Carles Fernandez-Prades, 2014-2020. cfernandez(at)cttc.es
|
||||||
*
|
*
|
||||||
* This class encapsulates the complexity behind the instantiation
|
* This class encapsulates the complexity behind the instantiation
|
||||||
* of GNSS blocks.
|
* of GNSS blocks.
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
|
||||||
*
|
*
|
||||||
* Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors)
|
* -----------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
|
||||||
*
|
*
|
||||||
* GNSS-SDR is a software defined Global Navigation
|
* GNSS-SDR is a software defined Global Navigation
|
||||||
* Satellite Systems receiver
|
* Satellite Systems receiver
|
||||||
@ -20,7 +21,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
* -----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef GNSS_SDR_BLOCK_FACTORY_H
|
#ifndef GNSS_SDR_BLOCK_FACTORY_H
|
||||||
@ -28,7 +29,7 @@
|
|||||||
|
|
||||||
#include "concurrent_queue.h"
|
#include "concurrent_queue.h"
|
||||||
#include <pmt/pmt.h>
|
#include <pmt/pmt.h>
|
||||||
#include <memory> // for unique_ptr, shared_ptr
|
#include <memory> // for unique_ptr
|
||||||
#include <string> // for string
|
#include <string> // for string
|
||||||
#include <vector> // for vector
|
#include <vector> // for vector
|
||||||
|
|
||||||
@ -48,77 +49,77 @@ public:
|
|||||||
GNSSBlockFactory() = default;
|
GNSSBlockFactory() = default;
|
||||||
~GNSSBlockFactory() = default;
|
~GNSSBlockFactory() = default;
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetSignalSource(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetSignalSource(ConfigurationInterface* configuration,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue, int ID = -1); // NOLINT(performance-unnecessary-value-param)
|
Concurrent_Queue<pmt::pmt_t>* queue, int ID = -1); // NOLINT(performance-unnecessary-value-param)
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetSignalConditioner(const std::shared_ptr<ConfigurationInterface>& configuration, int ID = -1);
|
std::unique_ptr<GNSSBlockInterface> GetSignalConditioner(ConfigurationInterface* configuration, int ID = -1);
|
||||||
|
|
||||||
std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> GetChannels(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> GetChannels(ConfigurationInterface* configuration,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue); // NOLINT(performance-unnecessary-value-param)
|
Concurrent_Queue<pmt::pmt_t>* queue); // NOLINT(performance-unnecessary-value-param)
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetObservables(const std::shared_ptr<ConfigurationInterface>& configuration);
|
std::unique_ptr<GNSSBlockInterface> GetObservables(ConfigurationInterface* configuration);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetPVT(const std::shared_ptr<ConfigurationInterface>& configuration);
|
std::unique_ptr<GNSSBlockInterface> GetPVT(ConfigurationInterface* configuration);
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Returns the block with the required configuration and implementation
|
* \brief Returns the block with the required configuration and implementation
|
||||||
*/
|
*/
|
||||||
std::unique_ptr<GNSSBlockInterface> GetBlock(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetBlock(ConfigurationInterface* configuration,
|
||||||
const std::string& role, const std::string& implementation,
|
const std::string& role, const std::string& implementation,
|
||||||
unsigned int in_streams, unsigned int out_streams,
|
unsigned int in_streams, unsigned int out_streams,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue = nullptr); // NOLINT(performance-unnecessary-value-param)
|
Concurrent_Queue<pmt::pmt_t>* queue = nullptr); // NOLINT(performance-unnecessary-value-param)
|
||||||
|
|
||||||
private:
|
private:
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_1C(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_1C(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_2S(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_2S(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_1B(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_1B(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_5X(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_5X(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_L5(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_L5(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_1G(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_1G(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_2G(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_2G(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_B1(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_B1(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_B3(const std::shared_ptr<ConfigurationInterface>& configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_B3(ConfigurationInterface* configuration,
|
||||||
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
const std::string& acq, const std::string& trk, const std::string& tlm, int channel,
|
||||||
const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>>& queue);
|
Concurrent_Queue<pmt::pmt_t>* queue);
|
||||||
|
|
||||||
std::unique_ptr<AcquisitionInterface> GetAcqBlock(
|
std::unique_ptr<AcquisitionInterface> GetAcqBlock(
|
||||||
const std::shared_ptr<ConfigurationInterface>& configuration,
|
ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
const std::string& implementation, unsigned int in_streams,
|
const std::string& implementation, unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
std::unique_ptr<TrackingInterface> GetTrkBlock(
|
std::unique_ptr<TrackingInterface> GetTrkBlock(
|
||||||
const std::shared_ptr<ConfigurationInterface>& configuration,
|
ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
const std::string& implementation, unsigned int in_streams,
|
const std::string& implementation, unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
|
||||||
std::unique_ptr<TelemetryDecoderInterface> GetTlmBlock(
|
std::unique_ptr<TelemetryDecoderInterface> GetTlmBlock(
|
||||||
const std::shared_ptr<ConfigurationInterface>& configuration,
|
ConfigurationInterface* configuration,
|
||||||
const std::string& role,
|
const std::string& role,
|
||||||
const std::string& implementation, unsigned int in_streams,
|
const std::string& implementation, unsigned int in_streams,
|
||||||
unsigned int out_streams);
|
unsigned int out_streams);
|
||||||
|
@ -3,13 +3,14 @@
|
|||||||
* \brief Implementation of a GNSS receiver flow graph
|
* \brief Implementation of a GNSS receiver flow graph
|
||||||
* \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com
|
* \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com
|
||||||
* Luis Esteve, 2012. luis(at)epsilon-formacion.com
|
* Luis Esteve, 2012. luis(at)epsilon-formacion.com
|
||||||
* Carles Fernandez-Prades, 2014. cfernandez(at)cttc.es
|
* Carles Fernandez-Prades, 2014-2020. cfernandez(at)cttc.es
|
||||||
* Álvaro Cebrián Juan, 2018. acebrianjuan(at)gmail.com
|
* Álvaro Cebrián Juan, 2018. acebrianjuan(at)gmail.com
|
||||||
* Javier Arribas, 2018. javiarribas(at)gmail.com
|
* Javier Arribas, 2018. javiarribas(at)gmail.com
|
||||||
*
|
*
|
||||||
|
*
|
||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*
|
*
|
||||||
* Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors)
|
* Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
|
||||||
*
|
*
|
||||||
* GNSS-SDR is a software defined Global Navigation
|
* GNSS-SDR is a software defined Global Navigation
|
||||||
* Satellite Systems receiver
|
* Satellite Systems receiver
|
||||||
@ -34,6 +35,7 @@
|
|||||||
#include "gnss_block_factory.h"
|
#include "gnss_block_factory.h"
|
||||||
#include "gnss_block_interface.h"
|
#include "gnss_block_interface.h"
|
||||||
#include "gnss_satellite.h"
|
#include "gnss_satellite.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gnss_synchro_monitor.h"
|
#include "gnss_synchro_monitor.h"
|
||||||
#include <boost/lexical_cast.hpp> // for boost::lexical_cast
|
#include <boost/lexical_cast.hpp> // for boost::lexical_cast
|
||||||
#include <boost/tokenizer.hpp> // for boost::tokenizer
|
#include <boost/tokenizer.hpp> // for boost::tokenizer
|
||||||
@ -52,7 +54,10 @@
|
|||||||
#include <memory> // for std::shared_ptr
|
#include <memory> // for std::shared_ptr
|
||||||
#include <set> // for set
|
#include <set> // for set
|
||||||
#include <stdexcept> // for invalid_argument
|
#include <stdexcept> // for invalid_argument
|
||||||
#include <thread> // for thread
|
#include <thread> // for std::thread
|
||||||
|
#include <utility> // for std::move
|
||||||
|
|
||||||
|
|
||||||
#ifdef GR_GREATER_38
|
#ifdef GR_GREATER_38
|
||||||
#include <gnuradio/filter/fir_filter_blk.h>
|
#include <gnuradio/filter/fir_filter_blk.h>
|
||||||
#else
|
#else
|
||||||
@ -63,12 +68,12 @@
|
|||||||
#define GNSS_SDR_ARRAY_SIGNAL_CONDITIONER_CHANNELS 8
|
#define GNSS_SDR_ARRAY_SIGNAL_CONDITIONER_CHANNELS 8
|
||||||
|
|
||||||
|
|
||||||
GNSSFlowgraph::GNSSFlowgraph(std::shared_ptr<ConfigurationInterface> configuration, const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) // NOLINT(performance-unnecessary-value-param)
|
GNSSFlowgraph::GNSSFlowgraph(std::shared_ptr<ConfigurationInterface> configuration, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue) // NOLINT(performance-unnecessary-value-param)
|
||||||
{
|
{
|
||||||
connected_ = false;
|
connected_ = false;
|
||||||
running_ = false;
|
running_ = false;
|
||||||
configuration_ = std::move(configuration);
|
configuration_ = std::move(configuration);
|
||||||
queue_ = queue;
|
queue_ = std::move(queue);
|
||||||
multiband_ = GNSSFlowgraph::is_multiband();
|
multiband_ = GNSSFlowgraph::is_multiband();
|
||||||
init();
|
init();
|
||||||
}
|
}
|
||||||
@ -1482,7 +1487,7 @@ void GNSSFlowgraph::init()
|
|||||||
/*
|
/*
|
||||||
* Instantiates the receiver blocks
|
* Instantiates the receiver blocks
|
||||||
*/
|
*/
|
||||||
std::unique_ptr<GNSSBlockFactory> block_factory_(new GNSSBlockFactory());
|
auto block_factory_ = std::make_unique<GNSSBlockFactory>();
|
||||||
|
|
||||||
channels_status_ = channel_status_msg_receiver_make();
|
channels_status_ = channel_status_msg_receiver_make();
|
||||||
|
|
||||||
@ -1497,7 +1502,7 @@ void GNSSFlowgraph::init()
|
|||||||
for (int i = 0; i < sources_count_; i++)
|
for (int i = 0; i < sources_count_; i++)
|
||||||
{
|
{
|
||||||
std::cout << "Creating source " << i << std::endl;
|
std::cout << "Creating source " << i << std::endl;
|
||||||
sig_source_.push_back(block_factory_->GetSignalSource(configuration_, queue_, i));
|
sig_source_.push_back(block_factory_->GetSignalSource(configuration_.get(), queue_.get(), i));
|
||||||
// TODO: Create a class interface for SignalSources, derived from GNSSBlockInterface.
|
// TODO: Create a class interface for SignalSources, derived from GNSSBlockInterface.
|
||||||
// Include GetRFChannels in the interface to avoid read config parameters here
|
// Include GetRFChannels in the interface to avoid read config parameters here
|
||||||
// read the number of RF channels for each front-end
|
// read the number of RF channels for each front-end
|
||||||
@ -1505,7 +1510,7 @@ void GNSSFlowgraph::init()
|
|||||||
std::cout << "RF Channels " << RF_Channels << std::endl;
|
std::cout << "RF Channels " << RF_Channels << std::endl;
|
||||||
for (int j = 0; j < RF_Channels; j++)
|
for (int j = 0; j < RF_Channels; j++)
|
||||||
{
|
{
|
||||||
sig_conditioner_.push_back(block_factory_->GetSignalConditioner(configuration_, signal_conditioner_ID));
|
sig_conditioner_.push_back(block_factory_->GetSignalConditioner(configuration_.get(), signal_conditioner_ID));
|
||||||
signal_conditioner_ID++;
|
signal_conditioner_ID++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -1513,7 +1518,7 @@ void GNSSFlowgraph::init()
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
// backwards compatibility for old config files
|
// backwards compatibility for old config files
|
||||||
sig_source_.push_back(block_factory_->GetSignalSource(configuration_, queue_, -1));
|
sig_source_.push_back(block_factory_->GetSignalSource(configuration_.get(), queue_.get(), -1));
|
||||||
// TODO: Create a class interface for SignalSources, derived from GNSSBlockInterface.
|
// TODO: Create a class interface for SignalSources, derived from GNSSBlockInterface.
|
||||||
// Include GetRFChannels in the interface to avoid read config parameters here
|
// Include GetRFChannels in the interface to avoid read config parameters here
|
||||||
// read the number of RF channels for each front-end
|
// read the number of RF channels for each front-end
|
||||||
@ -1522,18 +1527,18 @@ void GNSSFlowgraph::init()
|
|||||||
{
|
{
|
||||||
for (int j = 0; j < RF_Channels; j++)
|
for (int j = 0; j < RF_Channels; j++)
|
||||||
{
|
{
|
||||||
sig_conditioner_.push_back(block_factory_->GetSignalConditioner(configuration_, signal_conditioner_ID));
|
sig_conditioner_.push_back(block_factory_->GetSignalConditioner(configuration_.get(), signal_conditioner_ID));
|
||||||
signal_conditioner_ID++;
|
signal_conditioner_ID++;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// old config file, single signal source and single channel, not specified
|
// old config file, single signal source and single channel, not specified
|
||||||
sig_conditioner_.push_back(block_factory_->GetSignalConditioner(configuration_, -1));
|
sig_conditioner_.push_back(block_factory_->GetSignalConditioner(configuration_.get(), -1));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
observables_ = block_factory_->GetObservables(configuration_);
|
observables_ = block_factory_->GetObservables(configuration_.get());
|
||||||
// Mark old implementations as deprecated
|
// Mark old implementations as deprecated
|
||||||
std::string default_str("Default");
|
std::string default_str("Default");
|
||||||
std::string obs_implementation = configuration_->property("Observables.implementation", default_str);
|
std::string obs_implementation = configuration_->property("Observables.implementation", default_str);
|
||||||
@ -1544,7 +1549,7 @@ void GNSSFlowgraph::init()
|
|||||||
std::cout << "Please update your configuration file." << std::endl;
|
std::cout << "Please update your configuration file." << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
pvt_ = block_factory_->GetPVT(configuration_);
|
pvt_ = block_factory_->GetPVT(configuration_.get());
|
||||||
// Mark old implementations as deprecated
|
// Mark old implementations as deprecated
|
||||||
std::string pvt_implementation = configuration_->property("PVT.implementation", default_str);
|
std::string pvt_implementation = configuration_->property("PVT.implementation", default_str);
|
||||||
if ((pvt_implementation == "GPS_L1_CA_PVT") || (pvt_implementation == "Galileo_E1_PVT") || (pvt_implementation == "Hybrid_PVT"))
|
if ((pvt_implementation == "GPS_L1_CA_PVT") || (pvt_implementation == "Galileo_E1_PVT") || (pvt_implementation == "Hybrid_PVT"))
|
||||||
@ -1553,7 +1558,7 @@ void GNSSFlowgraph::init()
|
|||||||
std::cout << "Please update your configuration file." << std::endl;
|
std::cout << "Please update your configuration file." << std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
std::shared_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> channels = block_factory_->GetChannels(configuration_, queue_);
|
auto channels = block_factory_->GetChannels(configuration_.get(), queue_.get());
|
||||||
|
|
||||||
channels_count_ = channels->size();
|
channels_count_ = channels->size();
|
||||||
for (unsigned int i = 0; i < channels_count_; i++)
|
for (unsigned int i = 0; i < channels_count_; i++)
|
||||||
|
@ -3,15 +3,16 @@
|
|||||||
* \brief Interface of a GNSS receiver flow graph.
|
* \brief Interface of a GNSS receiver flow graph.
|
||||||
* \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com
|
* \author Carlos Aviles, 2010. carlos.avilesr(at)googlemail.com
|
||||||
* Luis Esteve, 2011. luis(at)epsilon-formacion.com
|
* Luis Esteve, 2011. luis(at)epsilon-formacion.com
|
||||||
* Carles Fernandez-Prades, 2014. cfernandez(at)cttc.es
|
* Carles Fernandez-Prades, 2014-2020. cfernandez(at)cttc.es
|
||||||
* Álvaro Cebrián Juan, 2018. acebrianjuan(at)gmail.com
|
* Álvaro Cebrián Juan, 2018. acebrianjuan(at)gmail.com
|
||||||
*
|
*
|
||||||
* It contains a signal source,
|
* It contains a signal source,
|
||||||
* a signal conditioner, a set of channels, an observables block and a pvt.
|
* a signal conditioner, a set of channels, an observables block and a pvt.
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
|
||||||
*
|
*
|
||||||
* Copyright (C) 2010-2019 (see AUTHORS file for a list of contributors)
|
* -----------------------------------------------------------------------------
|
||||||
|
*
|
||||||
|
* Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
|
||||||
*
|
*
|
||||||
* GNSS-SDR is a software defined Global Navigation
|
* GNSS-SDR is a software defined Global Navigation
|
||||||
* Satellite Systems receiver
|
* Satellite Systems receiver
|
||||||
@ -20,7 +21,7 @@
|
|||||||
*
|
*
|
||||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
* -----------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#ifndef GNSS_SDR_GNSS_FLOWGRAPH_H
|
#ifndef GNSS_SDR_GNSS_FLOWGRAPH_H
|
||||||
@ -61,7 +62,7 @@ public:
|
|||||||
/*!
|
/*!
|
||||||
* \brief Constructor that initializes the receiver flow graph
|
* \brief Constructor that initializes the receiver flow graph
|
||||||
*/
|
*/
|
||||||
GNSSFlowgraph(std::shared_ptr<ConfigurationInterface> configuration, const std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue); // NOLINT(performance-unnecessary-value-param)
|
GNSSFlowgraph(std::shared_ptr<ConfigurationInterface> configuration, std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue); // NOLINT(performance-unnecessary-value-param)
|
||||||
|
|
||||||
/*!
|
/*!
|
||||||
* \brief Destructor
|
* \brief Destructor
|
||||||
|
@ -27,6 +27,7 @@ endif()
|
|||||||
|
|
||||||
target_link_libraries(gnss-sdr
|
target_link_libraries(gnss-sdr
|
||||||
PRIVATE
|
PRIVATE
|
||||||
|
algorithms_libs
|
||||||
core_receiver
|
core_receiver
|
||||||
Boost::headers
|
Boost::headers
|
||||||
Boost::thread
|
Boost::thread
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include "concurrent_map.h"
|
#include "concurrent_map.h"
|
||||||
#include "concurrent_queue.h"
|
#include "concurrent_queue.h"
|
||||||
#include "control_thread.h"
|
#include "control_thread.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gps_acq_assist.h"
|
#include "gps_acq_assist.h"
|
||||||
#include <boost/exception/diagnostic_information.hpp> // for diagnostic_information
|
#include <boost/exception/diagnostic_information.hpp> // for diagnostic_information
|
||||||
#include <boost/exception/exception.hpp> // for exception
|
#include <boost/exception/exception.hpp> // for exception
|
||||||
@ -139,7 +140,7 @@ int main(int argc, char** argv)
|
|||||||
int return_code = 0;
|
int return_code = 0;
|
||||||
try
|
try
|
||||||
{
|
{
|
||||||
std::unique_ptr<ControlThread> control_thread(new ControlThread());
|
auto control_thread = std::make_unique<ControlThread>();
|
||||||
// record startup time
|
// record startup time
|
||||||
start = std::chrono::system_clock::now();
|
start = std::chrono::system_clock::now();
|
||||||
return_code = control_thread->run();
|
return_code = control_thread->run();
|
||||||
|
@ -20,19 +20,14 @@
|
|||||||
|
|
||||||
#include "gnss_signal_processing.h"
|
#include "gnss_signal_processing.h"
|
||||||
#include "gps_sdr_signal_processing.h"
|
#include "gps_sdr_signal_processing.h"
|
||||||
|
#include <array>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <complex>
|
#include <complex>
|
||||||
|
#include <vector>
|
||||||
#if HAS_STD_SPAN
|
|
||||||
#include <span>
|
|
||||||
namespace gsl = std;
|
|
||||||
#else
|
|
||||||
#include <gsl/gsl>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
TEST(CodeGenerationTest, CodeGenGPSL1Test)
|
TEST(CodeGenerationTest, CodeGenGPSL1Test)
|
||||||
{
|
{
|
||||||
auto* _dest = new std::complex<float>[1023];
|
std::array<std::complex<float>, 1023> _dest{};
|
||||||
signed int _prn = 1;
|
signed int _prn = 1;
|
||||||
unsigned int _chip_shift = 4;
|
unsigned int _chip_shift = 4;
|
||||||
|
|
||||||
@ -43,13 +38,12 @@ TEST(CodeGenerationTest, CodeGenGPSL1Test)
|
|||||||
|
|
||||||
for (int i = 0; i < iterations; i++)
|
for (int i = 0; i < iterations; i++)
|
||||||
{
|
{
|
||||||
gps_l1_ca_code_gen_complex(own::span<std::complex<float>>(_dest, 1023), _prn, _chip_shift);
|
gps_l1_ca_code_gen_complex(_dest, _prn, _chip_shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
end = std::chrono::system_clock::now();
|
end = std::chrono::system_clock::now();
|
||||||
std::chrono::duration<double> elapsed_seconds = end - start;
|
std::chrono::duration<double> elapsed_seconds = end - start;
|
||||||
|
|
||||||
delete[] _dest;
|
|
||||||
ASSERT_LE(0, elapsed_seconds.count());
|
ASSERT_LE(0, elapsed_seconds.count());
|
||||||
std::cout << "Generation completed in " << elapsed_seconds.count() * 1e6 << " microseconds" << std::endl;
|
std::cout << "Generation completed in " << elapsed_seconds.count() * 1e6 << " microseconds" << std::endl;
|
||||||
}
|
}
|
||||||
@ -63,7 +57,7 @@ TEST(CodeGenerationTest, CodeGenGPSL1SampledTest)
|
|||||||
const signed int _codeFreqBasis = 1023000; // Hz
|
const signed int _codeFreqBasis = 1023000; // Hz
|
||||||
const signed int _codeLength = 1023;
|
const signed int _codeLength = 1023;
|
||||||
int _samplesPerCode = round(_fs / static_cast<double>(_codeFreqBasis / _codeLength));
|
int _samplesPerCode = round(_fs / static_cast<double>(_codeFreqBasis / _codeLength));
|
||||||
auto* _dest = new std::complex<float>[_samplesPerCode];
|
std::vector<std::complex<float>> _dest(_samplesPerCode);
|
||||||
|
|
||||||
int iterations = 1000;
|
int iterations = 1000;
|
||||||
|
|
||||||
@ -72,13 +66,12 @@ TEST(CodeGenerationTest, CodeGenGPSL1SampledTest)
|
|||||||
|
|
||||||
for (int i = 0; i < iterations; i++)
|
for (int i = 0; i < iterations; i++)
|
||||||
{
|
{
|
||||||
gps_l1_ca_code_gen_complex_sampled(own::span<std::complex<float>>(_dest, _samplesPerCode), _prn, _fs, _chip_shift);
|
gps_l1_ca_code_gen_complex_sampled(_dest, _prn, _fs, _chip_shift);
|
||||||
}
|
}
|
||||||
|
|
||||||
end = std::chrono::system_clock::now();
|
end = std::chrono::system_clock::now();
|
||||||
std::chrono::duration<double> elapsed_seconds = end - start;
|
std::chrono::duration<double> elapsed_seconds = end - start;
|
||||||
|
|
||||||
delete[] _dest;
|
|
||||||
ASSERT_LE(0, elapsed_seconds.count());
|
ASSERT_LE(0, elapsed_seconds.count());
|
||||||
std::cout << "Generation completed in " << elapsed_seconds.count() * 1e6 << " microseconds" << std::endl;
|
std::cout << "Generation completed in " << elapsed_seconds.count() * 1e6 << " microseconds" << std::endl;
|
||||||
}
|
}
|
||||||
@ -91,7 +84,7 @@ TEST(CodeGenerationTest, ComplexConjugateTest)
|
|||||||
const signed int _codeFreqBasis = 1023000; // Hz
|
const signed int _codeFreqBasis = 1023000; // Hz
|
||||||
const signed int _codeLength = 1023;
|
const signed int _codeLength = 1023;
|
||||||
int _samplesPerCode = round(_fs / static_cast<double>(_codeFreqBasis / _codeLength));
|
int _samplesPerCode = round(_fs / static_cast<double>(_codeFreqBasis / _codeLength));
|
||||||
auto* _dest = new std::complex<float>[_samplesPerCode];
|
std::vector<std::complex<float>> _dest(_samplesPerCode);
|
||||||
|
|
||||||
int iterations = 1000;
|
int iterations = 1000;
|
||||||
|
|
||||||
@ -100,13 +93,12 @@ TEST(CodeGenerationTest, ComplexConjugateTest)
|
|||||||
|
|
||||||
for (int i = 0; i < iterations; i++)
|
for (int i = 0; i < iterations; i++)
|
||||||
{
|
{
|
||||||
complex_exp_gen_conj(own::span<std::complex<float>>(_dest, _samplesPerCode), _f, _fs);
|
complex_exp_gen_conj(_dest, _f, _fs);
|
||||||
}
|
}
|
||||||
|
|
||||||
end = std::chrono::system_clock::now();
|
end = std::chrono::system_clock::now();
|
||||||
std::chrono::duration<double> elapsed_seconds = end - start;
|
std::chrono::duration<double> elapsed_seconds = end - start;
|
||||||
|
|
||||||
delete[] _dest;
|
|
||||||
ASSERT_LE(0, elapsed_seconds.count());
|
ASSERT_LE(0, elapsed_seconds.count());
|
||||||
std::cout << "Generation completed in " << elapsed_seconds.count() * 1e6 << " microseconds" << std::endl;
|
std::cout << "Generation completed in " << elapsed_seconds.count() * 1e6 << " microseconds" << std::endl;
|
||||||
}
|
}
|
||||||
|
@ -24,12 +24,6 @@
|
|||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <complex>
|
#include <complex>
|
||||||
|
|
||||||
#if HAS_STD_SPAN
|
|
||||||
#include <span>
|
|
||||||
namespace gsl = std;
|
|
||||||
#else
|
|
||||||
#include <gsl/gsl>
|
|
||||||
#endif
|
|
||||||
|
|
||||||
DEFINE_int32(size_carrier_test, 100000, "Size of the arrays used for complex carrier testing");
|
DEFINE_int32(size_carrier_test, 100000, "Size of the arrays used for complex carrier testing");
|
||||||
|
|
||||||
@ -110,13 +104,14 @@ TEST(ComplexCarrierTest, C11ComplexImplementation)
|
|||||||
|
|
||||||
TEST(ComplexCarrierTest, OwnComplexImplementation)
|
TEST(ComplexCarrierTest, OwnComplexImplementation)
|
||||||
{
|
{
|
||||||
auto* output = new std::complex<float>[FLAGS_size_carrier_test];
|
std::vector<std::complex<float>> output(FLAGS_size_carrier_test);
|
||||||
|
|
||||||
double _f = 2000.0;
|
double _f = 2000.0;
|
||||||
double _fs = 2000000.0;
|
double _fs = 2000000.0;
|
||||||
std::chrono::time_point<std::chrono::system_clock> start, end;
|
std::chrono::time_point<std::chrono::system_clock> start, end;
|
||||||
start = std::chrono::system_clock::now();
|
start = std::chrono::system_clock::now();
|
||||||
|
|
||||||
complex_exp_gen(own::span<std::complex<float>>(output, static_cast<unsigned int>(FLAGS_size_carrier_test)), _f, _fs);
|
complex_exp_gen(output, _f, _fs);
|
||||||
|
|
||||||
end = std::chrono::system_clock::now();
|
end = std::chrono::system_clock::now();
|
||||||
std::chrono::duration<double> elapsed_seconds = end - start;
|
std::chrono::duration<double> elapsed_seconds = end - start;
|
||||||
@ -130,7 +125,7 @@ TEST(ComplexCarrierTest, OwnComplexImplementation)
|
|||||||
{
|
{
|
||||||
mag[i] = output[i] * std::conj(output[i]);
|
mag[i] = output[i] * std::conj(output[i]);
|
||||||
}
|
}
|
||||||
delete[] output;
|
|
||||||
for (int i = 0; i < FLAGS_size_carrier_test; i++)
|
for (int i = 0; i < FLAGS_size_carrier_test; i++)
|
||||||
{
|
{
|
||||||
ASSERT_NEAR(std::norm(expected), std::norm(mag[i]), 0.0001);
|
ASSERT_NEAR(std::norm(expected), std::norm(mag[i]), 0.0001);
|
||||||
|
@ -18,6 +18,7 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "gnuplot_i.h"
|
#include "gnuplot_i.h"
|
||||||
#include "test_flags.h"
|
#include "test_flags.h"
|
||||||
#include <gnuradio/fft/fft.h>
|
#include <gnuradio/fft/fft.h>
|
||||||
@ -72,9 +73,8 @@ TEST(FFTLengthTest, MeasureExecutionTime)
|
|||||||
|
|
||||||
EXPECT_NO_THROW(
|
EXPECT_NO_THROW(
|
||||||
for (it = fft_sizes_v.cbegin(); it != fft_sizes_v.cend(); ++it) {
|
for (it = fft_sizes_v.cbegin(); it != fft_sizes_v.cend(); ++it) {
|
||||||
gr::fft::fft_complex* d_fft;
|
|
||||||
d_fft_size = *it;
|
d_fft_size = *it;
|
||||||
d_fft = new gr::fft::fft_complex(d_fft_size, true);
|
auto d_fft = std::make_unique<gr::fft::fft_complex>(d_fft_size, true);
|
||||||
|
|
||||||
std::generate_n(d_fft->get_inbuf(), d_fft_size, gen);
|
std::generate_n(d_fft->get_inbuf(), d_fft_size, gen);
|
||||||
|
|
||||||
@ -88,7 +88,6 @@ TEST(FFTLengthTest, MeasureExecutionTime)
|
|||||||
double exec_time = elapsed_seconds.count() / static_cast<double>(FLAGS_fft_iterations_test);
|
double exec_time = elapsed_seconds.count() / static_cast<double>(FLAGS_fft_iterations_test);
|
||||||
execution_times.push_back(exec_time * 1e3);
|
execution_times.push_back(exec_time * 1e3);
|
||||||
std::cout << "FFT execution time for length=" << d_fft_size << " : " << exec_time << " [s]" << std::endl;
|
std::cout << "FFT execution time for length=" << d_fft_size << " : " << exec_time << " [s]" << std::endl;
|
||||||
delete d_fft;
|
|
||||||
|
|
||||||
if ((d_fft_size & (d_fft_size - 1)) == 0) // if it is a power of two
|
if ((d_fft_size & (d_fft_size - 1)) == 0) // if it is a power of two
|
||||||
{
|
{
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include <armadillo>
|
#include <armadillo>
|
||||||
#include <gnuradio/fft/fft.h>
|
#include <gnuradio/fft/fft.h>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
@ -38,8 +39,7 @@ TEST(FFTSpeedTest, ArmadilloVSGNURadioExecutionTime)
|
|||||||
for (unsigned int fft_size
|
for (unsigned int fft_size
|
||||||
: fft_sizes) {
|
: fft_sizes) {
|
||||||
d_fft_size = fft_size;
|
d_fft_size = fft_size;
|
||||||
gr::fft::fft_complex* d_gr_fft;
|
auto d_gr_fft = std::make_unique<gr::fft::fft_complex>(d_fft_size, true);
|
||||||
d_gr_fft = new gr::fft::fft_complex(d_fft_size, true);
|
|
||||||
arma::arma_rng::set_seed_random();
|
arma::arma_rng::set_seed_random();
|
||||||
arma::cx_fvec d_arma_fft = arma::cx_fvec(d_fft_size).randn() + gr_complex(0.0, 1.0) * arma::cx_fvec(d_fft_size).randn();
|
arma::cx_fvec d_arma_fft = arma::cx_fvec(d_fft_size).randn() + gr_complex(0.0, 1.0) * arma::cx_fvec(d_fft_size).randn();
|
||||||
arma::cx_fvec d_arma_fft_result(d_fft_size);
|
arma::cx_fvec d_arma_fft_result(d_fft_size);
|
||||||
@ -54,7 +54,6 @@ TEST(FFTSpeedTest, ArmadilloVSGNURadioExecutionTime)
|
|||||||
elapsed_seconds = end - start;
|
elapsed_seconds = end - start;
|
||||||
d_execution_time = elapsed_seconds.count() / static_cast<double>(FLAGS_fft_speed_iterations_test);
|
d_execution_time = elapsed_seconds.count() / static_cast<double>(FLAGS_fft_speed_iterations_test);
|
||||||
std::cout << "GNU Radio FFT execution time for length = " << d_fft_size << " : " << d_execution_time * 1e6 << " [us]" << std::endl;
|
std::cout << "GNU Radio FFT execution time for length = " << d_fft_size << " : " << d_execution_time * 1e6 << " [us]" << std::endl;
|
||||||
delete d_gr_fft;
|
|
||||||
|
|
||||||
start = std::chrono::system_clock::now();
|
start = std::chrono::system_clock::now();
|
||||||
for (int k = 0; k < FLAGS_fft_speed_iterations_test; k++)
|
for (int k = 0; k < FLAGS_fft_speed_iterations_test; k++)
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "GPS_L1_CA.h"
|
#include "GPS_L1_CA.h"
|
||||||
|
#include <algorithm>
|
||||||
#include <array>
|
#include <array>
|
||||||
#include <chrono>
|
#include <chrono>
|
||||||
#include <cstdint>
|
#include <cstdint>
|
||||||
@ -44,10 +45,8 @@ TEST(PreambleCorrelationTest, TestMethods)
|
|||||||
std::random_device rd;
|
std::random_device rd;
|
||||||
std::default_random_engine e2(rd());
|
std::default_random_engine e2(rd());
|
||||||
std::uniform_real_distribution<> dist(-1.0, 1.0);
|
std::uniform_real_distribution<> dist(-1.0, 1.0);
|
||||||
for (int32_t i = 0; i < GPS_CA_PREAMBLE_LENGTH_SYMBOLS; i++)
|
|
||||||
{
|
std::generate(d_symbol_history.begin(), d_symbol_history.end(), [&dist, &e2]() { return dist(e2); });
|
||||||
d_symbol_history[i] = dist(e2);
|
|
||||||
}
|
|
||||||
|
|
||||||
int32_t n = 0;
|
int32_t n = 0;
|
||||||
for (int32_t i = 0; i < GPS_CA_PREAMBLE_LENGTH_BITS; i++)
|
for (int32_t i = 0; i < GPS_CA_PREAMBLE_LENGTH_BITS; i++)
|
||||||
|
@ -24,6 +24,7 @@
|
|||||||
#include "command_event.h"
|
#include "command_event.h"
|
||||||
#include "concurrent_queue.h"
|
#include "concurrent_queue.h"
|
||||||
#include "control_thread.h"
|
#include "control_thread.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "in_memory_configuration.h"
|
#include "in_memory_configuration.h"
|
||||||
#include <boost/exception/diagnostic_information.hpp>
|
#include <boost/exception/diagnostic_information.hpp>
|
||||||
#include <boost/exception_ptr.hpp>
|
#include <boost/exception_ptr.hpp>
|
||||||
@ -167,7 +168,7 @@ TEST_F(ControlThreadTest /*unused*/, InstantiateRunControlMessages2 /*unused*/)
|
|||||||
config->set_property("PVT.item_type", "gr_complex");
|
config->set_property("PVT.item_type", "gr_complex");
|
||||||
config->set_property("GNSS-SDR.internal_fs_sps", "4000000");
|
config->set_property("GNSS-SDR.internal_fs_sps", "4000000");
|
||||||
|
|
||||||
std::unique_ptr<ControlThread> control_thread2(new ControlThread(config));
|
auto control_thread2 = std::make_unique<ControlThread>(config);
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> control_queue2 = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> control_queue2 = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
|
|
||||||
control_queue2->push(pmt::make_any(channel_event_make(0, 0)));
|
control_queue2->push(pmt::make_any(channel_event_make(0, 0)));
|
||||||
@ -176,7 +177,6 @@ TEST_F(ControlThreadTest /*unused*/, InstantiateRunControlMessages2 /*unused*/)
|
|||||||
control_queue2->push(pmt::make_any(channel_event_make(3, 0)));
|
control_queue2->push(pmt::make_any(channel_event_make(3, 0)));
|
||||||
control_queue2->push(pmt::make_any(command_event_make(200, 0)));
|
control_queue2->push(pmt::make_any(command_event_make(200, 0)));
|
||||||
|
|
||||||
|
|
||||||
control_thread2->set_control_queue(control_queue2);
|
control_thread2->set_control_queue(control_queue2);
|
||||||
|
|
||||||
try
|
try
|
||||||
|
@ -20,6 +20,7 @@
|
|||||||
|
|
||||||
|
|
||||||
#include "file_configuration.h"
|
#include "file_configuration.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include <string>
|
#include <string>
|
||||||
|
|
||||||
|
|
||||||
@ -28,7 +29,7 @@ TEST(FileConfigurationTest, OverridedProperties)
|
|||||||
std::string path = std::string(TEST_PATH);
|
std::string path = std::string(TEST_PATH);
|
||||||
std::string filename = path + "data/config_file_sample.txt";
|
std::string filename = path + "data/config_file_sample.txt";
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<FileConfiguration>(filename);
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<FileConfiguration>(filename);
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new FileConfiguration(filename));
|
std::unique_ptr<ConfigurationInterface> configuration = std::make_unique<FileConfiguration>(filename);
|
||||||
std::string default_value = "default_value";
|
std::string default_value = "default_value";
|
||||||
std::string value = configuration->property("NotThere", default_value);
|
std::string value = configuration->property("NotThere", default_value);
|
||||||
EXPECT_STREQ("default_value", value.c_str());
|
EXPECT_STREQ("default_value", value.c_str());
|
||||||
@ -40,7 +41,7 @@ TEST(FileConfigurationTest, OverridedProperties)
|
|||||||
|
|
||||||
TEST(FileConfigurationTest, LoadFromNonExistentFile)
|
TEST(FileConfigurationTest, LoadFromNonExistentFile)
|
||||||
{
|
{
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new FileConfiguration("./i_dont_exist.conf"));
|
std::unique_ptr<ConfigurationInterface> configuration = std::make_unique<FileConfiguration>("./i_dont_exist.conf");
|
||||||
std::string default_value = "default_value";
|
std::string default_value = "default_value";
|
||||||
std::string value = configuration->property("whatever.whatever", default_value);
|
std::string value = configuration->property("whatever.whatever", default_value);
|
||||||
EXPECT_STREQ("default_value", value.c_str());
|
EXPECT_STREQ("default_value", value.c_str());
|
||||||
@ -51,7 +52,7 @@ TEST(FileConfigurationTest, PropertyDoesNotExist)
|
|||||||
{
|
{
|
||||||
std::string path = std::string(TEST_PATH);
|
std::string path = std::string(TEST_PATH);
|
||||||
std::string filename = path + "data/config_file_sample.txt";
|
std::string filename = path + "data/config_file_sample.txt";
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new FileConfiguration(filename));
|
std::unique_ptr<ConfigurationInterface> configuration = std::make_unique<FileConfiguration>(filename);
|
||||||
std::string default_value = "default_value";
|
std::string default_value = "default_value";
|
||||||
std::string value = configuration->property("whatever.whatever", default_value);
|
std::string value = configuration->property("whatever.whatever", default_value);
|
||||||
EXPECT_STREQ("default_value", value.c_str());
|
EXPECT_STREQ("default_value", value.c_str());
|
||||||
|
@ -47,7 +47,7 @@ TEST(GNSSBlockFactoryTest, InstantiateFileSignalSource)
|
|||||||
// Example of a factory as a shared_ptr
|
// Example of a factory as a shared_ptr
|
||||||
std::shared_ptr<GNSSBlockFactory> factory = std::make_shared<GNSSBlockFactory>();
|
std::shared_ptr<GNSSBlockFactory> factory = std::make_shared<GNSSBlockFactory>();
|
||||||
// Example of a block as a shared_ptr
|
// Example of a block as a shared_ptr
|
||||||
std::shared_ptr<GNSSBlockInterface> signal_source = factory->GetSignalSource(configuration, queue);
|
std::shared_ptr<GNSSBlockInterface> signal_source = factory->GetSignalSource(configuration.get(), queue.get());
|
||||||
EXPECT_STREQ("SignalSource", signal_source->role().c_str());
|
EXPECT_STREQ("SignalSource", signal_source->role().c_str());
|
||||||
EXPECT_STREQ("File_Signal_Source", signal_source->implementation().c_str());
|
EXPECT_STREQ("File_Signal_Source", signal_source->implementation().c_str());
|
||||||
}
|
}
|
||||||
@ -61,7 +61,7 @@ TEST(GNSSBlockFactoryTest, InstantiateWrongSignalSource)
|
|||||||
// Example of a factory as a unique_ptr
|
// Example of a factory as a unique_ptr
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
// Example of a block as a unique_ptr
|
// Example of a block as a unique_ptr
|
||||||
std::unique_ptr<GNSSBlockInterface> signal_source = factory->GetSignalSource(configuration, queue);
|
std::unique_ptr<GNSSBlockInterface> signal_source = factory->GetSignalSource(configuration.get(), queue.get());
|
||||||
EXPECT_EQ(nullptr, signal_source);
|
EXPECT_EQ(nullptr, signal_source);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -71,7 +71,7 @@ TEST(GNSSBlockFactoryTest, InstantiateSignalConditioner)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("SignalConditioner.implementation", "Signal_Conditioner");
|
configuration->set_property("SignalConditioner.implementation", "Signal_Conditioner");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<GNSSBlockInterface> signal_conditioner = factory->GetSignalConditioner(configuration);
|
std::unique_ptr<GNSSBlockInterface> signal_conditioner = factory->GetSignalConditioner(configuration.get());
|
||||||
EXPECT_STREQ("SignalConditioner", signal_conditioner->role().c_str());
|
EXPECT_STREQ("SignalConditioner", signal_conditioner->role().c_str());
|
||||||
EXPECT_STREQ("Signal_Conditioner", signal_conditioner->implementation().c_str());
|
EXPECT_STREQ("Signal_Conditioner", signal_conditioner->implementation().c_str());
|
||||||
}
|
}
|
||||||
@ -104,7 +104,7 @@ TEST(GNSSBlockFactoryTest, InstantiateFIRFilter)
|
|||||||
configuration->set_property("InputFilter.grid_density", "16");
|
configuration->set_property("InputFilter.grid_density", "16");
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration, "InputFilter", "Fir_Filter", 1, 1);
|
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration.get(), "InputFilter", "Fir_Filter", 1, 1);
|
||||||
|
|
||||||
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
||||||
EXPECT_STREQ("Fir_Filter", input_filter->implementation().c_str());
|
EXPECT_STREQ("Fir_Filter", input_filter->implementation().c_str());
|
||||||
@ -139,7 +139,7 @@ TEST(GNSSBlockFactoryTest, InstantiateFreqXlatingFIRFilter)
|
|||||||
configuration->set_property("InputFilter.sampling_frequency", "4000000");
|
configuration->set_property("InputFilter.sampling_frequency", "4000000");
|
||||||
configuration->set_property("InputFilter.IF", "34000");
|
configuration->set_property("InputFilter.IF", "34000");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration, "InputFilter", "Freq_Xlating_Fir_Filter", 1, 1);
|
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration.get(), "InputFilter", "Freq_Xlating_Fir_Filter", 1, 1);
|
||||||
|
|
||||||
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
||||||
EXPECT_STREQ("Freq_Xlating_Fir_Filter", input_filter->implementation().c_str());
|
EXPECT_STREQ("Freq_Xlating_Fir_Filter", input_filter->implementation().c_str());
|
||||||
@ -152,7 +152,7 @@ TEST(GNSSBlockFactoryTest, InstantiatePulseBlankingFilter)
|
|||||||
configuration->set_property("InputFilter.implementation", "Pulse_Blanking_Filter");
|
configuration->set_property("InputFilter.implementation", "Pulse_Blanking_Filter");
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration, "InputFilter", "Pulse_Blanking_Filter", 1, 1);
|
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration.get(), "InputFilter", "Pulse_Blanking_Filter", 1, 1);
|
||||||
|
|
||||||
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
||||||
EXPECT_STREQ("Pulse_Blanking_Filter", input_filter->implementation().c_str());
|
EXPECT_STREQ("Pulse_Blanking_Filter", input_filter->implementation().c_str());
|
||||||
@ -165,7 +165,7 @@ TEST(GNSSBlockFactoryTest, InstantiateNotchFilter)
|
|||||||
configuration->set_property("InputFilter.implementation", "Notch_Filter");
|
configuration->set_property("InputFilter.implementation", "Notch_Filter");
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration, "InputFilter", "Notch_Filter", 1, 1);
|
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration.get(), "InputFilter", "Notch_Filter", 1, 1);
|
||||||
|
|
||||||
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
||||||
EXPECT_STREQ("Notch_Filter", input_filter->implementation().c_str());
|
EXPECT_STREQ("Notch_Filter", input_filter->implementation().c_str());
|
||||||
@ -178,7 +178,7 @@ TEST(GNSSBlockFactoryTest, InstantiateNotchFilterLite)
|
|||||||
configuration->set_property("InputFilter.implementation", "Notch_Filter_Lite");
|
configuration->set_property("InputFilter.implementation", "Notch_Filter_Lite");
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration, "InputFilter", "Notch_Filter_Lite", 1, 1);
|
std::unique_ptr<GNSSBlockInterface> input_filter = factory->GetBlock(configuration.get(), "InputFilter", "Notch_Filter_Lite", 1, 1);
|
||||||
|
|
||||||
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
EXPECT_STREQ("InputFilter", input_filter->role().c_str());
|
||||||
EXPECT_STREQ("Notch_Filter_Lite", input_filter->implementation().c_str());
|
EXPECT_STREQ("Notch_Filter_Lite", input_filter->implementation().c_str());
|
||||||
@ -189,7 +189,7 @@ TEST(GNSSBlockFactoryTest, InstantiateDirectResampler)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Resampler.implementation", "Direct_Resampler");
|
configuration->set_property("Resampler.implementation", "Direct_Resampler");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<GNSSBlockInterface> resampler = factory->GetBlock(configuration, "Resampler", "Direct_Resampler", 1, 1);
|
std::unique_ptr<GNSSBlockInterface> resampler = factory->GetBlock(configuration.get(), "Resampler", "Direct_Resampler", 1, 1);
|
||||||
EXPECT_STREQ("Resampler", resampler->role().c_str());
|
EXPECT_STREQ("Resampler", resampler->role().c_str());
|
||||||
EXPECT_STREQ("Direct_Resampler", resampler->implementation().c_str());
|
EXPECT_STREQ("Direct_Resampler", resampler->implementation().c_str());
|
||||||
}
|
}
|
||||||
@ -199,7 +199,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGpsL1CaPcpsAcquisition)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Acquisition.implementation", "GPS_L1_CA_PCPS_Acquisition");
|
configuration->set_property("Acquisition.implementation", "GPS_L1_CA_PCPS_Acquisition");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(configuration, "Acquisition", "GPS_L1_CA_PCPS_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(configuration.get(), "Acquisition", "GPS_L1_CA_PCPS_Acquisition", 1, 0);
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
||||||
EXPECT_STREQ("Acquisition", acquisition->role().c_str());
|
EXPECT_STREQ("Acquisition", acquisition->role().c_str());
|
||||||
EXPECT_STREQ("GPS_L1_CA_PCPS_Acquisition", acquisition->implementation().c_str());
|
EXPECT_STREQ("GPS_L1_CA_PCPS_Acquisition", acquisition->implementation().c_str());
|
||||||
@ -211,7 +211,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGpsL1CaPcpsQuickSyncAcquisition)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Acquisition.implementation", "GPS_L1_CA_PCPS_QuickSync_Acquisition");
|
configuration->set_property("Acquisition.implementation", "GPS_L1_CA_PCPS_QuickSync_Acquisition");
|
||||||
std::shared_ptr<GNSSBlockFactory> factory = std::make_shared<GNSSBlockFactory>();
|
std::shared_ptr<GNSSBlockFactory> factory = std::make_shared<GNSSBlockFactory>();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(configuration, "Acquisition", "GPS_L1_CA_PCPS_QuickSync_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(configuration.get(), "Acquisition", "GPS_L1_CA_PCPS_QuickSync_Acquisition", 1, 0);
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
||||||
EXPECT_STREQ("Acquisition", acquisition->role().c_str());
|
EXPECT_STREQ("Acquisition", acquisition->role().c_str());
|
||||||
EXPECT_STREQ("GPS_L1_CA_PCPS_QuickSync_Acquisition", acquisition->implementation().c_str());
|
EXPECT_STREQ("GPS_L1_CA_PCPS_QuickSync_Acquisition", acquisition->implementation().c_str());
|
||||||
@ -222,7 +222,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGalileoE1PcpsQuickSyncAmbiguousAcquisition
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Acquisition.implementation", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition");
|
configuration->set_property("Acquisition.implementation", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition");
|
||||||
std::shared_ptr<GNSSBlockFactory> factory = std::make_shared<GNSSBlockFactory>();
|
std::shared_ptr<GNSSBlockFactory> factory = std::make_shared<GNSSBlockFactory>();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(configuration, "Acquisition", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(configuration.get(), "Acquisition", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
||||||
EXPECT_STREQ("Acquisition", acquisition->role().c_str());
|
EXPECT_STREQ("Acquisition", acquisition->role().c_str());
|
||||||
EXPECT_STREQ("Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", acquisition->implementation().c_str());
|
EXPECT_STREQ("Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", acquisition->implementation().c_str());
|
||||||
@ -234,7 +234,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGalileoE1PcpsAmbiguousAcquisition)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Acquisition.implementation", "Galileo_E1_PCPS_Ambiguous_Acquisition");
|
configuration->set_property("Acquisition.implementation", "Galileo_E1_PCPS_Ambiguous_Acquisition");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(configuration, "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(configuration.get(), "Acquisition", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
||||||
EXPECT_STREQ("Acquisition", acquisition->role().c_str());
|
EXPECT_STREQ("Acquisition", acquisition->role().c_str());
|
||||||
EXPECT_STREQ("Galileo_E1_PCPS_Ambiguous_Acquisition", acquisition->implementation().c_str());
|
EXPECT_STREQ("Galileo_E1_PCPS_Ambiguous_Acquisition", acquisition->implementation().c_str());
|
||||||
@ -246,7 +246,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGpsL1CaDllPllTracking)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Tracking.implementation", "GPS_L1_CA_DLL_PLL_Tracking");
|
configuration->set_property("Tracking.implementation", "GPS_L1_CA_DLL_PLL_Tracking");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::shared_ptr<GNSSBlockInterface> trk_ = factory->GetBlock(configuration, "Tracking", "GPS_L1_CA_DLL_PLL_Tracking", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> trk_ = factory->GetBlock(configuration.get(), "Tracking", "GPS_L1_CA_DLL_PLL_Tracking", 1, 1);
|
||||||
std::shared_ptr<TrackingInterface> tracking = std::dynamic_pointer_cast<TrackingInterface>(trk_);
|
std::shared_ptr<TrackingInterface> tracking = std::dynamic_pointer_cast<TrackingInterface>(trk_);
|
||||||
EXPECT_STREQ("Tracking", tracking->role().c_str());
|
EXPECT_STREQ("Tracking", tracking->role().c_str());
|
||||||
EXPECT_STREQ("GPS_L1_CA_DLL_PLL_Tracking", tracking->implementation().c_str());
|
EXPECT_STREQ("GPS_L1_CA_DLL_PLL_Tracking", tracking->implementation().c_str());
|
||||||
@ -258,7 +258,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGpsL1CaTcpConnectorTracking)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Tracking.implementation", "GPS_L1_CA_TCP_CONNECTOR_Tracking");
|
configuration->set_property("Tracking.implementation", "GPS_L1_CA_TCP_CONNECTOR_Tracking");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::shared_ptr<GNSSBlockInterface> trk_ = factory->GetBlock(configuration, "Tracking", "GPS_L1_CA_TCP_CONNECTOR_Tracking", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> trk_ = factory->GetBlock(configuration.get(), "Tracking", "GPS_L1_CA_TCP_CONNECTOR_Tracking", 1, 1);
|
||||||
std::shared_ptr<TrackingInterface> tracking = std::dynamic_pointer_cast<TrackingInterface>(trk_);
|
std::shared_ptr<TrackingInterface> tracking = std::dynamic_pointer_cast<TrackingInterface>(trk_);
|
||||||
EXPECT_STREQ("Tracking", tracking->role().c_str());
|
EXPECT_STREQ("Tracking", tracking->role().c_str());
|
||||||
EXPECT_STREQ("GPS_L1_CA_TCP_CONNECTOR_Tracking", tracking->implementation().c_str());
|
EXPECT_STREQ("GPS_L1_CA_TCP_CONNECTOR_Tracking", tracking->implementation().c_str());
|
||||||
@ -270,7 +270,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGalileoE1DllPllVemlTracking)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Tracking.implementation", "Galileo_E1_DLL_PLL_VEML_Tracking");
|
configuration->set_property("Tracking.implementation", "Galileo_E1_DLL_PLL_VEML_Tracking");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::shared_ptr<GNSSBlockInterface> trk_ = factory->GetBlock(configuration, "Tracking", "Galileo_E1_DLL_PLL_VEML_Tracking", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> trk_ = factory->GetBlock(configuration.get(), "Tracking", "Galileo_E1_DLL_PLL_VEML_Tracking", 1, 1);
|
||||||
std::shared_ptr<TrackingInterface> tracking = std::dynamic_pointer_cast<TrackingInterface>(trk_);
|
std::shared_ptr<TrackingInterface> tracking = std::dynamic_pointer_cast<TrackingInterface>(trk_);
|
||||||
EXPECT_STREQ("Tracking", tracking->role().c_str());
|
EXPECT_STREQ("Tracking", tracking->role().c_str());
|
||||||
EXPECT_STREQ("Galileo_E1_DLL_PLL_VEML_Tracking", tracking->implementation().c_str());
|
EXPECT_STREQ("Galileo_E1_DLL_PLL_VEML_Tracking", tracking->implementation().c_str());
|
||||||
@ -282,7 +282,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGpsL1CaTelemetryDecoder)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("TelemetryDecoder.implementation", "GPS_L1_CA_Telemetry_Decoder");
|
configuration->set_property("TelemetryDecoder.implementation", "GPS_L1_CA_Telemetry_Decoder");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::shared_ptr<GNSSBlockInterface> telemetry_decoder = factory->GetBlock(configuration, "TelemetryDecoder", "GPS_L1_CA_Telemetry_Decoder", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> telemetry_decoder = factory->GetBlock(configuration.get(), "TelemetryDecoder", "GPS_L1_CA_Telemetry_Decoder", 1, 1);
|
||||||
EXPECT_STREQ("TelemetryDecoder", telemetry_decoder->role().c_str());
|
EXPECT_STREQ("TelemetryDecoder", telemetry_decoder->role().c_str());
|
||||||
EXPECT_STREQ("GPS_L1_CA_Telemetry_Decoder", telemetry_decoder->implementation().c_str());
|
EXPECT_STREQ("GPS_L1_CA_Telemetry_Decoder", telemetry_decoder->implementation().c_str());
|
||||||
}
|
}
|
||||||
@ -301,7 +301,7 @@ TEST(GNSSBlockFactoryTest, InstantiateChannels)
|
|||||||
configuration->set_property("Channel1.item_type", "gr_complex");
|
configuration->set_property("Channel1.item_type", "gr_complex");
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> channels = factory->GetChannels(configuration, queue);
|
std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> channels = factory->GetChannels(configuration.get(), queue.get());
|
||||||
EXPECT_EQ(static_cast<unsigned int>(2), channels->size());
|
EXPECT_EQ(static_cast<unsigned int>(2), channels->size());
|
||||||
channels->erase(channels->begin(), channels->end());
|
channels->erase(channels->begin(), channels->end());
|
||||||
}
|
}
|
||||||
@ -312,7 +312,7 @@ TEST(GNSSBlockFactoryTest, InstantiateObservables)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Observables.implementation", "Pass_Through");
|
configuration->set_property("Observables.implementation", "Pass_Through");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
auto observables = factory->GetObservables(configuration);
|
auto observables = factory->GetObservables(configuration.get());
|
||||||
EXPECT_STREQ("Observables", observables->role().c_str());
|
EXPECT_STREQ("Observables", observables->role().c_str());
|
||||||
EXPECT_STREQ("Pass_Through", observables->implementation().c_str());
|
EXPECT_STREQ("Pass_Through", observables->implementation().c_str());
|
||||||
}
|
}
|
||||||
@ -323,7 +323,7 @@ TEST(GNSSBlockFactoryTest, InstantiateGpsL1CaObservables)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("Observables.implementation", "Hybrid_Observables");
|
configuration->set_property("Observables.implementation", "Hybrid_Observables");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::unique_ptr<GNSSBlockInterface> observables = factory->GetObservables(configuration);
|
std::unique_ptr<GNSSBlockInterface> observables = factory->GetObservables(configuration.get());
|
||||||
EXPECT_STREQ("Observables", observables->role().c_str());
|
EXPECT_STREQ("Observables", observables->role().c_str());
|
||||||
EXPECT_STREQ("Hybrid_Observables", observables->implementation().c_str());
|
EXPECT_STREQ("Hybrid_Observables", observables->implementation().c_str());
|
||||||
}
|
}
|
||||||
@ -334,7 +334,7 @@ TEST(GNSSBlockFactoryTest, InstantiateRTKLIBPvt)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("PVT.implementation", "RTKLIB_PVT");
|
configuration->set_property("PVT.implementation", "RTKLIB_PVT");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::shared_ptr<GNSSBlockInterface> pvt_ = factory->GetPVT(configuration);
|
std::shared_ptr<GNSSBlockInterface> pvt_ = factory->GetPVT(configuration.get());
|
||||||
std::shared_ptr<PvtInterface> pvt = std::dynamic_pointer_cast<PvtInterface>(pvt_);
|
std::shared_ptr<PvtInterface> pvt = std::dynamic_pointer_cast<PvtInterface>(pvt_);
|
||||||
EXPECT_STREQ("PVT", pvt->role().c_str());
|
EXPECT_STREQ("PVT", pvt->role().c_str());
|
||||||
EXPECT_STREQ("RTKLIB_PVT", pvt->implementation().c_str());
|
EXPECT_STREQ("RTKLIB_PVT", pvt->implementation().c_str());
|
||||||
@ -346,7 +346,7 @@ TEST(GNSSBlockFactoryTest, InstantiateWrongPvt)
|
|||||||
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
configuration->set_property("PVT.implementation", "Pepito");
|
configuration->set_property("PVT.implementation", "Pepito");
|
||||||
std::unique_ptr<GNSSBlockFactory> factory;
|
std::unique_ptr<GNSSBlockFactory> factory;
|
||||||
std::shared_ptr<GNSSBlockInterface> pvt_ = factory->GetPVT(configuration);
|
std::shared_ptr<GNSSBlockInterface> pvt_ = factory->GetPVT(configuration.get());
|
||||||
std::shared_ptr<PvtInterface> pvt = std::dynamic_pointer_cast<PvtInterface>(pvt_);
|
std::shared_ptr<PvtInterface> pvt = std::dynamic_pointer_cast<PvtInterface>(pvt_);
|
||||||
EXPECT_EQ(nullptr, pvt);
|
EXPECT_EQ(nullptr, pvt);
|
||||||
}
|
}
|
||||||
|
@ -19,89 +19,98 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#include "configuration_interface.h"
|
#include "configuration_interface.h"
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "in_memory_configuration.h"
|
#include "in_memory_configuration.h"
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, IsPresent)
|
TEST(InMemoryConfiguration, IsPresent)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<InMemoryConfiguration> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<InMemoryConfiguration> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
EXPECT_FALSE(configuration->is_present("NotThere"));
|
EXPECT_FALSE(configuration->is_present("NotThere"));
|
||||||
configuration->set_property("NotThere", "Yes!");
|
configuration->set_property("NotThere", "Yes!");
|
||||||
EXPECT_TRUE(configuration->is_present("NotThere"));
|
EXPECT_TRUE(configuration->is_present("NotThere"));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, StoreAndRetrieve)
|
TEST(InMemoryConfiguration, StoreAndRetrieve)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
configuration->set_property("Foo.property1", "value");
|
configuration->set_property("Foo.property1", "value");
|
||||||
std::string default_value = "default_value";
|
std::string default_value = "default_value";
|
||||||
std::string value = configuration->property("Foo.property1", default_value);
|
std::string value = configuration->property("Foo.property1", default_value);
|
||||||
EXPECT_STREQ("value", value.c_str());
|
EXPECT_STREQ("value", value.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, NoStoringAndRetrieve)
|
TEST(InMemoryConfiguration, NoStoringAndRetrieve)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
std::string default_value = "default_value";
|
std::string default_value = "default_value";
|
||||||
std::string value = configuration->property("Foo.property1", default_value);
|
std::string value = configuration->property("Foo.property1", default_value);
|
||||||
EXPECT_STREQ("default_value", value.c_str());
|
EXPECT_STREQ("default_value", value.c_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, RetrieveBool)
|
TEST(InMemoryConfiguration, RetrieveBool)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
configuration->set_property("Foo.property1", "true");
|
configuration->set_property("Foo.property1", "true");
|
||||||
bool value = configuration->property("Foo.property1", false);
|
bool value = configuration->property("Foo.property1", false);
|
||||||
bool expectedtrue = true;
|
bool expectedtrue = true;
|
||||||
EXPECT_EQ(expectedtrue, value);
|
EXPECT_EQ(expectedtrue, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, RetrieveBoolFail)
|
TEST(InMemoryConfiguration, RetrieveBoolFail)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
configuration->set_property("Foo.property1", "tru");
|
configuration->set_property("Foo.property1", "tru");
|
||||||
bool value = configuration->property("Foo.property1", false);
|
bool value = configuration->property("Foo.property1", false);
|
||||||
bool expectedfalse = false;
|
bool expectedfalse = false;
|
||||||
EXPECT_EQ(expectedfalse, value);
|
EXPECT_EQ(expectedfalse, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, RetrieveBoolNoDefine)
|
TEST(InMemoryConfiguration, RetrieveBoolNoDefine)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
bool value = configuration->property("Foo.property1", false);
|
bool value = configuration->property("Foo.property1", false);
|
||||||
bool expectedfalse = false;
|
bool expectedfalse = false;
|
||||||
EXPECT_EQ(expectedfalse, value);
|
EXPECT_EQ(expectedfalse, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, RetrieveSizeT)
|
TEST(InMemoryConfiguration, RetrieveSizeT)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
configuration->set_property("Foo.property1", "8");
|
configuration->set_property("Foo.property1", "8");
|
||||||
unsigned int value = configuration->property("Foo.property1", 4);
|
unsigned int value = configuration->property("Foo.property1", 4);
|
||||||
unsigned int expected8 = 8;
|
unsigned int expected8 = 8;
|
||||||
EXPECT_EQ(expected8, value);
|
EXPECT_EQ(expected8, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, RetrieveSizeTFail)
|
TEST(InMemoryConfiguration, RetrieveSizeTFail)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
configuration->set_property("Foo.property1", "true");
|
configuration->set_property("Foo.property1", "true");
|
||||||
unsigned int value = configuration->property("Foo.property1", 4);
|
unsigned int value = configuration->property("Foo.property1", 4);
|
||||||
unsigned int expected4 = 4;
|
unsigned int expected4 = 4;
|
||||||
EXPECT_EQ(expected4, value);
|
EXPECT_EQ(expected4, value);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
TEST(InMemoryConfiguration, RetrieveSizeTNoDefine)
|
TEST(InMemoryConfiguration, RetrieveSizeTNoDefine)
|
||||||
{
|
{
|
||||||
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
// std::shared_ptr<ConfigurationInterface> configuration = std::make_shared<InMemoryConfiguration>();
|
||||||
std::unique_ptr<ConfigurationInterface> configuration(new InMemoryConfiguration);
|
auto configuration = std::make_unique<InMemoryConfiguration>();
|
||||||
unsigned int value = configuration->property("Foo.property1", 4);
|
unsigned int value = configuration->property("Foo.property1", 4);
|
||||||
unsigned int expected4 = 4;
|
unsigned int expected4 = 4;
|
||||||
EXPECT_EQ(expected4, value);
|
EXPECT_EQ(expected4, value);
|
||||||
|
@ -19,12 +19,13 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
#include "gnss_sdr_make_unique.h"
|
||||||
#include "string_converter.h"
|
#include "string_converter.h"
|
||||||
|
|
||||||
|
|
||||||
TEST(StringConverterTest, StringToBool)
|
TEST(StringConverterTest, StringToBool)
|
||||||
{
|
{
|
||||||
std::unique_ptr<StringConverter> converter(new StringConverter());
|
auto converter = std::make_unique<StringConverter>();
|
||||||
bool conversion_result = converter->convert("false", true);
|
bool conversion_result = converter->convert("false", true);
|
||||||
bool expected_false = false;
|
bool expected_false = false;
|
||||||
EXPECT_EQ(expected_false, conversion_result);
|
EXPECT_EQ(expected_false, conversion_result);
|
||||||
@ -45,7 +46,7 @@ TEST(StringConverterTest, StringToSizeT)
|
|||||||
|
|
||||||
TEST(StringConverterTest, StringToBoolFail)
|
TEST(StringConverterTest, StringToBoolFail)
|
||||||
{
|
{
|
||||||
std::unique_ptr<StringConverter> converter(new StringConverter());
|
auto converter = std::make_unique<StringConverter>();
|
||||||
bool conversion_result = converter->convert("lse", true);
|
bool conversion_result = converter->convert("lse", true);
|
||||||
bool expected_true = true;
|
bool expected_true = true;
|
||||||
EXPECT_EQ(expected_true, conversion_result);
|
EXPECT_EQ(expected_true, conversion_result);
|
||||||
@ -54,7 +55,7 @@ TEST(StringConverterTest, StringToBoolFail)
|
|||||||
|
|
||||||
TEST(StringConverterTest, StringToSizeTFail)
|
TEST(StringConverterTest, StringToSizeTFail)
|
||||||
{
|
{
|
||||||
std::unique_ptr<StringConverter> converter(new StringConverter());
|
auto converter = std::make_unique<StringConverter>();
|
||||||
size_t conversion_result = converter->convert("false", 1);
|
size_t conversion_result = converter->convert("false", 1);
|
||||||
unsigned int expected1 = 1;
|
unsigned int expected1 = 1;
|
||||||
EXPECT_EQ(expected1, conversion_result);
|
EXPECT_EQ(expected1, conversion_result);
|
||||||
|
@ -608,7 +608,7 @@ int AcquisitionPerformanceTest::run_receiver()
|
|||||||
init();
|
init();
|
||||||
|
|
||||||
int nsamples = floor(config->property("GNSS-SDR.internal_fs_sps", 2000000) * generated_signal_duration_s);
|
int nsamples = floor(config->property("GNSS-SDR.internal_fs_sps", 2000000) * generated_signal_duration_s);
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
if (implementation == "GPS_L1_CA_PCPS_Acquisition")
|
if (implementation == "GPS_L1_CA_PCPS_Acquisition")
|
||||||
{
|
{
|
||||||
acquisition = std::make_shared<GpsL1CaPcpsAcquisition>(config.get(), "Acquisition", 1, 0);
|
acquisition = std::make_shared<GpsL1CaPcpsAcquisition>(config.get(), "Acquisition", 1, 0);
|
||||||
|
@ -275,7 +275,7 @@ TEST_F(BeidouB1iPcpsAcquisitionTest, ConnectAndRun)
|
|||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
@ -274,7 +274,7 @@ TEST_F(BeidouB3iPcpsAcquisitionTest, ConnectAndRun)
|
|||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
@ -433,7 +433,7 @@ void GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test::stop_queue()
|
|||||||
TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, Instantiate)
|
TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, Instantiate)
|
||||||
{
|
{
|
||||||
config_1();
|
config_1();
|
||||||
auto acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition", 1, 0);
|
auto acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition", 1, 0);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -447,7 +447,7 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ConnectAndRun)
|
|||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1Pcps8msAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1Pcps8msAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -474,7 +474,7 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ConnectAndRun)
|
|||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -497,7 +497,7 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
|
|||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition", 1, 0, queue);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition", 1, 0, queue.get());
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1Pcps8msAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1Pcps8msAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -528,10 +528,9 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -585,7 +584,7 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProb
|
|||||||
config_2();
|
config_2();
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_8ms_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1Pcps8msAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1Pcps8msAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -616,10 +615,9 @@ TEST_F(GalileoE1Pcps8msAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProb
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
@ -434,7 +434,7 @@ void GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test::stop_queue()
|
|||||||
TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, Instantiate)
|
TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, Instantiate)
|
||||||
{
|
{
|
||||||
config_1();
|
config_1();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -448,14 +448,14 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ConnectAndRun)
|
|||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
config_1();
|
config_1();
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -477,7 +477,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
|
|||||||
config_1();
|
config_1();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -504,10 +504,9 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -558,7 +557,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProbabi
|
|||||||
config_2();
|
config_2();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -585,10 +584,9 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsProbabi
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
@ -216,7 +216,7 @@ void GalileoE1PcpsAmbiguousAcquisitionGSoCTest::stop_queue()
|
|||||||
TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoCTest, Instantiate)
|
TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoCTest, Instantiate)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
||||||
EXPECT_STREQ("Galileo_E1_PCPS_Ambiguous_Acquisition", acquisition->implementation().c_str());
|
EXPECT_STREQ("Galileo_E1_PCPS_Ambiguous_Acquisition", acquisition->implementation().c_str());
|
||||||
}
|
}
|
||||||
@ -232,14 +232,14 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoCTest, ConnectAndRun)
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
|
|
||||||
init();
|
init();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoCTest_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoCTest_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -263,7 +263,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionGSoCTest, ValidationOfResults)
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
|
|
||||||
init();
|
init();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
std::shared_ptr<GalileoE1PcpsAmbiguousAcquisition> acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
std::shared_ptr<GalileoE1PcpsAmbiguousAcquisition> acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoCTest_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionGSoCTest_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
|
@ -268,7 +268,7 @@ void GalileoE1PcpsAmbiguousAcquisitionTest::plot_grid()
|
|||||||
TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, Instantiate)
|
TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, Instantiate)
|
||||||
{
|
{
|
||||||
init();
|
init();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -282,14 +282,14 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, ConnectAndRun)
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
init();
|
init();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
std::shared_ptr<AcquisitionInterface> acquisition = std::dynamic_pointer_cast<AcquisitionInterface>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionTest_msg_rx_make();
|
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionTest_msg_rx_make();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -324,7 +324,7 @@ TEST_F(GalileoE1PcpsAmbiguousAcquisitionTest, ValidationOfResults)
|
|||||||
double expected_doppler_hz = -632;
|
double expected_doppler_hz = -632;
|
||||||
init();
|
init();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Ambiguous_Acquisition", 1, 0);
|
||||||
std::shared_ptr<GalileoE1PcpsAmbiguousAcquisition> acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
std::shared_ptr<GalileoE1PcpsAmbiguousAcquisition> acquisition = std::dynamic_pointer_cast<GalileoE1PcpsAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionTest_msg_rx_make();
|
auto msg_rx = GalileoE1PcpsAmbiguousAcquisitionTest_msg_rx_make();
|
||||||
|
|
||||||
|
@ -436,7 +436,7 @@ void GalileoE1PcpsCccwsrAmbiguousAcquisitionTest::stop_queue()
|
|||||||
TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, Instantiate)
|
TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, Instantiate)
|
||||||
{
|
{
|
||||||
config_1();
|
config_1();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -451,14 +451,14 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ConnectAndRun)
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsCccwsrAmbiguousAcquisitionTest_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsCccwsrAmbiguousAcquisitionTest_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -480,7 +480,7 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResults)
|
|||||||
config_1();
|
config_1();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsCccwsrAmbiguousAcquisitionTest_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsCccwsrAmbiguousAcquisitionTest_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -512,10 +512,9 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResults)
|
|||||||
acquisition->reset();
|
acquisition->reset();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -573,7 +572,7 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResultsProbabili
|
|||||||
config_2();
|
config_2();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_CCCWSR_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsCccwsrAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsCccwsrAmbiguousAcquisitionTest_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsCccwsrAmbiguousAcquisitionTest_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -605,10 +604,9 @@ TEST_F(GalileoE1PcpsCccwsrAmbiguousAcquisitionTest, ValidationOfResultsProbabili
|
|||||||
acquisition->reset();
|
acquisition->reset();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
@ -555,7 +555,7 @@ void GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test::stop_queue()
|
|||||||
TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, Instantiate)
|
TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, Instantiate)
|
||||||
{
|
{
|
||||||
config_1();
|
config_1();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -571,7 +571,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ConnectAndRun)
|
|||||||
|
|
||||||
config_1();
|
config_1();
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -580,7 +580,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ConnectAndRun)
|
|||||||
auto source =
|
auto source =
|
||||||
gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve =
|
auto valve =
|
||||||
gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -606,7 +606,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -638,10 +638,9 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
|
|||||||
acquisition->reset();
|
acquisition->reset();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -697,7 +696,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -729,10 +728,9 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
|
|||||||
acquisition->reset();
|
acquisition->reset();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -785,7 +783,7 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
|
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_QuickSync_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsQuickSyncAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -816,10 +814,9 @@ TEST_F(GalileoE1PcpsQuickSyncAmbiguousAcquisitionGSoC2014Test, ValidationOfResul
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
@ -434,7 +434,7 @@ void GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test::stop_queue()
|
|||||||
TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, Instantiate)
|
TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, Instantiate)
|
||||||
{
|
{
|
||||||
config_1();
|
config_1();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -447,13 +447,13 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ConnectAndRun)
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
config_1();
|
config_1();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
}) << "Failure connecting the blocks of acquisition test.";
|
}) << "Failure connecting the blocks of acquisition test.";
|
||||||
@ -474,7 +474,7 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
|
|||||||
config_1();
|
config_1();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -506,10 +506,9 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResults)
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -563,7 +562,7 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsPro
|
|||||||
config_2();
|
config_2();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config, "Acquisition_1B", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 0);
|
std::shared_ptr<GNSSBlockInterface> acq_ = factory->GetBlock(config.get(), "Acquisition_1B", "Galileo_E1_PCPS_Tong_Ambiguous_Acquisition", 1, 0);
|
||||||
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
|
acquisition = std::dynamic_pointer_cast<GalileoE1PcpsTongAmbiguousAcquisition>(acq_);
|
||||||
auto msg_rx = GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
@ -594,10 +593,9 @@ TEST_F(GalileoE1PcpsTongAmbiguousAcquisitionGSoC2013Test, ValidationOfResultsPro
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
@ -553,7 +553,7 @@ TEST_F(GalileoE5aPcpsAcquisitionGSoC2014GensourceTest, ConnectAndRun)
|
|||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -605,11 +605,10 @@ TEST_F(GalileoE5aPcpsAcquisitionGSoC2014GensourceTest, ValidationOfSIM)
|
|||||||
// USING THE SIGNAL GENERATOR
|
// USING THE SIGNAL GENERATOR
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<GenSignalSource> signal_source;
|
std::shared_ptr<GNSSBlockInterface> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
SignalGenerator* signal_generator = new SignalGenerator(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<GNSSBlockInterface> filter = std::make_shared<FirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
FirFilter* filter = new FirFilter(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<GNSSBlockInterface> signal_source = std::make_shared<GenSignalSource>(signal_generator, filter, "SignalSource", queue.get());
|
||||||
filter->connect(top_block);
|
filter->connect(top_block);
|
||||||
signal_source.reset(new GenSignalSource(signal_generator, filter, "SignalSource", queue));
|
|
||||||
signal_source->connect(top_block);
|
signal_source->connect(top_block);
|
||||||
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
top_block->connect(signal_source->get_right_block(), 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
|
@ -149,7 +149,7 @@ protected:
|
|||||||
|
|
||||||
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue;
|
std::shared_ptr<Concurrent_Queue<pmt::pmt_t>> queue;
|
||||||
gr::top_block_sptr top_block;
|
gr::top_block_sptr top_block;
|
||||||
GlonassL1CaPcpsAcquisition* acquisition;
|
std::shared_ptr<GlonassL1CaPcpsAcquisition> acquisition;
|
||||||
std::shared_ptr<InMemoryConfiguration> config;
|
std::shared_ptr<InMemoryConfiguration> config;
|
||||||
Gnss_Synchro gnss_synchro;
|
Gnss_Synchro gnss_synchro;
|
||||||
size_t item_size;
|
size_t item_size;
|
||||||
@ -440,8 +440,7 @@ void GlonassL1CaPcpsAcquisitionGSoC2017Test::stop_queue()
|
|||||||
TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, Instantiate)
|
TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, Instantiate)
|
||||||
{
|
{
|
||||||
config_1();
|
config_1();
|
||||||
acquisition = new GlonassL1CaPcpsAcquisition(config.get(), "Acquisition", 1, 0);
|
acquisition = std::make_shared<GlonassL1CaPcpsAcquisition>(config.get(), "Acquisition", 1, 0);
|
||||||
delete acquisition;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -454,13 +453,13 @@ TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, ConnectAndRun)
|
|||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
|
|
||||||
config_1();
|
config_1();
|
||||||
acquisition = new GlonassL1CaPcpsAcquisition(config.get(), "Acquisition", 1, 0);
|
acquisition = std::make_shared<GlonassL1CaPcpsAcquisition>(config.get(), "Acquisition", 1, 0);
|
||||||
auto msg_rx = GlonassL1CaPcpsAcquisitionGSoC2017Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GlonassL1CaPcpsAcquisitionGSoC2017Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
acquisition->connect(top_block);
|
acquisition->connect(top_block);
|
||||||
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
auto source = gr::analog::sig_source_c::make(fs_in, gr::analog::GR_SIN_WAVE, 1000, 1, gr_complex(0));
|
||||||
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue);
|
auto valve = gnss_sdr_make_valve(sizeof(gr_complex), nsamples, queue.get());
|
||||||
top_block->connect(source, 0, valve, 0);
|
top_block->connect(source, 0, valve, 0);
|
||||||
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
top_block->connect(valve, 0, acquisition->get_left_block(), 0);
|
||||||
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
top_block->msg_connect(acquisition->get_right_block(), pmt::mp("events"), msg_rx, pmt::mp("events"));
|
||||||
@ -474,8 +473,6 @@ TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, ConnectAndRun)
|
|||||||
}) << "Failure running the top_block.";
|
}) << "Failure running the top_block.";
|
||||||
|
|
||||||
std::cout << "Processed " << nsamples << " samples in " << elapsed_seconds.count() * 1e6 << " microseconds" << std::endl;
|
std::cout << "Processed " << nsamples << " samples in " << elapsed_seconds.count() * 1e6 << " microseconds" << std::endl;
|
||||||
|
|
||||||
delete acquisition;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -485,7 +482,7 @@ TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, ValidationOfResults)
|
|||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
|
|
||||||
acquisition = new GlonassL1CaPcpsAcquisition(config.get(), "Acquisition", 1, 0);
|
acquisition = acquisition = std::make_shared<GlonassL1CaPcpsAcquisition>(config.get(), "Acquisition", 1, 0);
|
||||||
auto msg_rx = GlonassL1CaPcpsAcquisitionGSoC2017Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GlonassL1CaPcpsAcquisitionGSoC2017Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
@ -512,7 +509,7 @@ TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, ValidationOfResults)
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<SignalGenerator> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<SignalGenerator> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
std::shared_ptr<FreqXlatingFirFilter> filter = std::make_shared<FreqXlatingFirFilter>(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<FreqXlatingFirFilter> filter = std::make_shared<FreqXlatingFirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
signal_generator->connect(top_block);
|
signal_generator->connect(top_block);
|
||||||
top_block->connect(signal_generator->get_right_block(), 0, filter->get_left_block(), 0);
|
top_block->connect(signal_generator->get_right_block(), 0, filter->get_left_block(), 0);
|
||||||
@ -559,8 +556,6 @@ TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, ValidationOfResults)
|
|||||||
ch_thread.join();
|
ch_thread.join();
|
||||||
}) << "Failure while waiting the queue to stop";
|
}) << "Failure while waiting the queue to stop";
|
||||||
}
|
}
|
||||||
|
|
||||||
delete acquisition;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
@ -569,7 +564,7 @@ TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, ValidationOfResultsProbabilities)
|
|||||||
config_2();
|
config_2();
|
||||||
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
queue = std::make_shared<Concurrent_Queue<pmt::pmt_t>>();
|
||||||
top_block = gr::make_top_block("Acquisition test");
|
top_block = gr::make_top_block("Acquisition test");
|
||||||
acquisition = new GlonassL1CaPcpsAcquisition(config.get(), "Acquisition", 1, 0);
|
acquisition = std::make_shared<GlonassL1CaPcpsAcquisition>(config.get(), "Acquisition", 1, 0);
|
||||||
auto msg_rx = GlonassL1CaPcpsAcquisitionGSoC2017Test_msg_rx_make(channel_internal_queue);
|
auto msg_rx = GlonassL1CaPcpsAcquisitionGSoC2017Test_msg_rx_make(channel_internal_queue);
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
@ -596,7 +591,7 @@ TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, ValidationOfResultsProbabilities)
|
|||||||
acquisition->init();
|
acquisition->init();
|
||||||
|
|
||||||
ASSERT_NO_THROW({
|
ASSERT_NO_THROW({
|
||||||
std::shared_ptr<SignalGenerator> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue);
|
std::shared_ptr<SignalGenerator> signal_generator = std::make_shared<SignalGenerator>(config.get(), "SignalSource", 0, 1, queue.get());
|
||||||
std::shared_ptr<FreqXlatingFirFilter> filter = std::make_shared<FreqXlatingFirFilter>(config.get(), "InputFilter", 1, 1);
|
std::shared_ptr<FreqXlatingFirFilter> filter = std::make_shared<FreqXlatingFirFilter>(config.get(), "InputFilter", 1, 1);
|
||||||
signal_generator->connect(top_block);
|
signal_generator->connect(top_block);
|
||||||
top_block->connect(signal_generator->get_right_block(), 0, filter->get_left_block(), 0);
|
top_block->connect(signal_generator->get_right_block(), 0, filter->get_left_block(), 0);
|
||||||
@ -646,6 +641,4 @@ TEST_F(GlonassL1CaPcpsAcquisitionGSoC2017Test, ValidationOfResultsProbabilities)
|
|||||||
}) << "Failure while waiting the queue to stop"
|
}) << "Failure while waiting the queue to stop"
|
||||||
<< std::endl;
|
<< std::endl;
|
||||||
}
|
}
|
||||||
|
|
||||||
delete acquisition;
|
|
||||||
}
|
}
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Loading…
Reference in New Issue
Block a user