1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-12-16 05:00:35 +00:00

Modify hybrid observables

This commit is contained in:
Antonio Ramos 2018-02-19 10:29:12 +01:00
parent 756fd1904e
commit c3657f3251
2 changed files with 25 additions and 18 deletions

View File

@ -55,8 +55,8 @@ hybrid_observables_cc::hybrid_observables_cc(unsigned int nchannels_in, unsigned
gr::io_signature::make(nchannels_in, nchannels_in, sizeof(Gnss_Synchro)), gr::io_signature::make(nchannels_in, nchannels_in, sizeof(Gnss_Synchro)),
gr::io_signature::make(nchannels_out, nchannels_out, sizeof(Gnss_Synchro))) gr::io_signature::make(nchannels_out, nchannels_out, sizeof(Gnss_Synchro)))
{ {
set_max_noutput_items(1); //set_max_noutput_items(1);
set_max_output_buffer(1); //set_max_output_buffer(1);
d_dump = dump; d_dump = dump;
d_nchannels = nchannels_out; d_nchannels = nchannels_out;
d_dump_filename = dump_filename; d_dump_filename = dump_filename;
@ -65,12 +65,7 @@ hybrid_observables_cc::hybrid_observables_cc(unsigned int nchannels_in, unsigned
max_extrapol_time_s = 0.1; // 100 ms max_extrapol_time_s = 0.1; // 100 ms
valid_channels.resize(d_nchannels, false); valid_channels.resize(d_nchannels, false);
d_num_valid_channels = 0; d_num_valid_channels = 0;
for (unsigned int i = 0; i < d_nchannels; i++)
{
d_gnss_synchro_history.push_back(std::pair<Gnss_Synchro,Gnss_Synchro>());
d_gnss_synchro_history.at(i).first.Flag_valid_word = false;
d_gnss_synchro_history.at(i).second.Flag_valid_word = false;
}
// ############# ENABLE DATA FILE LOG ################# // ############# ENABLE DATA FILE LOG #################
if (d_dump) if (d_dump)
@ -335,6 +330,11 @@ double Hybrid_Compute_T_rx_s(const Gnss_Synchro& a)
else { return 0.0; } else { return 0.0; }
} }
bool Hybrid_find_trx(const Gnss_Synchro&a)
{
return(std::fabs(T_rx_s - a.RX_time) > trx_comp_thres);
}
/* /*
bool Hybrid_pairCompare_gnss_synchro_T_rx(const std::pair<Gnss_Synchro, Gnss_Synchro>& a, const std::pair<Gnss_Synchro, Gnss_Synchro>& b) bool Hybrid_pairCompare_gnss_synchro_T_rx(const std::pair<Gnss_Synchro, Gnss_Synchro>& a, const std::pair<Gnss_Synchro, Gnss_Synchro>& b)
{ {
@ -446,20 +446,26 @@ int hybrid_observables_cc::general_work(int noutput_items __attribute__((unused)
////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////
std::vector<std::pair<Gnss_Synchro, Gnss_Synchro>>::iterator it; std::vector<std::deque<Gnss_Synchro>>::iterator it;
if (total_input_items > 0) if (total_input_items > 0)
{ {
i = 0; i = 0;
for (it = d_gnss_synchro_history.begin(); it != d_gnss_synchro_history.end(); it++) for (it = d_gnss_synchro_history.begin(); it != d_gnss_synchro_history.end(); it++)
{ {
if (ninput_items[i] > 0 and (Hybrid_Compute_T_rx_s(in[i][0]) < T_rx_s)) if (ninput_items[i] > 0)
{ {
it->second = it->first; // second is the older Gnss_Synchro for(int aux = 0; aux < ninput_items[i]; aux++)
it->first = in[i][0]; // first is the newest Gnss_Synchro {
it->first.RX_time = Hybrid_Compute_T_rx_s(it->first); it->push_back(in[i][aux]);
consume(i, 1); it->at(it->size() - 1).RX_time = Hybrid_Compute_T_rx_s(in[i][aux]);
} }
if (it->first.Flag_valid_word and it->second.Flag_valid_word) { valid_channels[i] = true; } consume(ninput_items[i], 1);
}
while(std::find(d_gnss_synchro_history.begin(), d_gnss_synchro_history.end(), Hybrid_compare_trx) != d_gnss_synchro_history.end())
{
}
if (it->size() > 2) { valid_channels[i] = true; }
else { valid_channels[i] = false; } else { valid_channels[i] = false; }
i++; i++;
} }

View File

@ -35,8 +35,9 @@
#include <fstream> #include <fstream>
#include <string> #include <string>
#include <utility> //std::pair //#include <utility> //std::pair
#include <vector> //std::vector #include <vector> //std::vector
#include <deque>
#include <boost/dynamic_bitset.hpp> #include <boost/dynamic_bitset.hpp>
#include <gnuradio/block.h> #include <gnuradio/block.h>
#include "gnss_synchro.h" #include "gnss_synchro.h"
@ -65,7 +66,7 @@ private:
hybrid_observables_cc(unsigned int nchannels_in, unsigned int nchannels_out, bool dump, std::string dump_filename); hybrid_observables_cc(unsigned int nchannels_in, unsigned int nchannels_out, bool dump, std::string dump_filename);
//Tracking observable history //Tracking observable history
std::vector<std::pair<Gnss_Synchro, Gnss_Synchro>> d_gnss_synchro_history; std::vector<std::deque<Gnss_Synchro>> d_gnss_synchro_history;
boost::dynamic_bitset<> valid_channels; boost::dynamic_bitset<> valid_channels;
double T_rx_s; double T_rx_s;
double T_rx_step_s; double T_rx_step_s;