mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2024-06-26 15:03:14 +00:00
dc18980194
GNSS-SDR.internal_fs_sps The old name was misleading, since the units are samples per second and not Hertz. Backward compatibility is kept, so this change does not break any existing configuration.
144 lines
4.8 KiB
C++
144 lines
4.8 KiB
C++
/*!
|
|
* \file gps_l1_ca_tcp_connector_tracking.cc
|
|
* \brief Implementation of an adapter of a TCP connector block based on code DLL + carrier PLL
|
|
* \author David Pubill, 2012. dpubill(at)cttc.es
|
|
* Luis Esteve, 2012. luis(at)epsilon-formacion.com
|
|
* Javier Arribas, 2011. jarribas(at)cttc.es
|
|
*
|
|
* Code DLL + carrier PLL according to the algorithms described in:
|
|
* K.Borre, D.M.Akos, N.Bertelsen, P.Rinder, and S.H.Jensen,
|
|
* A Software-Defined GPS and Galileo Receiver. A Single-Frequency
|
|
* Approach, Birkhauser, 2007
|
|
*
|
|
* -------------------------------------------------------------------------
|
|
*
|
|
* Copyright (C) 2010-2015 (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.
|
|
*
|
|
* GNSS-SDR is free software: you can redistribute it and/or modify
|
|
* it under the terms of the GNU General Public License as published by
|
|
* the Free Software Foundation, either version 3 of the License, or
|
|
* (at your option) any later version.
|
|
*
|
|
* GNSS-SDR is distributed in the hope that it will be useful,
|
|
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
|
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
|
* GNU General Public License for more details.
|
|
*
|
|
* You should have received a copy of the GNU General Public License
|
|
* along with GNSS-SDR. If not, see <http://www.gnu.org/licenses/>.
|
|
*
|
|
* -------------------------------------------------------------------------
|
|
*/
|
|
|
|
#include "gps_l1_ca_tcp_connector_tracking.h"
|
|
#include <glog/logging.h>
|
|
#include "GPS_L1_CA.h"
|
|
#include "configuration_interface.h"
|
|
|
|
|
|
using google::LogMessage;
|
|
|
|
GpsL1CaTcpConnectorTracking::GpsL1CaTcpConnectorTracking(
|
|
ConfigurationInterface* configuration, std::string role,
|
|
unsigned int in_streams, unsigned int out_streams) :
|
|
role_(role), in_streams_(in_streams), out_streams_(out_streams)
|
|
{
|
|
DLOG(INFO) << "role " << role;
|
|
//################# CONFIGURATION PARAMETERS ########################
|
|
int fs_in;
|
|
int vector_length;
|
|
int f_if;
|
|
bool dump;
|
|
std::string dump_filename;
|
|
std::string item_type;
|
|
std::string default_item_type = "gr_complex";
|
|
float early_late_space_chips;
|
|
size_t port_ch0;
|
|
item_type = configuration->property(role + ".item_type",default_item_type);
|
|
//vector_length = configuration->property(role + ".vector_length", 2048);
|
|
int fs_in_deprecated = configuration->property("GNSS-SDR.internal_fs_hz", 2048000);
|
|
fs_in = configuration->property("GNSS-SDR.internal_fs_sps", fs_in_deprecated);
|
|
f_if = configuration->property(role + ".if", 0);
|
|
dump = configuration->property(role + ".dump", false);
|
|
early_late_space_chips = configuration->property(role + ".early_late_space_chips", 0.5);
|
|
port_ch0 = configuration->property(role + ".port_ch0", 2060);
|
|
std::string default_dump_filename = "./track_ch";
|
|
dump_filename = configuration->property(role + ".dump_filename", default_dump_filename); //unused!
|
|
vector_length = std::round(fs_in / (GPS_L1_CA_CODE_RATE_HZ / GPS_L1_CA_CODE_LENGTH_CHIPS));
|
|
|
|
//################# MAKE TRACKING GNURadio object ###################
|
|
if (item_type.compare("gr_complex") == 0)
|
|
{
|
|
item_size_ = sizeof(gr_complex);
|
|
tracking_ = gps_l1_ca_tcp_connector_make_tracking_cc(
|
|
f_if,
|
|
fs_in,
|
|
vector_length,
|
|
dump,
|
|
dump_filename,
|
|
early_late_space_chips,
|
|
port_ch0);
|
|
}
|
|
else
|
|
{
|
|
item_size_ = sizeof(gr_complex);
|
|
LOG(WARNING) << item_type << " unknown tracking item type.";
|
|
}
|
|
|
|
channel_ = 0;
|
|
DLOG(INFO) << "tracking(" << tracking_->unique_id() << ")";
|
|
}
|
|
|
|
|
|
GpsL1CaTcpConnectorTracking::~GpsL1CaTcpConnectorTracking()
|
|
{}
|
|
|
|
|
|
void GpsL1CaTcpConnectorTracking::start_tracking()
|
|
{
|
|
tracking_->start_tracking();
|
|
}
|
|
|
|
/*
|
|
* Set tracking channel unique ID
|
|
*/
|
|
void GpsL1CaTcpConnectorTracking::set_channel(unsigned int channel)
|
|
{
|
|
channel_ = channel;
|
|
tracking_->set_channel(channel);
|
|
}
|
|
|
|
|
|
void GpsL1CaTcpConnectorTracking::set_gnss_synchro(Gnss_Synchro* p_gnss_synchro)
|
|
{
|
|
tracking_->set_gnss_synchro(p_gnss_synchro);
|
|
}
|
|
|
|
void GpsL1CaTcpConnectorTracking::connect(gr::top_block_sptr top_block)
|
|
{
|
|
if(top_block) { /* top_block is not null */};
|
|
//nothing to connect, now the tracking uses gr_sync_decimator
|
|
}
|
|
|
|
void GpsL1CaTcpConnectorTracking::disconnect(gr::top_block_sptr top_block)
|
|
{
|
|
if(top_block) { /* top_block is not null */};
|
|
//nothing to disconnect, now the tracking uses gr_sync_decimator
|
|
}
|
|
|
|
gr::basic_block_sptr GpsL1CaTcpConnectorTracking::get_left_block()
|
|
{
|
|
return tracking_;
|
|
}
|
|
|
|
gr::basic_block_sptr GpsL1CaTcpConnectorTracking::get_right_block()
|
|
{
|
|
return tracking_;
|
|
}
|
|
|