485 lines
15 KiB
C++
485 lines
15 KiB
C++
#ifndef UBX_H_
|
|
#define UBX_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>
|
|
#include <vector>
|
|
|
|
#if KAITAI_STRUCT_VERSION < 9000L
|
|
#error "Incompatible Kaitai Struct C++/STL API: version 0.9 or later is required"
|
|
#endif
|
|
|
|
class ubx_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
class rxm_rawx_t;
|
|
class rxm_sfrbx_t;
|
|
class nav_sat_t;
|
|
class nav_pvt_t;
|
|
class mon_hw2_t;
|
|
class mon_hw_t;
|
|
|
|
enum gnss_type_t {
|
|
GNSS_TYPE_GPS = 0,
|
|
GNSS_TYPE_SBAS = 1,
|
|
GNSS_TYPE_GALILEO = 2,
|
|
GNSS_TYPE_BEIDOU = 3,
|
|
GNSS_TYPE_IMES = 4,
|
|
GNSS_TYPE_QZSS = 5,
|
|
GNSS_TYPE_GLONASS = 6
|
|
};
|
|
|
|
ubx_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~ubx_t();
|
|
|
|
class rxm_rawx_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
class measurement_t;
|
|
|
|
rxm_rawx_t(kaitai::kstream* p__io, ubx_t* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~rxm_rawx_t();
|
|
|
|
class measurement_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
measurement_t(kaitai::kstream* p__io, ubx_t::rxm_rawx_t* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~measurement_t();
|
|
|
|
private:
|
|
double m_pr_mes;
|
|
double m_cp_mes;
|
|
float m_do_mes;
|
|
gnss_type_t m_gnss_id;
|
|
uint8_t m_sv_id;
|
|
std::string m_reserved2;
|
|
uint8_t m_freq_id;
|
|
uint16_t m_lock_time;
|
|
uint8_t m_cno;
|
|
uint8_t m_pr_stdev;
|
|
uint8_t m_cp_stdev;
|
|
uint8_t m_do_stdev;
|
|
uint8_t m_trk_stat;
|
|
std::string m_reserved3;
|
|
ubx_t* m__root;
|
|
ubx_t::rxm_rawx_t* m__parent;
|
|
|
|
public:
|
|
double pr_mes() const { return m_pr_mes; }
|
|
double cp_mes() const { return m_cp_mes; }
|
|
float do_mes() const { return m_do_mes; }
|
|
gnss_type_t gnss_id() const { return m_gnss_id; }
|
|
uint8_t sv_id() const { return m_sv_id; }
|
|
std::string reserved2() const { return m_reserved2; }
|
|
uint8_t freq_id() const { return m_freq_id; }
|
|
uint16_t lock_time() const { return m_lock_time; }
|
|
uint8_t cno() const { return m_cno; }
|
|
uint8_t pr_stdev() const { return m_pr_stdev; }
|
|
uint8_t cp_stdev() const { return m_cp_stdev; }
|
|
uint8_t do_stdev() const { return m_do_stdev; }
|
|
uint8_t trk_stat() const { return m_trk_stat; }
|
|
std::string reserved3() const { return m_reserved3; }
|
|
ubx_t* _root() const { return m__root; }
|
|
ubx_t::rxm_rawx_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
private:
|
|
double m_rcv_tow;
|
|
uint16_t m_week;
|
|
int8_t m_leap_s;
|
|
uint8_t m_num_meas;
|
|
uint8_t m_rec_stat;
|
|
std::string m_reserved1;
|
|
std::vector<measurement_t*>* m_meas;
|
|
ubx_t* m__root;
|
|
ubx_t* m__parent;
|
|
std::vector<std::string>* m__raw_meas;
|
|
std::vector<kaitai::kstream*>* m__io__raw_meas;
|
|
|
|
public:
|
|
double rcv_tow() const { return m_rcv_tow; }
|
|
uint16_t week() const { return m_week; }
|
|
int8_t leap_s() const { return m_leap_s; }
|
|
uint8_t num_meas() const { return m_num_meas; }
|
|
uint8_t rec_stat() const { return m_rec_stat; }
|
|
std::string reserved1() const { return m_reserved1; }
|
|
std::vector<measurement_t*>* meas() const { return m_meas; }
|
|
ubx_t* _root() const { return m__root; }
|
|
ubx_t* _parent() const { return m__parent; }
|
|
std::vector<std::string>* _raw_meas() const { return m__raw_meas; }
|
|
std::vector<kaitai::kstream*>* _io__raw_meas() const { return m__io__raw_meas; }
|
|
};
|
|
|
|
class rxm_sfrbx_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
rxm_sfrbx_t(kaitai::kstream* p__io, ubx_t* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~rxm_sfrbx_t();
|
|
|
|
private:
|
|
gnss_type_t m_gnss_id;
|
|
uint8_t m_sv_id;
|
|
std::string m_reserved1;
|
|
uint8_t m_freq_id;
|
|
uint8_t m_num_words;
|
|
std::string m_reserved2;
|
|
uint8_t m_version;
|
|
std::string m_reserved3;
|
|
std::vector<uint32_t>* m_body;
|
|
ubx_t* m__root;
|
|
ubx_t* m__parent;
|
|
|
|
public:
|
|
gnss_type_t gnss_id() const { return m_gnss_id; }
|
|
uint8_t sv_id() const { return m_sv_id; }
|
|
std::string reserved1() const { return m_reserved1; }
|
|
uint8_t freq_id() const { return m_freq_id; }
|
|
uint8_t num_words() const { return m_num_words; }
|
|
std::string reserved2() const { return m_reserved2; }
|
|
uint8_t version() const { return m_version; }
|
|
std::string reserved3() const { return m_reserved3; }
|
|
std::vector<uint32_t>* body() const { return m_body; }
|
|
ubx_t* _root() const { return m__root; }
|
|
ubx_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
class nav_sat_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
class nav_t;
|
|
|
|
nav_sat_t(kaitai::kstream* p__io, ubx_t* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~nav_sat_t();
|
|
|
|
class nav_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
nav_t(kaitai::kstream* p__io, ubx_t::nav_sat_t* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~nav_t();
|
|
|
|
private:
|
|
gnss_type_t m_gnss_id;
|
|
uint8_t m_sv_id;
|
|
uint8_t m_cno;
|
|
int8_t m_elev;
|
|
int16_t m_azim;
|
|
int16_t m_pr_res;
|
|
uint32_t m_flags;
|
|
ubx_t* m__root;
|
|
ubx_t::nav_sat_t* m__parent;
|
|
|
|
public:
|
|
gnss_type_t gnss_id() const { return m_gnss_id; }
|
|
uint8_t sv_id() const { return m_sv_id; }
|
|
uint8_t cno() const { return m_cno; }
|
|
int8_t elev() const { return m_elev; }
|
|
int16_t azim() const { return m_azim; }
|
|
int16_t pr_res() const { return m_pr_res; }
|
|
uint32_t flags() const { return m_flags; }
|
|
ubx_t* _root() const { return m__root; }
|
|
ubx_t::nav_sat_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
private:
|
|
uint32_t m_itow;
|
|
uint8_t m_version;
|
|
uint8_t m_num_svs;
|
|
std::string m_reserved;
|
|
std::vector<nav_t*>* m_svs;
|
|
ubx_t* m__root;
|
|
ubx_t* m__parent;
|
|
std::vector<std::string>* m__raw_svs;
|
|
std::vector<kaitai::kstream*>* m__io__raw_svs;
|
|
|
|
public:
|
|
uint32_t itow() const { return m_itow; }
|
|
uint8_t version() const { return m_version; }
|
|
uint8_t num_svs() const { return m_num_svs; }
|
|
std::string reserved() const { return m_reserved; }
|
|
std::vector<nav_t*>* svs() const { return m_svs; }
|
|
ubx_t* _root() const { return m__root; }
|
|
ubx_t* _parent() const { return m__parent; }
|
|
std::vector<std::string>* _raw_svs() const { return m__raw_svs; }
|
|
std::vector<kaitai::kstream*>* _io__raw_svs() const { return m__io__raw_svs; }
|
|
};
|
|
|
|
class nav_pvt_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
nav_pvt_t(kaitai::kstream* p__io, ubx_t* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~nav_pvt_t();
|
|
|
|
private:
|
|
uint32_t m_i_tow;
|
|
uint16_t m_year;
|
|
uint8_t m_month;
|
|
uint8_t m_day;
|
|
uint8_t m_hour;
|
|
uint8_t m_min;
|
|
uint8_t m_sec;
|
|
uint8_t m_valid;
|
|
uint32_t m_t_acc;
|
|
int32_t m_nano;
|
|
uint8_t m_fix_type;
|
|
uint8_t m_flags;
|
|
uint8_t m_flags2;
|
|
uint8_t m_num_sv;
|
|
int32_t m_lon;
|
|
int32_t m_lat;
|
|
int32_t m_height;
|
|
int32_t m_h_msl;
|
|
uint32_t m_h_acc;
|
|
uint32_t m_v_acc;
|
|
int32_t m_vel_n;
|
|
int32_t m_vel_e;
|
|
int32_t m_vel_d;
|
|
int32_t m_g_speed;
|
|
int32_t m_head_mot;
|
|
int32_t m_s_acc;
|
|
uint32_t m_head_acc;
|
|
uint16_t m_p_dop;
|
|
uint8_t m_flags3;
|
|
std::string m_reserved1;
|
|
int32_t m_head_veh;
|
|
int16_t m_mag_dec;
|
|
uint16_t m_mag_acc;
|
|
ubx_t* m__root;
|
|
ubx_t* m__parent;
|
|
|
|
public:
|
|
uint32_t i_tow() const { return m_i_tow; }
|
|
uint16_t year() const { return m_year; }
|
|
uint8_t month() const { return m_month; }
|
|
uint8_t day() const { return m_day; }
|
|
uint8_t hour() const { return m_hour; }
|
|
uint8_t min() const { return m_min; }
|
|
uint8_t sec() const { return m_sec; }
|
|
uint8_t valid() const { return m_valid; }
|
|
uint32_t t_acc() const { return m_t_acc; }
|
|
int32_t nano() const { return m_nano; }
|
|
uint8_t fix_type() const { return m_fix_type; }
|
|
uint8_t flags() const { return m_flags; }
|
|
uint8_t flags2() const { return m_flags2; }
|
|
uint8_t num_sv() const { return m_num_sv; }
|
|
int32_t lon() const { return m_lon; }
|
|
int32_t lat() const { return m_lat; }
|
|
int32_t height() const { return m_height; }
|
|
int32_t h_msl() const { return m_h_msl; }
|
|
uint32_t h_acc() const { return m_h_acc; }
|
|
uint32_t v_acc() const { return m_v_acc; }
|
|
int32_t vel_n() const { return m_vel_n; }
|
|
int32_t vel_e() const { return m_vel_e; }
|
|
int32_t vel_d() const { return m_vel_d; }
|
|
int32_t g_speed() const { return m_g_speed; }
|
|
int32_t head_mot() const { return m_head_mot; }
|
|
int32_t s_acc() const { return m_s_acc; }
|
|
uint32_t head_acc() const { return m_head_acc; }
|
|
uint16_t p_dop() const { return m_p_dop; }
|
|
uint8_t flags3() const { return m_flags3; }
|
|
std::string reserved1() const { return m_reserved1; }
|
|
int32_t head_veh() const { return m_head_veh; }
|
|
int16_t mag_dec() const { return m_mag_dec; }
|
|
uint16_t mag_acc() const { return m_mag_acc; }
|
|
ubx_t* _root() const { return m__root; }
|
|
ubx_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
class mon_hw2_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
enum config_source_t {
|
|
CONFIG_SOURCE_FLASH = 102,
|
|
CONFIG_SOURCE_OTP = 111,
|
|
CONFIG_SOURCE_CONFIG_PINS = 112,
|
|
CONFIG_SOURCE_ROM = 113
|
|
};
|
|
|
|
mon_hw2_t(kaitai::kstream* p__io, ubx_t* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~mon_hw2_t();
|
|
|
|
private:
|
|
int8_t m_ofs_i;
|
|
uint8_t m_mag_i;
|
|
int8_t m_ofs_q;
|
|
uint8_t m_mag_q;
|
|
config_source_t m_cfg_source;
|
|
std::string m_reserved1;
|
|
uint32_t m_low_lev_cfg;
|
|
std::string m_reserved2;
|
|
uint32_t m_post_status;
|
|
std::string m_reserved3;
|
|
ubx_t* m__root;
|
|
ubx_t* m__parent;
|
|
|
|
public:
|
|
int8_t ofs_i() const { return m_ofs_i; }
|
|
uint8_t mag_i() const { return m_mag_i; }
|
|
int8_t ofs_q() const { return m_ofs_q; }
|
|
uint8_t mag_q() const { return m_mag_q; }
|
|
config_source_t cfg_source() const { return m_cfg_source; }
|
|
std::string reserved1() const { return m_reserved1; }
|
|
uint32_t low_lev_cfg() const { return m_low_lev_cfg; }
|
|
std::string reserved2() const { return m_reserved2; }
|
|
uint32_t post_status() const { return m_post_status; }
|
|
std::string reserved3() const { return m_reserved3; }
|
|
ubx_t* _root() const { return m__root; }
|
|
ubx_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
class mon_hw_t : public kaitai::kstruct {
|
|
|
|
public:
|
|
|
|
enum antenna_status_t {
|
|
ANTENNA_STATUS_INIT = 0,
|
|
ANTENNA_STATUS_DONTKNOW = 1,
|
|
ANTENNA_STATUS_OK = 2,
|
|
ANTENNA_STATUS_SHORT = 3,
|
|
ANTENNA_STATUS_OPEN = 4
|
|
};
|
|
|
|
enum antenna_power_t {
|
|
ANTENNA_POWER_FALSE = 0,
|
|
ANTENNA_POWER_TRUE = 1,
|
|
ANTENNA_POWER_DONTKNOW = 2
|
|
};
|
|
|
|
mon_hw_t(kaitai::kstream* p__io, ubx_t* p__parent = 0, ubx_t* p__root = 0);
|
|
|
|
private:
|
|
void _read();
|
|
void _clean_up();
|
|
|
|
public:
|
|
~mon_hw_t();
|
|
|
|
private:
|
|
uint32_t m_pin_sel;
|
|
uint32_t m_pin_bank;
|
|
uint32_t m_pin_dir;
|
|
uint32_t m_pin_val;
|
|
uint16_t m_noise_per_ms;
|
|
uint16_t m_agc_cnt;
|
|
antenna_status_t m_a_status;
|
|
antenna_power_t m_a_power;
|
|
uint8_t m_flags;
|
|
std::string m_reserved1;
|
|
uint32_t m_used_mask;
|
|
std::string m_vp;
|
|
uint8_t m_jam_ind;
|
|
std::string m_reserved2;
|
|
uint32_t m_pin_irq;
|
|
uint32_t m_pull_h;
|
|
uint32_t m_pull_l;
|
|
ubx_t* m__root;
|
|
ubx_t* m__parent;
|
|
|
|
public:
|
|
uint32_t pin_sel() const { return m_pin_sel; }
|
|
uint32_t pin_bank() const { return m_pin_bank; }
|
|
uint32_t pin_dir() const { return m_pin_dir; }
|
|
uint32_t pin_val() const { return m_pin_val; }
|
|
uint16_t noise_per_ms() const { return m_noise_per_ms; }
|
|
uint16_t agc_cnt() const { return m_agc_cnt; }
|
|
antenna_status_t a_status() const { return m_a_status; }
|
|
antenna_power_t a_power() const { return m_a_power; }
|
|
uint8_t flags() const { return m_flags; }
|
|
std::string reserved1() const { return m_reserved1; }
|
|
uint32_t used_mask() const { return m_used_mask; }
|
|
std::string vp() const { return m_vp; }
|
|
uint8_t jam_ind() const { return m_jam_ind; }
|
|
std::string reserved2() const { return m_reserved2; }
|
|
uint32_t pin_irq() const { return m_pin_irq; }
|
|
uint32_t pull_h() const { return m_pull_h; }
|
|
uint32_t pull_l() const { return m_pull_l; }
|
|
ubx_t* _root() const { return m__root; }
|
|
ubx_t* _parent() const { return m__parent; }
|
|
};
|
|
|
|
private:
|
|
bool f_checksum;
|
|
uint16_t m_checksum;
|
|
|
|
public:
|
|
uint16_t checksum();
|
|
|
|
private:
|
|
std::string m_magic;
|
|
uint16_t m_msg_type;
|
|
uint16_t m_length;
|
|
kaitai::kstruct* m_body;
|
|
bool n_body;
|
|
|
|
public:
|
|
bool _is_null_body() { body(); return n_body; };
|
|
|
|
private:
|
|
ubx_t* m__root;
|
|
kaitai::kstruct* m__parent;
|
|
|
|
public:
|
|
std::string magic() const { return m_magic; }
|
|
uint16_t msg_type() const { return m_msg_type; }
|
|
uint16_t length() const { return m_length; }
|
|
kaitai::kstruct* body() const { return m_body; }
|
|
ubx_t* _root() const { return m__root; }
|
|
kaitai::kstruct* _parent() const { return m__parent; }
|
|
};
|
|
|
|
#endif // UBX_H_
|