# 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_