def test_ok_t0x69_00(self): data = b'i\x0c\xa2e\r#\xb8\x0f\xde\xb6\x0f\xb32\x11\xf04\x11w\xcc\x0e#c\r\xb5d\r3g' subframe = Subframe.parse(data, (0, ) * len(data)) self.assertEqual(subframe.sf_type, SF_TYPE_MEASUREMENTS) self.assertEqual(subframe.sf_bytes, data[2:-2]) self.assertEqual(subframe.ch1, 0x0d65a2) self.assertEqual(subframe.ch2, 0x0fb823) self.assertEqual(subframe.ch3, 0x0fb6de) self.assertEqual(subframe.ch4, 0x1132b3) self.assertEqual(subframe.ch5, 0x1134f0) self.assertEqual(subframe.ch6, 0x0ecc77) self.assertEqual(subframe.ch7, 0x0d6323) self.assertEqual(subframe.ch8, 0x0d64b5)
def _parse(self, data, frame_prev): data = data[2*6:2*240] data, status = data[::2], data[1::2] idx = 0 self._sf_len = [] self._broken = False while data: try: subframe = Subframe.parse(data, status) self[subframe.sf_type] = subframe sf_len = len(subframe) except SubframeError: if frame_prev is None: return self._broken = True if len(frame_prev._sf_len) <= idx: return sf_len = frame_prev._sf_len[idx] data = data[sf_len:] status = status[sf_len:] self._sf_len.append(sf_len) idx += 1
def test_ok_t0x01_00(self): data = b'\x01\x04\x01\x02\x03\x04\x05\x06\x07\x08\x92\x47' subframe = Subframe.parse(data, (0, ) * len(data)) self.assertEqual(subframe.sf_type, 0x01) self.assertEqual(subframe.sf_bytes, data[2:-2])
def test_ok_t0xff_00(self): data = b'\xff\x02\x02\x00\x02\x00' subframe = Subframe.parse(data, (0, ) * len(data)) self.assertEqual(subframe.sf_type, SF_TYPE_PADDING) self.assertEqual(subframe.sf_bytes, data[2:])
def test_ok_t0x68_00(self): data = b'h\x05\x03\x03\x00\x00\x00\x00\x00\x00\x00\x00\xb2}' subframe = Subframe.parse(data, (0, ) * len(data)) self.assertEqual(subframe.sf_type, SF_TYPE_WTF1) self.assertEqual(subframe.sf_bytes, data[2:-2])
def test_ok_t0x67_00(self): data = b'g=\xc1\xbd\xf0\xff\x99\xaa\n\x00\x00\x00\x00\x00\x00\x00\xf0\xf0\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\xdcx\xf2\x00\xf4cJ\x00w\xd1\x17\x01)\xb8\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\x19\xf7\x16\x00\xe9p\x94\x00\xaek' subframe = Subframe.parse(data, (0, ) * len(data)) self.assertEqual(subframe.sf_type, SF_TYPE_GPS) self.assertEqual(subframe.sf_bytes, data[2:-2])
def test_ok_t0x65_00(self): data = b'e\x10\xf1 J1553020\x00q\x00\x11P\xbez|\x9a\x13<{&\x87t\xb8|!\x96\x8b\xf5\xfa' subframe = Subframe.parse(data, (0, ) * len(data)) self.assertEqual(subframe.sf_type, SF_TYPE_CONFIG) self.assertEqual(subframe.sf_bytes, data[2:-2])