You can not select more than 25 topics
			Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
		
		
		
		
			
				
					274 lines
				
				10 KiB
			
		
		
			
		
	
	
					274 lines
				
				10 KiB
			| 
											2 months ago
										 | # This is a generated file! Please edit source .ksy file and use kaitai-struct-compiler to rebuild
 | ||
|  | 
 | ||
|  | import kaitaistruct
 | ||
|  | from kaitaistruct import KaitaiStruct, KaitaiStream, BytesIO
 | ||
|  | from enum import Enum
 | ||
|  | 
 | ||
|  | 
 | ||
|  | if getattr(kaitaistruct, 'API_VERSION', (0, 9)) < (0, 9):
 | ||
|  |     raise Exception("Incompatible Kaitai Struct Python API: 0.9 or later is required, but you have %s" % (kaitaistruct.__version__))
 | ||
|  | 
 | ||
|  | class Ubx(KaitaiStruct):
 | ||
|  | 
 | ||
|  |     class GnssType(Enum):
 | ||
|  |         gps = 0
 | ||
|  |         sbas = 1
 | ||
|  |         galileo = 2
 | ||
|  |         beidou = 3
 | ||
|  |         imes = 4
 | ||
|  |         qzss = 5
 | ||
|  |         glonass = 6
 | ||
|  |     def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |         self._io = _io
 | ||
|  |         self._parent = _parent
 | ||
|  |         self._root = _root if _root else self
 | ||
|  |         self._read()
 | ||
|  | 
 | ||
|  |     def _read(self):
 | ||
|  |         self.magic = self._io.read_bytes(2)
 | ||
|  |         if not self.magic == b"\xB5\x62":
 | ||
|  |             raise kaitaistruct.ValidationNotEqualError(b"\xB5\x62", self.magic, self._io, u"/seq/0")
 | ||
|  |         self.msg_type = self._io.read_u2be()
 | ||
|  |         self.length = self._io.read_u2le()
 | ||
|  |         _on = self.msg_type
 | ||
|  |         if _on == 2569:
 | ||
|  |             self.body = Ubx.MonHw(self._io, self, self._root)
 | ||
|  |         elif _on == 533:
 | ||
|  |             self.body = Ubx.RxmRawx(self._io, self, self._root)
 | ||
|  |         elif _on == 531:
 | ||
|  |             self.body = Ubx.RxmSfrbx(self._io, self, self._root)
 | ||
|  |         elif _on == 309:
 | ||
|  |             self.body = Ubx.NavSat(self._io, self, self._root)
 | ||
|  |         elif _on == 2571:
 | ||
|  |             self.body = Ubx.MonHw2(self._io, self, self._root)
 | ||
|  |         elif _on == 263:
 | ||
|  |             self.body = Ubx.NavPvt(self._io, self, self._root)
 | ||
|  | 
 | ||
|  |     class RxmRawx(KaitaiStruct):
 | ||
|  |         def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |             self._io = _io
 | ||
|  |             self._parent = _parent
 | ||
|  |             self._root = _root if _root else self
 | ||
|  |             self._read()
 | ||
|  | 
 | ||
|  |         def _read(self):
 | ||
|  |             self.rcv_tow = self._io.read_f8le()
 | ||
|  |             self.week = self._io.read_u2le()
 | ||
|  |             self.leap_s = self._io.read_s1()
 | ||
|  |             self.num_meas = self._io.read_u1()
 | ||
|  |             self.rec_stat = self._io.read_u1()
 | ||
|  |             self.reserved1 = self._io.read_bytes(3)
 | ||
|  |             self._raw_meas = []
 | ||
|  |             self.meas = []
 | ||
|  |             for i in range(self.num_meas):
 | ||
|  |                 self._raw_meas.append(self._io.read_bytes(32))
 | ||
|  |                 _io__raw_meas = KaitaiStream(BytesIO(self._raw_meas[i]))
 | ||
|  |                 self.meas.append(Ubx.RxmRawx.Measurement(_io__raw_meas, self, self._root))
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         class Measurement(KaitaiStruct):
 | ||
|  |             def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |                 self._io = _io
 | ||
|  |                 self._parent = _parent
 | ||
|  |                 self._root = _root if _root else self
 | ||
|  |                 self._read()
 | ||
|  | 
 | ||
|  |             def _read(self):
 | ||
|  |                 self.pr_mes = self._io.read_f8le()
 | ||
|  |                 self.cp_mes = self._io.read_f8le()
 | ||
|  |                 self.do_mes = self._io.read_f4le()
 | ||
|  |                 self.gnss_id = KaitaiStream.resolve_enum(Ubx.GnssType, self._io.read_u1())
 | ||
|  |                 self.sv_id = self._io.read_u1()
 | ||
|  |                 self.reserved2 = self._io.read_bytes(1)
 | ||
|  |                 self.freq_id = self._io.read_u1()
 | ||
|  |                 self.lock_time = self._io.read_u2le()
 | ||
|  |                 self.cno = self._io.read_u1()
 | ||
|  |                 self.pr_stdev = self._io.read_u1()
 | ||
|  |                 self.cp_stdev = self._io.read_u1()
 | ||
|  |                 self.do_stdev = self._io.read_u1()
 | ||
|  |                 self.trk_stat = self._io.read_u1()
 | ||
|  |                 self.reserved3 = self._io.read_bytes(1)
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     class RxmSfrbx(KaitaiStruct):
 | ||
|  |         def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |             self._io = _io
 | ||
|  |             self._parent = _parent
 | ||
|  |             self._root = _root if _root else self
 | ||
|  |             self._read()
 | ||
|  | 
 | ||
|  |         def _read(self):
 | ||
|  |             self.gnss_id = KaitaiStream.resolve_enum(Ubx.GnssType, self._io.read_u1())
 | ||
|  |             self.sv_id = self._io.read_u1()
 | ||
|  |             self.reserved1 = self._io.read_bytes(1)
 | ||
|  |             self.freq_id = self._io.read_u1()
 | ||
|  |             self.num_words = self._io.read_u1()
 | ||
|  |             self.reserved2 = self._io.read_bytes(1)
 | ||
|  |             self.version = self._io.read_u1()
 | ||
|  |             self.reserved3 = self._io.read_bytes(1)
 | ||
|  |             self.body = []
 | ||
|  |             for i in range(self.num_words):
 | ||
|  |                 self.body.append(self._io.read_u4le())
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     class NavSat(KaitaiStruct):
 | ||
|  |         def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |             self._io = _io
 | ||
|  |             self._parent = _parent
 | ||
|  |             self._root = _root if _root else self
 | ||
|  |             self._read()
 | ||
|  | 
 | ||
|  |         def _read(self):
 | ||
|  |             self.itow = self._io.read_u4le()
 | ||
|  |             self.version = self._io.read_u1()
 | ||
|  |             self.num_svs = self._io.read_u1()
 | ||
|  |             self.reserved = self._io.read_bytes(2)
 | ||
|  |             self._raw_svs = []
 | ||
|  |             self.svs = []
 | ||
|  |             for i in range(self.num_svs):
 | ||
|  |                 self._raw_svs.append(self._io.read_bytes(12))
 | ||
|  |                 _io__raw_svs = KaitaiStream(BytesIO(self._raw_svs[i]))
 | ||
|  |                 self.svs.append(Ubx.NavSat.Nav(_io__raw_svs, self, self._root))
 | ||
|  | 
 | ||
|  | 
 | ||
|  |         class Nav(KaitaiStruct):
 | ||
|  |             def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |                 self._io = _io
 | ||
|  |                 self._parent = _parent
 | ||
|  |                 self._root = _root if _root else self
 | ||
|  |                 self._read()
 | ||
|  | 
 | ||
|  |             def _read(self):
 | ||
|  |                 self.gnss_id = KaitaiStream.resolve_enum(Ubx.GnssType, self._io.read_u1())
 | ||
|  |                 self.sv_id = self._io.read_u1()
 | ||
|  |                 self.cno = self._io.read_u1()
 | ||
|  |                 self.elev = self._io.read_s1()
 | ||
|  |                 self.azim = self._io.read_s2le()
 | ||
|  |                 self.pr_res = self._io.read_s2le()
 | ||
|  |                 self.flags = self._io.read_u4le()
 | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     class NavPvt(KaitaiStruct):
 | ||
|  |         def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |             self._io = _io
 | ||
|  |             self._parent = _parent
 | ||
|  |             self._root = _root if _root else self
 | ||
|  |             self._read()
 | ||
|  | 
 | ||
|  |         def _read(self):
 | ||
|  |             self.i_tow = self._io.read_u4le()
 | ||
|  |             self.year = self._io.read_u2le()
 | ||
|  |             self.month = self._io.read_u1()
 | ||
|  |             self.day = self._io.read_u1()
 | ||
|  |             self.hour = self._io.read_u1()
 | ||
|  |             self.min = self._io.read_u1()
 | ||
|  |             self.sec = self._io.read_u1()
 | ||
|  |             self.valid = self._io.read_u1()
 | ||
|  |             self.t_acc = self._io.read_u4le()
 | ||
|  |             self.nano = self._io.read_s4le()
 | ||
|  |             self.fix_type = self._io.read_u1()
 | ||
|  |             self.flags = self._io.read_u1()
 | ||
|  |             self.flags2 = self._io.read_u1()
 | ||
|  |             self.num_sv = self._io.read_u1()
 | ||
|  |             self.lon = self._io.read_s4le()
 | ||
|  |             self.lat = self._io.read_s4le()
 | ||
|  |             self.height = self._io.read_s4le()
 | ||
|  |             self.h_msl = self._io.read_s4le()
 | ||
|  |             self.h_acc = self._io.read_u4le()
 | ||
|  |             self.v_acc = self._io.read_u4le()
 | ||
|  |             self.vel_n = self._io.read_s4le()
 | ||
|  |             self.vel_e = self._io.read_s4le()
 | ||
|  |             self.vel_d = self._io.read_s4le()
 | ||
|  |             self.g_speed = self._io.read_s4le()
 | ||
|  |             self.head_mot = self._io.read_s4le()
 | ||
|  |             self.s_acc = self._io.read_s4le()
 | ||
|  |             self.head_acc = self._io.read_u4le()
 | ||
|  |             self.p_dop = self._io.read_u2le()
 | ||
|  |             self.flags3 = self._io.read_u1()
 | ||
|  |             self.reserved1 = self._io.read_bytes(5)
 | ||
|  |             self.head_veh = self._io.read_s4le()
 | ||
|  |             self.mag_dec = self._io.read_s2le()
 | ||
|  |             self.mag_acc = self._io.read_u2le()
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     class MonHw2(KaitaiStruct):
 | ||
|  | 
 | ||
|  |         class ConfigSource(Enum):
 | ||
|  |             flash = 102
 | ||
|  |             otp = 111
 | ||
|  |             config_pins = 112
 | ||
|  |             rom = 113
 | ||
|  |         def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |             self._io = _io
 | ||
|  |             self._parent = _parent
 | ||
|  |             self._root = _root if _root else self
 | ||
|  |             self._read()
 | ||
|  | 
 | ||
|  |         def _read(self):
 | ||
|  |             self.ofs_i = self._io.read_s1()
 | ||
|  |             self.mag_i = self._io.read_u1()
 | ||
|  |             self.ofs_q = self._io.read_s1()
 | ||
|  |             self.mag_q = self._io.read_u1()
 | ||
|  |             self.cfg_source = KaitaiStream.resolve_enum(Ubx.MonHw2.ConfigSource, self._io.read_u1())
 | ||
|  |             self.reserved1 = self._io.read_bytes(3)
 | ||
|  |             self.low_lev_cfg = self._io.read_u4le()
 | ||
|  |             self.reserved2 = self._io.read_bytes(8)
 | ||
|  |             self.post_status = self._io.read_u4le()
 | ||
|  |             self.reserved3 = self._io.read_bytes(4)
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     class MonHw(KaitaiStruct):
 | ||
|  | 
 | ||
|  |         class AntennaStatus(Enum):
 | ||
|  |             init = 0
 | ||
|  |             dontknow = 1
 | ||
|  |             ok = 2
 | ||
|  |             short = 3
 | ||
|  |             open = 4
 | ||
|  | 
 | ||
|  |         class AntennaPower(Enum):
 | ||
|  |             false = 0
 | ||
|  |             true = 1
 | ||
|  |             dontknow = 2
 | ||
|  |         def __init__(self, _io, _parent=None, _root=None):
 | ||
|  |             self._io = _io
 | ||
|  |             self._parent = _parent
 | ||
|  |             self._root = _root if _root else self
 | ||
|  |             self._read()
 | ||
|  | 
 | ||
|  |         def _read(self):
 | ||
|  |             self.pin_sel = self._io.read_u4le()
 | ||
|  |             self.pin_bank = self._io.read_u4le()
 | ||
|  |             self.pin_dir = self._io.read_u4le()
 | ||
|  |             self.pin_val = self._io.read_u4le()
 | ||
|  |             self.noise_per_ms = self._io.read_u2le()
 | ||
|  |             self.agc_cnt = self._io.read_u2le()
 | ||
|  |             self.a_status = KaitaiStream.resolve_enum(Ubx.MonHw.AntennaStatus, self._io.read_u1())
 | ||
|  |             self.a_power = KaitaiStream.resolve_enum(Ubx.MonHw.AntennaPower, self._io.read_u1())
 | ||
|  |             self.flags = self._io.read_u1()
 | ||
|  |             self.reserved1 = self._io.read_bytes(1)
 | ||
|  |             self.used_mask = self._io.read_u4le()
 | ||
|  |             self.vp = self._io.read_bytes(17)
 | ||
|  |             self.jam_ind = self._io.read_u1()
 | ||
|  |             self.reserved2 = self._io.read_bytes(2)
 | ||
|  |             self.pin_irq = self._io.read_u4le()
 | ||
|  |             self.pull_h = self._io.read_u4le()
 | ||
|  |             self.pull_l = self._io.read_u4le()
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     @property
 | ||
|  |     def checksum(self):
 | ||
|  |         if hasattr(self, '_m_checksum'):
 | ||
|  |             return self._m_checksum
 | ||
|  | 
 | ||
|  |         _pos = self._io.pos()
 | ||
|  |         self._io.seek((self.length + 6))
 | ||
|  |         self._m_checksum = self._io.read_u2le()
 | ||
|  |         self._io.seek(_pos)
 | ||
|  |         return getattr(self, '_m_checksum', None)
 | ||
|  | 
 | ||
|  | 
 |