1
0
mirror of https://github.com/gnss-sdr/gnss-sdr synced 2024-06-27 23:43:16 +00:00

Improve data types for almanac parameters

This commit is contained in:
Carles Fernandez 2018-11-07 22:25:09 +01:00
parent ae722fd354
commit d77448cd76
No known key found for this signature in database
GPG Key ID: 4C583C52B0C3877D
14 changed files with 108 additions and 109 deletions

View File

@ -15,9 +15,9 @@
<xs:complexType mixed="true">
<xs:sequence>
<xs:element type="xs:byte" name="i_satellite_PRN"/>
<xs:element type="xs:float" name="d_Toa"/>
<xs:element type="xs:float" name="d_WNa"/>
<xs:element type="xs:float" name="d_IODa"/>
<xs:element type="xs:byte" name="i_Toa"/>
<xs:element type="xs:byte" name="i_WNa"/>
<xs:element type="xs:byte" name="i_IODa"/>
<xs:element type="xs:float" name="d_Delta_i"/>
<xs:element type="xs:float" name="d_M_0"/>
<xs:element type="xs:float" name="d_e_eccentricity"/>
@ -27,9 +27,9 @@
<xs:element type="xs:float" name="d_OMEGA_DOT"/>
<xs:element type="xs:float" name="d_A_f0"/>
<xs:element type="xs:float" name="d_A_f1"/>
<xs:element type="xs:float" name="E5b_HS"/>
<xs:element type="xs:float" name="E1B_HS"/>
<xs:element type="xs:float" name="E5a_HS"/>
<xs:element type="xs:byte" name="E5b_HS"/>
<xs:element type="xs:byte" name="E1B_HS"/>
<xs:element type="xs:byte" name="E5a_HS"/>
</xs:sequence>
<xs:attribute type="xs:byte" name="class_id" use="optional"/>
<xs:attribute type="xs:byte" name="tracking_level" use="optional"/>

View File

@ -16,7 +16,7 @@
<xs:sequence>
<xs:element type="xs:byte" name="i_satellite_PRN"/>
<xs:element type="xs:float" name="d_Delta_i"/>
<xs:element type="xs:float" name="d_Toa"/>
<xs:element type="xs:byte" name="i_Toa"/>
<xs:element type="xs:byte" name="i_WNa"/>
<xs:element type="xs:float" name="d_M_0"/>
<xs:element type="xs:float" name="d_e_eccentricity"/>

View File

@ -302,7 +302,7 @@ alm_t alm_to_rtklib(const Gps_Almanac& gps_alm)
rtklib_alm.svh = gps_alm.i_SV_health;
rtklib_alm.svconf = gps_alm.i_AS_status;
rtklib_alm.week = gps_alm.i_WNa;
rtklib_alm.toa = gpst2time(gps_alm.i_WNa, gps_alm.d_Toa);
rtklib_alm.toa = gpst2time(gps_alm.i_WNa, gps_alm.i_Toa);
rtklib_alm.A = gps_alm.d_sqrt_A * gps_alm.d_sqrt_A;
rtklib_alm.e = gps_alm.d_e_eccentricity;
rtklib_alm.i0 = gps_alm.d_Delta_i + 0.3;
@ -312,7 +312,7 @@ alm_t alm_to_rtklib(const Gps_Almanac& gps_alm)
rtklib_alm.M0 = gps_alm.d_M_0;
rtklib_alm.f0 = gps_alm.d_A_f0;
rtklib_alm.f1 = gps_alm.d_A_f1;
rtklib_alm.toas = gps_alm.d_Toa;
rtklib_alm.toas = gps_alm.i_Toa;
return rtklib_alm;
@ -326,8 +326,8 @@ alm_t alm_to_rtklib(const Galileo_Almanac& gal_alm)
rtklib_alm.sat = gal_alm.i_satellite_PRN;
rtklib_alm.svh = gal_alm.E1B_HS;
rtklib_alm.svconf = gal_alm.E1B_HS;
rtklib_alm.week = gal_alm.d_WNa;
rtklib_alm.toa = gpst2time(gal_alm.d_WNa, gal_alm.d_Toa);
rtklib_alm.week = gal_alm.i_WNa;
rtklib_alm.toa = gpst2time(gal_alm.i_WNa, gal_alm.i_Toa);
rtklib_alm.A = 5440.588203494 + gal_alm.d_Delta_sqrt_A;
rtklib_alm.A = rtklib_alm.A * rtklib_alm.A;
rtklib_alm.e = gal_alm.d_e_eccentricity;
@ -338,7 +338,7 @@ alm_t alm_to_rtklib(const Galileo_Almanac& gal_alm)
rtklib_alm.M0 = gal_alm.d_M_0;
rtklib_alm.f0 = gal_alm.d_A_f0;
rtklib_alm.f1 = gal_alm.d_A_f1;
rtklib_alm.toas = gal_alm.d_Toa;
rtklib_alm.toas = gal_alm.i_Toa;
return rtklib_alm;

View File

@ -267,7 +267,7 @@ void gnss_sdr_supl_client::read_supl_data()
gps_almanac_iterator->second.d_OMEGA0 = static_cast<double>(a->OMEGA_0) * pow(2.0, -23);
gps_almanac_iterator->second.d_sqrt_A = static_cast<double>(a->A_sqrt) * pow(2.0, -11);
gps_almanac_iterator->second.d_OMEGA_DOT = static_cast<double>(a->OMEGA_dot) * pow(2.0, -38);
gps_almanac_iterator->second.d_Toa = static_cast<double>(a->toa) * pow(2.0, 12);
gps_almanac_iterator->second.i_Toa = static_cast<int32_t>(a->toa) * pow(2.0, 12);
gps_almanac_iterator->second.d_e_eccentricity = static_cast<double>(a->e) * pow(2.0, -21);
gps_almanac_iterator->second.d_M_0 = static_cast<double>(a->M0) * pow(2.0, -23);
}

View File

@ -34,9 +34,9 @@
Galileo_Almanac::Galileo_Almanac()
{
i_satellite_PRN = 0U;
d_Toa = 0.0;
d_WNa = 0.0;
d_IODa = 0.0;
i_Toa = 0;
i_WNa = 0;
i_IODa = 0;
d_Delta_i = 0.0;
d_M_0 = 0.0;
d_e_eccentricity = 0.0;
@ -46,7 +46,7 @@ Galileo_Almanac::Galileo_Almanac()
d_OMEGA_DOT = 0.0;
d_A_f0 = 0.0;
d_A_f1 = 0.0;
E5b_HS = 0.0;
E1B_HS = 0.0;
E5a_HS = 0.0;
E5b_HS = 0;
E1B_HS = 0;
E5a_HS = 0;
}

View File

@ -42,10 +42,10 @@ class Galileo_Almanac
{
public:
uint32_t i_satellite_PRN; //!< SV PRN NUMBER
double d_Toa;
double d_WNa;
double d_IODa;
double d_Delta_i;
int32_t i_Toa;
int32_t i_WNa;
int32_t i_IODa;
double d_Delta_i; //!< Inclination at reference time relative to i0 = 56º [semi-circles]
double d_M_0; //!< Mean Anomaly at Reference Time [semi-circles]
double d_e_eccentricity; //!< Eccentricity [dimensionless]
double d_Delta_sqrt_A; //!< Square Root of the Semi-Major Axis [sqrt(m)]
@ -54,9 +54,9 @@ public:
double d_OMEGA_DOT; //!< Rate of Right Ascension [semi-circles/s]
double d_A_f0; //!< Coefficient 0 of code phase offset model [s]
double d_A_f1; //!< Coefficient 1 of code phase offset model [s/s]
double E5b_HS;
double E1B_HS;
double E5a_HS;
int32_t E5b_HS;
int32_t E1B_HS;
int32_t E5a_HS;
/*!
* Default constructor
@ -71,9 +71,9 @@ public:
{
};
ar& BOOST_SERIALIZATION_NVP(i_satellite_PRN);
ar& BOOST_SERIALIZATION_NVP(d_Toa);
ar& BOOST_SERIALIZATION_NVP(d_WNa);
ar& BOOST_SERIALIZATION_NVP(d_IODa);
ar& BOOST_SERIALIZATION_NVP(i_Toa);
ar& BOOST_SERIALIZATION_NVP(i_WNa);
ar& BOOST_SERIALIZATION_NVP(i_IODa);
ar& BOOST_SERIALIZATION_NVP(d_Delta_i);
ar& BOOST_SERIALIZATION_NVP(d_M_0);
ar& BOOST_SERIALIZATION_NVP(d_e_eccentricity);

View File

@ -34,8 +34,8 @@ Galileo_Almanac_Helper::Galileo_Almanac_Helper()
{
// Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number
IOD_a_7 = 0;
WN_a_7 = 0.0;
t0a_7 = 0.0;
WN_a_7 = 0;
t0a_7 = 0;
SVID1_7 = 0;
DELTA_A_7 = 0.0;
e_7 = 0.0;
@ -49,9 +49,9 @@ Galileo_Almanac_Helper::Galileo_Almanac_Helper()
IOD_a_8 = 0;
af0_8 = 0.0;
af1_8 = 0.0;
E5b_HS_8 = 0.0;
E1B_HS_8 = 0.0;
E5a_HS_8 = 0.0;
E5b_HS_8 = 0;
E1B_HS_8 = 0;
E5a_HS_8 = 0;
SVID2_8 = 0;
DELTA_A_8 = 0.0;
e_8 = 0.0;
@ -62,14 +62,14 @@ Galileo_Almanac_Helper::Galileo_Almanac_Helper()
// Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2)
IOD_a_9 = 0;
WN_a_9 = 0.0;
t0a_9 = 0.0;
WN_a_9 = 0;
t0a_9 = 0;
M0_9 = 0.0;
af0_9 = 0.0;
af1_9 = 0.0;
E5b_HS_9 = 0.0;
E1B_HS_9 = 0.0;
E5a_HS_9 = 0.0;
E5b_HS_9 = 0;
E1B_HS_9 = 0;
E5a_HS_9 = 0;
SVID3_9 = 0;
DELTA_A_9 = 0.0;
e_9 = 0.0;
@ -83,9 +83,9 @@ Galileo_Almanac_Helper::Galileo_Almanac_Helper()
M0_10 = 0.0;
af0_10 = 0.0;
af1_10 = 0.0;
E5b_HS_10 = 0.0;
E1B_HS_10 = 0.0;
E5a_HS_10 = 0.0;
E5b_HS_10 = 0;
E1B_HS_10 = 0;
E5a_HS_10 = 0;
}
Galileo_Almanac Galileo_Almanac_Helper::get_almanac(int i)
@ -95,9 +95,9 @@ Galileo_Almanac Galileo_Almanac_Helper::get_almanac(int i)
{
case 1:
galileo_almanac.i_satellite_PRN = this->SVID1_7;
galileo_almanac.d_Toa = this->t0a_7;
galileo_almanac.d_WNa = this->WN_a_7;
galileo_almanac.d_IODa = this->IOD_a_7;
galileo_almanac.i_Toa = this->t0a_7;
galileo_almanac.i_WNa = this->WN_a_7;
galileo_almanac.i_IODa = this->IOD_a_7;
galileo_almanac.d_Delta_i = this->delta_i_7;
galileo_almanac.d_M_0 = this->M0_7;
galileo_almanac.d_e_eccentricity = this->e_7;
@ -114,9 +114,9 @@ Galileo_Almanac Galileo_Almanac_Helper::get_almanac(int i)
case 2:
galileo_almanac.i_satellite_PRN = this->SVID2_8;
galileo_almanac.d_Toa = this->t0a_9;
galileo_almanac.d_WNa = this->WN_a_9;
galileo_almanac.d_IODa = this->IOD_a_9;
galileo_almanac.i_Toa = this->t0a_9;
galileo_almanac.i_WNa = this->WN_a_9;
galileo_almanac.i_IODa = this->IOD_a_9;
galileo_almanac.d_Delta_i = this->delta_i_8;
galileo_almanac.d_M_0 = this->M0_9;
galileo_almanac.d_e_eccentricity = this->e_8;
@ -126,16 +126,15 @@ Galileo_Almanac Galileo_Almanac_Helper::get_almanac(int i)
galileo_almanac.d_OMEGA_DOT = this->Omega_dot_8;
galileo_almanac.d_A_f0 = this->af0_9;
galileo_almanac.d_A_f1 = this->af1_9;
galileo_almanac.E5b_HS = this->E5b_HS_9;
galileo_almanac.E1B_HS = this->E1B_HS_9;
galileo_almanac.E5a_HS = this->E5a_HS_9;
break;
case 3:
galileo_almanac.i_satellite_PRN = this->SVID3_9;
galileo_almanac.d_Toa = this->t0a_9;
galileo_almanac.d_WNa = this->WN_a_9;
galileo_almanac.d_IODa = this->IOD_a_10;
galileo_almanac.i_Toa = this->t0a_9;
galileo_almanac.i_WNa = this->WN_a_9;
galileo_almanac.i_IODa = this->IOD_a_10;
galileo_almanac.d_Delta_i = this->delta_i_9;
galileo_almanac.d_M_0 = this->M0_10;
galileo_almanac.d_e_eccentricity = this->e_9;

View File

@ -44,7 +44,7 @@ class Galileo_Almanac_Helper
public:
// Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number
int32_t IOD_a_7;
double WN_a_7;
int32_t WN_a_7;
double t0a_7;
int32_t SVID1_7;
double DELTA_A_7;
@ -59,9 +59,9 @@ public:
int32_t IOD_a_8;
double af0_8;
double af1_8;
double E5b_HS_8;
double E1B_HS_8;
double E5a_HS_8;
int32_t E5b_HS_8;
int32_t E1B_HS_8;
int32_t E5a_HS_8;
int32_t SVID2_8;
double DELTA_A_8;
double e_8;
@ -72,14 +72,14 @@ public:
// Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2)
int32_t IOD_a_9;
double WN_a_9;
int32_t WN_a_9;
double t0a_9;
double M0_9;
double af0_9;
double af1_9;
double E5b_HS_9;
double E1B_HS_9;
double E5a_HS_9;
int32_t E5b_HS_9;
int32_t E1B_HS_9;
int32_t E5a_HS_9;
int32_t SVID3_9;
double DELTA_A_9;
double e_9;
@ -93,9 +93,9 @@ public:
double M0_10;
double af0_10;
double af1_10;
double E5b_HS_10;
double E1B_HS_10;
double E5a_HS_10;
int32_t E5b_HS_10;
int32_t E1B_HS_10;
int32_t E5a_HS_10;
Galileo_Almanac_Helper(); //!< Default constructor
Galileo_Almanac get_almanac(int i);

View File

@ -123,10 +123,10 @@ void Galileo_Navigation_Message::reset()
Region5_flag_5 = false;
BGD_E1E5a_5 = 0.0;
BGD_E1E5b_5 = 0.0;
E5b_HS_5 = 0.0;
E1B_HS_5 = 0.0;
E5b_DVS_5 = 0.0;
E1B_DVS_5 = 0.0;
E5b_HS_5 = 0;
E1B_HS_5 = 0;
E5b_DVS_5 = 0;
E1B_DVS_5 = 0;
// GST
WN_5 = 0.0;
@ -146,7 +146,7 @@ void Galileo_Navigation_Message::reset()
// Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number
IOD_a_7 = 0;
WN_a_7 = 0.0;
WN_a_7 = 0;
t0a_7 = 0.0;
SVID1_7 = 0;
DELTA_A_7 = 0.0;
@ -161,8 +161,8 @@ void Galileo_Navigation_Message::reset()
IOD_a_8 = 0;
af0_8 = 0.0;
af1_8 = 0.0;
E5b_HS_8 = 0.0;
E1B_HS_8 = 0.0;
E5b_HS_8 = 0;
E1B_HS_8 = 0;
SVID2_8 = 0;
DELTA_A_8 = 0.0;
e_8 = 0.0;
@ -173,13 +173,13 @@ void Galileo_Navigation_Message::reset()
// Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2)
IOD_a_9 = 0;
WN_a_9 = 0.0;
WN_a_9 = 0;
t0a_9 = 0.0;
M0_9 = 0.0;
af0_9 = 0.0;
af1_9 = 0.0;
E5b_HS_9 = 0.0;
E1B_HS_9 = 0.0;
E5b_HS_9 = 0;
E1B_HS_9 = 0;
SVID3_9 = 0;
DELTA_A_9 = 0.0;
e_9 = 0.0;
@ -193,8 +193,8 @@ void Galileo_Navigation_Message::reset()
M0_10 = 0.0;
af0_10 = 0.0;
af1_10 = 0.0;
E5b_HS_10 = 0.0;
E1B_HS_10 = 0.0;
E5b_HS_10 = 0;
E1B_HS_10 = 0;
// GST-GPS
A_0G_10 = 0.0;
@ -781,13 +781,13 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk)
BGD_E1E5b_5 = static_cast<double>(read_navigation_signed(data_jk_bits, BGD_E1E5b_5_bit));
BGD_E1E5b_5 = BGD_E1E5b_5 * BGD_E1E5b_5_LSB;
DLOG(INFO) << "BGD_E1E5b_5= " << BGD_E1E5b_5;
E5b_HS_5 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E5b_HS_5_bit));
E5b_HS_5 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E5b_HS_5_bit));
DLOG(INFO) << "E5b_HS_5= " << E5b_HS_5;
E1B_HS_5 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E1B_HS_5_bit));
E1B_HS_5 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E1B_HS_5_bit));
DLOG(INFO) << "E1B_HS_5= " << E1B_HS_5;
E5b_DVS_5 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E5b_DVS_5_bit));
E5b_DVS_5 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E5b_DVS_5_bit));
DLOG(INFO) << "E5b_DVS_5= " << E5b_DVS_5;
E1B_DVS_5 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E1B_DVS_5_bit));
E1B_DVS_5 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E1B_DVS_5_bit));
DLOG(INFO) << "E1B_DVS_5= " << E1B_DVS_5;
// GST
WN_5 = static_cast<double>(read_navigation_unsigned(data_jk_bits, WN_5_bit));
@ -833,7 +833,7 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk)
case 7: // Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number
IOD_a_7 = static_cast<double>(read_navigation_unsigned(data_jk_bits, IOD_a_7_bit));
DLOG(INFO) << "IOD_a_7= " << IOD_a_7;
WN_a_7 = static_cast<double>(read_navigation_unsigned(data_jk_bits, WN_a_7_bit));
WN_a_7 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, WN_a_7_bit));
DLOG(INFO) << "WN_a_7= " << WN_a_7;
t0a_7 = static_cast<double>(read_navigation_unsigned(data_jk_bits, t0a_7_bit));
t0a_7 = t0a_7 * t0a_7_LSB;
@ -874,11 +874,11 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk)
af1_8 = static_cast<double>(read_navigation_signed(data_jk_bits, af1_8_bit));
af1_8 = af1_8 * af1_8_LSB;
DLOG(INFO) << "af1_8= " << af1_8;
E5b_HS_8 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E5b_HS_8_bit));
E5b_HS_8 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E5b_HS_8_bit));
DLOG(INFO) << "E5b_HS_8= " << E5b_HS_8;
E1B_HS_8 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E1B_HS_8_bit));
E1B_HS_8 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E1B_HS_8_bit));
DLOG(INFO) << "E1B_HS_8= " << E1B_HS_8;
SVID2_8 = static_cast<double>(read_navigation_unsigned(data_jk_bits, SVID2_8_bit));
SVID2_8 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, SVID2_8_bit));
DLOG(INFO) << "SVID2_8= " << SVID2_8;
DELTA_A_8 = static_cast<double>(read_navigation_signed(data_jk_bits, DELTA_A_8_bit));
DELTA_A_8 = DELTA_A_8 * DELTA_A_8_LSB;
@ -905,7 +905,7 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk)
case 9: // Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2)
IOD_a_9 = static_cast<double>(read_navigation_unsigned(data_jk_bits, IOD_a_9_bit));
DLOG(INFO) << "IOD_a_9= " << IOD_a_9;
WN_a_9 = static_cast<double>(read_navigation_unsigned(data_jk_bits, WN_a_9_bit));
WN_a_9 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, WN_a_9_bit));
DLOG(INFO) << "WN_a_9= " << WN_a_9;
t0a_9 = static_cast<double>(read_navigation_unsigned(data_jk_bits, t0a_9_bit));
t0a_9 = t0a_9 * t0a_9_LSB;
@ -919,11 +919,11 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk)
af1_9 = static_cast<double>(read_navigation_signed(data_jk_bits, af1_9_bit));
af1_9 = af1_9 * af1_9_LSB;
DLOG(INFO) << "af1_9= " << af1_9;
E5b_HS_9 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E5b_HS_9_bit));
E5b_HS_9 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E5b_HS_9_bit));
DLOG(INFO) << "E5b_HS_9= " << E5b_HS_9;
E1B_HS_9 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E1B_HS_9_bit));
E1B_HS_9 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E1B_HS_9_bit));
DLOG(INFO) << "E1B_HS_9= " << E1B_HS_9;
SVID3_9 = static_cast<double>(read_navigation_unsigned(data_jk_bits, SVID3_9_bit));
SVID3_9 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, SVID3_9_bit));
DLOG(INFO) << "SVID3_9= " << SVID3_9;
DELTA_A_9 = static_cast<double>(read_navigation_signed(data_jk_bits, DELTA_A_9_bit));
DELTA_A_9 = DELTA_A_9 * DELTA_A_9_LSB;
@ -959,9 +959,9 @@ int32_t Galileo_Navigation_Message::page_jk_decoder(const char *data_jk)
af1_10 = static_cast<double>(read_navigation_signed(data_jk_bits, af1_10_bit));
af1_10 = af1_10 * af1_10_LSB;
DLOG(INFO) << "af1_10= " << af1_10;
E5b_HS_10 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E5b_HS_10_bit));
E5b_HS_10 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E5b_HS_10_bit));
DLOG(INFO) << "E5b_HS_10= " << E5b_HS_10;
E1B_HS_10 = static_cast<double>(read_navigation_unsigned(data_jk_bits, E1B_HS_10_bit));
E1B_HS_10 = static_cast<int32_t>(read_navigation_unsigned(data_jk_bits, E1B_HS_10_bit));
DLOG(INFO) << "E1B_HS_10= " << E1B_HS_10;
A_0G_10 = static_cast<double>(read_navigation_signed(data_jk_bits, A_0G_10_bit));
A_0G_10 = A_0G_10 * A_0G_10_LSB;

View File

@ -143,10 +143,10 @@ public:
double BGD_E1E5a_5; //!< E1-E5a Broadcast Group Delay [s]
double BGD_E1E5b_5; //!< E1-E5b Broadcast Group Delay [s]
double E5b_HS_5; //!< E5b Signal Health Status
double E1B_HS_5; //!< E1B Signal Health Status
double E5b_DVS_5; //!< E5b Data Validity Status
double E1B_DVS_5; //!< E1B Data Validity Status
int32_t E5b_HS_5; //!< E5b Signal Health Status
int32_t E1B_HS_5; //!< E1B Signal Health Status
int32_t E5b_DVS_5; //!< E5b Data Validity Status
int32_t E1B_DVS_5; //!< E1B Data Validity Status
// GST
double WN_5;
@ -166,7 +166,7 @@ public:
// Word type 7: Almanac for SVID1 (1/2), almanac reference time and almanac reference week number
int32_t IOD_a_7;
double WN_a_7;
int32_t WN_a_7;
double t0a_7;
int32_t SVID1_7;
double DELTA_A_7;
@ -181,8 +181,8 @@ public:
int32_t IOD_a_8;
double af0_8;
double af1_8;
double E5b_HS_8;
double E1B_HS_8;
int32_t E5b_HS_8;
int32_t E1B_HS_8;
int32_t SVID2_8;
double DELTA_A_8;
double e_8;
@ -193,13 +193,13 @@ public:
// Word type 9: Almanac for SVID2 (2/2) and SVID3 (1/2)
int32_t IOD_a_9;
double WN_a_9;
int32_t WN_a_9;
double t0a_9;
double M0_9;
double af0_9;
double af1_9;
double E5b_HS_9;
double E1B_HS_9;
int32_t E5b_HS_9;
int32_t E1B_HS_9;
int32_t SVID3_9;
double DELTA_A_9;
double e_9;
@ -213,8 +213,8 @@ public:
double M0_10;
double af0_10;
double af1_10;
double E5b_HS_10;
double E1B_HS_10;
int32_t E5b_HS_10;
int32_t E1B_HS_10;
// GST-GPS conversion
double A_0G_10; //!< Constant term of the offset Delta t systems

View File

@ -36,7 +36,7 @@ Gps_Almanac::Gps_Almanac()
{
i_satellite_PRN = 0U;
d_Delta_i = 0.0;
d_Toa = 0.0;
i_Toa = 0.0;
i_WNa = 0;
d_M_0 = 0.0;
d_e_eccentricity = 0.0;

View File

@ -45,7 +45,7 @@ class Gps_Almanac
public:
uint32_t i_satellite_PRN; //!< SV PRN NUMBER
double d_Delta_i; //!< Inclination Angle at Reference Time (relative to i_0 = 0.30 semi-circles)
double d_Toa; //!< Almanac data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s]
int32_t i_Toa; //!< Almanac data reference time of week (Ref. 20.3.3.4.3 IS-GPS-200E) [s]
int32_t i_WNa; //!< Almanac week number
double d_M_0; //!< Mean Anomaly at Reference Time [semi-circles]
double d_e_eccentricity; //!< Eccentricity [dimensionless]
@ -72,7 +72,7 @@ public:
};
ar& BOOST_SERIALIZATION_NVP(i_satellite_PRN);
ar& BOOST_SERIALIZATION_NVP(d_Delta_i);
ar& BOOST_SERIALIZATION_NVP(d_Toa);
ar& BOOST_SERIALIZATION_NVP(i_Toa);
ar& BOOST_SERIALIZATION_NVP(i_WNa);
ar& BOOST_SERIALIZATION_NVP(d_M_0);
ar& BOOST_SERIALIZATION_NVP(d_e_eccentricity);

View File

@ -125,7 +125,7 @@ void Gps_Navigation_Message::reset()
d_DeltaT_LSF = 0.0;
// Almanac
d_Toa = 0.0;
i_Toa = 0;
i_WN_A = 0;
for (int32_t i = 1; i < 32; i++)
{
@ -433,8 +433,8 @@ int32_t Gps_Navigation_Message::subframe_decoder(char *subframe)
}
if (SV_page_5 == 51) // Page 25 (from Table 20-V. Data IDs and SV IDs in Subframes 4 and 5, IS-GPS-200H, page 110)
{
d_Toa = static_cast<double>(read_navigation_unsigned(subframe_bits, T_OA));
d_Toa = d_Toa * T_OA_LSB;
i_Toa = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, T_OA));
i_Toa = i_Toa * T_OA_LSB;
i_WN_A = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, WN_A));
almanacHealth[1] = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, HEALTH_SV1));
almanacHealth[2] = static_cast<int32_t>(read_navigation_unsigned(subframe_bits, HEALTH_SV2));

View File

@ -109,8 +109,8 @@ public:
double d_A_f2; //!< Coefficient 2 of code phase offset model [s/s^2]
// Almanac
double d_Toa; //!< Almanac reference time [s]
int32_t i_WN_A; //!< Modulo 256 of the GPS week number to which the almanac reference time (d_Toa) is referenced
int32_t i_Toa; //!< Almanac reference time [s]
int32_t i_WN_A; //!< Modulo 256 of the GPS week number to which the almanac reference time (i_Toa) is referenced
std::map<int32_t, int32_t> almanacHealth; //!< Map that stores the health information stored in the almanac
std::map<int32_t, std::string> satelliteBlock; //!< Map that stores to which block the PRN belongs http://www.navcen.uscg.gov/?Do=constellationStatus