def test_mgmt_lqi_rsp(): frame = uart.UnpiFrame( 2, 5, 177, b"\x00\x00\x00\x14\x00\x03\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\x1d$&\xfe\xffW\xb4\x14\xef>\x15\x02\x01\x00\xdd" b"\xdd\xdd\xdd\xdd\xdd\xdd\xdd\x9atk\x03\x00\x8d\x15\x00}0\x12\x02\x01`\xdd\xdd\xdd\xdd\xdd\xdd\xdd\xdd\x8d(," b"\x03\x00\x8d\x15\x00}\xcc\x12\x02\x017", 72, 34, ) obj = ZpiObject.from_unpi_frame(frame) assert ( "AREQ ZDO mgmtLqiRsp tsn: None {" "'srcaddr': 0x0000, " "'status': 0, " "'neighbortableentries': 20, " "'startindex': 0, " "'neighborlqilistcount': 3, " "'neighborlqilist': [" "{'extPanId': dd:dd:dd:dd:dd:dd:dd:dd, 'extAddr': 14:b4:57:ff:fe:26:24:1d, 'nwkAddr': 0x3EEF, " "'deviceType': 1, 'rxOnWhenIdle': 1, 'relationship': 1, 'permitJoin': 2, 'depth': 1, 'lqi': 0}, " "{'extPanId': dd:dd:dd:dd:dd:dd:dd:dd, 'extAddr': 00:15:8d:00:03:6b:74:9a, 'nwkAddr': 0x307D, " "'deviceType': 2, 'rxOnWhenIdle': 0, 'relationship': 1, 'permitJoin': 2, 'depth': 1, 'lqi': 96}, " "{'extPanId': dd:dd:dd:dd:dd:dd:dd:dd, 'extAddr': 00:15:8d:00:03:2c:28:8d, 'nwkAddr': 0xCC7D, " "'deviceType': 2, 'rxOnWhenIdle': 0, 'relationship': 1, 'permitJoin': 2, 'depth': 1, 'lqi': 55}" "]}" == str(obj) )
def test_ieee_addr(): frame = uart.UnpiFrame( 3, 7, 0, b"\x00\x0c%\xed\x18\x00K\x12\x00\x00\x00\x07\t\x02J\xd0]\x97") obj = ZpiObject.from_unpi_frame(frame) out = obj.to_unpi_frame() assert out.data == b"\x00\x00\x12K\x00\x18\xed%\x0c\x00\x00\x07\t\x02J\xd0]\x97"
def data_received(self, frame): try: obj = ZpiObject.from_unpi_frame(frame) except Exception as e: LOGGER.error("Error while parsing frame: %s", frame) raise e for waiter_id in list(self._waiters): waiter = self._waiters.get(waiter_id) if waiter.match(obj): self._waiters.pop(waiter_id) waiter.set_result(obj) if waiter.sequence: obj.sequence = waiter.sequence break LOGGER.debug("<-- %s", obj) if self._app is not None: self._app.handle_znp(obj) try: getattr(self, "_handle_%s" % (obj.command, ))(obj) except AttributeError: pass
def test_ieee_addr(): # 3 - 7 - 0 - 18 - [bytearray(b'\x00\x0c%\xed\x18\x00K\x12\x00\x00\x00\x07\t\x02J\xd0]\x97')] - 172 frame = uart.UnpiFrame(3, 7, 0, b'\x00\x0c%\xed\x18\x00K\x12\x00\x00\x00\x07\t\x02J\xd0]\x97') obj = ZpiObject.from_unpi_frame(frame) out = obj.to_unpi_frame() assert out.data == b'\x00\x00\x12K\x00\x18\xed%\x0c\x00\x00\x07\t\x02J\xd0]\x97'
def test_from_unpi_frame2(): frame = uart.UnpiFrame( 2, 4, 129, b'\x00\x00\x01\x00\xbbm\x01\x01\x00s\x00YC3\x00\x00\t\x18\x01\x01\x04\x00\x86\x05\x00\x86\xbbm\x1d' ) obj = ZpiObject.from_unpi_frame(frame) assert "AREQ AF incomingMsg tsn: None {'groupid': 0, 'clusterid': 1, 'srcaddr': 0x6dbb, " \ "'srcendpoint': 1, 'dstendpoint': 1, 'wasbroadcast': 0, 'linkquality': 115, " \ "'securityuse': 0, 'timestamp': 3359577, 'transseqnumber': 0, 'len': 9, " \ "'data': b'\\x18\\x01\\x01\\x04\\x00\\x86\\x05\\x00\\x86'}" == str(obj)
def test_from_unpi_frame(): frame = uart.UnpiFrame(3, 1, 2, b"\x02\x00\x02\x06\x03\x90\x154\x01") extra = { "maintrel": 3, "majorrel": 2, "minorrel": 6, "product": 0, "revision": 20190608, "transportrev": 2, } obj = ZpiObject.from_unpi_frame(frame) assert obj.command == "version" assert obj.payload == extra assert str(obj.to_unpi_frame()) == str(frame)
def test_mgmt_nwk_update_notify(): frame = uart.UnpiFrame( 2, 5, 184, b"\xe9\xc0\x00\x00\xf8\xff\x07\x14\x00\x0f\x00\x10\xd6\xac" b"\xcc\xb0\xb5\xa2\xb2\xa5\xb3\xa5\xa2\xa9\xa1\xa1\xa5\xae", 28, 211, ) obj = ZpiObject.from_unpi_frame(frame) assert ( "AREQ ZDO mgmtNwkUpdateNotify tsn: None {'srcaddr': 0xc0e9, 'status': 0, 'scanchannels': 134215680, " "'totaltransmissions': 20, 'transmissionfailures': 15, 'channelcount': 16, " "'energyvalues': [214, 172, 204, 176, 181, 162, 178, 165, 179, 165, 162, 169, 161, 161, 165, 174]" "}" == str(obj))
def test_from_unpi_frame(): frame = uart.UnpiFrame(3, 1, 2, b"\x02\x00\x02\x06\x03\x90\x154\x01") extra = { 'maintrel': 3, 'majorrel': 2, 'minorrel': 6, 'product': 0, 'revision': 20190608, 'transportrev': 2, } obj = ZpiObject.from_unpi_frame(frame) assert obj.command == 'version' assert obj.payload == extra assert str(obj.to_unpi_frame()) == str(frame)