  
  void glonass_t::string_4_t::_clean_up() {
  }
  
  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;
  
 
</s> remove     m_x_vel = m__io->read_bits_int_be(24);
    m_x_speedup = m__io->read_bits_int_be(5);
    m_x = m__io->read_bits_int_be(27);
 </s> add     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);
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;
}

  
  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;
  
keep keep keep add keep keep keep keep
 Ubloxd: glonass parsing tests (#27125)

* add glonass kaitai parsing

* add kaita generated files

* remove glonass from build

* add string non immediate type

* fix kaitai bug

* cleanUp

* add patch file

* fix scons order

* make lookup const

* remove comments

* rename

* add to release files

* remove printf

* add signs

* add glonass parsing test

* finish up glonass kaitai tests

* move cereal back to master

* ignore test_runner

* sign is not two complement

* address comments
---------

Co-authored-by: Kurt Nistelberger <kurt.nistelberger@gmail.com> 
selfdrive/locationd/generated/glonass.cpp