mirror of
https://github.com/gnss-sdr/gnss-sdr
synced 2026-04-29 18:21:25 +00:00
code cleaning
This commit is contained in:
@@ -36,7 +36,7 @@
|
||||
#include <complex>
|
||||
#include <vector>
|
||||
#include <utility> // std::pair
|
||||
#include <gnss_satellite.h>
|
||||
#include "gnss_satellite.h"
|
||||
#include "MATH_CONSTANTS.h"
|
||||
|
||||
// Physical constants
|
||||
@@ -61,35 +61,35 @@ const int GPS_L2_L_CODE_LENGTH_CHIPS = 767250; //!< GPS L2 L code length [chip
|
||||
const double GPS_L2_L_PERIOD = 1.5; //!< GPS L2 L code period [seconds]
|
||||
|
||||
const int32_t GPS_L2C_M_INIT_REG[115] =
|
||||
{0742417664, 0756014035,0002747144,0066265724, // 1:4
|
||||
0601403471, 0703232733, 0124510070,0617316361, // 5:8
|
||||
0047541621, 0733031046, 0713512145, 0024437606,
|
||||
0021264003, 0230655351, 0001314400, 0222021506,
|
||||
0540264026, 0205521705, 0064022144, 0120161274,
|
||||
0044023533, 0724744327, 0045743577, 0741201660,
|
||||
0700274134, 0010247261, 0713433445, 0737324162,
|
||||
0311627434, 0710452007, 0722462133, 0050172213,
|
||||
0500653703, 0755077436, 0136717361, 0756675453,
|
||||
0435506112, 0771353753, 0226107701, 0022025110,
|
||||
0402466344, 0752566114, 0702011164, 0041216771,
|
||||
0047457275, 0266333164, 0713167356, 0060546335,
|
||||
0355173035, 0617201036, 0157465571, 0767360553,
|
||||
0023127030, 0431343777, 0747317317, 0045706125,
|
||||
0002744276, 0060036467, 0217744147, 0603340174,//57:60
|
||||
0326616775, 0063240065, 0111460621, //61:63
|
||||
0604055104, 0157065232, 0013305707, 0603552017,//159:162
|
||||
0230461355, 0603653437, 0652346475, 0743107103,
|
||||
0401521277, 0167335110, 0014013575, 0362051132,
|
||||
0617753265, 0216363634, 0755561123, 0365304033,
|
||||
0625025543, 0054420334, 0415473671, 0662364360,
|
||||
0373446602, 0417564100, 0000526452, 0226631300,
|
||||
0113752074, 0706134401, 0041352546, 0664630154,
|
||||
0276524255, 0714720530, 0714051771, 0044526647,
|
||||
0207164322, 0262120161, 0204244652, 0202133131,
|
||||
0714351204, 0657127260, 0130567507, 0670517677,
|
||||
0607275514, 0045413633, 0212645405, 0613700455,
|
||||
0706202440, 0705056276, 0020373522, 0746013617,
|
||||
0132720621, 0434015513, 0566721727, 0140633660};
|
||||
{0742417664, 0756014035,0002747144,0066265724, // 1:4
|
||||
0601403471, 0703232733, 0124510070, 0617316361, // 5:8
|
||||
0047541621, 0733031046, 0713512145, 0024437606,
|
||||
0021264003, 0230655351, 0001314400, 0222021506,
|
||||
0540264026, 0205521705, 0064022144, 0120161274,
|
||||
0044023533, 0724744327, 0045743577, 0741201660,
|
||||
0700274134, 0010247261, 0713433445, 0737324162,
|
||||
0311627434, 0710452007, 0722462133, 0050172213,
|
||||
0500653703, 0755077436, 0136717361, 0756675453,
|
||||
0435506112, 0771353753, 0226107701, 0022025110,
|
||||
0402466344, 0752566114, 0702011164, 0041216771,
|
||||
0047457275, 0266333164, 0713167356, 0060546335,
|
||||
0355173035, 0617201036, 0157465571, 0767360553,
|
||||
0023127030, 0431343777, 0747317317, 0045706125,
|
||||
0002744276, 0060036467, 0217744147, 0603340174,//57:60
|
||||
0326616775, 0063240065, 0111460621, //61:63
|
||||
0604055104, 0157065232, 0013305707, 0603552017,//159:162
|
||||
0230461355, 0603653437, 0652346475, 0743107103,
|
||||
0401521277, 0167335110, 0014013575, 0362051132,
|
||||
0617753265, 0216363634, 0755561123, 0365304033,
|
||||
0625025543, 0054420334, 0415473671, 0662364360,
|
||||
0373446602, 0417564100, 0000526452, 0226631300,
|
||||
0113752074, 0706134401, 0041352546, 0664630154,
|
||||
0276524255, 0714720530, 0714051771, 0044526647,
|
||||
0207164322, 0262120161, 0204244652, 0202133131,
|
||||
0714351204, 0657127260, 0130567507, 0670517677,
|
||||
0607275514, 0045413633, 0212645405, 0613700455,
|
||||
0706202440, 0705056276, 0020373522, 0746013617,
|
||||
0132720621, 0434015513, 0566721727, 0140633660};
|
||||
|
||||
// CNAV GPS NAVIGATION MESSAGE STRUCTURE
|
||||
// NAVIGATION MESSAGE FIELDS POSITIONS (from IS-GPS-200E Appendix III)
|
||||
@@ -99,7 +99,7 @@ const int32_t GPS_L2C_M_INIT_REG[115] =
|
||||
const int GPS_L2_CNAV_DATA_PAGE_BITS = 300; //!< GPS L2 CNAV page length, including preamble and CRC [bits]
|
||||
const int GPS_L2_SYMBOLS_PER_BIT = 2;
|
||||
const int GPS_L2_SAMPLES_PER_SYMBOL = 1;
|
||||
const int GPS_L2_CNAV_DATA_PAGE_DURATION_S=12;
|
||||
const int GPS_L2_CNAV_DATA_PAGE_DURATION_S = 12;
|
||||
const int GPS_L2_CNAV_DATA_PAGE_BITS_EXTENDED_BYTES = 304; //!< GPS L2 CNAV page length, including preamble and CRC [bits]
|
||||
|
||||
// common to all messages
|
||||
|
||||
@@ -36,8 +36,8 @@ Gps_CNAV_Ephemeris::Gps_CNAV_Ephemeris()
|
||||
{
|
||||
i_satellite_PRN = 0;
|
||||
|
||||
d_Toe1=-1;
|
||||
d_Toe2=-1;
|
||||
d_Toe1 = -1;
|
||||
d_Toe2 = -1;
|
||||
|
||||
d_TOW = 0;
|
||||
d_Crs = 0;
|
||||
|
||||
@@ -38,9 +38,9 @@
|
||||
|
||||
void Gps_CNAV_Navigation_Message::reset()
|
||||
{
|
||||
b_flag_ephemeris_1=false;
|
||||
b_flag_ephemeris_2=false;
|
||||
b_flag_iono_valid=false;
|
||||
b_flag_ephemeris_1 = false;
|
||||
b_flag_ephemeris_2 = false;
|
||||
b_flag_iono_valid = false;
|
||||
|
||||
// satellite positions
|
||||
d_satpos_X = 0;
|
||||
@@ -57,6 +57,7 @@ void Gps_CNAV_Navigation_Message::reset()
|
||||
d_satvel_Z = 0;
|
||||
}
|
||||
|
||||
|
||||
Gps_CNAV_Navigation_Message::Gps_CNAV_Navigation_Message()
|
||||
{
|
||||
reset();
|
||||
@@ -68,6 +69,7 @@ Gps_CNAV_Navigation_Message::Gps_CNAV_Navigation_Message()
|
||||
b_flag_iono_valid = false;
|
||||
}
|
||||
|
||||
|
||||
void Gps_CNAV_Navigation_Message::print_gps_word_bytes(unsigned int GPS_word)
|
||||
{
|
||||
std::cout << " Word =";
|
||||
@@ -75,6 +77,7 @@ void Gps_CNAV_Navigation_Message::print_gps_word_bytes(unsigned int GPS_word)
|
||||
std::cout << std::endl;
|
||||
}
|
||||
|
||||
|
||||
bool Gps_CNAV_Navigation_Message::read_navigation_bool(std::bitset<GPS_L2_CNAV_DATA_PAGE_BITS> bits, const std::vector<std::pair<int,int>> parameter)
|
||||
{
|
||||
bool value;
|
||||
@@ -172,31 +175,21 @@ signed long int Gps_CNAV_Navigation_Message::read_navigation_signed(std::bitset<
|
||||
|
||||
void Gps_CNAV_Navigation_Message::decode_page(std::vector<int> data)
|
||||
{
|
||||
std::bitset<GPS_L2_CNAV_DATA_PAGE_BITS> data_bits;
|
||||
std::bitset<GPS_L2_CNAV_DATA_PAGE_BITS> data_bits;
|
||||
|
||||
try {
|
||||
try
|
||||
{
|
||||
for(int i = 0; i < GPS_L2_CNAV_DATA_PAGE_BITS; i++)
|
||||
{
|
||||
data_bits[i] = static_cast<uint8_t>(data[GPS_L2_CNAV_DATA_PAGE_BITS - i - 1]);
|
||||
}
|
||||
|
||||
// std::cout<<"data length="<<data.size()<<std::endl;
|
||||
// std::cout<<"data=";
|
||||
// for (int p=0;p<data.size();p++)
|
||||
// {
|
||||
// std::cout<<data.at(p)<<",";
|
||||
// }
|
||||
// std::cout<<std::endl;
|
||||
|
||||
for(int i=0;i<GPS_L2_CNAV_DATA_PAGE_BITS;i++)
|
||||
{
|
||||
//std::cout<<"byte["<<i<<"]="<<(int)data[i]<<std::endl;
|
||||
data_bits[i]=(uint8_t)data[GPS_L2_CNAV_DATA_PAGE_BITS-i-1];
|
||||
|
||||
}
|
||||
//std::cout<<"bitset="<<data_bits<<std::endl;
|
||||
// try {
|
||||
// data_bits=std::bitset<GPS_L2_CNAV_DATA_PAGE_BITS>(data);
|
||||
} catch(std::exception &e) {
|
||||
std::cout << "Exception converting to bitset " << e.what() << std::endl;
|
||||
return;
|
||||
}
|
||||
}
|
||||
catch(std::exception &e)
|
||||
{
|
||||
std::cout << "Exception converting to bitset " << e.what() << std::endl;
|
||||
return;
|
||||
}
|
||||
|
||||
int PRN;
|
||||
int page_type;
|
||||
@@ -205,138 +198,143 @@ void Gps_CNAV_Navigation_Message::decode_page(std::vector<int> data)
|
||||
|
||||
// common to all messages
|
||||
PRN = static_cast<int>(read_navigation_unsigned(data_bits, CNAV_PRN));
|
||||
ephemeris_record.i_satellite_PRN=PRN;
|
||||
ephemeris_record.i_satellite_PRN = PRN;
|
||||
|
||||
d_TOW = static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOW));
|
||||
d_TOW=d_TOW*CNAV_TOW_LSB;
|
||||
ephemeris_record.d_TOW=d_TOW;
|
||||
d_TOW = d_TOW * CNAV_TOW_LSB;
|
||||
ephemeris_record.d_TOW = d_TOW;
|
||||
|
||||
alert_flag= static_cast<bool>(read_navigation_bool(data_bits, CNAV_ALERT_FLAG));
|
||||
ephemeris_record.b_alert_flag=alert_flag;
|
||||
alert_flag = static_cast<bool>(read_navigation_bool(data_bits, CNAV_ALERT_FLAG));
|
||||
ephemeris_record.b_alert_flag = alert_flag;
|
||||
|
||||
page_type = static_cast<int>(read_navigation_unsigned(data_bits, CNAV_MSG_TYPE));
|
||||
|
||||
std::cout<<"PRN= "<<PRN<<" TOW="<<d_TOW<<" alert_flag= "<<alert_flag<<" page_type= "<<page_type<<std::endl;
|
||||
std::cout << "PRN=" << PRN << " TOW=" << d_TOW << " alert_flag=" << alert_flag << " page_type= " << page_type << std::endl;
|
||||
switch(page_type)
|
||||
{
|
||||
case 10: // Ephemeris 1/2
|
||||
ephemeris_record.i_GPS_week=static_cast<int>(read_navigation_unsigned(data_bits, CNAV_WN));
|
||||
ephemeris_record.i_signal_health=static_cast<int>(read_navigation_unsigned(data_bits, CNAV_HEALTH));
|
||||
ephemeris_record.d_Top=static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOP1));
|
||||
ephemeris_record.d_Top=ephemeris_record.d_Top*CNAV_TOP1_LSB;
|
||||
ephemeris_record.d_URA0=static_cast<double>(read_navigation_signed(data_bits, CNAV_URA));
|
||||
ephemeris_record.d_Toe1=static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOE1));
|
||||
ephemeris_record.d_Toe1=ephemeris_record.d_Toe1*CNAV_TOE1_LSB;
|
||||
ephemeris_record.d_DELTA_A=static_cast<double>(read_navigation_signed(data_bits, CNAV_DELTA_A));
|
||||
ephemeris_record.d_DELTA_A=ephemeris_record.d_DELTA_A*CNAV_DELTA_A_LSB;
|
||||
ephemeris_record.d_A_DOT=static_cast<double>(read_navigation_signed(data_bits, CNAV_A_DOT));
|
||||
ephemeris_record.d_A_DOT=ephemeris_record.d_A_DOT*CNAV_A_DOT_LSB;
|
||||
ephemeris_record.d_Delta_n=static_cast<double>(read_navigation_signed(data_bits, CNAV_DELTA_N0));
|
||||
ephemeris_record.d_Delta_n=ephemeris_record.d_Delta_n*CNAV_DELTA_N0_LSB;
|
||||
ephemeris_record.d_DELTA_DOT_N=static_cast<double>(read_navigation_signed(data_bits, CNAV_DELTA_N0_DOT));
|
||||
ephemeris_record.d_DELTA_DOT_N=ephemeris_record.d_DELTA_DOT_N*CNAV_DELTA_N0_DOT_LSB;
|
||||
ephemeris_record.d_M_0=static_cast<double>(read_navigation_signed(data_bits, CNAV_M0));
|
||||
ephemeris_record.d_M_0=ephemeris_record.d_M_0*CNAV_M0_LSB;
|
||||
ephemeris_record.d_e_eccentricity=static_cast<double>(read_navigation_signed(data_bits, CNAV_E_ECCENTRICITY));
|
||||
ephemeris_record.d_e_eccentricity=ephemeris_record.d_e_eccentricity*CNAV_E_ECCENTRICITY_LSB;
|
||||
ephemeris_record.d_OMEGA=static_cast<double>(read_navigation_signed(data_bits, CNAV_OMEGA));
|
||||
ephemeris_record.d_OMEGA=ephemeris_record.d_OMEGA*CNAV_OMEGA_LSB;
|
||||
ephemeris_record.i_GPS_week = static_cast<int>(read_navigation_unsigned(data_bits, CNAV_WN));
|
||||
ephemeris_record.i_signal_health = static_cast<int>(read_navigation_unsigned(data_bits, CNAV_HEALTH));
|
||||
ephemeris_record.d_Top = static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOP1));
|
||||
ephemeris_record.d_Top = ephemeris_record.d_Top * CNAV_TOP1_LSB;
|
||||
ephemeris_record.d_URA0 = static_cast<double>(read_navigation_signed(data_bits, CNAV_URA));
|
||||
ephemeris_record.d_Toe1 = static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOE1));
|
||||
ephemeris_record.d_Toe1 = ephemeris_record.d_Toe1 * CNAV_TOE1_LSB;
|
||||
ephemeris_record.d_DELTA_A = static_cast<double>(read_navigation_signed(data_bits, CNAV_DELTA_A));
|
||||
ephemeris_record.d_DELTA_A = ephemeris_record.d_DELTA_A * CNAV_DELTA_A_LSB;
|
||||
ephemeris_record.d_A_DOT = static_cast<double>(read_navigation_signed(data_bits, CNAV_A_DOT));
|
||||
ephemeris_record.d_A_DOT = ephemeris_record.d_A_DOT * CNAV_A_DOT_LSB;
|
||||
ephemeris_record.d_Delta_n = static_cast<double>(read_navigation_signed(data_bits, CNAV_DELTA_N0));
|
||||
ephemeris_record.d_Delta_n = ephemeris_record.d_Delta_n * CNAV_DELTA_N0_LSB;
|
||||
ephemeris_record.d_DELTA_DOT_N = static_cast<double>(read_navigation_signed(data_bits, CNAV_DELTA_N0_DOT));
|
||||
ephemeris_record.d_DELTA_DOT_N = ephemeris_record.d_DELTA_DOT_N * CNAV_DELTA_N0_DOT_LSB;
|
||||
ephemeris_record.d_M_0 = static_cast<double>(read_navigation_signed(data_bits, CNAV_M0));
|
||||
ephemeris_record.d_M_0 = ephemeris_record.d_M_0 * CNAV_M0_LSB;
|
||||
ephemeris_record.d_e_eccentricity = static_cast<double>(read_navigation_signed(data_bits, CNAV_E_ECCENTRICITY));
|
||||
ephemeris_record.d_e_eccentricity = ephemeris_record.d_e_eccentricity * CNAV_E_ECCENTRICITY_LSB;
|
||||
ephemeris_record.d_OMEGA = static_cast<double>(read_navigation_signed(data_bits, CNAV_OMEGA));
|
||||
ephemeris_record.d_OMEGA = ephemeris_record.d_OMEGA * CNAV_OMEGA_LSB;
|
||||
|
||||
ephemeris_record.b_integrity_status_flag=static_cast<bool>(read_navigation_bool(data_bits, CNAV_INTEGRITY_FLAG));
|
||||
ephemeris_record.b_l2c_phasing_flag=static_cast<bool>(read_navigation_bool(data_bits, CNAV_L2_PHASING_FLAG));
|
||||
ephemeris_record.b_integrity_status_flag = static_cast<bool>(read_navigation_bool(data_bits, CNAV_INTEGRITY_FLAG));
|
||||
ephemeris_record.b_l2c_phasing_flag = static_cast<bool>(read_navigation_bool(data_bits, CNAV_L2_PHASING_FLAG));
|
||||
|
||||
b_flag_ephemeris_1=true;
|
||||
b_flag_ephemeris_1 = true;
|
||||
break;
|
||||
case 11: // Ephemeris 2/2
|
||||
ephemeris_record.d_Toe2=static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOE2));
|
||||
ephemeris_record.d_Toe2=ephemeris_record.d_Toe2*CNAV_TOE2_LSB;
|
||||
ephemeris_record.d_OMEGA0=static_cast<double>(read_navigation_signed(data_bits, CNAV_OMEGA0));
|
||||
ephemeris_record.d_OMEGA0=ephemeris_record.d_OMEGA0*CNAV_OMEGA0_LSB;
|
||||
ephemeris_record.d_DELTA_OMEGA_DOT=static_cast<double>(read_navigation_signed(data_bits, CNAV_DELTA_OMEGA_DOT));
|
||||
ephemeris_record.d_DELTA_OMEGA_DOT=ephemeris_record.d_DELTA_OMEGA_DOT*CNAV_DELTA_OMEGA_DOT_LSB;
|
||||
ephemeris_record.d_i_0=static_cast<double>(read_navigation_signed(data_bits, CNAV_I0));
|
||||
ephemeris_record.d_i_0=ephemeris_record.d_i_0*CNAV_I0_LSB;
|
||||
ephemeris_record.d_IDOT=static_cast<double>(read_navigation_signed(data_bits, CNAV_I0_DOT));
|
||||
ephemeris_record.d_IDOT=ephemeris_record.d_IDOT*CNAV_I0_DOT_LSB;
|
||||
ephemeris_record.d_Cis=static_cast<double>(read_navigation_signed(data_bits, CNAV_CIS));
|
||||
ephemeris_record.d_Cis=ephemeris_record.d_Cis*CNAV_CIS_LSB;
|
||||
ephemeris_record.d_Cic=static_cast<double>(read_navigation_signed(data_bits, CNAV_CIC));
|
||||
ephemeris_record.d_Cic=ephemeris_record.d_Cic*CNAV_CIC_LSB;
|
||||
ephemeris_record.d_Crs=static_cast<double>(read_navigation_signed(data_bits, CNAV_CRS));
|
||||
ephemeris_record.d_Crs=ephemeris_record.d_Crs*CNAV_CRS_LSB;
|
||||
ephemeris_record.d_Crc=static_cast<double>(read_navigation_signed(data_bits, CNAV_CRC));
|
||||
ephemeris_record.d_Cic=ephemeris_record.d_Cic*CNAV_CRC_LSB;
|
||||
ephemeris_record.d_Cus=static_cast<double>(read_navigation_signed(data_bits, CNAV_CUS));
|
||||
ephemeris_record.d_Cus=ephemeris_record.d_Cus*CNAV_CUS_LSB;
|
||||
ephemeris_record.d_Cuc=static_cast<double>(read_navigation_signed(data_bits, CNAV_CUC));
|
||||
ephemeris_record.d_Cuc=ephemeris_record.d_Cuc*CNAV_CUS_LSB;
|
||||
b_flag_ephemeris_2=true;
|
||||
ephemeris_record.d_Toe2 = static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOE2));
|
||||
ephemeris_record.d_Toe2 = ephemeris_record.d_Toe2 * CNAV_TOE2_LSB;
|
||||
ephemeris_record.d_OMEGA0 = static_cast<double>(read_navigation_signed(data_bits, CNAV_OMEGA0));
|
||||
ephemeris_record.d_OMEGA0 = ephemeris_record.d_OMEGA0 * CNAV_OMEGA0_LSB;
|
||||
ephemeris_record.d_DELTA_OMEGA_DOT = static_cast<double>(read_navigation_signed(data_bits, CNAV_DELTA_OMEGA_DOT));
|
||||
ephemeris_record.d_DELTA_OMEGA_DOT = ephemeris_record.d_DELTA_OMEGA_DOT * CNAV_DELTA_OMEGA_DOT_LSB;
|
||||
ephemeris_record.d_i_0 = static_cast<double>(read_navigation_signed(data_bits, CNAV_I0));
|
||||
ephemeris_record.d_i_0 = ephemeris_record.d_i_0 * CNAV_I0_LSB;
|
||||
ephemeris_record.d_IDOT = static_cast<double>(read_navigation_signed(data_bits, CNAV_I0_DOT));
|
||||
ephemeris_record.d_IDOT = ephemeris_record.d_IDOT * CNAV_I0_DOT_LSB;
|
||||
ephemeris_record.d_Cis = static_cast<double>(read_navigation_signed(data_bits, CNAV_CIS));
|
||||
ephemeris_record.d_Cis = ephemeris_record.d_Cis * CNAV_CIS_LSB;
|
||||
ephemeris_record.d_Cic = static_cast<double>(read_navigation_signed(data_bits, CNAV_CIC));
|
||||
ephemeris_record.d_Cic = ephemeris_record.d_Cic * CNAV_CIC_LSB;
|
||||
ephemeris_record.d_Crs = static_cast<double>(read_navigation_signed(data_bits, CNAV_CRS));
|
||||
ephemeris_record.d_Crs = ephemeris_record.d_Crs * CNAV_CRS_LSB;
|
||||
ephemeris_record.d_Crc = static_cast<double>(read_navigation_signed(data_bits, CNAV_CRC));
|
||||
ephemeris_record.d_Cic = ephemeris_record.d_Cic * CNAV_CRC_LSB;
|
||||
ephemeris_record.d_Cus = static_cast<double>(read_navigation_signed(data_bits, CNAV_CUS));
|
||||
ephemeris_record.d_Cus = ephemeris_record.d_Cus * CNAV_CUS_LSB;
|
||||
ephemeris_record.d_Cuc = static_cast<double>(read_navigation_signed(data_bits, CNAV_CUC));
|
||||
ephemeris_record.d_Cuc = ephemeris_record.d_Cuc * CNAV_CUS_LSB;
|
||||
b_flag_ephemeris_2 = true;
|
||||
break;
|
||||
case 30: // (CLOCK, IONO, GRUP DELAY)
|
||||
//clock
|
||||
ephemeris_record.d_Toc=static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOC));
|
||||
ephemeris_record.d_Toc=ephemeris_record.d_Toc*CNAV_TOC_LSB;
|
||||
ephemeris_record.d_Toc = static_cast<double>(read_navigation_unsigned(data_bits, CNAV_TOC));
|
||||
ephemeris_record.d_Toc = ephemeris_record.d_Toc * CNAV_TOC_LSB;
|
||||
ephemeris_record.d_URA0 = static_cast<double>(read_navigation_signed(data_bits, CNAV_URA_NED0));
|
||||
ephemeris_record.d_URA1 = static_cast<double>(read_navigation_unsigned(data_bits, CNAV_URA_NED1));
|
||||
ephemeris_record.d_URA2 = static_cast<double>(read_navigation_unsigned(data_bits, CNAV_URA_NED2));
|
||||
ephemeris_record.d_A_f0=static_cast<double>(read_navigation_signed(data_bits, CNAV_AF0));
|
||||
ephemeris_record.d_A_f0=ephemeris_record.d_A_f0*CNAV_AF0_LSB;
|
||||
ephemeris_record.d_A_f1=static_cast<double>(read_navigation_signed(data_bits, CNAV_AF1));
|
||||
ephemeris_record.d_A_f1=ephemeris_record.d_A_f1*CNAV_AF1_LSB;
|
||||
ephemeris_record.d_A_f2=static_cast<double>(read_navigation_signed(data_bits, CNAV_AF2));
|
||||
ephemeris_record.d_A_f2=ephemeris_record.d_A_f2*CNAV_AF2_LSB;
|
||||
ephemeris_record.d_A_f0 = static_cast<double>(read_navigation_signed(data_bits, CNAV_AF0));
|
||||
ephemeris_record.d_A_f0 = ephemeris_record.d_A_f0 * CNAV_AF0_LSB;
|
||||
ephemeris_record.d_A_f1 = static_cast<double>(read_navigation_signed(data_bits, CNAV_AF1));
|
||||
ephemeris_record.d_A_f1 = ephemeris_record.d_A_f1 * CNAV_AF1_LSB;
|
||||
ephemeris_record.d_A_f2 = static_cast<double>(read_navigation_signed(data_bits, CNAV_AF2));
|
||||
ephemeris_record.d_A_f2 = ephemeris_record.d_A_f2 * CNAV_AF2_LSB;
|
||||
//group delays
|
||||
ephemeris_record.d_TGD=static_cast<double>(read_navigation_signed(data_bits, CNAV_TGD));
|
||||
ephemeris_record.d_TGD=ephemeris_record.d_TGD*CNAV_TGD_LSB;
|
||||
ephemeris_record.d_ISCL1=static_cast<double>(read_navigation_signed(data_bits, CNAV_ISCL1));
|
||||
ephemeris_record.d_ISCL1=ephemeris_record.d_ISCL1*CNAV_ISCL1_LSB;
|
||||
ephemeris_record.d_ISCL2=static_cast<double>(read_navigation_signed(data_bits, CNAV_ISCL2));
|
||||
ephemeris_record.d_ISCL2=ephemeris_record.d_ISCL2*CNAV_ISCL2_LSB;
|
||||
ephemeris_record.d_ISCL5I=static_cast<double>(read_navigation_signed(data_bits, CNAV_ISCL5I));
|
||||
ephemeris_record.d_ISCL5I=ephemeris_record.d_ISCL5I*CNAV_ISCL5I_LSB;
|
||||
ephemeris_record.d_ISCL5Q=static_cast<double>(read_navigation_signed(data_bits, CNAV_ISCL5Q));
|
||||
ephemeris_record.d_ISCL5Q=ephemeris_record.d_ISCL5Q*CNAV_ISCL5Q_LSB;
|
||||
ephemeris_record.d_TGD = static_cast<double>(read_navigation_signed(data_bits, CNAV_TGD));
|
||||
ephemeris_record.d_TGD = ephemeris_record.d_TGD * CNAV_TGD_LSB;
|
||||
ephemeris_record.d_ISCL1 = static_cast<double>(read_navigation_signed(data_bits, CNAV_ISCL1));
|
||||
ephemeris_record.d_ISCL1 = ephemeris_record.d_ISCL1 * CNAV_ISCL1_LSB;
|
||||
ephemeris_record.d_ISCL2 = static_cast<double>(read_navigation_signed(data_bits, CNAV_ISCL2));
|
||||
ephemeris_record.d_ISCL2 = ephemeris_record.d_ISCL2 * CNAV_ISCL2_LSB;
|
||||
ephemeris_record.d_ISCL5I = static_cast<double>(read_navigation_signed(data_bits, CNAV_ISCL5I));
|
||||
ephemeris_record.d_ISCL5I = ephemeris_record.d_ISCL5I * CNAV_ISCL5I_LSB;
|
||||
ephemeris_record.d_ISCL5Q = static_cast<double>(read_navigation_signed(data_bits, CNAV_ISCL5Q));
|
||||
ephemeris_record.d_ISCL5Q = ephemeris_record.d_ISCL5Q * CNAV_ISCL5Q_LSB;
|
||||
//iono
|
||||
iono_record.d_alpha0=static_cast<double>(read_navigation_signed(data_bits, CNAV_ALPHA0));
|
||||
iono_record.d_alpha0=iono_record.d_alpha0*CNAV_ALPHA0_LSB;
|
||||
iono_record.d_alpha1=static_cast<double>(read_navigation_signed(data_bits, CNAV_ALPHA1));
|
||||
iono_record.d_alpha1=iono_record.d_alpha1*CNAV_ALPHA1_LSB;
|
||||
iono_record.d_alpha2=static_cast<double>(read_navigation_signed(data_bits, CNAV_ALPHA2));
|
||||
iono_record.d_alpha2=iono_record.d_alpha2*CNAV_ALPHA2_LSB;
|
||||
iono_record.d_alpha3=static_cast<double>(read_navigation_signed(data_bits, CNAV_ALPHA3));
|
||||
iono_record.d_alpha3=iono_record.d_alpha3*CNAV_ALPHA3_LSB;
|
||||
iono_record.d_beta0=static_cast<double>(read_navigation_signed(data_bits, CNAV_BETA0));
|
||||
iono_record.d_beta0=iono_record.d_beta0*CNAV_BETA0_LSB;
|
||||
iono_record.d_beta1=static_cast<double>(read_navigation_signed(data_bits, CNAV_BETA1));
|
||||
iono_record.d_beta1=iono_record.d_beta1*CNAV_BETA1_LSB;
|
||||
iono_record.d_beta2=static_cast<double>(read_navigation_signed(data_bits, CNAV_BETA2));
|
||||
iono_record.d_beta2=iono_record.d_beta2*CNAV_BETA2_LSB;
|
||||
iono_record.d_beta3=static_cast<double>(read_navigation_signed(data_bits, CNAV_BETA3));
|
||||
iono_record.d_beta3=iono_record.d_beta3*CNAV_BETA3_LSB;
|
||||
b_flag_iono_valid=true;
|
||||
iono_record.d_alpha0 = static_cast<double>(read_navigation_signed(data_bits, CNAV_ALPHA0));
|
||||
iono_record.d_alpha0 = iono_record.d_alpha0 * CNAV_ALPHA0_LSB;
|
||||
iono_record.d_alpha1 = static_cast<double>(read_navigation_signed(data_bits, CNAV_ALPHA1));
|
||||
iono_record.d_alpha1 = iono_record.d_alpha1 * CNAV_ALPHA1_LSB;
|
||||
iono_record.d_alpha2 = static_cast<double>(read_navigation_signed(data_bits, CNAV_ALPHA2));
|
||||
iono_record.d_alpha2 = iono_record.d_alpha2 * CNAV_ALPHA2_LSB;
|
||||
iono_record.d_alpha3 = static_cast<double>(read_navigation_signed(data_bits, CNAV_ALPHA3));
|
||||
iono_record.d_alpha3 = iono_record.d_alpha3 * CNAV_ALPHA3_LSB;
|
||||
iono_record.d_beta0 = static_cast<double>(read_navigation_signed(data_bits, CNAV_BETA0));
|
||||
iono_record.d_beta0 = iono_record.d_beta0 * CNAV_BETA0_LSB;
|
||||
iono_record.d_beta1 = static_cast<double>(read_navigation_signed(data_bits, CNAV_BETA1));
|
||||
iono_record.d_beta1 = iono_record.d_beta1 * CNAV_BETA1_LSB;
|
||||
iono_record.d_beta2 = static_cast<double>(read_navigation_signed(data_bits, CNAV_BETA2));
|
||||
iono_record.d_beta2 = iono_record.d_beta2 * CNAV_BETA2_LSB;
|
||||
iono_record.d_beta3 = static_cast<double>(read_navigation_signed(data_bits, CNAV_BETA3));
|
||||
iono_record.d_beta3 = iono_record.d_beta3 * CNAV_BETA3_LSB;
|
||||
b_flag_iono_valid = true;
|
||||
break;
|
||||
default:
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
bool Gps_CNAV_Navigation_Message::have_new_ephemeris() //Check if we have a new ephemeris stored in the galileo navigation class
|
||||
{
|
||||
if (b_flag_ephemeris_1==true and b_flag_ephemeris_2==true)
|
||||
{
|
||||
if (ephemeris_record.d_Toe1 == ephemeris_record.d_Toe2)
|
||||
if (b_flag_ephemeris_1 == true and b_flag_ephemeris_2 == true)
|
||||
{
|
||||
if (ephemeris_record.d_Toe1 == ephemeris_record.d_Toe2)
|
||||
{
|
||||
//if all ephemeris pages have the same TOE, then they belong to the same block
|
||||
// std::cout << "Ephemeris (1, 2) have been received and belong to the same batch" << std::endl;
|
||||
b_flag_ephemeris_1 = false;// clear the flag
|
||||
b_flag_ephemeris_2 = false;// clear the flag
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
//if all ephemeris pages have the same TOE, then they belong to the same block
|
||||
// std::cout << "Ephemeris (1, 2) have been received and belong to the same batch" << std::endl;
|
||||
b_flag_ephemeris_1 = false;// clear the flag
|
||||
b_flag_ephemeris_2 = false;// clear the flag
|
||||
return true;
|
||||
}else{
|
||||
return false;
|
||||
}
|
||||
}else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -348,16 +346,18 @@ Gps_CNAV_Ephemeris Gps_CNAV_Navigation_Message::get_ephemeris()
|
||||
|
||||
bool Gps_CNAV_Navigation_Message::have_new_iono() //Check if we have a new iono data stored in the galileo navigation class
|
||||
{
|
||||
if (b_flag_iono_valid==true)
|
||||
{
|
||||
b_flag_iono_valid = false;// clear the flag
|
||||
return true;
|
||||
}else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
if (b_flag_iono_valid == true)
|
||||
{
|
||||
b_flag_iono_valid = false;// clear the flag
|
||||
return true;
|
||||
}
|
||||
else
|
||||
{
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Gps_CNAV_Iono Gps_CNAV_Navigation_Message::get_iono()
|
||||
{
|
||||
return iono_record;
|
||||
|
||||
@@ -1,6 +1,6 @@
|
||||
/*!
|
||||
* \file Gps_CNAV_Navigation_Message.h
|
||||
* \brief Interface of a GPS NAV Data message decoder
|
||||
* \file gps_cnav_navigation_message.h
|
||||
* \brief Interface of a GPS CNAV Data message decoder
|
||||
* \author Javier Arribas, 2015. jarribas(at)cttc.es
|
||||
*
|
||||
* -------------------------------------------------------------------------
|
||||
@@ -32,16 +32,16 @@
|
||||
#ifndef GNSS_SDR_Gps_CNAV_Navigation_Message_H_
|
||||
#define GNSS_SDR_Gps_CNAV_Navigation_Message_H_
|
||||
|
||||
#include "stdint.h"
|
||||
#include <algorithm>
|
||||
#include <bitset>
|
||||
#include "stdint.h"
|
||||
#include <cmath>
|
||||
#include <iostream>
|
||||
#include <map>
|
||||
#include <string>
|
||||
#include <vector>
|
||||
#include <utility>
|
||||
#include "boost/assign.hpp"
|
||||
#include <boost/assign.hpp>
|
||||
#include "GPS_L2C.h"
|
||||
#include "gps_cnav_ephemeris.h"
|
||||
#include "gps_cnav_iono.h"
|
||||
@@ -69,10 +69,9 @@ private:
|
||||
Gps_CNAV_Utc_Model utc_model_record;
|
||||
|
||||
public:
|
||||
|
||||
double d_TOW;
|
||||
bool b_flag_ephemeris_1;
|
||||
bool b_flag_ephemeris_2;
|
||||
bool b_flag_ephemeris_1;
|
||||
bool b_flag_ephemeris_2;
|
||||
bool b_flag_iono_valid; //!< If set, it indicates that the ionospheric parameters are filled (page 18 has arrived and decoded)
|
||||
|
||||
std::map<int,std::string> satelliteBlock; //!< Map that stores to which block the PRN belongs http://www.navcen.uscg.gov/?Do=constellationStatus
|
||||
|
||||
Reference in New Issue
Block a user