def mock_cmd(*args, **kwargs): res = asyncio.Future() s = mock.sentinel if success: res.set_result([ s.len, 0x22, t.DeconzAddress(), 1, t.DeconzAddress(), 1, 0x0104, 0x0000, b'\x00\x01\x02' ]) return asyncio.wait_for(res, timeout=deconz_api.COMMAND_TIMEOUT)
def test_api_frame(api): addr = t.DeconzAddress() addr.address_mode = t.ADDRESS_MODE.NWK addr.address = t.uint8_t(0) for cmd_name, cmd_opts in deconz_api.TX_COMMANDS.items(): _, schema, _ = cmd_opts if schema: args = [ addr if isinstance(a(), t.DeconzAddress) else a() for a in schema ] api._api_frame(cmd_name, *args) else: api._api_frame(cmd_name)
def test_api_frame(api): addr = t.DeconzAddress() addr.address_mode = t.ADDRESS_MODE.NWK addr.address = t.uint8_t(0) addr.endpoint = t.uint8_t(0) for cmd, schema in deconz_api.TX_COMMANDS.items(): if schema: args = [ addr if isinstance(a(), t.DeconzAddressEndpoint) else a() for a in schema ] api._api_frame(cmd, *args) else: api._api_frame(cmd)
async def request(self, nwk, profile, cluster, src_ep, dst_ep, sequence, data, expect_reply=True, timeout=10): LOGGER.debug("Zigbee request with id %s, data: %s", sequence, binascii.hexlify(data)) assert sequence not in self._pending send_fut = asyncio.Future() reply_fut = None if expect_reply: reply_fut = asyncio.Future() self._pending[sequence] = (send_fut, reply_fut) dst_addr = t.DeconzAddress() dst_addr.address_mode = t.uint8_t(t.ADDRESS_MODE.NWK.value) dst_addr.address = t.uint16_t(nwk) await self._api.aps_data_request(sequence, dst_addr, dst_ep, profile, cluster, min(1, src_ep), data) try: r = await asyncio.wait_for(send_fut, SEND_CONFIRM_TIMEOUT) except asyncio.TimeoutError: self._pending.pop(sequence, None) LOGGER.warning( "Failed to receive transmit confirm for request id: %s", sequence) raise if r: LOGGER.warning("Error while sending frame: 0x%02x", r) if not expect_reply: self._pending.pop(sequence, None) return try: return await asyncio.wait_for(reply_fut, timeout) except asyncio.TimeoutError: self._pending.pop(sequence, None) raise
def addr_nwk(): addr = t.DeconzAddress() addr.address_mode = t.ADDRESS_MODE.NWK addr.address = b'\x00\x01' return addr
def addr_ieee(): addr = t.DeconzAddress() addr.address_mode = t.ADDRESS_MODE.IEEE addr.address = b'\x00\x01\x02\x03\x04\x05\x06\x07' return addr
def addr_ieee(ieee): addr = t.DeconzAddress() addr.address_mode = t.ADDRESS_MODE.IEEE addr.address = ieee return addr
def addr_nwk_and_ieee(nwk, ieee): addr = t.DeconzAddress() addr.address_mode = t.ADDRESS_MODE.NWK_AND_IEEE addr.address = nwk addr.ieee = ieee return addr
def addr_nwk(nwk): addr = t.DeconzAddress() addr.address_mode = t.ADDRESS_MODE.NWK addr.address = nwk return addr