// This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild #include "glonass.h" glonass_t::glonass_t(kaitai::kstream* p__io, kaitai::kstruct* p__parent, glonass_t* p__root) : kaitai::kstruct(p__io) { m__parent = p__parent; m__root = this; try { _read(); } catch(...) { _clean_up(); throw; } } void glonass_t::_read() { m_idle_chip = m__io->read_bits_int_be(1); m_string_number = m__io->read_bits_int_be(4); //m__io->align_to_byte(); switch (string_number()) { case 4: { m_data = new string_4_t(m__io, this, m__root); break; } case 1: { m_data = new string_1_t(m__io, this, m__root); break; } case 3: { m_data = new string_3_t(m__io, this, m__root); break; } case 5: { m_data = new string_5_t(m__io, this, m__root); break; } case 2: { m_data = new string_2_t(m__io, this, m__root); break; } default: { m_data = new string_non_immediate_t(m__io, this, m__root); break; } } m_hamming_code = m__io->read_bits_int_be(8); m_pad_1 = m__io->read_bits_int_be(11); m_superframe_number = m__io->read_bits_int_be(16); m_pad_2 = m__io->read_bits_int_be(8); m_frame_number = m__io->read_bits_int_be(8); } glonass_t::~glonass_t() { _clean_up(); } void glonass_t::_clean_up() { if (m_data) { delete m_data; m_data = 0; } } glonass_t::string_4_t::string_4_t(kaitai::kstream* p__io, glonass_t* p__parent, glonass_t* p__root) : kaitai::kstruct(p__io) { m__parent = p__parent; m__root = p__root; f_tau_n = false; f_delta_tau_n = false; try { _read(); } catch(...) { _clean_up(); throw; } } void glonass_t::string_4_t::_read() { m_tau_n_sign = m__io->read_bits_int_be(1); m_tau_n_value = m__io->read_bits_int_be(21); m_delta_tau_n_sign = m__io->read_bits_int_be(1); m_delta_tau_n_value = m__io->read_bits_int_be(4); m_e_n = m__io->read_bits_int_be(5); m_not_used_1 = m__io->read_bits_int_be(14); m_p4 = m__io->read_bits_int_be(1); m_f_t = m__io->read_bits_int_be(4); m_not_used_2 = m__io->read_bits_int_be(3); m_n_t = m__io->read_bits_int_be(11); m_n = m__io->read_bits_int_be(5); m_m = m__io->read_bits_int_be(2); } glonass_t::string_4_t::~string_4_t() { _clean_up(); } void glonass_t::string_4_t::_clean_up() { } int32_t glonass_t::string_4_t::tau_n() { if (f_tau_n) return m_tau_n; m_tau_n = ((tau_n_sign()) ? ((tau_n_value() * -1)) : (tau_n_value())); f_tau_n = true; return m_tau_n; } int32_t glonass_t::string_4_t::delta_tau_n() { if (f_delta_tau_n) return m_delta_tau_n; m_delta_tau_n = ((delta_tau_n_sign()) ? ((delta_tau_n_value() * -1)) : (delta_tau_n_value())); f_delta_tau_n = true; return m_delta_tau_n; } glonass_t::string_non_immediate_t::string_non_immediate_t(kaitai::kstream* p__io, glonass_t* p__parent, glonass_t* p__root) : kaitai::kstruct(p__io) { m__parent = p__parent; m__root = p__root; try { _read(); } catch(...) { _clean_up(); throw; } } void glonass_t::string_non_immediate_t::_read() { m_data_1 = m__io->read_bits_int_be(64); m_data_2 = m__io->read_bits_int_be(8); } glonass_t::string_non_immediate_t::~string_non_immediate_t() { _clean_up(); } void glonass_t::string_non_immediate_t::_clean_up() { } glonass_t::string_5_t::string_5_t(kaitai::kstream* p__io, glonass_t* p__parent, glonass_t* p__root) : kaitai::kstruct(p__io) { m__parent = p__parent; m__root = p__root; try { _read(); } catch(...) { _clean_up(); throw; } } void glonass_t::string_5_t::_read() { m_n_a = m__io->read_bits_int_be(11); m_tau_c = m__io->read_bits_int_be(32); m_not_used = m__io->read_bits_int_be(1); m_n_4 = m__io->read_bits_int_be(5); m_tau_gps = m__io->read_bits_int_be(22); m_l_n = m__io->read_bits_int_be(1); } glonass_t::string_5_t::~string_5_t() { _clean_up(); } void glonass_t::string_5_t::_clean_up() { } glonass_t::string_1_t::string_1_t(kaitai::kstream* p__io, glonass_t* p__parent, glonass_t* p__root) : kaitai::kstruct(p__io) { m__parent = p__parent; m__root = p__root; f_x_vel = false; f_x_accel = false; f_x = false; try { _read(); } catch(...) { _clean_up(); throw; } } void glonass_t::string_1_t::_read() { m_not_used = m__io->read_bits_int_be(2); m_p1 = m__io->read_bits_int_be(2); m_t_k = m__io->read_bits_int_be(12); m_x_vel_sign = m__io->read_bits_int_be(1); m_x_vel_value = m__io->read_bits_int_be(23); m_x_accel_sign = m__io->read_bits_int_be(1); m_x_accel_value = m__io->read_bits_int_be(4); m_x_sign = m__io->read_bits_int_be(1); m_x_value = m__io->read_bits_int_be(26); } glonass_t::string_1_t::~string_1_t() { _clean_up(); } void glonass_t::string_1_t::_clean_up() { } int32_t glonass_t::string_1_t::x_vel() { if (f_x_vel) return m_x_vel; m_x_vel = ((x_vel_sign()) ? ((x_vel_value() * -1)) : (x_vel_value())); f_x_vel = true; return m_x_vel; } int32_t glonass_t::string_1_t::x_accel() { if (f_x_accel) return m_x_accel; m_x_accel = ((x_accel_sign()) ? ((x_accel_value() * -1)) : (x_accel_value())); f_x_accel = true; return m_x_accel; } int32_t glonass_t::string_1_t::x() { if (f_x) return m_x; m_x = ((x_sign()) ? ((x_value() * -1)) : (x_value())); f_x = true; return m_x; } glonass_t::string_2_t::string_2_t(kaitai::kstream* p__io, glonass_t* p__parent, glonass_t* p__root) : kaitai::kstruct(p__io) { m__parent = p__parent; m__root = p__root; f_y_vel = false; f_y_accel = false; f_y = false; try { _read(); } catch(...) { _clean_up(); throw; } } void glonass_t::string_2_t::_read() { m_b_n = m__io->read_bits_int_be(3); m_p2 = m__io->read_bits_int_be(1); m_t_b = m__io->read_bits_int_be(7); m_not_used = m__io->read_bits_int_be(5); m_y_vel_sign = m__io->read_bits_int_be(1); m_y_vel_value = m__io->read_bits_int_be(23); m_y_accel_sign = m__io->read_bits_int_be(1); m_y_accel_value = m__io->read_bits_int_be(4); m_y_sign = m__io->read_bits_int_be(1); m_y_value = m__io->read_bits_int_be(26); } glonass_t::string_2_t::~string_2_t() { _clean_up(); } void glonass_t::string_2_t::_clean_up() { } int32_t glonass_t::string_2_t::y_vel() { if (f_y_vel) return m_y_vel; m_y_vel = ((y_vel_sign()) ? ((y_vel_value() * -1)) : (y_vel_value())); f_y_vel = true; return m_y_vel; } int32_t glonass_t::string_2_t::y_accel() { if (f_y_accel) return m_y_accel; m_y_accel = ((y_accel_sign()) ? ((y_accel_value() * -1)) : (y_accel_value())); f_y_accel = true; return m_y_accel; } int32_t glonass_t::string_2_t::y() { if (f_y) return m_y; m_y = ((y_sign()) ? ((y_value() * -1)) : (y_value())); f_y = true; return m_y; } glonass_t::string_3_t::string_3_t(kaitai::kstream* p__io, glonass_t* p__parent, glonass_t* p__root) : kaitai::kstruct(p__io) { m__parent = p__parent; m__root = p__root; f_gamma_n = false; f_z_vel = false; f_z_accel = false; f_z = false; try { _read(); } catch(...) { _clean_up(); throw; } } void glonass_t::string_3_t::_read() { m_p3 = m__io->read_bits_int_be(1); m_gamma_n_sign = m__io->read_bits_int_be(1); m_gamma_n_value = m__io->read_bits_int_be(10); m_not_used = m__io->read_bits_int_be(1); m_p = m__io->read_bits_int_be(2); m_l_n = m__io->read_bits_int_be(1); m_z_vel_sign = m__io->read_bits_int_be(1); m_z_vel_value = m__io->read_bits_int_be(23); m_z_accel_sign = m__io->read_bits_int_be(1); m_z_accel_value = m__io->read_bits_int_be(4); m_z_sign = m__io->read_bits_int_be(1); m_z_value = m__io->read_bits_int_be(26); } glonass_t::string_3_t::~string_3_t() { _clean_up(); } void glonass_t::string_3_t::_clean_up() { } int32_t glonass_t::string_3_t::gamma_n() { if (f_gamma_n) return m_gamma_n; m_gamma_n = ((gamma_n_sign()) ? ((gamma_n_value() * -1)) : (gamma_n_value())); f_gamma_n = true; return m_gamma_n; } int32_t glonass_t::string_3_t::z_vel() { if (f_z_vel) return m_z_vel; m_z_vel = ((z_vel_sign()) ? ((z_vel_value() * -1)) : (z_vel_value())); f_z_vel = true; return m_z_vel; } int32_t glonass_t::string_3_t::z_accel() { if (f_z_accel) return m_z_accel; m_z_accel = ((z_accel_sign()) ? ((z_accel_value() * -1)) : (z_accel_value())); f_z_accel = true; return m_z_accel; } int32_t glonass_t::string_3_t::z() { if (f_z) return m_z; m_z = ((z_sign()) ? ((z_value() * -1)) : (z_value())); f_z = true; return m_z; }