Example #1
0
 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)
Example #2
0
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)
Example #3
0
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)
Example #4
0
    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
Example #5
0
def addr_nwk():
    addr = t.DeconzAddress()
    addr.address_mode = t.ADDRESS_MODE.NWK
    addr.address = b'\x00\x01'
    return addr
Example #6
0
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
Example #7
0
def addr_ieee(ieee):
    addr = t.DeconzAddress()
    addr.address_mode = t.ADDRESS_MODE.IEEE
    addr.address = ieee
    return addr
Example #8
0
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
Example #9
0
def addr_nwk(nwk):
    addr = t.DeconzAddress()
    addr.address_mode = t.ADDRESS_MODE.NWK
    addr.address = nwk
    return addr