mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-12-14 04:00:34 +00:00
Merge branch 'multisignals' of https://github.com/gnss-sdr/gnss-sdr into multisignals
This commit is contained in:
commit
74d437a709
@ -175,7 +175,21 @@ Channel.system=GPS, Galileo
|
|||||||
|
|
||||||
;#signal:
|
;#signal:
|
||||||
;#if the option is disabled by default is assigned "1C" GPS L1 C/A
|
;#if the option is disabled by default is assigned "1C" GPS L1 C/A
|
||||||
Channel.signal=1B
|
Channel1.signal=1C
|
||||||
|
Channel2.signal=1C
|
||||||
|
Channel3.signal=1C
|
||||||
|
Channel4.signal=1C
|
||||||
|
Channel5.signal=1C
|
||||||
|
Channel6.signal=1C
|
||||||
|
Channel7.signal=1C
|
||||||
|
Channel8.signal=1B
|
||||||
|
Channel9.signal=1B
|
||||||
|
Channel10.signal=1B
|
||||||
|
Channel11.signal=1B
|
||||||
|
Channel12.signal=1B
|
||||||
|
Channel13.signal=1B
|
||||||
|
Channel14.signal=1B
|
||||||
|
Channel15.signal=1B
|
||||||
|
|
||||||
|
|
||||||
;######### GPS ACQUISITION CONFIG ############
|
;######### GPS ACQUISITION CONFIG ############
|
||||||
|
@ -162,7 +162,22 @@ Channel.system=GPS, Galileo
|
|||||||
|
|
||||||
;#signal:
|
;#signal:
|
||||||
;#if the option is disabled by default is assigned "1C" GPS L1 C/A
|
;#if the option is disabled by default is assigned "1C" GPS L1 C/A
|
||||||
Channel.signal=1B
|
Channel0.signal=1C
|
||||||
|
Channel1.signal=1C
|
||||||
|
Channel2.signal=1C
|
||||||
|
Channel3.signal=1C
|
||||||
|
Channel4.signal=1C
|
||||||
|
Channel5.signal=1C
|
||||||
|
Channel6.signal=1C
|
||||||
|
Channel7.signal=1C
|
||||||
|
Channel8.signal=1B
|
||||||
|
Channel9.signal=1B
|
||||||
|
Channel10.signal=1B
|
||||||
|
Channel11.signal=1B
|
||||||
|
Channel12.signal=1B
|
||||||
|
Channel13.signal=1B
|
||||||
|
Channel14.signal=1B
|
||||||
|
Channel15.signal=1B
|
||||||
|
|
||||||
|
|
||||||
;######### GPS ACQUISITION CONFIG ############
|
;######### GPS ACQUISITION CONFIG ############
|
||||||
|
@ -175,7 +175,15 @@ Channel.system=GPS, Galileo
|
|||||||
|
|
||||||
;#signal:
|
;#signal:
|
||||||
;#if the option is disabled by default is assigned "1C" GPS L1 C/A
|
;#if the option is disabled by default is assigned "1C" GPS L1 C/A
|
||||||
Channel.signal=1B
|
Channel0.signal=1C
|
||||||
|
Channel1.signal=1C
|
||||||
|
Channel2.signal=1C
|
||||||
|
Channel3.signal=1C
|
||||||
|
Channel4.signal=1B
|
||||||
|
Channel5.signal=1B
|
||||||
|
Channel6.signal=1B
|
||||||
|
Channel7.signal=1B
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
;######### GPS ACQUISITION CONFIG ############
|
;######### GPS ACQUISITION CONFIG ############
|
||||||
|
@ -58,8 +58,7 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition(
|
|||||||
|
|
||||||
DLOG(INFO) << "role " << role;
|
DLOG(INFO) << "role " << role;
|
||||||
|
|
||||||
item_type_ = configuration_->property(role + ".item_type",
|
item_type_ = configuration_->property(role + ".item_type", default_item_type);
|
||||||
default_item_type);
|
|
||||||
//float pfa = configuration_->property(role + ".pfa", 0.0);
|
//float pfa = configuration_->property(role + ".pfa", 0.0);
|
||||||
|
|
||||||
fs_in_ = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000);
|
fs_in_ = configuration_->property("GNSS-SDR.internal_fs_hz", 2048000);
|
||||||
@ -79,12 +78,10 @@ GpsL1CaPcpsAcquisition::GpsL1CaPcpsAcquisition(
|
|||||||
max_dwells_ = 2;
|
max_dwells_ = 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
dump_filename_ = configuration_->property(role + ".dump_filename",
|
dump_filename_ = configuration_->property(role + ".dump_filename", default_dump_filename);
|
||||||
default_dump_filename);
|
|
||||||
|
|
||||||
//--- Find number of samples per spreading code -------------------------
|
//--- Find number of samples per spreading code -------------------------
|
||||||
code_length_ = round(fs_in_
|
code_length_ = round(fs_in_ / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS));
|
||||||
/ (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS));
|
|
||||||
|
|
||||||
vector_length_ = code_length_ * sampled_ms_;
|
vector_length_ = code_length_ * sampled_ms_;
|
||||||
|
|
||||||
|
@ -30,7 +30,7 @@
|
|||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
*/
|
*/
|
||||||
|
|
||||||
#include "GPS_L2C.h"
|
#include <gps_l2c_signal.h>
|
||||||
#include <stdlib.h>
|
#include <stdlib.h>
|
||||||
#include <stdint.h>
|
#include <stdint.h>
|
||||||
#include <cmath>
|
#include <cmath>
|
||||||
@ -44,11 +44,11 @@ int32_t gps_l2c_m_shift(int32_t x)
|
|||||||
void gps_l2c_m_code(int32_t * _dest, unsigned int _prn)
|
void gps_l2c_m_code(int32_t * _dest, unsigned int _prn)
|
||||||
{
|
{
|
||||||
int32_t x;
|
int32_t x;
|
||||||
x= GPS_L2C_M_INIT_REG[_prn-1];
|
x = GPS_L2C_M_INIT_REG[ _prn - 1];
|
||||||
for (int n=0; n<GPS_L2_M_CODE_LENGTH_CHIPS; n++)
|
for (int n = 0; n < GPS_L2_M_CODE_LENGTH_CHIPS; n++)
|
||||||
{
|
{
|
||||||
_dest[n]=(int8_t)(x&1);
|
_dest[n] = (int8_t)(x&1);
|
||||||
x= gps_l2c_m_shift(x);
|
x = gps_l2c_m_shift(x);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -63,9 +63,9 @@ void gps_l2c_m_code_gen_complex(std::complex<float>* _dest, unsigned int _prn)
|
|||||||
gps_l2c_m_code(_code, _prn);
|
gps_l2c_m_code(_code, _prn);
|
||||||
}
|
}
|
||||||
|
|
||||||
for (signed int i=0; i<GPS_L2_M_CODE_LENGTH_CHIPS; i++)
|
for (signed int i = 0; i < GPS_L2_M_CODE_LENGTH_CHIPS; i++)
|
||||||
{
|
{
|
||||||
_dest[i] = std::complex<float>(1.0-2.0*_code[i],0);
|
_dest[i] = std::complex<float>(1.0 - 2.0 * _code[i], 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -77,7 +77,7 @@ void gps_l2c_m_code_gen_complex_sampled(std::complex<float>* _dest, unsigned int
|
|||||||
{
|
{
|
||||||
int32_t _code[GPS_L2_M_CODE_LENGTH_CHIPS];
|
int32_t _code[GPS_L2_M_CODE_LENGTH_CHIPS];
|
||||||
|
|
||||||
if (_prn>0 and _prn<51)
|
if (_prn > 0 and _prn < 51)
|
||||||
{
|
{
|
||||||
gps_l2c_m_code(_code, _prn);
|
gps_l2c_m_code(_code, _prn);
|
||||||
}
|
}
|
||||||
@ -95,7 +95,9 @@ void gps_l2c_m_code_gen_complex_sampled(std::complex<float>* _dest, unsigned int
|
|||||||
_ts = 1/(float)_fs; // Sampling period in sec
|
_ts = 1/(float)_fs; // Sampling period in sec
|
||||||
_tc = 1/(float)_codeFreqBasis; // C/A chip period in sec
|
_tc = 1/(float)_codeFreqBasis; // C/A chip period in sec
|
||||||
|
|
||||||
for (signed int i=0; i<_samplesPerCode; i++)
|
float aux;
|
||||||
|
|
||||||
|
for (signed int i = 0; i < _samplesPerCode; i++)
|
||||||
{
|
{
|
||||||
//=== Digitizing =======================================================
|
//=== Digitizing =======================================================
|
||||||
|
|
||||||
@ -105,7 +107,9 @@ void gps_l2c_m_code_gen_complex_sampled(std::complex<float>* _dest, unsigned int
|
|||||||
// millisecond).
|
// millisecond).
|
||||||
//TODO: Check this formula! Seems to start with an extra sample
|
//TODO: Check this formula! Seems to start with an extra sample
|
||||||
|
|
||||||
_codeValueIndex = ceil((_ts * ((float)i + 1)) / _tc) - 1;
|
// _codeValueIndex = ceil((_ts * ((float)i + 1)) / _tc) - 1;
|
||||||
|
aux = (_ts * (i + 1)) / _tc;
|
||||||
|
_codeValueIndex = static_cast<int>(static_cast<long>(aux)) - 1;
|
||||||
|
|
||||||
//--- Make the digitized version of the C/A code -----------------------
|
//--- Make the digitized version of the C/A code -----------------------
|
||||||
// The "upsampled" code is made by selecting values form the CA code
|
// The "upsampled" code is made by selecting values form the CA code
|
||||||
@ -113,12 +117,12 @@ void gps_l2c_m_code_gen_complex_sampled(std::complex<float>* _dest, unsigned int
|
|||||||
if (i == _samplesPerCode - 1)
|
if (i == _samplesPerCode - 1)
|
||||||
{
|
{
|
||||||
//--- Correct the last index (due to number rounding issues) -----------
|
//--- Correct the last index (due to number rounding issues) -----------
|
||||||
_dest[i] = std::complex<float>(1.0-2.0*_code[_codeLength - 1],0);
|
_dest[i] = std::complex<float>(1.0 - 2.0 * _code[_codeLength - 1], 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
_dest[i] = std::complex<float>(1.0-2.0*_code[_codeValueIndex],0);; //repeat the chip -> upsample
|
_dest[i] = std::complex<float>(1.0 - 2.0 * _code[_codeValueIndex], 0);; //repeat the chip -> upsample
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -227,7 +227,7 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetObservables(std::shared
|
|||||||
{
|
{
|
||||||
Galileo_channels = configuration->property("Channels_1B.count", 0);
|
Galileo_channels = configuration->property("Channels_1B.count", 0);
|
||||||
}
|
}
|
||||||
Galileo_channels += configuration->property("Channels_5I.count", 0);
|
Galileo_channels += configuration->property("Channels_5X.count", 0);
|
||||||
unsigned int GPS_channels = configuration->property("Channels_GPS.count", 0); // DEPRECATED
|
unsigned int GPS_channels = configuration->property("Channels_GPS.count", 0); // DEPRECATED
|
||||||
if(GPS_channels == 0)
|
if(GPS_channels == 0)
|
||||||
{
|
{
|
||||||
@ -250,7 +250,7 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetPVT(std::shared_ptr<Con
|
|||||||
{
|
{
|
||||||
Galileo_channels = configuration->property("Channels_1B.count", 0);
|
Galileo_channels = configuration->property("Channels_1B.count", 0);
|
||||||
}
|
}
|
||||||
Galileo_channels += configuration->property("Channels_5I.count", 0);
|
Galileo_channels += configuration->property("Channels_5X.count", 0);
|
||||||
unsigned int GPS_channels = configuration->property("Channels_GPS.count", 0); // DEPRECATED
|
unsigned int GPS_channels = configuration->property("Channels_GPS.count", 0); // DEPRECATED
|
||||||
if(GPS_channels == 0)
|
if(GPS_channels == 0)
|
||||||
{
|
{
|
||||||
@ -397,7 +397,7 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_1B(
|
|||||||
}
|
}
|
||||||
|
|
||||||
//********* GALILEO E5a CHANNEL *****************
|
//********* GALILEO E5a CHANNEL *****************
|
||||||
std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_5I(
|
std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_5X(
|
||||||
std::shared_ptr<ConfigurationInterface> configuration,
|
std::shared_ptr<ConfigurationInterface> configuration,
|
||||||
std::string acq, std::string trk, std::string tlm, int channel,
|
std::string acq, std::string trk, std::string tlm, int channel,
|
||||||
boost::shared_ptr<gr::msg_queue> queue)
|
boost::shared_ptr<gr::msg_queue> queue)
|
||||||
@ -409,15 +409,15 @@ std::unique_ptr<GNSSBlockInterface> GNSSBlockFactory::GetChannel_5I(
|
|||||||
<< acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm;
|
<< acq << ", Tracking Implementation: " << trk << ", Telemetry Decoder implementation: " << tlm;
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue);
|
std::unique_ptr<GNSSBlockInterface> pass_through_ = GetBlock(configuration, "Channel", "Pass_Through", 1, 1, queue);
|
||||||
std::unique_ptr<AcquisitionInterface> acq_ = GetAcqBlock(configuration, "Acquisition_5I", acq, 1, 1, queue);
|
std::unique_ptr<AcquisitionInterface> acq_ = GetAcqBlock(configuration, "Acquisition_5X", acq, 1, 1, queue);
|
||||||
std::unique_ptr<TrackingInterface> trk_ = GetTrkBlock(configuration, "Tracking_5I", trk, 1, 1, queue);
|
std::unique_ptr<TrackingInterface> trk_ = GetTrkBlock(configuration, "Tracking_5X", trk, 1, 1, queue);
|
||||||
std::unique_ptr<TelemetryDecoderInterface> tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_5I", tlm, 1, 1, queue);
|
std::unique_ptr<TelemetryDecoderInterface> tlm_ = GetTlmBlock(configuration, "TelemetryDecoder_5X", tlm, 1, 1, queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> channel_(new Channel(configuration.get(), channel, pass_through_.release(),
|
std::unique_ptr<GNSSBlockInterface> channel_(new Channel(configuration.get(), channel, pass_through_.release(),
|
||||||
acq_.release(),
|
acq_.release(),
|
||||||
trk_.release(),
|
trk_.release(),
|
||||||
tlm_.release(),
|
tlm_.release(),
|
||||||
"Channel", "5I", queue));
|
"Channel", "5X", queue));
|
||||||
|
|
||||||
return channel_;
|
return channel_;
|
||||||
}
|
}
|
||||||
@ -659,20 +659,20 @@ std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> GNSSBlockFacto
|
|||||||
|
|
||||||
|
|
||||||
//**************** GALILEO E5a I (F/NAV OS) CHANNELS **********************
|
//**************** GALILEO E5a I (F/NAV OS) CHANNELS **********************
|
||||||
channel_count = configuration->property("Channels_5I.count", 0);
|
channel_count = configuration->property("Channels_5X.count", 0);
|
||||||
|
|
||||||
LOG(INFO) << "Getting " << channel_count << " GALILEO E5a I (F/NAV OS) channels";
|
LOG(INFO) << "Getting " << channel_count << " GALILEO E5a I (F/NAV OS) channels";
|
||||||
|
|
||||||
tracking_implementation = configuration->property("Tracking_5I.implementation", default_implementation);
|
tracking_implementation = configuration->property("Tracking_5X.implementation", default_implementation);
|
||||||
telemetry_decoder_implementation = configuration->property("TelemetryDecoder_5I.implementation", default_implementation);
|
telemetry_decoder_implementation = configuration->property("TelemetryDecoder_5X.implementation", default_implementation);
|
||||||
acquisition_implementation = configuration->property("Acquisition_5I.implementation", default_implementation);
|
acquisition_implementation = configuration->property("Acquisition_5X.implementation", default_implementation);
|
||||||
|
|
||||||
for (unsigned int i = 0; i < channel_count; i++)
|
for (unsigned int i = 0; i < channel_count; i++)
|
||||||
{
|
{
|
||||||
// Search for specific implementation of that particular channel in config file
|
// Search for specific implementation of that particular channel in config file
|
||||||
//(i.e. Acquisition_5I0.implementation=xxxx)
|
//(i.e. Acquisition_5X0.implementation=xxxx)
|
||||||
std::string acquisition_implementation_specific = configuration->property(
|
std::string acquisition_implementation_specific = configuration->property(
|
||||||
"Acquisition_5I" + boost::lexical_cast<std::string>(i) + ".implementation",
|
"Acquisition_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
|
||||||
default_implementation);
|
default_implementation);
|
||||||
|
|
||||||
if(acquisition_implementation_specific.compare(default_implementation) != 0)
|
if(acquisition_implementation_specific.compare(default_implementation) != 0)
|
||||||
@ -680,9 +680,9 @@ std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> GNSSBlockFacto
|
|||||||
acquisition_implementation = acquisition_implementation_specific;
|
acquisition_implementation = acquisition_implementation_specific;
|
||||||
}
|
}
|
||||||
|
|
||||||
//(i.e. Tracking_5I0.implementation=xxxx)
|
//(i.e. Tracking_5X0.implementation=xxxx)
|
||||||
std::string tracking_implementation_specific = configuration->property(
|
std::string tracking_implementation_specific = configuration->property(
|
||||||
"Tracking_5I" + boost::lexical_cast<std::string>(i) + ".implementation",
|
"Tracking_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
|
||||||
default_implementation);
|
default_implementation);
|
||||||
|
|
||||||
if(tracking_implementation_specific.compare(default_implementation) != 0)
|
if(tracking_implementation_specific.compare(default_implementation) != 0)
|
||||||
@ -691,9 +691,9 @@ std::unique_ptr<std::vector<std::unique_ptr<GNSSBlockInterface>>> GNSSBlockFacto
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
//(i.e. TelemetryDecoder_5I0.implementation=xxxx)
|
//(i.e. TelemetryDecoder_5X0.implementation=xxxx)
|
||||||
std::string telemetry_decoder_implementation_specific = configuration->property(
|
std::string telemetry_decoder_implementation_specific = configuration->property(
|
||||||
"TelemetryDecoder_5I" + boost::lexical_cast<std::string>(i) + ".implementation",
|
"TelemetryDecoder_5X" + boost::lexical_cast<std::string>(i) + ".implementation",
|
||||||
default_implementation);
|
default_implementation);
|
||||||
|
|
||||||
if(telemetry_decoder_implementation_specific.compare(default_implementation) != 0)
|
if(telemetry_decoder_implementation_specific.compare(default_implementation) != 0)
|
||||||
|
@ -93,7 +93,7 @@ public:
|
|||||||
std::string acq, std::string trk, std::string tlm, int channel,
|
std::string acq, std::string trk, std::string tlm, int channel,
|
||||||
boost::shared_ptr<gr::msg_queue> queue);
|
boost::shared_ptr<gr::msg_queue> queue);
|
||||||
|
|
||||||
std::unique_ptr<GNSSBlockInterface> GetChannel_5I(std::shared_ptr<ConfigurationInterface> configuration,
|
std::unique_ptr<GNSSBlockInterface> GetChannel_5X(std::shared_ptr<ConfigurationInterface> configuration,
|
||||||
std::string acq, std::string trk, std::string tlm, int channel,
|
std::string acq, std::string trk, std::string tlm, int channel,
|
||||||
boost::shared_ptr<gr::msg_queue> queue);
|
boost::shared_ptr<gr::msg_queue> queue);
|
||||||
|
|
||||||
|
@ -227,14 +227,14 @@ void GNSSFlowgraph::connect()
|
|||||||
for (int j = 0; j < RF_Channels; j++)
|
for (int j = 0; j < RF_Channels; j++)
|
||||||
{
|
{
|
||||||
//Connect the multichannel signal source to multiple signal conditioners
|
//Connect the multichannel signal source to multiple signal conditioners
|
||||||
// GNURADIO max_streams=-1 means infinite ports!
|
// GNURADIO max_streams=-1 means infinite ports!
|
||||||
LOG(WARNING)<<"sig_source_.at(i)->get_right_block()->output_signature()->max_streams()="<<sig_source_.at(i)->get_right_block()->output_signature()->max_streams();
|
LOG(INFO) << "sig_source_.at(i)->get_right_block()->output_signature()->max_streams()=" << sig_source_.at(i)->get_right_block()->output_signature()->max_streams();
|
||||||
LOG(WARNING)<<"sig_conditioner_.at(signal_conditioner_ID)->get_left_block()->input_signature()="<<sig_conditioner_.at(signal_conditioner_ID)->get_left_block()->input_signature()->max_streams();
|
LOG(INFO) << "sig_conditioner_.at(signal_conditioner_ID)->get_left_block()->input_signature()=" << sig_conditioner_.at(signal_conditioner_ID)->get_left_block()->input_signature()->max_streams();
|
||||||
|
|
||||||
if (sig_source_.at(i)->get_right_block()->output_signature()->max_streams() > 1)
|
if (sig_source_.at(i)->get_right_block()->output_signature()->max_streams() > 1)
|
||||||
{
|
{
|
||||||
|
|
||||||
LOG(WARNING)<<"connecting sig_source_ "<<i<<" stream "<<j<<" to conditioner "<<j;
|
LOG(INFO) << "connecting sig_source_ " << i << " stream " << j << " to conditioner " << j;
|
||||||
top_block_->connect(sig_source_.at(i)->get_right_block(), j, sig_conditioner_.at(signal_conditioner_ID)->get_left_block(), 0);
|
top_block_->connect(sig_source_.at(i)->get_right_block(), j, sig_conditioner_.at(signal_conditioner_ID)->get_left_block(), 0);
|
||||||
|
|
||||||
}
|
}
|
||||||
@ -243,13 +243,13 @@ void GNSSFlowgraph::connect()
|
|||||||
if (j == 0)
|
if (j == 0)
|
||||||
{
|
{
|
||||||
// RF_channel 0 backward compatibility with single channel sources
|
// RF_channel 0 backward compatibility with single channel sources
|
||||||
LOG(WARNING) << "connecting sig_source_ " << i <<" stream "<<0<<" to conditioner "<<j<<std::endl;
|
LOG(INFO) << "connecting sig_source_ " << i << " stream " << 0 << " to conditioner " << j;
|
||||||
top_block_->connect(sig_source_.at(i)->get_right_block(), 0, sig_conditioner_.at(signal_conditioner_ID)->get_left_block(), 0);
|
top_block_->connect(sig_source_.at(i)->get_right_block(), 0, sig_conditioner_.at(signal_conditioner_ID)->get_left_block(), 0);
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
// Multiple channel sources using multiple output blocks of single channel (requires RF_channel selector in call)
|
// Multiple channel sources using multiple output blocks of single channel (requires RF_channel selector in call)
|
||||||
LOG(WARNING)<<"connecting sig_source_ "<<i<<" stream "<<j<<" to conditioner " << j << std::endl;
|
LOG(INFO) << "connecting sig_source_ " << i << " stream " << j << " to conditioner " << j;
|
||||||
top_block_->connect(sig_source_.at(i)->get_right_block(j), 0, sig_conditioner_.at(signal_conditioner_ID)->get_left_block(), 0);
|
top_block_->connect(sig_source_.at(i)->get_right_block(j), 0, sig_conditioner_.at(signal_conditioner_ID)->get_left_block(), 0);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -303,18 +303,10 @@ void GNSSFlowgraph::connect()
|
|||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
|
||||||
//discriminate between systems
|
|
||||||
//std::string default_system = configuration_->property("Channel.system", std::string("GPS"));
|
|
||||||
std::string default_signal = configuration_->property("Channel.signal", std::string("1C"));
|
std::string default_signal = configuration_->property("Channel.signal", std::string("1C"));
|
||||||
//std::string gnss_system = (configuration_->property("Channel"
|
std::string gnss_signal = (configuration_->property("Channel" + boost::lexical_cast<std::string>(i) + ".signal", default_signal));
|
||||||
// + boost::lexical_cast<std::string>(i) + ".system",
|
|
||||||
// default_system));
|
while (gnss_signal != available_GNSS_signals_.front().get_signal() )
|
||||||
std::string gnss_signal = (configuration_->property("Channel"
|
|
||||||
+ boost::lexical_cast<std::string>(i) + ".signal",
|
|
||||||
default_signal));
|
|
||||||
//TODO: add a specific string member to the channel template, and not re-use the implementation field!
|
|
||||||
while (channels_.at(i)->implementation() != available_GNSS_signals_.front().get_satellite().get_system()
|
|
||||||
or gnss_signal != available_GNSS_signals_.front().get_signal() )
|
|
||||||
{
|
{
|
||||||
available_GNSS_signals_.push_back(available_GNSS_signals_.front());
|
available_GNSS_signals_.push_back(available_GNSS_signals_.front());
|
||||||
available_GNSS_signals_.pop_front();
|
available_GNSS_signals_.pop_front();
|
||||||
@ -327,13 +319,11 @@ void GNSSFlowgraph::connect()
|
|||||||
if (channels_state_[i] == 1)
|
if (channels_state_[i] == 1)
|
||||||
{
|
{
|
||||||
channels_.at(i)->start_acquisition();
|
channels_.at(i)->start_acquisition();
|
||||||
LOG(INFO) << "Channel " << i
|
LOG(INFO) << "Channel " << i << " connected to observables and ready for acquisition";
|
||||||
<< " connected to observables and ready for acquisition";
|
|
||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
LOG(INFO) << "Channel " << i
|
LOG(INFO) << "Channel " << i << " connected to observables in standby mode";
|
||||||
<< " connected to observables in standby mode";
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -655,7 +645,7 @@ void GNSSFlowgraph::set_signals_list()
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if ((configuration_->property("Channels_5I.count", 0) > 0) )
|
if ((configuration_->property("Channels_5X.count", 0) > 0) )
|
||||||
{
|
{
|
||||||
/*
|
/*
|
||||||
* Loop to create the list of Galileo E1 B signals
|
* Loop to create the list of Galileo E1 B signals
|
||||||
@ -667,7 +657,7 @@ if ((configuration_->property("Channels_5I.count", 0) > 0) )
|
|||||||
// available_GNSS_signals_.push_back(Gnss_Signal(Gnss_Satellite(std::string("Galileo"),
|
// available_GNSS_signals_.push_back(Gnss_Signal(Gnss_Satellite(std::string("Galileo"),
|
||||||
// *available_gnss_prn_iter), std::string("1B")));
|
// *available_gnss_prn_iter), std::string("1B")));
|
||||||
available_GNSS_signals_.push_back(Gnss_Signal(Gnss_Satellite(std::string("Galileo"),
|
available_GNSS_signals_.push_back(Gnss_Signal(Gnss_Satellite(std::string("Galileo"),
|
||||||
*available_gnss_prn_iter), std::string("5I")));
|
*available_gnss_prn_iter), std::string("5X")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -677,6 +667,8 @@ if ((configuration_->property("Channels_5I.count", 0) > 0) )
|
|||||||
|
|
||||||
std::list<Gnss_Signal>::iterator gnss_it = available_GNSS_signals_.begin();
|
std::list<Gnss_Signal>::iterator gnss_it = available_GNSS_signals_.begin();
|
||||||
|
|
||||||
|
// Preassignation if not defined at ChannelX.signal=1C ...? In what order?
|
||||||
|
|
||||||
for (unsigned int i = 0; i < channels_count_; i++)
|
for (unsigned int i = 0; i < channels_count_; i++)
|
||||||
{
|
{
|
||||||
std::string gnss_system = (configuration_->property("Channel"
|
std::string gnss_system = (configuration_->property("Channel"
|
||||||
@ -699,7 +691,7 @@ if ((configuration_->property("Channels_5I.count", 0) > 0) )
|
|||||||
else
|
else
|
||||||
{
|
{
|
||||||
if((gnss_signal.compare("1C") == 0) or (gnss_signal.compare("2S") == 0) ) gnss_system = "GPS";
|
if((gnss_signal.compare("1C") == 0) or (gnss_signal.compare("2S") == 0) ) gnss_system = "GPS";
|
||||||
if((gnss_signal.compare("1B") == 0) or (gnss_signal.compare("5I") == 0) ) gnss_system = "Galileo";
|
if((gnss_signal.compare("1B") == 0) or (gnss_signal.compare("5X") == 0) ) gnss_system = "Galileo";
|
||||||
Gnss_Signal signal_value = Gnss_Signal(Gnss_Satellite(gnss_system, sat), gnss_signal);
|
Gnss_Signal signal_value = Gnss_Signal(Gnss_Satellite(gnss_system, sat), gnss_signal);
|
||||||
DLOG(INFO) << "Channel " << i << " " << signal_value;
|
DLOG(INFO) << "Channel " << i << " " << signal_value;
|
||||||
available_GNSS_signals_.remove(signal_value);
|
available_GNSS_signals_.remove(signal_value);
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
/*!
|
/*!
|
||||||
* \file GPS_L2C.h
|
* \file GPS_L2C.h
|
||||||
* \brief Defines system parameters for GPS L1 C/A signal and NAV data
|
* \brief Defines system parameters for GPS L2C signal
|
||||||
* \author Javier Arribas, 2015. jarribas(at)cttc.es
|
* \author Javier Arribas, 2015. jarribas(at)cttc.es
|
||||||
*
|
*
|
||||||
* -------------------------------------------------------------------------
|
* -------------------------------------------------------------------------
|
||||||
@ -32,23 +32,19 @@
|
|||||||
#ifndef GNSS_SDR_GPS_L2C_H_
|
#ifndef GNSS_SDR_GPS_L2C_H_
|
||||||
#define GNSS_SDR_GPS_L2C_H_
|
#define GNSS_SDR_GPS_L2C_H_
|
||||||
|
|
||||||
#include <complex>
|
#include <stdint.h>
|
||||||
#include <vector>
|
|
||||||
#include <utility> // std::pair
|
|
||||||
#include <gnss_satellite.h>
|
|
||||||
#include "MATH_CONSTANTS.h"
|
|
||||||
|
|
||||||
|
|
||||||
// carrier and code frequencies
|
// carrier and code frequencies
|
||||||
const double GPS_L2_FREQ_HZ = 1.2276e9; //!< L2 [Hz]
|
const double GPS_L2_FREQ_HZ = 1.2276e9; //!< L2 [Hz]
|
||||||
|
|
||||||
const double GPS_L2_M_CODE_RATE_HZ = 0.5115e6; //!< GPS L2 M code rate [chips/s]
|
const double GPS_L2_M_CODE_RATE_HZ = 0.5115e6; //!< GPS L2 M code rate [chips/s]
|
||||||
const int GPS_L2_M_CODE_LENGTH_CHIPS = 10230; //!< GPS L2 M code length [chips]
|
const int GPS_L2_M_CODE_LENGTH_CHIPS = 10230; //!< GPS L2 M code length [chips]
|
||||||
const double GPS_L2_M_PERIOD = 0.02; //!< GPS L2 M code period [seconds]
|
const double GPS_L2_M_PERIOD = 0.02; //!< GPS L2 M code period [seconds]
|
||||||
|
|
||||||
const double GPS_L2_L_CODE_RATE_HZ = 0.5115e6; //!< GPS L2 L code rate [chips/s]
|
const double GPS_L2_L_CODE_RATE_HZ = 0.5115e6; //!< GPS L2 L code rate [chips/s]
|
||||||
const int GPS_L2_L_CODE_LENGTH_CHIPS = 767250; //!< GPS L2 L code length [chips]
|
const int GPS_L2_L_CODE_LENGTH_CHIPS = 767250; //!< GPS L2 L code length [chips]
|
||||||
const double GPS_L2_L_PERIOD = 1.5; //!< GPS L2 L code period [seconds]
|
const double GPS_L2_L_PERIOD = 1.5; //!< GPS L2 L code period [seconds]
|
||||||
|
|
||||||
|
|
||||||
const int32_t GPS_L2C_M_INIT_REG[115] =
|
const int32_t GPS_L2C_M_INIT_REG[115] =
|
||||||
|
@ -255,7 +255,7 @@ TEST_F(GpsL2MPcpsAcquisitionTest, ValidationOfResults)
|
|||||||
|
|
||||||
stop_queue();
|
stop_queue();
|
||||||
|
|
||||||
unsigned long int Acq_samplestamp_samples = gnss_synchro.Acq_samplestamp_samples;
|
//unsigned long int Acq_samplestamp_samples = gnss_synchro.Acq_samplestamp_samples;
|
||||||
std::cout << "Acquisition process runtime duration: " << (end - begin) << " microseconds" << std::endl;
|
std::cout << "Acquisition process runtime duration: " << (end - begin) << " microseconds" << std::endl;
|
||||||
|
|
||||||
std::cout << "gnss_synchro.Acq_doppler_hz = " << gnss_synchro.Acq_doppler_hz << " Hz" << std::endl;
|
std::cout << "gnss_synchro.Acq_doppler_hz = " << gnss_synchro.Acq_doppler_hz << " Hz" << std::endl;
|
||||||
|
Loading…
Reference in New Issue
Block a user