360 lines
9.5 KiB
C++
360 lines
9.5 KiB
C++
#ifndef GPS_H_
|
|
#define GPS_H_
|
|
|
|
// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
|
|
|
|
#include "kaitai/kaitaistruct.h"
|
|
#include <stdint.h>
|
|
|
|
#if KAITAI_STRUCT_VERSION < 9000L
|
|
#error "Incompatible Kaitai Struct C++/STL API: version 0.9 or later is required"
|
|
#endif
|
|
|
|
class gps_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
class subframe_1_t;
|
|
class subframe_3_t;
|
|
class subframe_4_t;
|
|
class how_t;
|
|
class tlm_t;
|
|
class subframe_2_t;
|
|
|
|
gps_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent = 0, gps_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~gps_t();
|
|
|
|
class subframe_1_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
subframe_1_t(kaitai::kstream* p__io, gps_t* p__parent = 0, gps_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~subframe_1_t();
|
|
|
|
private:
|
|
bool f_af_0;
|
|
int32_t m_af_0;
|
|
|
|
public:
|
|
int32_t af_0();
|
|
|
|
private:
|
|
uint64_t m_week_no;
|
|
uint64_t m_code;
|
|
uint64_t m_sv_accuracy;
|
|
uint64_t m_sv_health;
|
|
uint64_t m_iodc_msb;
|
|
bool m_l2_p_data_flag;
|
|
uint64_t m_reserved1;
|
|
uint64_t m_reserved2;
|
|
uint64_t m_reserved3;
|
|
uint64_t m_reserved4;
|
|
int8_t m_t_gd;
|
|
uint8_t m_iodc_lsb;
|
|
uint16_t m_t_oc;
|
|
int8_t m_af_2;
|
|
int16_t m_af_1;
|
|
bool m_af_0_sign;
|
|
uint64_t m_af_0_value;
|
|
uint64_t m_reserved5;
|
|
gps_t* m__root;
|
|
gps_t* m__parent;
|
|
|
|
public:
|
|
uint64_t week_no() const { return m_week_no; }
|
|
uint64_t code() const { return m_code; }
|
|
uint64_t sv_accuracy() const { return m_sv_accuracy; }
|
|
uint64_t sv_health() const { return m_sv_health; }
|
|
uint64_t iodc_msb() const { return m_iodc_msb; }
|
|
bool l2_p_data_flag() const { return m_l2_p_data_flag; }
|
|
uint64_t reserved1() const { return m_reserved1; }
|
|
uint64_t reserved2() const { return m_reserved2; }
|
|
uint64_t reserved3() const { return m_reserved3; }
|
|
uint64_t reserved4() const { return m_reserved4; }
|
|
int8_t t_gd() const { return m_t_gd; }
|
|
uint8_t iodc_lsb() const { return m_iodc_lsb; }
|
|
uint16_t t_oc() const { return m_t_oc; }
|
|
int8_t af_2() const { return m_af_2; }
|
|
int16_t af_1() const { return m_af_1; }
|
|
bool af_0_sign() const { return m_af_0_sign; }
|
|
uint64_t af_0_value() const { return m_af_0_value; }
|
|
uint64_t reserved5() const { return m_reserved5; }
|
|
gps_t* _root() const { return m__root; }
|
|
gps_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
class subframe_3_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
subframe_3_t(kaitai::kstream* p__io, gps_t* p__parent = 0, gps_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~subframe_3_t();
|
|
|
|
private:
|
|
bool f_omega_dot;
|
|
int32_t m_omega_dot;
|
|
|
|
public:
|
|
int32_t omega_dot();
|
|
|
|
private:
|
|
bool f_idot;
|
|
int32_t m_idot;
|
|
|
|
public:
|
|
int32_t idot();
|
|
|
|
private:
|
|
int16_t m_c_ic;
|
|
int32_t m_omega_0;
|
|
int16_t m_c_is;
|
|
int32_t m_i_0;
|
|
int16_t m_c_rc;
|
|
int32_t m_omega;
|
|
bool m_omega_dot_sign;
|
|
uint64_t m_omega_dot_value;
|
|
uint8_t m_iode;
|
|
bool m_idot_sign;
|
|
uint64_t m_idot_value;
|
|
uint64_t m_reserved;
|
|
gps_t* m__root;
|
|
gps_t* m__parent;
|
|
|
|
public:
|
|
int16_t c_ic() const { return m_c_ic; }
|
|
int32_t omega_0() const { return m_omega_0; }
|
|
int16_t c_is() const { return m_c_is; }
|
|
int32_t i_0() const { return m_i_0; }
|
|
int16_t c_rc() const { return m_c_rc; }
|
|
int32_t omega() const { return m_omega; }
|
|
bool omega_dot_sign() const { return m_omega_dot_sign; }
|
|
uint64_t omega_dot_value() const { return m_omega_dot_value; }
|
|
uint8_t iode() const { return m_iode; }
|
|
bool idot_sign() const { return m_idot_sign; }
|
|
uint64_t idot_value() const { return m_idot_value; }
|
|
uint64_t reserved() const { return m_reserved; }
|
|
gps_t* _root() const { return m__root; }
|
|
gps_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
class subframe_4_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
class ionosphere_data_t;
|
|
|
|
subframe_4_t(kaitai::kstream* p__io, gps_t* p__parent = 0, gps_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~subframe_4_t();
|
|
|
|
class ionosphere_data_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
ionosphere_data_t(kaitai::kstream* p__io, gps_t::subframe_4_t* p__parent = 0, gps_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~ionosphere_data_t();
|
|
|
|
private:
|
|
int8_t m_a0;
|
|
int8_t m_a1;
|
|
int8_t m_a2;
|
|
int8_t m_a3;
|
|
int8_t m_b0;
|
|
int8_t m_b1;
|
|
int8_t m_b2;
|
|
int8_t m_b3;
|
|
gps_t* m__root;
|
|
gps_t::subframe_4_t* m__parent;
|
|
|
|
public:
|
|
int8_t a0() const { return m_a0; }
|
|
int8_t a1() const { return m_a1; }
|
|
int8_t a2() const { return m_a2; }
|
|
int8_t a3() const { return m_a3; }
|
|
int8_t b0() const { return m_b0; }
|
|
int8_t b1() const { return m_b1; }
|
|
int8_t b2() const { return m_b2; }
|
|
int8_t b3() const { return m_b3; }
|
|
gps_t* _root() const { return m__root; }
|
|
gps_t::subframe_4_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
private:
|
|
uint64_t m_data_id;
|
|
uint64_t m_page_id;
|
|
ionosphere_data_t* m_body;
|
|
bool n_body;
|
|
|
|
public:
|
|
bool _is_null_body() { body(); return n_body; };
|
|
|
|
private:
|
|
gps_t* m__root;
|
|
gps_t* m__parent;
|
|
|
|
public:
|
|
uint64_t data_id() const { return m_data_id; }
|
|
uint64_t page_id() const { return m_page_id; }
|
|
ionosphere_data_t* body() const { return m_body; }
|
|
gps_t* _root() const { return m__root; }
|
|
gps_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
class how_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
how_t(kaitai::kstream* p__io, gps_t* p__parent = 0, gps_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~how_t();
|
|
|
|
private:
|
|
uint64_t m_tow_count;
|
|
bool m_alert;
|
|
bool m_anti_spoof;
|
|
uint64_t m_subframe_id;
|
|
uint64_t m_reserved;
|
|
gps_t* m__root;
|
|
gps_t* m__parent;
|
|
|
|
public:
|
|
uint64_t tow_count() const { return m_tow_count; }
|
|
bool alert() const { return m_alert; }
|
|
bool anti_spoof() const { return m_anti_spoof; }
|
|
uint64_t subframe_id() const { return m_subframe_id; }
|
|
uint64_t reserved() const { return m_reserved; }
|
|
gps_t* _root() const { return m__root; }
|
|
gps_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
class tlm_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
tlm_t(kaitai::kstream* p__io, gps_t* p__parent = 0, gps_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~tlm_t();
|
|
|
|
private:
|
|
std::string m_preamble;
|
|
uint64_t m_tlm;
|
|
bool m_integrity_status;
|
|
bool m_reserved;
|
|
gps_t* m__root;
|
|
gps_t* m__parent;
|
|
|
|
public:
|
|
std::string preamble() const { return m_preamble; }
|
|
uint64_t tlm() const { return m_tlm; }
|
|
bool integrity_status() const { return m_integrity_status; }
|
|
bool reserved() const { return m_reserved; }
|
|
gps_t* _root() const { return m__root; }
|
|
gps_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
class subframe_2_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
subframe_2_t(kaitai::kstream* p__io, gps_t* p__parent = 0, gps_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~subframe_2_t();
|
|
|
|
private:
|
|
uint8_t m_iode;
|
|
int16_t m_c_rs;
|
|
int16_t m_delta_n;
|
|
int32_t m_m_0;
|
|
int16_t m_c_uc;
|
|
int32_t m_e;
|
|
int16_t m_c_us;
|
|
uint32_t m_sqrt_a;
|
|
uint16_t m_t_oe;
|
|
bool m_fit_interval_flag;
|
|
uint64_t m_aoda;
|
|
uint64_t m_reserved;
|
|
gps_t* m__root;
|
|
gps_t* m__parent;
|
|
|
|
public:
|
|
uint8_t iode() const { return m_iode; }
|
|
int16_t c_rs() const { return m_c_rs; }
|
|
int16_t delta_n() const { return m_delta_n; }
|
|
int32_t m_0() const { return m_m_0; }
|
|
int16_t c_uc() const { return m_c_uc; }
|
|
int32_t e() const { return m_e; }
|
|
int16_t c_us() const { return m_c_us; }
|
|
uint32_t sqrt_a() const { return m_sqrt_a; }
|
|
uint16_t t_oe() const { return m_t_oe; }
|
|
bool fit_interval_flag() const { return m_fit_interval_flag; }
|
|
uint64_t aoda() const { return m_aoda; }
|
|
uint64_t reserved() const { return m_reserved; }
|
|
gps_t* _root() const { return m__root; }
|
|
gps_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
private:
|
|
tlm_t* m_tlm;
|
|
how_t* m_how;
|
|
kaitai::kstruct* m_body;
|
|
bool n_body;
|
|
|
|
public:
|
|
bool _is_null_body() { body(); return n_body; };
|
|
|
|
private:
|
|
gps_t* m__root;
|
|
kaitai::kstruct* m__parent;
|
|
|
|
public:
|
|
tlm_t* tlm() const { return m_tlm; }
|
|
how_t* how() const { return m_how; }
|
|
kaitai::kstruct* body() const { return m_body; }
|
|
gps_t* _root() const { return m__root; }
|
|
kaitai::kstruct* _parent() const { return m__parent; }
|
|
};
|
|
|
|
#endif // GPS_H_
|