1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2025-01-30 02:44:50 +00:00

Use more descriptive names for variables

This commit is contained in:
Carles Fernandez 2016-11-03 14:52:30 +01:00
parent 1c975313b7
commit 97ffee0b0c
8 changed files with 449 additions and 457 deletions

View File

@ -71,18 +71,18 @@ hybrid_ls_pvt::~hybrid_ls_pvt()
}
bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, double hybrid_current_time, bool flag_averaging)
bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_observables_map, double hybrid_current_time, bool flag_averaging)
{
std::map<int,Gnss_Synchro>::iterator gnss_pseudoranges_iter;
std::map<int,Gnss_Synchro>::iterator gnss_observables_iter;
std::map<int,Galileo_Ephemeris>::iterator galileo_ephemeris_iter;
std::map<int,Gps_Ephemeris>::iterator gps_ephemeris_iter;
std::map<int,Gps_CNAV_Ephemeris>::iterator gps_cnav_ephemeris_iter;
int valid_pseudoranges = gnss_pseudoranges_map.size();
int valid_observables = gnss_observables_map.size();
arma::mat W = arma::eye(valid_pseudoranges, valid_pseudoranges); // channels weights matrix
arma::vec obs = arma::zeros(valid_pseudoranges); // pseudoranges observation vector
arma::mat satpos = arma::zeros(3, valid_pseudoranges); // satellite positions matrix
arma::mat W = arma::eye(valid_observables, valid_observables); // channels weights matrix
arma::vec obs = arma::zeros(valid_observables); // observables observation vector
arma::mat satpos = arma::zeros(3, valid_observables); // satellite positions matrix
int Galileo_week_number = 0;
int GPS_week = 0;
@ -100,14 +100,14 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
int valid_obs = 0; //valid observations counter
int obs_counter = 0;
for(gnss_pseudoranges_iter = gnss_pseudoranges_map.begin();
gnss_pseudoranges_iter != gnss_pseudoranges_map.end();
gnss_pseudoranges_iter++)
for(gnss_observables_iter = gnss_observables_map.begin();
gnss_observables_iter != gnss_observables_map.end();
gnss_observables_iter++)
{
if(gnss_pseudoranges_iter->second.System == 'E')
if(gnss_observables_iter->second.System == 'E')
{
// 1 Gal - find the ephemeris for the current GALILEO SV observation. The SV PRN ID is the map key
galileo_ephemeris_iter = galileo_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
galileo_ephemeris_iter = galileo_ephemeris_map.find(gnss_observables_iter->second.PRN);
if (galileo_ephemeris_iter != galileo_ephemeris_map.end())
{
/*!
@ -117,7 +117,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
// COMMON RX TIME PVT ALGORITHM
double Rx_time = hybrid_current_time;
double Tx_time = Rx_time - gnss_pseudoranges_iter->second.Pseudorange_m / GALILEO_C_m_s;
double Tx_time = Rx_time - gnss_observables_iter->second.Pseudorange_m / GALILEO_C_m_s;
// 2- compute the clock drift using the clock model (broadcast) for this SV
SV_clock_bias_s = galileo_ephemeris_iter->second.sv_clock_drift(Tx_time);
@ -130,10 +130,10 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
satpos(1,obs_counter) = galileo_ephemeris_iter->second.d_satpos_Y;
satpos(2,obs_counter) = galileo_ephemeris_iter->second.d_satpos_Z;
// 5- fill the observations vector with the corrected pseudoranges
obs(obs_counter) = gnss_pseudoranges_iter->second.Pseudorange_m + SV_clock_bias_s * GALILEO_C_m_s;
// 5- fill the observations vector with the corrected observables
obs(obs_counter) = gnss_observables_iter->second.Pseudorange_m + SV_clock_bias_s * GALILEO_C_m_s;
d_visible_satellites_IDs[valid_obs] = galileo_ephemeris_iter->second.i_satellite_PRN;
d_visible_satellites_CN0_dB[valid_obs] = gnss_pseudoranges_iter->second.CN0_dB_hz;
d_visible_satellites_CN0_dB[valid_obs] = gnss_observables_iter->second.CN0_dB_hz;
valid_obs++;
Galileo_week_number = galileo_ephemeris_iter->second.WN_5; //for GST
@ -152,18 +152,18 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
// no valid pseudorange for the current SV
W(obs_counter, obs_counter) = 0; // SV de-activated
obs(obs_counter) = 1; // to avoid algorithm problems (divide by zero)
DLOG(INFO) << "No ephemeris data for SV " << gnss_pseudoranges_iter->second.PRN;
DLOG(INFO) << "No ephemeris data for SV " << gnss_observables_iter->second.PRN;
}
}
else if(gnss_pseudoranges_iter->second.System == 'G')
else if(gnss_observables_iter->second.System == 'G')
{
//std::cout << "Satellite System: " << gnss_pseudoranges_iter->second.System <<std::endl;
//std::cout << "Satellite System: " << gnss_observables_iter->second.System <<std::endl;
// 1 GPS - find the ephemeris for the current GPS SV observation. The SV PRN ID is the map key
std::string sig_(gnss_pseudoranges_iter->second.Signal);
std::string sig_(gnss_observables_iter->second.Signal);
if(sig_.compare("1C") == 0)
{
gps_ephemeris_iter = gps_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
gps_ephemeris_iter = gps_ephemeris_map.find(gnss_observables_iter->second.PRN);
if (gps_ephemeris_iter != gps_ephemeris_map.end())
{
/*!
@ -174,7 +174,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
// COMMON RX TIME PVT ALGORITHM MODIFICATION (Like RINEX files)
// first estimate of transmit time
double Rx_time = hybrid_current_time;
double Tx_time = Rx_time - gnss_pseudoranges_iter->second.Pseudorange_m / GPS_C_m_s;
double Tx_time = Rx_time - gnss_observables_iter->second.Pseudorange_m / GPS_C_m_s;
// 2- compute the clock drift using the clock model (broadcast) for this SV
SV_clock_bias_s = gps_ephemeris_iter->second.sv_clock_drift(Tx_time);
@ -187,10 +187,10 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
satpos(1, obs_counter) = gps_ephemeris_iter->second.d_satpos_Y;
satpos(2, obs_counter) = gps_ephemeris_iter->second.d_satpos_Z;
// 5- fill the observations vector with the corrected pseudoranges
obs(obs_counter) = gnss_pseudoranges_iter->second.Pseudorange_m + SV_clock_bias_s * GPS_C_m_s;
// 5- fill the observations vector with the corrected observables
obs(obs_counter) = gnss_observables_iter->second.Pseudorange_m + SV_clock_bias_s * GPS_C_m_s;
d_visible_satellites_IDs[valid_obs] = gps_ephemeris_iter->second.i_satellite_PRN;
d_visible_satellites_CN0_dB[valid_obs] = gnss_pseudoranges_iter->second.CN0_dB_hz;
d_visible_satellites_CN0_dB[valid_obs] = gnss_observables_iter->second.CN0_dB_hz;
valid_obs++;
GPS_week = gps_ephemeris_iter->second.i_GPS_week;
@ -206,12 +206,12 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
// no valid pseudorange for the current SV
W(obs_counter, obs_counter) = 0; // SV de-activated
obs(obs_counter) = 1; // to avoid algorithm problems (divide by zero)
DLOG(INFO) << "No ephemeris data for SV " << gnss_pseudoranges_iter->second.PRN;
DLOG(INFO) << "No ephemeris data for SV " << gnss_observables_iter->second.PRN;
}
}
if(sig_.compare("2S") == 0)
{
gps_cnav_ephemeris_iter = gps_cnav_ephemeris_map.find(gnss_pseudoranges_iter->second.PRN);
gps_cnav_ephemeris_iter = gps_cnav_ephemeris_map.find(gnss_observables_iter->second.PRN);
if (gps_cnav_ephemeris_iter != gps_cnav_ephemeris_map.end())
{
/*!
@ -222,7 +222,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
// COMMON RX TIME PVT ALGORITHM MODIFICATION (Like RINEX files)
// first estimate of transmit time
double Rx_time = hybrid_current_time;
double Tx_time = Rx_time - gnss_pseudoranges_iter->second.Pseudorange_m / GPS_C_m_s;
double Tx_time = Rx_time - gnss_observables_iter->second.Pseudorange_m / GPS_C_m_s;
// 2- compute the clock drift using the clock model (broadcast) for this SV
SV_clock_bias_s = gps_cnav_ephemeris_iter->second.sv_clock_drift(Tx_time);
@ -235,10 +235,10 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
satpos(1, obs_counter) = gps_cnav_ephemeris_iter->second.d_satpos_Y;
satpos(2, obs_counter) = gps_cnav_ephemeris_iter->second.d_satpos_Z;
// 5- fill the observations vector with the corrected pseudoranges
obs(obs_counter) = gnss_pseudoranges_iter->second.Pseudorange_m + SV_clock_bias_s * GPS_C_m_s;
// 5- fill the observations vector with the corrected observables
obs(obs_counter) = gnss_observables_iter->second.Pseudorange_m + SV_clock_bias_s * GPS_C_m_s;
d_visible_satellites_IDs[valid_obs] = gps_cnav_ephemeris_iter->second.i_satellite_PRN;
d_visible_satellites_CN0_dB[valid_obs] = gnss_pseudoranges_iter->second.CN0_dB_hz;
d_visible_satellites_CN0_dB[valid_obs] = gnss_observables_iter->second.CN0_dB_hz;
valid_obs++;
GPS_week = gps_cnav_ephemeris_iter->second.i_GPS_week;
@ -254,7 +254,7 @@ bool hybrid_ls_pvt::get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, do
// no valid pseudorange for the current SV
W(obs_counter, obs_counter) = 0; // SV de-activated
obs(obs_counter) = 1; // to avoid algorithm problems (divide by zero)
DLOG(INFO) << "No ephemeris data for SV " << gnss_pseudoranges_iter->second.PRN;
DLOG(INFO) << "No ephemeris data for SV " << gnss_observables_iter->second.PRN;
}
}
}

View File

@ -41,10 +41,6 @@
#include "gps_navigation_message.h"
#include "gps_cnav_navigation_message.h"
#include "gnss_synchro.h"
//#include "galileo_ephemeris.h"
//#include "galileo_utc_model.h"
//#include "gps_ephemeris.h"
//#include "gps_utc_model.h"
/*!
@ -56,17 +52,13 @@ public:
hybrid_ls_pvt(int nchannels,std::string dump_filename, bool flag_dump_to_file);
~hybrid_ls_pvt();
bool get_PVT(std::map<int,Gnss_Synchro> gnss_pseudoranges_map, double hybrid_current_time, bool flag_averaging);
bool get_PVT(std::map<int,Gnss_Synchro> gnss_observables_map, double hybrid_current_time, bool flag_averaging);
int d_nchannels; //!< Number of available channels for positioning
//int d_valid_GPS_obs; //!< Number of valid GPS pseudorange observations (valid GPS satellites) -- used for hybrid configuration
//int d_valid_GAL_obs; //!< Number of valid GALILEO pseudorange observations (valid GALILEO satellites) -- used for hybrid configuration
//Galileo_Navigation_Message* d_Gal_ephemeris;
//Gps_Navigation_Message* d_GPS_ephemeris;
std::map<int,Galileo_Ephemeris> galileo_ephemeris_map; //!< Map storing new Galileo_Ephemeris
std::map<int,Gps_Ephemeris> gps_ephemeris_map; //!< Map storing new GPS_Ephemeris
std::map<int,Gps_CNAV_Ephemeris> gps_cnav_ephemeris_map;
Galileo_Utc_Model galileo_utc_model;
Galileo_Iono galileo_iono;
Galileo_Almanac galileo_almanac;

View File

@ -3634,7 +3634,7 @@ void Rinex_Printer::update_obs_header(std::fstream& out, const Galileo_Utc_Model
}
void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, const double obs_time, const std::map<int,Gnss_Synchro>& pseudoranges)
void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, const double obs_time, const std::map<int,Gnss_Synchro>& observables)
{
// RINEX observations timestamps are GPS timestamps.
std::string line;
@ -3692,21 +3692,21 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
line += std::string(1, '0');
//Number of satellites observed in current epoch
int numSatellitesObserved = 0;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
numSatellitesObserved++;
}
line += Rinex_Printer::rightJustify(boost::lexical_cast<std::string>(numSatellitesObserved), 3);
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
line += satelliteSystem["GPS"];
if (static_cast<int>(pseudoranges_iter->second.PRN) < 10) line += std::string(1, '0');
line += boost::lexical_cast<std::string>(static_cast<int>(pseudoranges_iter->second.PRN));
if (static_cast<int>(observables_iter->second.PRN) < 10) line += std::string(1, '0');
line += boost::lexical_cast<std::string>(static_cast<int>(observables_iter->second.PRN));
}
// Receiver clock offset (optional)
//line += rightJustify(asString(clockOffset, 12), 15);
@ -3715,16 +3715,16 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
out << line << std::endl;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string lineObs;
lineObs.clear();
line.clear();
// GPS L1 PSEUDORANGE
line += std::string(2, ' ');
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Pseudorange_m, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14);
//Loss of lock indicator (LLI)
int lli = 0; // Include in the observation!!
@ -3738,10 +3738,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
}
// Signal Strength Indicator (SSI)
int ssi = Rinex_Printer::signalStrength(pseudoranges_iter->second.CN0_dB_hz);
int ssi = Rinex_Printer::signalStrength(observables_iter->second.CN0_dB_hz);
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// GPS L1 CA PHASE
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
if (lli == 0)
{
lineObs += std::string(1, ' ');
@ -3752,7 +3752,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
}
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// GPS L1 CA DOPPLER
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_Doppler_hz, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Carrier_Doppler_hz, 3), 14);
if (lli == 0)
{
lineObs += std::string(1, ' ');
@ -3763,7 +3763,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
}
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
//GPS L1 SIGNAL STRENGTH
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.CN0_dB_hz, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.CN0_dB_hz, 3), 14);
if (lineObs.size() < 80) lineObs += std::string(80 - lineObs.size(), ' ');
out << lineObs << std::endl;
}
@ -3798,10 +3798,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
//Number of satellites observed in current epoch
int numSatellitesObserved = 0;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
numSatellitesObserved++;
}
@ -3815,17 +3815,17 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
Rinex_Printer::lengthCheck(line);
out << line << std::endl;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string lineObs;
lineObs.clear();
lineObs += satelliteSystem["GPS"];
if (static_cast<int>(pseudoranges_iter->second.PRN) < 10) lineObs += std::string(1, '0');
lineObs += boost::lexical_cast<std::string>(static_cast<int>(pseudoranges_iter->second.PRN));
if (static_cast<int>(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0');
lineObs += boost::lexical_cast<std::string>(static_cast<int>(observables_iter->second.PRN));
//lineObs += std::string(2, ' ');
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Pseudorange_m, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14);
//Loss of lock indicator (LLI)
int lli = 0; // Include in the observation!!
@ -3839,11 +3839,11 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
}
// Signal Strength Indicator (SSI)
int ssi = Rinex_Printer::signalStrength(pseudoranges_iter->second.CN0_dB_hz);
int ssi = Rinex_Printer::signalStrength(observables_iter->second.CN0_dB_hz);
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// GPS L1 CA PHASE
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
if (lli == 0)
{
lineObs += std::string(1, ' ');
@ -3855,7 +3855,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// GPS L1 CA DOPPLER
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_Doppler_hz, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Carrier_Doppler_hz, 3), 14);
if (lli == 0)
{
lineObs += std::string(1, ' ');
@ -3868,7 +3868,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
//GPS L1 SIGNAL STRENGTH
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.CN0_dB_hz, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.CN0_dB_hz, 3), 14);
if (lineObs.size() < 80) lineObs += std::string(80 - lineObs.size(), ' ');
out << lineObs << std::endl;
@ -3877,7 +3877,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& eph, c
}
void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
// RINEX observations timestamps are GPS timestamps.
std::string line;
@ -3920,10 +3920,10 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris &
//Number of satellites observed in current epoch
int numSatellitesObserved = 0;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
numSatellitesObserved++;
}
@ -3936,18 +3936,18 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris &
Rinex_Printer::lengthCheck(line);
out << line << std::endl;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string lineObs;
lineObs.clear();
lineObs += satelliteSystem["GPS"];
if (static_cast<int>(pseudoranges_iter->second.PRN) < 10) lineObs += std::string(1, '0');
lineObs += boost::lexical_cast<std::string>(static_cast<int>(pseudoranges_iter->second.PRN));
if (static_cast<int>(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0');
lineObs += boost::lexical_cast<std::string>(static_cast<int>(observables_iter->second.PRN));
//lineObs += std::string(2, ' ');
//GPS L2 PSEUDORANGE
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Pseudorange_m, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14);
//Loss of lock indicator (LLI)
int lli = 0; // Include in the observation!!
@ -3961,11 +3961,11 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris &
}
// Signal Strength Indicator (SSI)
int ssi = Rinex_Printer::signalStrength(pseudoranges_iter->second.CN0_dB_hz);
int ssi = Rinex_Printer::signalStrength(observables_iter->second.CN0_dB_hz);
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// GPS L2 PHASE
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
if (lli == 0)
{
lineObs += std::string(1, ' ');
@ -3977,7 +3977,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris &
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// GPS L2 DOPPLER
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_Doppler_hz, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Carrier_Doppler_hz, 3), 14);
if (lli == 0)
{
lineObs += std::string(1, ' ');
@ -3990,7 +3990,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris &
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
//GPS L2 SIGNAL STRENGTH
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.CN0_dB_hz, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.CN0_dB_hz, 3), 14);
if (lineObs.size() < 80) lineObs += std::string(80 - lineObs.size(), ' ');
out << lineObs << std::endl;
@ -3998,7 +3998,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris &
}
void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph, const Gps_CNAV_Ephemeris & eph_cnav, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph, const Gps_CNAV_Ephemeris & eph_cnav, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
if(eph_cnav.d_i_0){} // avoid warning, not needed
// RINEX observations timestamps are GPS timestamps.
@ -4043,34 +4043,34 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph,
//Number of satellites observed in current epoch
//Get maps with GPS L1 and L2 observations
std::map<int, Gnss_Synchro> pseudorangesL1;
std::map<int, Gnss_Synchro> pseudorangesL2;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter2;
std::map<int, Gnss_Synchro> observablesL1;
std::map<int, Gnss_Synchro> observablesL2;
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
std::map<int, Gnss_Synchro>::const_iterator observables_iter2;
std::multimap<unsigned int, Gnss_Synchro> total_mmap;
std::multimap<unsigned int, Gnss_Synchro>::iterator mmap_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string system_(&pseudoranges_iter->second.System, 1);
std::string sig_(pseudoranges_iter->second.Signal);
std::string system_(&observables_iter->second.System, 1);
std::string sig_(observables_iter->second.Signal);
if((system_.compare("G") == 0) && (sig_.compare("1C") == 0))
{
pseudorangesL1.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
total_mmap.insert(std::pair<unsigned int, Gnss_Synchro>(pseudoranges_iter->second.PRN, pseudoranges_iter->second));
observablesL1.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
total_mmap.insert(std::pair<unsigned int, Gnss_Synchro>(observables_iter->second.PRN, observables_iter->second));
}
if((system_.compare("G") == 0) && (sig_.compare("2S") == 0))
{
pseudorangesL2.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
mmap_iter = total_mmap.find(pseudoranges_iter->second.PRN);
observablesL2.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
mmap_iter = total_mmap.find(observables_iter->second.PRN);
if(mmap_iter == total_mmap.end())
{
Gnss_Synchro gs = Gnss_Synchro();
total_mmap.insert(std::pair<unsigned int, Gnss_Synchro>(pseudoranges_iter->second.PRN, gs));
total_mmap.insert(std::pair<unsigned int, Gnss_Synchro>(observables_iter->second.PRN, gs));
}
total_mmap.insert(std::pair<unsigned int, Gnss_Synchro>(pseudoranges_iter->second.PRN, pseudoranges_iter->second));
total_mmap.insert(std::pair<unsigned int, Gnss_Synchro>(observables_iter->second.PRN, observables_iter->second));
}
}
@ -4095,11 +4095,11 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph,
std::set<unsigned int> available_prns;
std::set<unsigned int>::iterator it;
for(pseudoranges_iter = pseudorangesL1.begin();
pseudoranges_iter != pseudorangesL1.end();
pseudoranges_iter++)
for(observables_iter = observablesL1.begin();
observables_iter != observablesL1.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
unsigned int prn_ = observables_iter->second.PRN;
it = available_prns.find(prn_);
if(it == available_prns.end())
{
@ -4107,11 +4107,11 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph,
}
}
for(pseudoranges_iter = pseudorangesL2.begin();
pseudoranges_iter != pseudorangesL2.end();
pseudoranges_iter++)
for(observables_iter = observablesL2.begin();
observables_iter != observablesL2.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
unsigned int prn_ = observables_iter->second.PRN;
it = available_prns.find(prn_);
if(it == available_prns.end())
{
@ -4191,7 +4191,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph,
}
void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& eph, double obs_time, const std::map<int,Gnss_Synchro>& pseudoranges, const std::string galileo_bands)
void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& eph, double obs_time, const std::map<int,Gnss_Synchro>& observables, const std::string galileo_bands)
{
// RINEX observations timestamps are Galileo timestamps.
// See http://gage14.upc.es/gLAB/HTML/Observation_Rinex_v3.01.html
@ -4236,28 +4236,28 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep
//Number of satellites observed in current epoch
//Get maps with Galileo observations
std::map<int, Gnss_Synchro> pseudorangesE1B;
std::map<int, Gnss_Synchro> pseudorangesE5A;
std::map<int, Gnss_Synchro> pseudorangesE5B;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
std::map<int, Gnss_Synchro> observablesE1B;
std::map<int, Gnss_Synchro> observablesE5A;
std::map<int, Gnss_Synchro> observablesE5B;
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string system_(&pseudoranges_iter->second.System, 1);
std::string sig_(pseudoranges_iter->second.Signal);
std::string system_(&observables_iter->second.System, 1);
std::string sig_(observables_iter->second.Signal);
if((system_.compare("E") == 0) && (sig_.compare("1B") == 0))
{
pseudorangesE1B.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesE1B.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
if((system_.compare("E") == 0) && (sig_.compare("5X") == 0))
{
pseudorangesE5A.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesE5A.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
if((system_.compare("E") == 0) && (sig_.compare("7X") == 0))
{
pseudorangesE5B.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesE5B.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
}
std::size_t found_1B = galileo_bands.find("1B");
@ -4269,12 +4269,12 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep
std::set<unsigned int>::iterator it;
if(found_1B != std::string::npos)
{
for(pseudoranges_iter = pseudorangesE1B.begin();
pseudoranges_iter != pseudorangesE1B.end();
pseudoranges_iter++)
for(observables_iter = observablesE1B.begin();
observables_iter != observablesE1B.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
total_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, pseudoranges_iter->second));
unsigned int prn_ = observables_iter->second.PRN;
total_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, observables_iter->second));
it = available_prns.find(prn_);
if(it == available_prns.end())
{
@ -4284,11 +4284,11 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep
}
if(found_E5a != std::string::npos)
{
for(pseudoranges_iter = pseudorangesE5A.begin();
pseudoranges_iter != pseudorangesE5A.end();
pseudoranges_iter++)
for(observables_iter = observablesE5A.begin();
observables_iter != observablesE5A.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
unsigned int prn_ = observables_iter->second.PRN;
it = available_prns.find(prn_);
if(it == available_prns.end())
{
@ -4304,16 +4304,16 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep
total_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, gs));
}
}
total_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, pseudoranges_iter->second));
total_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, observables_iter->second));
}
}
if(found_E5b != std::string::npos)
{
for(pseudoranges_iter = pseudorangesE5B.begin();
pseudoranges_iter != pseudorangesE5B.end();
pseudoranges_iter++)
for(observables_iter = observablesE5B.begin();
observables_iter != observablesE5B.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
unsigned int prn_ = observables_iter->second.PRN;
it = available_prns.find(prn_);
if(it == available_prns.end())
{
@ -4356,7 +4356,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep
}
}
}
total_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, pseudoranges_iter->second));
total_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, observables_iter->second));
}
}
int numSatellitesObserved = available_prns.size();
@ -4431,7 +4431,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Galileo_Ephemeris& ep
}
void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_eph, const Galileo_Ephemeris& galileo_eph, double gps_obs_time, const std::map<int,Gnss_Synchro>& pseudoranges)
void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_eph, const Galileo_Ephemeris& galileo_eph, double gps_obs_time, const std::map<int,Gnss_Synchro>& observables)
{
if(galileo_eph.e_1){} // avoid warning, not needed
std::string line;
@ -4475,45 +4475,45 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep
//Number of satellites observed in current epoch
//Get maps with observations
std::map<int, Gnss_Synchro> pseudorangesG1C;
std::map<int, Gnss_Synchro> pseudorangesE1B;
std::map<int, Gnss_Synchro> pseudorangesE5A;
std::map<int, Gnss_Synchro> pseudorangesE5B;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
std::map<int, Gnss_Synchro> observablesG1C;
std::map<int, Gnss_Synchro> observablesE1B;
std::map<int, Gnss_Synchro> observablesE5A;
std::map<int, Gnss_Synchro> observablesE5B;
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string system_(&pseudoranges_iter->second.System, 1);
std::string sig_(pseudoranges_iter->second.Signal);
std::string system_(&observables_iter->second.System, 1);
std::string sig_(observables_iter->second.Signal);
if((system_.compare("E") == 0) && (sig_.compare("1B") == 0))
{
pseudorangesE1B.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesE1B.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
if((system_.compare("E") == 0) && (sig_.compare("5X") == 0))
{
pseudorangesE5A.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesE5A.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
if((system_.compare("E") == 0) && (sig_.compare("7X") == 0))
{
pseudorangesE5B.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesE5B.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
if((system_.compare("G") == 0) && (sig_.compare("1C") == 0))
{
pseudorangesG1C.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesG1C.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
}
std::multimap<unsigned int, Gnss_Synchro> total_gal_map;
std::set<unsigned int> available_gal_prns;
std::set<unsigned int>::iterator it;
for(pseudoranges_iter = pseudorangesE1B.begin();
pseudoranges_iter != pseudorangesE1B.end();
pseudoranges_iter++)
for(observables_iter = observablesE1B.begin();
observables_iter != observablesE1B.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
total_gal_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, pseudoranges_iter->second));
unsigned int prn_ = observables_iter->second.PRN;
total_gal_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, observables_iter->second));
it = available_gal_prns.find(prn_);
if(it == available_gal_prns.end())
{
@ -4521,12 +4521,12 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep
}
}
for(pseudoranges_iter = pseudorangesE5A.begin();
pseudoranges_iter != pseudorangesE5A.end();
pseudoranges_iter++)
for(observables_iter = observablesE5A.begin();
observables_iter != observablesE5A.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
total_gal_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, pseudoranges_iter->second));
unsigned int prn_ = observables_iter->second.PRN;
total_gal_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, observables_iter->second));
it = available_gal_prns.find(prn_);
if(it == available_gal_prns.end())
{
@ -4534,12 +4534,12 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep
}
}
for(pseudoranges_iter = pseudorangesE5B.begin();
pseudoranges_iter != pseudorangesE5B.end();
pseudoranges_iter++)
for(observables_iter = observablesE5B.begin();
observables_iter != observablesE5B.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
total_gal_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, pseudoranges_iter->second));
unsigned int prn_ = observables_iter->second.PRN;
total_gal_map.insert(std::pair<unsigned int, Gnss_Synchro>(prn_, observables_iter->second));
it = available_gal_prns.find(prn_);
if(it == available_gal_prns.end())
{
@ -4548,7 +4548,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep
}
int numGalSatellitesObserved = available_gal_prns.size();
int numGpsSatellitesObserved = pseudorangesG1C.size();
int numGpsSatellitesObserved = observablesG1C.size();
int numSatellitesObserved = numGalSatellitesObserved + numGpsSatellitesObserved;
line += Rinex_Printer::rightJustify(boost::lexical_cast<std::string>(numSatellitesObserved), 3);
@ -4561,18 +4561,18 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep
std::string s;
std::string lineObs;
for(pseudoranges_iter = pseudorangesG1C.begin();
pseudoranges_iter != pseudorangesG1C.end();
pseudoranges_iter++)
for(observables_iter = observablesG1C.begin();
observables_iter != observablesG1C.end();
observables_iter++)
{
lineObs.clear();
s.assign(1, pseudoranges_iter->second.System);
s.assign(1, observables_iter->second.System);
if(s.compare("G") == 0) lineObs += satelliteSystem["GPS"];
if(s.compare("E") == 0) lineObs += satelliteSystem["Galileo"]; // should not happen
if (static_cast<int>(pseudoranges_iter->second.PRN) < 10) lineObs += std::string(1, '0');
lineObs += boost::lexical_cast<std::string>(static_cast<int>(pseudoranges_iter->second.PRN));
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Pseudorange_m, 3), 14);
if (static_cast<int>(observables_iter->second.PRN) < 10) lineObs += std::string(1, '0');
lineObs += boost::lexical_cast<std::string>(static_cast<int>(observables_iter->second.PRN));
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Pseudorange_m, 3), 14);
//Loss of lock indicator (LLI)
int lli = 0; // Include in the observation!!
@ -4586,11 +4586,11 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep
}
// Signal Strength Indicator (SSI)
int ssi = Rinex_Printer::signalStrength(pseudoranges_iter->second.CN0_dB_hz);
int ssi = Rinex_Printer::signalStrength(observables_iter->second.CN0_dB_hz);
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// PHASE
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Carrier_phase_rads/GPS_TWO_PI, 3), 14);
if (lli == 0)
{
lineObs += std::string(1, ' ');
@ -4602,7 +4602,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// DOPPLER
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.Carrier_Doppler_hz, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.Carrier_Doppler_hz, 3), 14);
if (lli == 0)
{
lineObs += std::string(1, ' ');
@ -4614,7 +4614,7 @@ void Rinex_Printer::log_rinex_obs(std::fstream& out, const Gps_Ephemeris& gps_ep
lineObs += Rinex_Printer::rightJustify(Rinex_Printer::asString<int>(ssi), 1);
// SIGNAL STRENGTH
lineObs += Rinex_Printer::rightJustify(asString(pseudoranges_iter->second.CN0_dB_hz, 3), 14);
lineObs += Rinex_Printer::rightJustify(asString(observables_iter->second.CN0_dB_hz, 3), 14);
if (lineObs.size() < 80) lineObs += std::string(80 - lineObs.size(), ' ');
out << lineObs << std::endl;

View File

@ -184,27 +184,27 @@ public:
/*!
* \brief Writes GPS L1 observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & observables);
/*!
* \brief Writes GPS L2 observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
void log_rinex_obs(std::fstream & out, const Gps_CNAV_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & observables);
/*!
* \brief Writes dual frequency GPS L1 and L2 observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph, const Gps_CNAV_Ephemeris & eph_cnav, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & eph, const Gps_CNAV_Ephemeris & eph_cnav, double obs_time, const std::map<int, Gnss_Synchro> & observables);
/*!
* \brief Writes Galileo observables into the RINEX file. Example: galileo_bands("1B"), galileo_bands("1B 5X"), galileo_bands("5X"), ... Default: "1B".
*/
void log_rinex_obs(std::fstream & out, const Galileo_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, const std::string galileo_bands = "1B");
void log_rinex_obs(std::fstream & out, const Galileo_Ephemeris & eph, double obs_time, const std::map<int, Gnss_Synchro> & observables, const std::string galileo_bands = "1B");
/*!
* \brief Writes Mixed GPS / Galileo observables into the RINEX file
*/
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & gps_eph, const Galileo_Ephemeris & galileo_eph, const double gps_obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
void log_rinex_obs(std::fstream & out, const Gps_Ephemeris & gps_eph, const Galileo_Ephemeris & galileo_eph, const double gps_obs_time, const std::map<int, Gnss_Synchro> & observables);
/*!
* \brief Represents GPS time in the date time format. Leap years are considered, but leap seconds are not.

View File

@ -145,17 +145,17 @@ Rtcm_Printer::~Rtcm_Printer()
}
bool Rtcm_Printer::Print_Rtcm_MT1001(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
bool Rtcm_Printer::Print_Rtcm_MT1001(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
std::string m1001 = rtcm->print_MT1001(gps_eph, obs_time, pseudoranges, station_id);
std::string m1001 = rtcm->print_MT1001(gps_eph, obs_time, observables, station_id);
Rtcm_Printer::Print_Message(m1001);
return true;
}
bool Rtcm_Printer::Print_Rtcm_MT1002(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
bool Rtcm_Printer::Print_Rtcm_MT1002(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
std::string m1002 = rtcm->print_MT1002(gps_eph, obs_time, pseudoranges, station_id);
std::string m1002 = rtcm->print_MT1002(gps_eph, obs_time, observables, station_id);
Rtcm_Printer::Print_Message(m1002);
return true;
}
@ -181,7 +181,7 @@ bool Rtcm_Printer::Print_Rtcm_MSM(unsigned int msm_number, const Gps_Ephemeris &
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
int smooth_int,
@ -191,31 +191,31 @@ bool Rtcm_Printer::Print_Rtcm_MSM(unsigned int msm_number, const Gps_Ephemeris &
std::string msm;
if(msm_number == 1)
{
msm = rtcm->print_MSM_1(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
msm = rtcm->print_MSM_1(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
}
else if(msm_number == 2)
{
msm = rtcm->print_MSM_2(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
msm = rtcm->print_MSM_2(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
}
else if(msm_number == 3)
{
msm = rtcm->print_MSM_3(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
msm = rtcm->print_MSM_3(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
}
else if(msm_number == 4)
{
msm = rtcm->print_MSM_4(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
msm = rtcm->print_MSM_4(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
}
else if(msm_number == 5)
{
msm = rtcm->print_MSM_5(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
msm = rtcm->print_MSM_5(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
}
else if(msm_number == 6)
{
msm = rtcm->print_MSM_6(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
msm = rtcm->print_MSM_6(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
}
else if(msm_number == 7)
{
msm = rtcm->print_MSM_7(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
msm = rtcm->print_MSM_7(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables, station_id, clock_steering_indicator, external_clock_indicator, smooth_int, divergence_free, more_messages);
}
else
{

View File

@ -55,8 +55,8 @@ public:
*/
~Rtcm_Printer();
bool Print_Rtcm_MT1001(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
bool Print_Rtcm_MT1002(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
bool Print_Rtcm_MT1001(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & observables);
bool Print_Rtcm_MT1002(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & observables);
bool Print_Rtcm_MT1019(const Gps_Ephemeris & gps_eph); //<! GPS Ephemeris, should be broadcast in the event that the IODC does not match the IODE, and every 2 minutes.
bool Print_Rtcm_MT1045(const Galileo_Ephemeris & gal_eph); //<! Galileo Ephemeris, should be broadcast every 2 minutes
@ -64,7 +64,7 @@ public:
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
int smooth_int,

View File

@ -391,11 +391,11 @@ std::string Rtcm::build_message(const std::string & data) const
//
// ********************************************************
std::bitset<64> Rtcm::get_MT1001_4_header(unsigned int msg_number, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges,
std::bitset<64> Rtcm::get_MT1001_4_header(unsigned int msg_number, double obs_time, const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id, unsigned int smooth_int, bool sync_flag, bool divergence_free)
{
unsigned int reference_station_id = ref_id; // Max: 4095
const std::map<int, Gnss_Synchro> pseudoranges_ = pseudoranges;
const std::map<int, Gnss_Synchro> observables_ = observables;
bool synchronous_GNSS_flag = sync_flag;
bool divergence_free_smoothing_indicator = divergence_free;
unsigned int smoothing_interval = smooth_int;
@ -403,7 +403,7 @@ std::bitset<64> Rtcm::get_MT1001_4_header(unsigned int msg_number, double obs_ti
Rtcm::set_DF003(reference_station_id);
Rtcm::set_DF004(obs_time);
Rtcm::set_DF005(synchronous_GNSS_flag);
Rtcm::set_DF006(pseudoranges_);
Rtcm::set_DF006(observables_);
Rtcm::set_DF007(divergence_free_smoothing_indicator);
Rtcm::set_DF008(smoothing_interval);
@ -440,7 +440,7 @@ std::bitset<58> Rtcm::get_MT1001_sat_content(const Gps_Ephemeris & eph, double o
}
std::string Rtcm::print_MT1001(const Gps_Ephemeris & gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, unsigned short station_id)
std::string Rtcm::print_MT1001(const Gps_Ephemeris & gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & observables, unsigned short station_id)
{
unsigned int ref_id = static_cast<unsigned int>(station_id);
unsigned int smooth_int = 0;
@ -448,29 +448,29 @@ std::string Rtcm::print_MT1001(const Gps_Ephemeris & gps_eph, double obs_time, c
bool divergence_free = false;
//Get a map with GPS L1 only observations
std::map<int, Gnss_Synchro> pseudorangesL1;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
std::map<int, Gnss_Synchro> observablesL1;
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string system_(&pseudoranges_iter->second.System, 1);
std::string sig_(pseudoranges_iter->second.Signal);
std::string system_(&observables_iter->second.System, 1);
std::string sig_(observables_iter->second.Signal);
if((system_.compare("G") == 0) && (sig_.compare("1C") == 0))
{
pseudorangesL1.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesL1.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
}
std::bitset<64> header = Rtcm::get_MT1001_4_header(1001, obs_time, pseudorangesL1, ref_id, smooth_int, sync_flag, divergence_free);
std::bitset<64> header = Rtcm::get_MT1001_4_header(1001, obs_time, observablesL1, ref_id, smooth_int, sync_flag, divergence_free);
std::string data = header.to_string();
for(pseudoranges_iter = pseudorangesL1.begin();
pseudoranges_iter != pseudorangesL1.end();
pseudoranges_iter++)
for(observables_iter = observablesL1.begin();
observables_iter != observablesL1.end();
observables_iter++)
{
std::bitset<58> content = Rtcm::get_MT1001_sat_content(gps_eph, obs_time, pseudoranges_iter->second);
std::bitset<58> content = Rtcm::get_MT1001_sat_content(gps_eph, obs_time, observables_iter->second);
data += content.to_string();
}
@ -490,7 +490,7 @@ std::string Rtcm::print_MT1001(const Gps_Ephemeris & gps_eph, double obs_time, c
//
// ********************************************************
std::string Rtcm::print_MT1002(const Gps_Ephemeris & gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, unsigned short station_id)
std::string Rtcm::print_MT1002(const Gps_Ephemeris & gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & observables, unsigned short station_id)
{
unsigned int ref_id = static_cast<unsigned int>(station_id);
unsigned int smooth_int = 0;
@ -498,29 +498,29 @@ std::string Rtcm::print_MT1002(const Gps_Ephemeris & gps_eph, double obs_time, c
bool divergence_free = false;
//Get a map with GPS L1 only observations
std::map<int, Gnss_Synchro> pseudorangesL1;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
std::map<int, Gnss_Synchro> observablesL1;
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string system_(&pseudoranges_iter->second.System, 1);
std::string sig_(pseudoranges_iter->second.Signal);
std::string system_(&observables_iter->second.System, 1);
std::string sig_(observables_iter->second.Signal);
if((system_.compare("G") == 0) && (sig_.compare("1C") == 0))
{
pseudorangesL1.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesL1.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
}
std::bitset<64> header = Rtcm::get_MT1001_4_header(1002, obs_time, pseudorangesL1, ref_id, smooth_int, sync_flag, divergence_free);
std::bitset<64> header = Rtcm::get_MT1001_4_header(1002, obs_time, observablesL1, ref_id, smooth_int, sync_flag, divergence_free);
std::string data = header.to_string();
for(pseudoranges_iter = pseudorangesL1.begin();
pseudoranges_iter != pseudorangesL1.end();
pseudoranges_iter++)
for(observables_iter = observablesL1.begin();
observables_iter != observablesL1.end();
observables_iter++)
{
std::bitset<74> content = Rtcm::get_MT1002_sat_content(gps_eph, obs_time, pseudoranges_iter->second);
std::bitset<74> content = Rtcm::get_MT1002_sat_content(gps_eph, obs_time, observables_iter->second);
data += content.to_string();
}
@ -562,7 +562,7 @@ std::bitset<74> Rtcm::get_MT1002_sat_content(const Gps_Ephemeris & eph, double o
//
// ********************************************************
std::string Rtcm::print_MT1003(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephemeris & ephL2, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, unsigned short station_id)
std::string Rtcm::print_MT1003(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephemeris & ephL2, double obs_time, const std::map<int, Gnss_Synchro> & observables, unsigned short station_id)
{
unsigned int ref_id = static_cast<unsigned int>(station_id);
unsigned int smooth_int = 0;
@ -570,61 +570,61 @@ std::string Rtcm::print_MT1003(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephem
bool divergence_free = false;
//Get maps with GPS L1 and L2 observations
std::map<int, Gnss_Synchro> pseudorangesL1;
std::map<int, Gnss_Synchro> pseudorangesL2;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter2;
std::map<int, Gnss_Synchro> observablesL1;
std::map<int, Gnss_Synchro> observablesL2;
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
std::map<int, Gnss_Synchro>::const_iterator observables_iter2;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string system_(&pseudoranges_iter->second.System, 1);
std::string sig_(pseudoranges_iter->second.Signal);
std::string system_(&observables_iter->second.System, 1);
std::string sig_(observables_iter->second.Signal);
if((system_.compare("G") == 0) && (sig_.compare("1C") == 0))
{
pseudorangesL1.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesL1.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
if((system_.compare("G") == 0) && (sig_.compare("2S") == 0))
{
pseudorangesL2.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesL2.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
}
// Get common observables
std::vector< std::pair< Gnss_Synchro, Gnss_Synchro > > common_pseudoranges;
std::vector< std::pair< Gnss_Synchro, Gnss_Synchro > >::const_iterator common_pseudoranges_iter;
std::map<int, Gnss_Synchro> pseudorangesL1_with_L2;
std::vector< std::pair< Gnss_Synchro, Gnss_Synchro > > common_observables;
std::vector< std::pair< Gnss_Synchro, Gnss_Synchro > >::const_iterator common_observables_iter;
std::map<int, Gnss_Synchro> observablesL1_with_L2;
for(pseudoranges_iter = pseudorangesL1.begin();
pseudoranges_iter != pseudorangesL1.end();
pseudoranges_iter++)
for(observables_iter = observablesL1.begin();
observables_iter != observablesL1.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
for(pseudoranges_iter2 = pseudorangesL2.begin();
pseudoranges_iter2 != pseudorangesL2.end();
pseudoranges_iter2++)
unsigned int prn_ = observables_iter->second.PRN;
for(observables_iter2 = observablesL2.begin();
observables_iter2 != observablesL2.end();
observables_iter2++)
{
if(pseudoranges_iter2->second.PRN == prn_)
if(observables_iter2->second.PRN == prn_)
{
std::pair<Gnss_Synchro, Gnss_Synchro> p;
Gnss_Synchro pr1 = pseudoranges_iter->second;
Gnss_Synchro pr2 = pseudoranges_iter2->second;
Gnss_Synchro pr1 = observables_iter->second;
Gnss_Synchro pr2 = observables_iter2->second;
p = std::make_pair(pr1, pr2);
common_pseudoranges.push_back(p);
pseudorangesL1_with_L2.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
common_observables.push_back(p);
observablesL1_with_L2.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
}
}
std::bitset<64> header = Rtcm::get_MT1001_4_header(1003, obs_time, pseudorangesL1_with_L2, ref_id, smooth_int, sync_flag, divergence_free);
std::bitset<64> header = Rtcm::get_MT1001_4_header(1003, obs_time, observablesL1_with_L2, ref_id, smooth_int, sync_flag, divergence_free);
std::string data = header.to_string();
for(common_pseudoranges_iter = common_pseudoranges.begin();
common_pseudoranges_iter != common_pseudoranges.end();
common_pseudoranges_iter++)
for(common_observables_iter = common_observables.begin();
common_observables_iter != common_observables.end();
common_observables_iter++)
{
std::bitset<101> content = Rtcm::get_MT1003_sat_content(ephL1, ephL2, obs_time, common_pseudoranges_iter->first, common_pseudoranges_iter->second);
std::bitset<101> content = Rtcm::get_MT1003_sat_content(ephL1, ephL2, obs_time, common_observables_iter->first, common_observables_iter->second);
data += content.to_string();
}
@ -672,7 +672,7 @@ std::bitset<101> Rtcm::get_MT1003_sat_content(const Gps_Ephemeris & ephL1, const
//
// ******************************************************************
std::string Rtcm::print_MT1004(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephemeris & ephL2, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, unsigned short station_id)
std::string Rtcm::print_MT1004(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephemeris & ephL2, double obs_time, const std::map<int, Gnss_Synchro> & observables, unsigned short station_id)
{
unsigned int ref_id = static_cast<unsigned int>(station_id);
unsigned int smooth_int = 0;
@ -680,61 +680,61 @@ std::string Rtcm::print_MT1004(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephem
bool divergence_free = false;
//Get maps with GPS L1 and L2 observations
std::map<int, Gnss_Synchro> pseudorangesL1;
std::map<int, Gnss_Synchro> pseudorangesL2;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter2;
std::map<int, Gnss_Synchro> observablesL1;
std::map<int, Gnss_Synchro> observablesL2;
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
std::map<int, Gnss_Synchro>::const_iterator observables_iter2;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string system_(&pseudoranges_iter->second.System, 1);
std::string sig_(pseudoranges_iter->second.Signal);
std::string system_(&observables_iter->second.System, 1);
std::string sig_(observables_iter->second.Signal);
if((system_.compare("G") == 0) && (sig_.compare("1C") == 0))
{
pseudorangesL1.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesL1.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
if((system_.compare("G") == 0) && (sig_.compare("2S") == 0))
{
pseudorangesL2.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
observablesL2.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
}
// Get common observables
std::vector< std::pair< Gnss_Synchro, Gnss_Synchro > > common_pseudoranges;
std::vector< std::pair< Gnss_Synchro, Gnss_Synchro > >::const_iterator common_pseudoranges_iter;
std::map<int, Gnss_Synchro> pseudorangesL1_with_L2;
std::vector< std::pair< Gnss_Synchro, Gnss_Synchro > > common_observables;
std::vector< std::pair< Gnss_Synchro, Gnss_Synchro > >::const_iterator common_observables_iter;
std::map<int, Gnss_Synchro> observablesL1_with_L2;
for(pseudoranges_iter = pseudorangesL1.begin();
pseudoranges_iter != pseudorangesL1.end();
pseudoranges_iter++)
for(observables_iter = observablesL1.begin();
observables_iter != observablesL1.end();
observables_iter++)
{
unsigned int prn_ = pseudoranges_iter->second.PRN;
for(pseudoranges_iter2 = pseudorangesL2.begin();
pseudoranges_iter2 != pseudorangesL2.end();
pseudoranges_iter2++)
unsigned int prn_ = observables_iter->second.PRN;
for(observables_iter2 = observablesL2.begin();
observables_iter2 != observablesL2.end();
observables_iter2++)
{
if(pseudoranges_iter2->second.PRN == prn_)
if(observables_iter2->second.PRN == prn_)
{
std::pair<Gnss_Synchro, Gnss_Synchro> p;
Gnss_Synchro pr1 = pseudoranges_iter->second;
Gnss_Synchro pr2 = pseudoranges_iter2->second;
Gnss_Synchro pr1 = observables_iter->second;
Gnss_Synchro pr2 = observables_iter2->second;
p = std::make_pair(pr1, pr2);
common_pseudoranges.push_back(p);
pseudorangesL1_with_L2.insert(std::pair<int, Gnss_Synchro>(pseudoranges_iter->first, pseudoranges_iter->second));
common_observables.push_back(p);
observablesL1_with_L2.insert(std::pair<int, Gnss_Synchro>(observables_iter->first, observables_iter->second));
}
}
}
std::bitset<64> header = Rtcm::get_MT1001_4_header(1004, obs_time, pseudorangesL1_with_L2, ref_id, smooth_int, sync_flag, divergence_free);
std::bitset<64> header = Rtcm::get_MT1001_4_header(1004, obs_time, observablesL1_with_L2, ref_id, smooth_int, sync_flag, divergence_free);
std::string data = header.to_string();
for(common_pseudoranges_iter = common_pseudoranges.begin();
common_pseudoranges_iter != common_pseudoranges.end();
common_pseudoranges_iter++)
for(common_observables_iter = common_observables.begin();
common_observables_iter != common_observables.end();
common_observables_iter++)
{
std::bitset<125> content = Rtcm::get_MT1004_sat_content(ephL1, ephL2, obs_time, common_pseudoranges_iter->first, common_pseudoranges_iter->second);
std::bitset<125> content = Rtcm::get_MT1004_sat_content(ephL1, ephL2, obs_time, common_observables_iter->first, common_observables_iter->second);
data += content.to_string();
}
@ -1564,7 +1564,7 @@ int Rtcm::read_MT1045(const std::string & message, Galileo_Ephemeris & gal_eph)
// **********************************************************************************************
//
// MESSAGE TYPE MSM1 (COMPACT PSEUDORANGES)
// MESSAGE TYPE MSM1 (COMPACT observables)
//
// **********************************************************************************************
@ -1572,7 +1572,7 @@ std::string Rtcm::print_MSM_1( const Gps_Ephemeris & gps_eph,
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -1596,7 +1596,7 @@ std::string Rtcm::print_MSM_1( const Gps_Ephemeris & gps_eph,
std::string header = Rtcm::get_MSM_header(msg_number,
obs_time,
pseudoranges,
observables,
ref_id,
clock_steering_indicator,
external_clock_indicator,
@ -1604,9 +1604,9 @@ std::string Rtcm::print_MSM_1( const Gps_Ephemeris & gps_eph,
divergence_free,
more_messages);
std::string sat_data = Rtcm::get_MSM_1_content_sat_data(pseudoranges);
std::string sat_data = Rtcm::get_MSM_1_content_sat_data(observables);
std::string signal_data = Rtcm::get_MSM_1_content_signal_data(pseudoranges);
std::string signal_data = Rtcm::get_MSM_1_content_signal_data(observables);
std::string message = build_message(header + sat_data + signal_data);
@ -1621,7 +1621,7 @@ std::string Rtcm::print_MSM_1( const Gps_Ephemeris & gps_eph,
std::string Rtcm::get_MSM_header(unsigned int msg_number,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -1640,8 +1640,8 @@ std::string Rtcm::get_MSM_header(unsigned int msg_number,
Rtcm::set_DF417(divergence_free);
Rtcm::set_DF418(smooth_int);
Rtcm::set_DF394(pseudoranges);
Rtcm::set_DF395(pseudoranges);
Rtcm::set_DF394(observables);
Rtcm::set_DF395(observables);
std::string header = DF002.to_string() + DF003.to_string();
header += DF004.to_string();
@ -1654,38 +1654,38 @@ std::string Rtcm::get_MSM_header(unsigned int msg_number,
DF418.to_string() +
DF394.to_string() +
DF395.to_string() +
Rtcm::set_DF396(pseudoranges);
Rtcm::set_DF396(observables);
return header;
}
std::string Rtcm::get_MSM_1_content_sat_data(const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_1_content_sat_data(const std::map<int, Gnss_Synchro> & observables)
{
std::string sat_data;
sat_data.clear();
Rtcm::set_DF394(pseudoranges);
Rtcm::set_DF394(observables);
unsigned int num_satellites = DF394.count();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator gnss_synchro_iter;
std::vector<unsigned int> pos;
std::vector<unsigned int>::iterator it;
for(gnss_synchro_iter = pseudoranges.begin();
gnss_synchro_iter != pseudoranges.end();
for(gnss_synchro_iter = observables.begin();
gnss_synchro_iter != observables.end();
gnss_synchro_iter++)
{
it = std::find(pos.begin(), pos.end(), 65 - gnss_synchro_iter->second.PRN);
if(it == pos.end())
{
pos.push_back(65 - gnss_synchro_iter->second.PRN);
pseudoranges_vector.push_back(*gnss_synchro_iter);
observables_vector.push_back(*gnss_synchro_iter);
}
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(observables_vector);
for(unsigned int nsat = 0; nsat < num_satellites; nsat++)
{
@ -1697,23 +1697,23 @@ std::string Rtcm::get_MSM_1_content_sat_data(const std::map<int, Gnss_Synchro> &
}
std::string Rtcm::get_MSM_1_content_signal_data(const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_1_content_signal_data(const std::map<int, Gnss_Synchro> & observables)
{
std::string signal_data;
signal_data.clear();
unsigned int Ncells = pseudoranges.size();
unsigned int Ncells = observables.size();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator map_iter;
for(map_iter = pseudoranges.begin();
map_iter != pseudoranges.end();
for(map_iter = observables.begin();
map_iter != observables.end();
map_iter++)
{
pseudoranges_vector.push_back(*map_iter);
observables_vector.push_back(*map_iter);
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(observables_vector);
std::reverse(ordered_by_signal.begin(), ordered_by_signal.end());
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(ordered_by_signal);
@ -1737,7 +1737,7 @@ std::string Rtcm::print_MSM_2( const Gps_Ephemeris & gps_eph,
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -1761,7 +1761,7 @@ std::string Rtcm::print_MSM_2( const Gps_Ephemeris & gps_eph,
std::string header = Rtcm::get_MSM_header(msg_number,
obs_time,
pseudoranges,
observables,
ref_id,
clock_steering_indicator,
external_clock_indicator,
@ -1769,9 +1769,9 @@ std::string Rtcm::print_MSM_2( const Gps_Ephemeris & gps_eph,
divergence_free,
more_messages);
std::string sat_data = Rtcm::get_MSM_1_content_sat_data(pseudoranges);
std::string sat_data = Rtcm::get_MSM_1_content_sat_data(observables);
std::string signal_data = Rtcm::get_MSM_2_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges);
std::string signal_data = Rtcm::get_MSM_2_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables);
std::string message = build_message(header + sat_data + signal_data);
if(server_is_running)
@ -1783,26 +1783,26 @@ std::string Rtcm::print_MSM_2( const Gps_Ephemeris & gps_eph,
}
std::string Rtcm::get_MSM_2_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_2_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
std::string signal_data;
std::string first_data_type;
std::string second_data_type;
std::string third_data_type;
unsigned int Ncells = pseudoranges.size();
unsigned int Ncells = observables.size();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator map_iter;
for(map_iter = pseudoranges.begin();
map_iter != pseudoranges.end();
for(map_iter = observables.begin();
map_iter != observables.end();
map_iter++)
{
pseudoranges_vector.push_back(*map_iter);
observables_vector.push_back(*map_iter);
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(observables_vector);
std::reverse(ordered_by_signal.begin(), ordered_by_signal.end());
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(ordered_by_signal);
@ -1832,7 +1832,7 @@ std::string Rtcm::print_MSM_3( const Gps_Ephemeris & gps_eph,
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -1856,7 +1856,7 @@ std::string Rtcm::print_MSM_3( const Gps_Ephemeris & gps_eph,
std::string header = Rtcm::get_MSM_header(msg_number,
obs_time,
pseudoranges,
observables,
ref_id,
clock_steering_indicator,
external_clock_indicator,
@ -1864,9 +1864,9 @@ std::string Rtcm::print_MSM_3( const Gps_Ephemeris & gps_eph,
divergence_free,
more_messages);
std::string sat_data = Rtcm::get_MSM_1_content_sat_data(pseudoranges);
std::string sat_data = Rtcm::get_MSM_1_content_sat_data(observables);
std::string signal_data = Rtcm::get_MSM_3_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges);
std::string signal_data = Rtcm::get_MSM_3_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables);
std::string message = build_message(header + sat_data + signal_data);
if(server_is_running)
@ -1878,7 +1878,7 @@ std::string Rtcm::print_MSM_3( const Gps_Ephemeris & gps_eph,
}
std::string Rtcm::get_MSM_3_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_3_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
std::string signal_data;
std::string first_data_type;
@ -1886,19 +1886,19 @@ std::string Rtcm::get_MSM_3_content_signal_data(const Gps_Ephemeris & ephNAV, co
std::string third_data_type;
std::string fourth_data_type;
unsigned int Ncells = pseudoranges.size();
unsigned int Ncells = observables.size();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator map_iter;
for(map_iter = pseudoranges.begin();
map_iter != pseudoranges.end();
for(map_iter = observables.begin();
map_iter != observables.end();
map_iter++)
{
pseudoranges_vector.push_back(*map_iter);
observables_vector.push_back(*map_iter);
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(observables_vector);
std::reverse(ordered_by_signal.begin(), ordered_by_signal.end());
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(ordered_by_signal);
@ -1929,7 +1929,7 @@ std::string Rtcm::print_MSM_4( const Gps_Ephemeris & gps_eph,
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -1953,7 +1953,7 @@ std::string Rtcm::print_MSM_4( const Gps_Ephemeris & gps_eph,
std::string header = Rtcm::get_MSM_header(msg_number,
obs_time,
pseudoranges,
observables,
ref_id,
clock_steering_indicator,
external_clock_indicator,
@ -1961,9 +1961,9 @@ std::string Rtcm::print_MSM_4( const Gps_Ephemeris & gps_eph,
divergence_free,
more_messages);
std::string sat_data = Rtcm::get_MSM_4_content_sat_data(pseudoranges);
std::string sat_data = Rtcm::get_MSM_4_content_sat_data(observables);
std::string signal_data = Rtcm::get_MSM_4_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges);
std::string signal_data = Rtcm::get_MSM_4_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables);
std::string message = build_message(header + sat_data + signal_data);
if(server_is_running)
@ -1975,33 +1975,33 @@ std::string Rtcm::print_MSM_4( const Gps_Ephemeris & gps_eph,
}
std::string Rtcm::get_MSM_4_content_sat_data(const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_4_content_sat_data(const std::map<int, Gnss_Synchro> & observables)
{
std::string sat_data;
std::string first_data_type;
std::string second_data_type;
Rtcm::set_DF394(pseudoranges);
Rtcm::set_DF394(observables);
unsigned int num_satellites = DF394.count();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator gnss_synchro_iter;
std::vector<unsigned int> pos;
std::vector<unsigned int>::iterator it;
for(gnss_synchro_iter = pseudoranges.begin();
gnss_synchro_iter != pseudoranges.end();
for(gnss_synchro_iter = observables.begin();
gnss_synchro_iter != observables.end();
gnss_synchro_iter++)
{
it = std::find(pos.begin(), pos.end(), 65 - gnss_synchro_iter->second.PRN);
if(it == pos.end())
{
pos.push_back(65 - gnss_synchro_iter->second.PRN);
pseudoranges_vector.push_back(*gnss_synchro_iter);
observables_vector.push_back(*gnss_synchro_iter);
}
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(observables_vector);
for(unsigned int nsat = 0; nsat < num_satellites; nsat++)
{
@ -2015,7 +2015,7 @@ std::string Rtcm::get_MSM_4_content_sat_data(const std::map<int, Gnss_Synchro> &
}
std::string Rtcm::get_MSM_4_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_4_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
std::string signal_data;
std::string first_data_type;
@ -2024,19 +2024,19 @@ std::string Rtcm::get_MSM_4_content_signal_data(const Gps_Ephemeris & ephNAV, co
std::string fourth_data_type;
std::string fifth_data_type;
unsigned int Ncells = pseudoranges.size();
unsigned int Ncells = observables.size();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator map_iter;
for(map_iter = pseudoranges.begin();
map_iter != pseudoranges.end();
for(map_iter = observables.begin();
map_iter != observables.end();
map_iter++)
{
pseudoranges_vector.push_back(*map_iter);
observables_vector.push_back(*map_iter);
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(observables_vector);
std::reverse(ordered_by_signal.begin(), ordered_by_signal.end());
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(ordered_by_signal);
@ -2069,7 +2069,7 @@ std::string Rtcm::print_MSM_5( const Gps_Ephemeris & gps_eph,
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -2093,7 +2093,7 @@ std::string Rtcm::print_MSM_5( const Gps_Ephemeris & gps_eph,
std::string header = Rtcm::get_MSM_header(msg_number,
obs_time,
pseudoranges,
observables,
ref_id,
clock_steering_indicator,
external_clock_indicator,
@ -2101,9 +2101,9 @@ std::string Rtcm::print_MSM_5( const Gps_Ephemeris & gps_eph,
divergence_free,
more_messages);
std::string sat_data = Rtcm::get_MSM_5_content_sat_data(pseudoranges);
std::string sat_data = Rtcm::get_MSM_5_content_sat_data(observables);
std::string signal_data = Rtcm::get_MSM_5_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges);
std::string signal_data = Rtcm::get_MSM_5_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables);
std::string message = build_message(header + sat_data + signal_data);
if(server_is_running)
@ -2115,7 +2115,7 @@ std::string Rtcm::print_MSM_5( const Gps_Ephemeris & gps_eph,
}
std::string Rtcm::get_MSM_5_content_sat_data(const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_5_content_sat_data(const std::map<int, Gnss_Synchro> & observables)
{
std::string sat_data;
std::string first_data_type;
@ -2123,27 +2123,27 @@ std::string Rtcm::get_MSM_5_content_sat_data(const std::map<int, Gnss_Synchro> &
std::string third_data_type;
std::string fourth_data_type;
Rtcm::set_DF394(pseudoranges);
Rtcm::set_DF394(observables);
unsigned int num_satellites = DF394.count();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator gnss_synchro_iter;
std::vector<unsigned int> pos;
std::vector<unsigned int>::iterator it;
for(gnss_synchro_iter = pseudoranges.begin();
gnss_synchro_iter != pseudoranges.end();
for(gnss_synchro_iter = observables.begin();
gnss_synchro_iter != observables.end();
gnss_synchro_iter++)
{
it = std::find(pos.begin(), pos.end(), 65 - gnss_synchro_iter->second.PRN);
if(it == pos.end())
{
pos.push_back(65 - gnss_synchro_iter->second.PRN);
pseudoranges_vector.push_back(*gnss_synchro_iter);
observables_vector.push_back(*gnss_synchro_iter);
}
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(observables_vector);
for(unsigned int nsat = 0; nsat < num_satellites; nsat++)
{
@ -2161,7 +2161,7 @@ std::string Rtcm::get_MSM_5_content_sat_data(const std::map<int, Gnss_Synchro> &
}
std::string Rtcm::get_MSM_5_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_5_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
std::string signal_data;
std::string first_data_type;
@ -2171,19 +2171,19 @@ std::string Rtcm::get_MSM_5_content_signal_data(const Gps_Ephemeris & ephNAV, co
std::string fifth_data_type;
std::string sixth_data_type;
unsigned int Ncells = pseudoranges.size();
unsigned int Ncells = observables.size();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator map_iter;
for(map_iter = pseudoranges.begin();
map_iter != pseudoranges.end();
for(map_iter = observables.begin();
map_iter != observables.end();
map_iter++)
{
pseudoranges_vector.push_back(*map_iter);
observables_vector.push_back(*map_iter);
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(observables_vector);
std::reverse(ordered_by_signal.begin(), ordered_by_signal.end());
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(ordered_by_signal);
@ -2219,7 +2219,7 @@ std::string Rtcm::print_MSM_6( const Gps_Ephemeris & gps_eph,
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -2243,7 +2243,7 @@ std::string Rtcm::print_MSM_6( const Gps_Ephemeris & gps_eph,
std::string header = Rtcm::get_MSM_header(msg_number,
obs_time,
pseudoranges,
observables,
ref_id,
clock_steering_indicator,
external_clock_indicator,
@ -2251,9 +2251,9 @@ std::string Rtcm::print_MSM_6( const Gps_Ephemeris & gps_eph,
divergence_free,
more_messages);
std::string sat_data = Rtcm::get_MSM_4_content_sat_data(pseudoranges);
std::string sat_data = Rtcm::get_MSM_4_content_sat_data(observables);
std::string signal_data = Rtcm::get_MSM_6_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges);
std::string signal_data = Rtcm::get_MSM_6_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables);
std::string message = build_message(header + sat_data + signal_data);
if(server_is_running)
@ -2265,7 +2265,7 @@ std::string Rtcm::print_MSM_6( const Gps_Ephemeris & gps_eph,
}
std::string Rtcm::get_MSM_6_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_6_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
std::string signal_data;
std::string first_data_type;
@ -2274,19 +2274,19 @@ std::string Rtcm::get_MSM_6_content_signal_data(const Gps_Ephemeris & ephNAV, co
std::string fourth_data_type;
std::string fifth_data_type;
unsigned int Ncells = pseudoranges.size();
unsigned int Ncells = observables.size();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator map_iter;
for(map_iter = pseudoranges.begin();
map_iter != pseudoranges.end();
for(map_iter = observables.begin();
map_iter != observables.end();
map_iter++)
{
pseudoranges_vector.push_back(*map_iter);
observables_vector.push_back(*map_iter);
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(observables_vector);
std::reverse(ordered_by_signal.begin(), ordered_by_signal.end());
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(ordered_by_signal);
@ -2320,7 +2320,7 @@ std::string Rtcm::print_MSM_7( const Gps_Ephemeris & gps_eph,
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -2344,7 +2344,7 @@ std::string Rtcm::print_MSM_7( const Gps_Ephemeris & gps_eph,
std::string header = Rtcm::get_MSM_header(msg_number,
obs_time,
pseudoranges,
observables,
ref_id,
clock_steering_indicator,
external_clock_indicator,
@ -2352,9 +2352,9 @@ std::string Rtcm::print_MSM_7( const Gps_Ephemeris & gps_eph,
divergence_free,
more_messages);
std::string sat_data = Rtcm::get_MSM_5_content_sat_data(pseudoranges);
std::string sat_data = Rtcm::get_MSM_5_content_sat_data(observables);
std::string signal_data = Rtcm::get_MSM_7_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, pseudoranges);
std::string signal_data = Rtcm::get_MSM_7_content_signal_data(gps_eph, gps_cnav_eph, gal_eph, obs_time, observables);
std::string message = build_message(header + sat_data + signal_data);
if(server_is_running)
@ -2366,7 +2366,7 @@ std::string Rtcm::print_MSM_7( const Gps_Ephemeris & gps_eph,
}
std::string Rtcm::get_MSM_7_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::get_MSM_7_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables)
{
std::string signal_data;
std::string first_data_type;
@ -2376,19 +2376,19 @@ std::string Rtcm::get_MSM_7_content_signal_data(const Gps_Ephemeris & ephNAV, co
std::string fifth_data_type;
std::string sixth_data_type;
unsigned int Ncells = pseudoranges.size();
unsigned int Ncells = observables.size();
std::vector<std::pair<int, Gnss_Synchro> > pseudoranges_vector;
std::vector<std::pair<int, Gnss_Synchro> > observables_vector;
std::map<int, Gnss_Synchro>::const_iterator map_iter;
for(map_iter = pseudoranges.begin();
map_iter != pseudoranges.end();
for(map_iter = observables.begin();
map_iter != observables.end();
map_iter++)
{
pseudoranges_vector.push_back(*map_iter);
observables_vector.push_back(*map_iter);
}
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(pseudoranges_vector);
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_signal = Rtcm::sort_by_signal(observables_vector);
std::reverse(ordered_by_signal.begin(), ordered_by_signal.end());
std::vector<std::pair<int, Gnss_Synchro> > ordered_by_PRN_pos = Rtcm::sort_by_PRN_mask(ordered_by_signal);
@ -2769,14 +2769,14 @@ int Rtcm::set_DF005(bool sync_flag)
}
int Rtcm::set_DF006(const std::map<int, Gnss_Synchro> & pseudoranges)
int Rtcm::set_DF006(const std::map<int, Gnss_Synchro> & observables)
{
//Number of satellites observed in current epoch
unsigned short int nsats = 0;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
nsats++;
}
@ -3623,12 +3623,12 @@ int Rtcm::set_DF395(const std::map<int, Gnss_Synchro> & gnss_synchro)
}
std::string Rtcm::set_DF396(const std::map<int, Gnss_Synchro> & pseudoranges)
std::string Rtcm::set_DF396(const std::map<int, Gnss_Synchro> & observables)
{
std::string DF396;
std::map<int, Gnss_Synchro>::const_iterator pseudoranges_iter;
Rtcm::set_DF394(pseudoranges);
Rtcm::set_DF395(pseudoranges);
std::map<int, Gnss_Synchro>::const_iterator observables_iter;
Rtcm::set_DF394(observables);
Rtcm::set_DF395(observables);
unsigned int num_signals = DF395.count();
unsigned int num_satellites = DF394.count();
@ -3643,16 +3643,16 @@ std::string Rtcm::set_DF396(const std::map<int, Gnss_Synchro> & pseudoranges)
std::vector<unsigned int> list_of_sats;
std::vector<int> list_of_signals;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
list_of_sats.push_back(pseudoranges_iter->second.PRN);
list_of_sats.push_back(observables_iter->second.PRN);
std::string sig_(pseudoranges_iter->second.Signal);
std::string sig_(observables_iter->second.Signal);
sig = sig_.substr(0,2);
std::string sys(&pseudoranges_iter->second.System, 1);
std::string sys(&observables_iter->second.System, 1);
if ((sig.compare("1C") == 0) && (sys.compare("G") == 0 ) )
{
@ -3697,40 +3697,40 @@ std::string Rtcm::set_DF396(const std::map<int, Gnss_Synchro> & pseudoranges)
for(unsigned int sat = 0; sat < num_satellites; sat++)
{
value = false;
for(pseudoranges_iter = pseudoranges.begin();
pseudoranges_iter != pseudoranges.end();
pseudoranges_iter++)
for(observables_iter = observables.begin();
observables_iter != observables.end();
observables_iter++)
{
std::string sig_(pseudoranges_iter->second.Signal);
std::string sig_(observables_iter->second.Signal);
sig = sig_.substr(0,2);
std::string sys(&pseudoranges_iter->second.System, 1);
std::string sys(&observables_iter->second.System, 1);
if ((sig.compare("1C") == 0) && (sys.compare("G") == 0 ) && (list_of_signals.at(row) == 32 - 2) && (pseudoranges_iter->second.PRN == list_of_sats.at(sat) ) )
if ((sig.compare("1C") == 0) && (sys.compare("G") == 0 ) && (list_of_signals.at(row) == 32 - 2) && (observables_iter->second.PRN == list_of_sats.at(sat) ) )
{
value = true;
}
if ((sig.compare("2S") == 0) && (sys.compare("G") == 0 ) && (list_of_signals.at(row) == 32 - 15) && (pseudoranges_iter->second.PRN == list_of_sats.at(sat) ) )
if ((sig.compare("2S") == 0) && (sys.compare("G") == 0 ) && (list_of_signals.at(row) == 32 - 15) && (observables_iter->second.PRN == list_of_sats.at(sat) ) )
{
value = true;
}
if ((sig.compare("5X") == 0) && (sys.compare("G") == 0 ) && (list_of_signals.at(row) == 32 - 24) && (pseudoranges_iter->second.PRN == list_of_sats.at(sat) ) )
if ((sig.compare("5X") == 0) && (sys.compare("G") == 0 ) && (list_of_signals.at(row) == 32 - 24) && (observables_iter->second.PRN == list_of_sats.at(sat) ) )
{
value = true;
}
if ((sig.compare("1B") == 0) && (sys.compare("E") == 0 ) && (list_of_signals.at(row) == 32 - 4) && (pseudoranges_iter->second.PRN == list_of_sats.at(sat) ) )
if ((sig.compare("1B") == 0) && (sys.compare("E") == 0 ) && (list_of_signals.at(row) == 32 - 4) && (observables_iter->second.PRN == list_of_sats.at(sat) ) )
{
value = true;
}
if ((sig.compare("5X") == 0) && (sys.compare("E") == 0 ) && (list_of_signals.at(row) == 32 - 24) && (pseudoranges_iter->second.PRN == list_of_sats.at(sat) ) )
if ((sig.compare("5X") == 0) && (sys.compare("E") == 0 ) && (list_of_signals.at(row) == 32 - 24) && (observables_iter->second.PRN == list_of_sats.at(sat) ) )
{
value = true;
}
if ((sig.compare("7X") == 0) && (sys.compare("E") == 0 ) && (list_of_signals.at(row) == 32 - 16) && (pseudoranges_iter->second.PRN == list_of_sats.at(sat) ) )
if ((sig.compare("7X") == 0) && (sys.compare("E") == 0 ) && (list_of_signals.at(row) == 32 - 16) && (observables_iter->second.PRN == list_of_sats.at(sat) ) )
{
value = true;
}

View File

@ -89,22 +89,22 @@ public:
/*!
* \brief Prints message type 1001 (L1-Only GPS RTK Observables)
*/
std::string print_MT1001(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, unsigned short station_id);
std::string print_MT1001(const Gps_Ephemeris& gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & observables, unsigned short station_id);
/*!
* \brief Prints message type 1002 (Extended L1-Only GPS RTK Observables)
*/
std::string print_MT1002(const Gps_Ephemeris & gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, unsigned short station_id);
std::string print_MT1002(const Gps_Ephemeris & gps_eph, double obs_time, const std::map<int, Gnss_Synchro> & observables, unsigned short station_id);
/*!
* \brief Prints message type 1003 (L1 & L2 GPS RTK Observables)
*/
std::string print_MT1003(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephemeris & ephL2, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, unsigned short station_id);
std::string print_MT1003(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephemeris & ephL2, double obs_time, const std::map<int, Gnss_Synchro> & observables, unsigned short station_id);
/*!
* \brief Prints message type 1004 (Extended L1 & L2 GPS RTK Observables)
*/
std::string print_MT1004(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephemeris & ephL2, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges, unsigned short station_id);
std::string print_MT1004(const Gps_Ephemeris & ephL1, const Gps_CNAV_Ephemeris & ephL2, double obs_time, const std::map<int, Gnss_Synchro> & observables, unsigned short station_id);
/*!
* \brief Prints message type 1005 (Stationary Antenna Reference Point)
@ -155,13 +155,13 @@ public:
int read_MT1045(const std::string & message, Galileo_Ephemeris & gal_eph);
/*!
* \brief Prints messages of type MSM1 (Compact GNSS pseudoranges)
* \brief Prints messages of type MSM1 (Compact GNSS observables)
*/
std::string print_MSM_1( const Gps_Ephemeris & gps_eph,
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -176,7 +176,7 @@ public:
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -191,7 +191,7 @@ public:
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -206,7 +206,7 @@ public:
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -221,7 +221,7 @@ public:
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -236,7 +236,7 @@ public:
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -251,7 +251,7 @@ public:
const Gps_CNAV_Ephemeris & gps_cnav_eph,
const Galileo_Ephemeris & gal_eph,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -290,7 +290,7 @@ private:
//
std::bitset<64> get_MT1001_4_header(unsigned int msg_number,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int smooth_int,
bool sync_flag,
@ -305,7 +305,7 @@ private:
std::string get_MSM_header(unsigned int msg_number,
double obs_time,
const std::map<int, Gnss_Synchro> & pseudoranges,
const std::map<int, Gnss_Synchro> & observables,
unsigned int ref_id,
unsigned int clock_steering_indicator,
unsigned int external_clock_indicator,
@ -313,17 +313,17 @@ private:
bool divergence_free,
bool more_messages);
std::string get_MSM_1_content_sat_data(const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_4_content_sat_data(const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_5_content_sat_data(const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_1_content_sat_data(const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_4_content_sat_data(const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_5_content_sat_data(const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_1_content_signal_data(const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_2_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_3_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_4_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_5_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_6_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_7_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & pseudoranges);
std::string get_MSM_1_content_signal_data(const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_2_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_3_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_4_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_5_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_6_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables);
std::string get_MSM_7_content_signal_data(const Gps_Ephemeris & ephNAV, const Gps_CNAV_Ephemeris & ephCNAV, const Galileo_Ephemeris & ephFNAV, double obs_time, const std::map<int, Gnss_Synchro> & observables);
//
// Utilities
@ -799,7 +799,7 @@ private:
int set_DF005(bool sync_flag);
std::bitset<5> DF006;
int set_DF006(const std::map<int, Gnss_Synchro> & pseudoranges);
int set_DF006(const std::map<int, Gnss_Synchro> & observables);
std::bitset<1> DF007;
int set_DF007(bool divergence_free_smoothing_indicator); // 0 - Divergence-free smoothing not used 1 - Divergence-free smoothing used
@ -1071,12 +1071,12 @@ private:
int set_DF393(bool more_messages); //1 indicates that more MSMs follow for given physical time and reference station ID
std::bitset<64> DF394;
int set_DF394(const std::map<int, Gnss_Synchro> & pseudoranges);
int set_DF394(const std::map<int, Gnss_Synchro> & observables);
std::bitset<32> DF395;
int set_DF395(const std::map<int, Gnss_Synchro> & pseudoranges);
int set_DF395(const std::map<int, Gnss_Synchro> & observables);
std::string set_DF396(const std::map<int, Gnss_Synchro> & pseudoranges);
std::string set_DF396(const std::map<int, Gnss_Synchro> & observables);
std::bitset<8> DF397;
int set_DF397(const Gnss_Synchro & gnss_synchro);