예제 #1
0
 def test_encode_decode1(self):
     pkt = Packet(
         address=0x00,
         seq=0x00,
         command=CommandType.USER_INTERFACE,
         data='A1234E',
         timestamp=None,
     )
     self.assertEqual(pkt.length, 6)
     self.assertEqual(pkt.encode(), '8300660A1234E49')
예제 #2
0
 def test_encode_cecode2(self):
     pkt = Packet(
         address=0x00,
         seq=0x00,
         command=CommandType.USER_INTERFACE,
         data='000100',
         timestamp=datetime.datetime(
             year=2018, month=5, day=10, hour=15, minute=32, second=55),
     )
     self.assertEqual(pkt.length, 3)
     self.assertEqual(pkt.encode(), '87000360000100180510153255E3')
예제 #3
0
def make_packet(command: CommandType, data: str):
    return Packet(address=0,
                  command=command,
                  seq=0,
                  timestamp=None,
                  data=data,
                  is_user_interface_resp=True)
예제 #4
0
 def test_decode_with_address(self):
     pkt = Packet.decode('820003600000001b')
     self.assertEqual(pkt.address, 0x00)
     self.assertEqual(pkt.length, 3)
     self.assertEqual(pkt.seq, 0x00)
     self.assertEqual(pkt.command, CommandType.USER_INTERFACE)
     self.assertEqual(pkt.data, '000000')
     self.assertIsNone(pkt.timestamp)
     self.assertTrue(pkt.is_user_interface_resp)
예제 #5
0
 def test_decode_without_address(self):
     pkt = Packet.decode('820361230001f6')
     self.assertIsNone(pkt.address)
     self.assertEqual(pkt.length, 3)
     self.assertEqual(pkt.seq, 0x00)
     self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS)
     self.assertEqual(pkt.data, '230001')
     self.assertIsNone(pkt.timestamp)
     self.assertFalse(pkt.is_user_interface_resp)
예제 #6
0
 def test_decode_with_address_and_time(self):
     pkt = Packet.decode('8709036101050018122709413536')
     self.assertEqual(pkt.address, 0x09)
     self.assertEqual(pkt.length, 3)
     self.assertEqual(pkt.seq, 0x00)
     self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS)
     self.assertEqual(pkt.data, '010500')
     self.assertEqual(pkt.timestamp, datetime.datetime(
         year=2018, month=12, day=27, hour=9, minute=41, second=35))
     self.assertFalse(pkt.is_user_interface_resp)
예제 #7
0
 def test_user_interface_packet_decode(self):
     pkt = Packet.decode('8300c6012345678912EE7')
     self.assertEqual(pkt.start, 0x83)
     self.assertEqual(pkt.address, 0x00)
     self.assertEqual(pkt.length, 12)
     self.assertEqual(pkt.seq, 0x00)
     self.assertEqual(pkt.command, CommandType.USER_INTERFACE)
     self.assertEqual(pkt.data, '12345678912E')
     self.assertIsNone(pkt.timestamp)
     self.assertEqual(pkt.checksum, 0xe7)
예제 #8
0
 def test_system_status_packet_decode(self):
     pkt = Packet.decode('8700036100070018092118370974')
     self.assertEqual(pkt.start, 0x87)
     self.assertEqual(pkt.address, 0x00)
     self.assertEqual(pkt.length, 3)
     self.assertEqual(pkt.seq, 0x00)
     self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS)
     self.assertEqual(pkt.data, '000700')
     self.assertEqual(pkt.timestamp, datetime.datetime(
         year=2018, month=9, day=21, hour=18, minute=37, second=9))
예제 #9
0
 def test_decode_zone_16(self):
     pkt = Packet.decode('8700036100160019022823032274')
     self.assertEqual(pkt.start, 0x87)
     self.assertEqual(pkt.address, 0x00)
     self.assertEqual(pkt.length, 3)
     self.assertEqual(pkt.seq, 0x00)
     self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS)
     self.assertEqual(pkt.data, '001600')
     self.assertEqual(pkt.timestamp, datetime.datetime(
         year=2019, month=2, day=28, hour=23, minute=3, second=22))
예제 #10
0
 def test_bad_timestamp(self):
     pkt = Packet.decode('8700036100070019022517600057')
     self.assertEqual(pkt.start, 0x87)
     self.assertEqual(pkt.address, 0x00)
     self.assertEqual(pkt.length, 3)
     self.assertEqual(pkt.seq, 0x00)
     self.assertEqual(pkt.command, CommandType.SYSTEM_STATUS)
     self.assertEqual(pkt.data, '000700')
     self.assertEqual(pkt.timestamp, datetime.datetime(
         year=2019, month=2, day=25, hour=18, minute=0, second=0))
예제 #11
0
 def test_decode_status_update_response(self):
     '''
     82 00 03 60 070000 14
     '''
     pkt = Packet.decode('8200036007000014')
     self.assertEqual(pkt.start, 0x82)
     self.assertEqual(pkt.address, 0x00)
     self.assertEqual(pkt.length, 3)
     self.assertEqual(pkt.seq, 0x00)
     self.assertEqual(pkt.command, CommandType.USER_INTERFACE)
     self.assertEqual(pkt.data, '070000')
     self.assertIsNone(pkt.timestamp)
예제 #12
0
 def test_decode(self):
     with open(fixture_path('sample_output.txt')) as f:
         for line in f.readlines():
             line = line.strip()
             pkt = Packet.decode(line)
             _LOGGER.info("Decoded '%s' into %s", line, pkt)
예제 #13
0
 def test_decode_update(self):
     pkt = Packet.decode('820003601700867e')
     event = BaseEvent.decode(pkt)
     print(pkt)
     print(event)