22 #ifndef GNSS_SDR_BEIDOU_DNAV_NAVIGATION_MESSAGE_H 23 #define GNSS_SDR_BEIDOU_DNAV_NAVIGATION_MESSAGE_H 92 double utc_time(
const double beidoutime_corrected)
const;
94 bool satellite_validation();
121 i_satellite_PRN = prn;
124 inline void set_signal_type(int32_t signal_type)
126 i_signal_type = signal_type;
129 inline bool get_flag_CRC_test()
const 131 return flag_crc_test;
134 inline bool get_flag_new_SOW_available()
const 136 return flag_new_SOW_available;
139 inline void set_flag_new_SOW_available(
bool new_SOW_available)
141 flag_new_SOW_available = new_SOW_available;
144 inline double get_SOW()
const 150 uint64_t read_navigation_unsigned(std::bitset<BEIDOU_DNAV_SUBFRAME_DATA_BITS> bits,
const std::vector<std::pair<int32_t, int32_t>>& parameter)
const;
151 int64_t read_navigation_signed(std::bitset<BEIDOU_DNAV_SUBFRAME_DATA_BITS> bits,
const std::vector<std::pair<int32_t, int32_t>>& parameter)
const;
152 bool read_navigation_bool(std::bitset<BEIDOU_DNAV_SUBFRAME_DATA_BITS> bits,
const std::vector<std::pair<int32_t, int32_t>>& parameter)
const;
153 void print_beidou_word_bytes(uint32_t BEIDOU_word)
const;
161 double check_t(
double time);
178 double d_eccentricity{};
195 double d_OMEGA_DOT{};
199 int32_t i_BEIDOU_week{};
202 int32_t i_SV_accuracy{};
203 int32_t i_SV_health{};
220 uint64_t d_A_f1_msb_bits{};
221 uint64_t d_A_f1_lsb_bits{};
222 uint64_t d_Cuc_msb_bits{};
223 uint64_t d_Cuc_lsb_bits{};
224 uint64_t d_eccentricity_msb{};
225 uint64_t d_eccentricity_lsb{};
226 uint64_t d_Cic_msb_bits{};
227 uint64_t d_Cic_lsb_bits{};
228 uint64_t d_eccentricity_msb_bits{};
229 uint64_t d_eccentricity_lsb_bits{};
230 uint64_t d_i_0_msb_bits{};
231 uint64_t d_i_0_lsb_bits{};
232 uint64_t d_OMEGA_msb_bits{};
233 uint64_t d_OMEGA_lsb_bits{};
234 uint64_t d_OMEGA_DOT_msb_bits{};
235 uint64_t d_OMEGA_DOT_lsb_bits{};
240 std::map<int32_t, int32_t> almanacHealth;
242 std::map<int32_t, std::string> satelliteBlock;
245 double d_satClkCorr{};
254 int32_t i_signal_type{};
255 uint32_t i_satellite_PRN{};
270 int32_t i_DeltaT_LS{};
273 double d_DeltaT_LSF{};
281 double d_SQRT_A_ALMANAC{};
282 double d_A1_ALMANAC{};
283 double d_A0_ALMANAC{};
284 double d_OMEGA0_ALMANAC{};
285 double d_E_ALMANAC{};
288 double d_OMEGA_DOT_ALMANAC{};
289 double d_OMEGA_ALMANAC{};
290 double d_M0_ALMANAC{};
291 int32_t almanac_WN{};
300 bool flag_eph_valid{};
301 bool flag_utc_model_valid{};
302 bool flag_iono_valid{};
308 bool flag_new_SOW_available{};
309 bool flag_crc_test{};
310 double d_previous_aode{};
314 bool flag_d1_sf5_p9{};
315 bool flag_d1_sf5_p10{};
Beidou_Dnav_Iono get_iono()
Obtain a BDS ionospheric correction parameters class filled with current SV data. ...
This class is a storage for the BeiDou DNAV UTC Model.
bool have_new_almanac()
Returns true if new UTC model has arrived. The flag is set to false when the function is executed...
Defines system parameters for BeiDou B1I signal and DNAV data.
Defines system parameters for BeiDou DNAV data processing.
bool have_new_iono()
Returns true if new Iono model has arrived. The flag is set to false when the function is executed...
double utc_time(const double beidoutime_corrected) const
Computes the Coordinated Universal Time (UTC) and returns it in [s].
Interface of a BeiDou UTC MODEL storage.
Interface of a Beidou DNAV Almanac storage.
Beidou_Dnav_Utc_Model get_utc_model()
Obtain a BDS UTC model parameters class filled with current SV data.
This class is a storage for the BEIDOU IONOSPHERIC data as described in ICD v2.1. ...
bool have_new_ephemeris()
Returns true if new Ephemeris has arrived. The flag is set to false when the function is executed...
int32_t d1_subframe_decoder(std::string const &subframe)
Decodes the BDS D1 NAV message.
Beidou_Dnav_Ephemeris get_ephemeris() const
Obtain a BDS SV Ephemeris class filled with current SV data.
Interface of a BEIDOU EPHEMERIS storage.
bool have_new_utc_model()
Returns true if new UTC model has arrived. The flag is set to false when the function is executed...
This class is a storage and orbital model functions for the GPS SV ephemeris data as described in Bei...
int32_t d2_subframe_decoder(std::string const &subframe)
Decodes the BDS D2 NAV message.
void satellitePosition(double transmitTime)
Computes the position of the satellite.
void set_satellite_PRN(uint32_t prn)
Sets satellite PRN number.
This class decodes a BeiDou D1 NAV Data message.
Interface of a BEIDOU IONOSPHERIC MODEL storage.
double sv_clock_correction(double transmitTime)
Sets (d_satClkCorr) according to the User Algorithm for SV Clock Correction and returns the corrected...
Defines system parameters for BeiDou B3I signal and DNAV data.
Beidou_Dnav_Navigation_Message()