public void TestReceive2()
        {
            ZToolPacket data = GetPacket(
                "FE 18 45 84 21 A4 00 21 A4 12 02 04 01 01 00 00 02 00 00 03 00 03 05 00 06 00 08 00 C4");

            ZigBeeApsFrame apsFrame = ZdoSimpleDescriptor.Create(data);

            Assert.Equal(42017, apsFrame.SourceAddress);
            Assert.Equal(0, apsFrame.Profile);
            Assert.Equal(0, apsFrame.DestinationEndpoint);
            Assert.Equal(GetPacketData("A4 00 21 A4 12 02 04 01 01 00 00 02 00 00 03 00 03 05 00 06 00 08 00"),
                         apsFrame.Payload);
        }
        public void TestReceive1()
        {
            ZToolPacket data = GetPacket(
                "FE 2E 45 84 00 00 00 00 00 28 01 04 01 00 00 00 00 10 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0F 00 0A 00 0C 00 15 00 00 01 01 01 CF");

            ZigBeeApsFrame apsFrame = ZdoSimpleDescriptor.Create(data);

            Assert.Equal(0x0000, apsFrame.SourceAddress);
            Assert.Equal(0, apsFrame.Profile);
            Assert.Equal(0, apsFrame.DestinationEndpoint);
            Assert.Equal(GetPacketData(
                             "00 00 00 00 28 01 04 01 00 00 00 00 10 00 00 01 00 02 00 03 00 04 00 05 00 06 00 07 00 08 00 09 00 0F 00 0A 00 0C 00 15 00 00 01 01 01"),
                         apsFrame.Payload);
        }
        public void ReceivedAsynchronousCommand(ZToolPacket packet)
        {
            switch (packet.Subsystem)
            {
            case ZToolPacket.CommandSubsystem.AF:
                return;

            case ZToolPacket.CommandSubsystem.ZDO:
                break;

            default:
                break;
            }

            ZigBeeApsFrame apsFrame = null;

            switch ((ZToolCMD)packet.CMD.Value)
            {
            case ZToolCMD.ZDO_MSG_CB_INCOMING:
                apsFrame = ZdoCallbackIncoming.Create(packet);
                break;

            case ZToolCMD.ZDO_IEEE_ADDR_RSP:
                apsFrame = ZdoIeeeAddress.Create(packet);
                break;

            case ZToolCMD.ZDO_END_DEVICE_ANNCE_IND:
                apsFrame = ZdoEndDeviceAnnounce.Create(packet);
                break;

            case ZToolCMD.ZDO_NODE_DESC_RSP:
                apsFrame = ZdoNodeDescriptor.Create(packet);
                break;

            case ZToolCMD.ZDO_POWER_DESC_RSP:
                apsFrame = ZdoPowerDescriptor.Create(packet);
                break;

            case ZToolCMD.ZDO_ACTIVE_EP_RSP:
                apsFrame = ZdoActiveEndpoint.Create(packet);
                break;

            case ZToolCMD.ZDO_SIMPLE_DESC_RSP:
                apsFrame = ZdoSimpleDescriptor.Create(packet);
                break;

            case ZToolCMD.ZDO_MGMT_LQI_RSP:
                apsFrame = ZdoManagementLqi.Create(packet);
                break;

            case ZToolCMD.ZDO_MGMT_RTG_RSP:
                apsFrame = ZdoManagementRouting.Create(packet);
                break;

            case ZToolCMD.ZDO_MGMT_LEAVE_RSP:
                apsFrame = ZdoManagementLeave.Create(packet);
                break;

            default:
                _logger.Debug($"Unhandled SerialPacket type {packet.CMD}");
                break;
            }

            if (apsFrame != null)
            {
                _ZigBeeNetworkReceive.ReceiveCommand(apsFrame);
                return;
            }
        }