mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2025-10-31 23:33:03 +00:00
GNSS SDR now uses the unified Gnss_Synchro class to exchange signal synchronization data between Acquisition, Tracking and Telemetry decoder blocks.
git-svn-id: https://svn.code.sf.net/p/gnss-sdr/code/trunk@147 64b25241-fba3-4117-9849-534c7e92360d
This commit is contained in:
@@ -61,6 +61,11 @@ Channel::Channel(ConfigurationInterface *configuration, unsigned int channel,
|
||||
trk_->set_channel(channel_);
|
||||
nav_->set_channel(channel_);
|
||||
|
||||
gnss_synchro_.Channel_ID=channel_;
|
||||
|
||||
acq_->set_gnss_synchro(&gnss_synchro_);
|
||||
trk_->set_gnss_synchro(&gnss_synchro_);
|
||||
|
||||
acq_->set_threshold(configuration->property("Acquisition"
|
||||
+ boost::lexical_cast<std::string>(channel_) + ".threshold", 0.0));
|
||||
acq_->set_doppler_max(configuration->property("Acquisition"
|
||||
@@ -86,7 +91,6 @@ Channel::Channel(ConfigurationInterface *configuration, unsigned int channel,
|
||||
|
||||
connected_ = false;
|
||||
message_ = 0;
|
||||
gnss_satellite_ = Gnss_Satellite();
|
||||
gnss_signal_ = Gnss_Signal();
|
||||
}
|
||||
|
||||
@@ -98,7 +102,6 @@ Channel::~Channel()
|
||||
delete trk_;
|
||||
delete nav_;
|
||||
delete pass_through_;
|
||||
//delete gnss_satellite_;
|
||||
}
|
||||
|
||||
|
||||
@@ -124,11 +127,7 @@ void Channel::connect(gr_top_block_sptr top_block)
|
||||
top_block->connect(pass_through_->get_right_block(), 0,
|
||||
trk_->get_left_block(), 0);
|
||||
DLOG(INFO) << "pass_through_ -> tracking";
|
||||
top_block->connect(trk_->get_right_block(), 0, nav_->get_left_block(), 0); // channel 1
|
||||
top_block->connect(trk_->get_right_block(), 1, nav_->get_left_block(), 1); // channel 2
|
||||
top_block->connect(trk_->get_right_block(), 2, nav_->get_left_block(), 2); // channel 3
|
||||
top_block->connect(trk_->get_right_block(), 3, nav_->get_left_block(), 3); // channel 4
|
||||
top_block->connect(trk_->get_right_block(), 4, nav_->get_left_block(), 4); // channel 5
|
||||
top_block->connect(trk_->get_right_block(), 0, nav_->get_left_block(), 0);
|
||||
DLOG(INFO) << "tracking -> telemetry_decoder";
|
||||
|
||||
connected_ = true;
|
||||
@@ -171,10 +170,13 @@ gr_basic_block_sptr Channel::get_right_block()
|
||||
|
||||
void Channel::set_signal(Gnss_Signal gnss_signal)
|
||||
{
|
||||
gnss_satellite_ = gnss_signal.get_satellite();
|
||||
acq_->set_satellite(gnss_satellite_);
|
||||
trk_->set_satellite(gnss_satellite_);
|
||||
nav_->set_satellite(gnss_satellite_);
|
||||
Gnss_Satellite gnss_satellite;
|
||||
gnss_satellite = gnss_signal.get_satellite();
|
||||
gnss_signal.get_signal().copy(gnss_synchro_.Signal,2,0);
|
||||
gnss_synchro_.PRN=gnss_signal.get_satellite().get_PRN();
|
||||
gnss_synchro_.System=gnss_signal.get_satellite().get_system_short().c_str()[0];
|
||||
acq_->init();
|
||||
nav_->set_satellite(gnss_satellite);
|
||||
}
|
||||
|
||||
|
||||
@@ -239,14 +241,14 @@ void Channel::process_channel_messages()
|
||||
case 1:
|
||||
|
||||
LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
<< " ACQ SUCCESS satellite " << gnss_satellite_;
|
||||
<< " ACQ SUCCESS satellite " << gnss_synchro_.System << " "<< gnss_synchro_.PRN;
|
||||
channel_fsm_.Event_gps_valid_acquisition();
|
||||
break;
|
||||
|
||||
case 2:
|
||||
|
||||
LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
<< " ACQ FAILED satellite " << gnss_satellite_;
|
||||
<< " ACQ FAILED satellite " << gnss_synchro_.System << " "<< gnss_synchro_.PRN;
|
||||
if (repeat_ == true)
|
||||
{
|
||||
channel_fsm_.Event_gps_failed_acquisition_repeat();
|
||||
@@ -259,7 +261,7 @@ void Channel::process_channel_messages()
|
||||
|
||||
case 3:
|
||||
LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
<< " TRACKING FAILED satellite " << gnss_satellite_
|
||||
<< " TRACKING FAILED satellite " << gnss_synchro_.System << " "<< gnss_synchro_.PRN
|
||||
<< ", reacquisition.";
|
||||
channel_fsm_.Event_gps_failed_tracking();
|
||||
break;
|
||||
|
||||
@@ -42,6 +42,7 @@
|
||||
#include "control_message_factory.h"
|
||||
#include "concurrent_queue.h"
|
||||
#include "gnss_signal.h"
|
||||
#include "gnss_synchro.h"
|
||||
|
||||
|
||||
class ConfigurationInterface;
|
||||
@@ -108,7 +109,8 @@ private:
|
||||
std::string implementation_;
|
||||
|
||||
unsigned int channel_;
|
||||
Gnss_Satellite gnss_satellite_;
|
||||
|
||||
Gnss_Synchro gnss_synchro_;
|
||||
Gnss_Signal gnss_signal_;
|
||||
bool connected_;
|
||||
bool stop_;
|
||||
|
||||
@@ -191,16 +191,16 @@ void GpsL1CaChannelFsm::start_acquisition()
|
||||
|
||||
void GpsL1CaChannelFsm::start_tracking()
|
||||
{
|
||||
LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
<< " passing prn code phase " << acq_->prn_code_phase();
|
||||
LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
<< " passing doppler freq shift " << acq_->doppler_freq_shift();
|
||||
LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
<< " passing acquisition sample stamp "
|
||||
<< acq_->get_sample_stamp();
|
||||
trk_->set_prn_code_phase(acq_->prn_code_phase());
|
||||
trk_->set_doppler_freq_shift(acq_->doppler_freq_shift());
|
||||
trk_->set_acq_sample_stamp(acq_->get_sample_stamp());
|
||||
//LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
//<< " passing prn code phase " << acq_->prn_code_phase();
|
||||
//LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
//<< " passing doppler freq shift " << acq_->doppler_freq_shift();
|
||||
//LOG_AT_LEVEL(INFO) << "Channel " << channel_
|
||||
//<< " passing acquisition sample stamp "
|
||||
//<< acq_->get_sample_stamp();
|
||||
//trk_->set_prn_code_phase(acq_->prn_code_phase());
|
||||
//trk_->set_doppler_freq_shift(acq_->doppler_freq_shift());
|
||||
//trk_->set_acq_sample_stamp(acq_->get_sample_stamp());
|
||||
trk_->start_tracking();
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user