mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-10-29 06:27:44 +00:00
Merging next branch
This commit is contained in:
@@ -42,19 +42,6 @@ if(ENABLE_AD9361)
|
||||
endif()
|
||||
|
||||
|
||||
if(ENABLE_GN3S)
|
||||
##############################################
|
||||
# GN3S (USB dongle)
|
||||
##############################################
|
||||
if(NOT GRGN3S_FOUND)
|
||||
message(" gr-gn3s not found, install it from https://github.com/gnss-sdr/gr-gn3s")
|
||||
message(FATAL_ERROR "gr-gn3s required for building gnss-sdr with this option enabled")
|
||||
endif()
|
||||
set(OPT_DRIVER_SOURCES ${OPT_DRIVER_SOURCES} gn3s_signal_source.cc)
|
||||
set(OPT_DRIVER_HEADERS ${OPT_DRIVER_HEADERS} gn3s_signal_source.h)
|
||||
endif()
|
||||
|
||||
|
||||
if(ENABLE_FLEXIBAND AND TELEORBIT_FOUND)
|
||||
set(OPT_DRIVER_SOURCES ${OPT_DRIVER_SOURCES} flexiband_signal_source.cc)
|
||||
set(OPT_DRIVER_HEADERS ${OPT_DRIVER_HEADERS} flexiband_signal_source.h)
|
||||
@@ -241,13 +228,6 @@ if(ENABLE_FLEXIBAND AND TELEORBIT_FOUND)
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_GN3S AND GRGN3S_FOUND)
|
||||
target_link_libraries(signal_source_adapters
|
||||
PRIVATE
|
||||
Gnuradio::gn3s
|
||||
)
|
||||
endif()
|
||||
|
||||
if(ENABLE_ARRAY AND GRDBFCTTC_FOUND)
|
||||
target_link_libraries(signal_source_adapters
|
||||
PRIVATE
|
||||
|
||||
@@ -29,6 +29,7 @@
|
||||
#include <exception>
|
||||
#include <iostream>
|
||||
#include <utility>
|
||||
#include <vector>
|
||||
|
||||
using namespace std::string_literals;
|
||||
|
||||
@@ -170,7 +171,7 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(const ConfigurationInterface *configu
|
||||
|
||||
std::cout << "device address: " << uri_ << '\n';
|
||||
std::cout << "LO frequency : " << freq_ << " Hz\n";
|
||||
std::cout << "sample rate: " << sample_rate_ << " Hz\n";
|
||||
std::cout << "sample rate: " << sample_rate_ << " Sps\n";
|
||||
|
||||
if (item_type_ == "gr_complex")
|
||||
{
|
||||
@@ -183,15 +184,24 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(const ConfigurationInterface *configu
|
||||
else
|
||||
{
|
||||
#if GNURADIO_API_IIO
|
||||
fmcomms2_source_f32c_ = gr::iio::fmcomms2_source_f32c::make(
|
||||
uri_.c_str(), freq_, sample_rate_,
|
||||
bandwidth_,
|
||||
rx1_en_, rx2_en_,
|
||||
buffer_size_, quadrature_, rf_dc_,
|
||||
bb_dc_, gain_mode_rx1_.c_str(), rf_gain_rx1_,
|
||||
gain_mode_rx2_.c_str(), rf_gain_rx2_,
|
||||
rf_port_select_.c_str(), filter_source_.c_str(),
|
||||
filter_filename_.c_str(), Fpass_, Fstop_);
|
||||
std::vector<bool> enable_channels{rx1_en_, rx2_en_};
|
||||
fmcomms2_source_f32c_ = gr::iio::fmcomms2_source::make(uri_, enable_channels, buffer_size_);
|
||||
fmcomms2_source_f32c_->set_frequency(freq_);
|
||||
fmcomms2_source_f32c_->set_samplerate(sample_rate_);
|
||||
if (rx1_en_)
|
||||
{
|
||||
fmcomms2_source_f32c_->set_gain_mode(0, gain_mode_rx1_);
|
||||
fmcomms2_source_f32c_->set_gain(0, rf_gain_rx1_);
|
||||
}
|
||||
if (rx2_en_)
|
||||
{
|
||||
fmcomms2_source_f32c_->set_gain_mode(1, gain_mode_rx2_);
|
||||
fmcomms2_source_f32c_->set_gain(1, rf_gain_rx2_);
|
||||
}
|
||||
fmcomms2_source_f32c_->set_quadrature(quadrature_);
|
||||
fmcomms2_source_f32c_->set_rfdc(rf_dc_);
|
||||
fmcomms2_source_f32c_->set_bbdc(bb_dc_);
|
||||
fmcomms2_source_f32c_->set_filter_params(filter_source_, filter_filename_, Fpass_, Fstop_);
|
||||
#else
|
||||
fmcomms2_source_f32c_ = gr::iio::fmcomms2_source_f32c::make(
|
||||
uri_.c_str(), freq_, sample_rate_,
|
||||
@@ -250,15 +260,18 @@ Fmcomms2SignalSource::Fmcomms2SignalSource(const ConfigurationInterface *configu
|
||||
else
|
||||
{
|
||||
#if GNURADIO_API_IIO
|
||||
fmcomms2_source_f32c_ = gr::iio::fmcomms2_source_f32c::make(
|
||||
uri_.c_str(), freq_, sample_rate_,
|
||||
bandwidth_,
|
||||
rx1_en_, rx2_en_,
|
||||
buffer_size_, quadrature_, rf_dc_,
|
||||
bb_dc_, gain_mode_rx1_.c_str(), rf_gain_rx1_,
|
||||
gain_mode_rx2_.c_str(), rf_gain_rx2_,
|
||||
rf_port_select_.c_str(), filter_source_.c_str(),
|
||||
filter_filename_.c_str(), Fpass_, Fstop_);
|
||||
std::vector<bool> enable_channels{rx1_en_, rx2_en_};
|
||||
fmcomms2_source_f32c_ = gr::iio::fmcomms2_source::make(uri_, enable_channels, buffer_size_);
|
||||
fmcomms2_source_f32c_->set_frequency(freq_);
|
||||
fmcomms2_source_f32c_->set_samplerate(sample_rate_);
|
||||
fmcomms2_source_f32c_->set_gain_mode(0, gain_mode_rx1_);
|
||||
fmcomms2_source_f32c_->set_gain(0, rf_gain_rx1_);
|
||||
fmcomms2_source_f32c_->set_gain_mode(1, gain_mode_rx2_);
|
||||
fmcomms2_source_f32c_->set_gain(1, rf_gain_rx2_);
|
||||
fmcomms2_source_f32c_->set_quadrature(quadrature_);
|
||||
fmcomms2_source_f32c_->set_rfdc(rf_dc_);
|
||||
fmcomms2_source_f32c_->set_bbdc(bb_dc_);
|
||||
fmcomms2_source_f32c_->set_filter_params(filter_source_, filter_filename_, Fpass_, Fstop_);
|
||||
#else
|
||||
fmcomms2_source_f32c_ = gr::iio::fmcomms2_source_f32c::make(
|
||||
uri_.c_str(), freq_, sample_rate_,
|
||||
|
||||
@@ -61,7 +61,11 @@ public:
|
||||
gr::basic_block_sptr get_right_block() override;
|
||||
|
||||
private:
|
||||
#if GNURADIO_API_IIO
|
||||
gr::iio::fmcomms2_source::sptr fmcomms2_source_f32c_;
|
||||
#else
|
||||
gr::iio::fmcomms2_source_f32c::sptr fmcomms2_source_f32c_;
|
||||
#endif
|
||||
gnss_shared_ptr<gr::block> valve_;
|
||||
gr::blocks::file_sink::sptr file_sink_;
|
||||
|
||||
|
||||
@@ -1,104 +0,0 @@
|
||||
/*!
|
||||
* \file gn3s_signal_source.cc
|
||||
* \brief GN3S USB dongle GPS RF front-end signal sampler driver
|
||||
* \author Javier Arribas, jarribas(at)cttc.es
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*
|
||||
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
|
||||
* This file is part of GNSS-SDR.
|
||||
*
|
||||
* Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
#include "gn3s_signal_source.h"
|
||||
#include "configuration_interface.h"
|
||||
#include "gnss_sdr_string_literals.h"
|
||||
#include <glog/logging.h>
|
||||
#include <gnuradio/blocks/file_sink.h>
|
||||
#include <gn3s/gn3s_source_cc.h>
|
||||
|
||||
using namespace std::string_literals;
|
||||
|
||||
|
||||
Gn3sSignalSource::Gn3sSignalSource(const ConfigurationInterface* configuration,
|
||||
std::string role,
|
||||
unsigned int in_stream,
|
||||
unsigned int out_stream,
|
||||
Concurrent_Queue<pmt::pmt_t>* queue)
|
||||
: SignalSourceBase(configuration, role, "Gn3s_Signal_Source"s), in_stream_(in_stream), out_stream_(out_stream)
|
||||
{
|
||||
const std::string default_item_type("short");
|
||||
const std::string default_dump_file("./data/gn3s_source.dat");
|
||||
item_type_ = configuration->property(role + ".item_type", default_item_type);
|
||||
dump_ = configuration->property(role + ".dump", false);
|
||||
dump_filename_ = configuration->property(role + ".dump_filename", default_dump_file);
|
||||
|
||||
if (item_type_.compare("gr_complex") == 0)
|
||||
{
|
||||
item_size_ = sizeof(gr_complex);
|
||||
gn3s_source_ = gn3s_make_source_cc();
|
||||
DLOG(INFO) << "Item size " << item_size_;
|
||||
DLOG(INFO) << "gn3s_source(" << gn3s_source_->unique_id() << ")";
|
||||
}
|
||||
// else if (item_type_.compare("short") == 0)
|
||||
// {
|
||||
// item_size_ = sizeof(short);
|
||||
// resampler_ = direct_resampler_make_conditioner_ss(sample_freq_in_,
|
||||
// sample_freq_out_);
|
||||
// }
|
||||
else
|
||||
{
|
||||
LOG(WARNING) << item_type_
|
||||
<< " unrecognized item type for resampler";
|
||||
item_size_ = sizeof(short);
|
||||
}
|
||||
if (dump_)
|
||||
{
|
||||
DLOG(INFO) << "Dumping output into file " << dump_filename_;
|
||||
file_sink_ = gr::blocks::file_sink::make(item_size_, dump_filename_.c_str());
|
||||
}
|
||||
if (dump_)
|
||||
{
|
||||
DLOG(INFO) << "file_sink(" << file_sink_->unique_id() << ")";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Gn3sSignalSource::connect(gr::top_block_sptr top_block)
|
||||
{
|
||||
if (dump_)
|
||||
{
|
||||
top_block->connect(gn3s_source_, 0, file_sink_, 0);
|
||||
DLOG(INFO) << "connected gn3s_source to file sink";
|
||||
}
|
||||
else
|
||||
{
|
||||
DLOG(INFO) << "nothing to connect internally";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void Gn3sSignalSource::disconnect(gr::top_block_sptr top_block)
|
||||
{
|
||||
if (dump_)
|
||||
{
|
||||
top_block->disconnect(gn3s_source_, 0, file_sink_, 0);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
gr::basic_block_sptr Gn3sSignalSource::get_left_block()
|
||||
{
|
||||
LOG(WARNING) << "Left block of a signal source should not be retrieved";
|
||||
return gr::block_sptr();
|
||||
}
|
||||
|
||||
|
||||
gr::basic_block_sptr Gn3sSignalSource::get_right_block()
|
||||
{
|
||||
return gn3s_source_;
|
||||
}
|
||||
@@ -1,75 +0,0 @@
|
||||
/*!
|
||||
* \file gn3s_signal_source.h
|
||||
* \brief GN3S USB dongle GPS RF front-end signal sampler driver
|
||||
* \author Javier Arribas, jarribas(at)cttc.es
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*
|
||||
* GNSS-SDR is a Global Navigation Satellite System software-defined receiver.
|
||||
* This file is part of GNSS-SDR.
|
||||
*
|
||||
* Copyright (C) 2010-2020 (see AUTHORS file for a list of contributors)
|
||||
* SPDX-License-Identifier: GPL-3.0-or-later
|
||||
*
|
||||
* -----------------------------------------------------------------------------
|
||||
*/
|
||||
|
||||
|
||||
#ifndef GNSS_SDR_GN3S_SIGNAL_SOURCE_H
|
||||
#define GNSS_SDR_GN3S_SIGNAL_SOURCE_H
|
||||
|
||||
#include "concurrent_queue.h"
|
||||
#include "signal_source_base.h"
|
||||
#include <gnuradio/blocks/file_sink.h>
|
||||
#include <gnuradio/hier_block2.h>
|
||||
#include <pmt/pmt.h>
|
||||
#include <cstdint>
|
||||
#include <memory>
|
||||
#include <string>
|
||||
|
||||
/** \addtogroup Signal_Source
|
||||
* \{ */
|
||||
/** \addtogroup Signal_Source_adapters
|
||||
* \{ */
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
* \brief This class reads samples from a GN3S USB dongle, a RF front-end signal sampler
|
||||
*/
|
||||
class Gn3sSignalSource : public SignalSourceBase
|
||||
{
|
||||
public:
|
||||
Gn3sSignalSource(const ConfigurationInterface* configuration,
|
||||
std::string role, unsigned int in_stream,
|
||||
unsigned int out_stream, Concurrent_Queue<pmt::pmt_t>* queue);
|
||||
|
||||
~Gn3sSignalSource() = default;
|
||||
|
||||
inline size_t item_size() override
|
||||
{
|
||||
return item_size_;
|
||||
}
|
||||
|
||||
void connect(gr::top_block_sptr top_block) override;
|
||||
void disconnect(gr::top_block_sptr top_block) override;
|
||||
gr::basic_block_sptr get_left_block() override;
|
||||
gr::basic_block_sptr get_right_block() override;
|
||||
|
||||
private:
|
||||
gr::block_sptr gn3s_source_;
|
||||
gr::blocks::file_sink::sptr file_sink_;
|
||||
std::string item_type_;
|
||||
std::string dump_filename_;
|
||||
size_t item_size_;
|
||||
[[maybe_unused]] int64_t samples_;
|
||||
unsigned int in_stream_;
|
||||
unsigned int out_stream_;
|
||||
bool dump_;
|
||||
};
|
||||
|
||||
|
||||
/** \} */
|
||||
/** \} */
|
||||
#endif // GNSS_SDR_GN3S_SIGNAL_SOURCE_H
|
||||
@@ -121,15 +121,20 @@ PlutosdrSignalSource::PlutosdrSignalSource(const ConfigurationInterface* configu
|
||||
|
||||
std::cout << "device address: " << uri_ << '\n';
|
||||
std::cout << "frequency : " << freq_ << " Hz\n";
|
||||
std::cout << "sample rate: " << sample_rate_ << " Hz\n";
|
||||
std::cout << "sample rate: " << sample_rate_ << " Sps\n";
|
||||
std::cout << "gain mode: " << gain_mode_ << '\n';
|
||||
std::cout << "item type: " << item_type_ << '\n';
|
||||
|
||||
#if GNURADIO_API_IIO
|
||||
plutosdr_source_ = gr::iio::pluto_source::make(uri_, freq_, sample_rate_,
|
||||
bandwidth_, buffer_size_, quadrature_, rf_dc_, bb_dc_,
|
||||
gain_mode_.c_str(), rf_gain_, filter_source_.c_str(),
|
||||
filter_filename_.c_str(), Fpass_, Fstop_);
|
||||
plutosdr_source_ = gr::iio::pluto_source::make(uri_, buffer_size_);
|
||||
plutosdr_source_->set_frequency(freq_);
|
||||
plutosdr_source_->set_samplerate(sample_rate_);
|
||||
plutosdr_source_->set_gain_mode(gain_mode_);
|
||||
plutosdr_source_->set_gain(rf_gain_);
|
||||
plutosdr_source_->set_quadrature(quadrature_);
|
||||
plutosdr_source_->set_rfdc(rf_dc_);
|
||||
plutosdr_source_->set_bbdc(bb_dc_);
|
||||
plutosdr_source_->set_filter_params(filter_source_, filter_filename_, Fpass_, Fstop_);
|
||||
#else
|
||||
plutosdr_source_ = gr::iio::pluto_source::make(uri_, freq_, sample_rate_,
|
||||
bandwidth_, buffer_size_, quadrature_, rf_dc_, bb_dc_,
|
||||
|
||||
@@ -37,7 +37,7 @@
|
||||
class ConfigurationInterface;
|
||||
|
||||
/*!
|
||||
* \brief This class reads samples from a GN3S USB dongle, a RF front-end signal sampler
|
||||
* \brief This class reads samples from an antenna array RF front-end signal sampler
|
||||
*/
|
||||
class RawArraySignalSource : public SignalSourceBase
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user