1
0
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:
Javier Arribas
2012-01-27 18:01:17 +00:00
parent ec57e48f4e
commit dd01b83bc3
29 changed files with 357 additions and 409 deletions

View File

@@ -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;

View File

@@ -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_;

View File

@@ -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();
}