Example #1
0
        public ZDO_END_DEVICE_ANNCE_IND(byte[] framedata)
        {
            SrcAddr      = new ZToolAddress16(framedata[1], framedata[0]);
            NwkAddr      = new ZToolAddress16(framedata[3], framedata[2]);
            IEEEAddr     = new ZToolAddress64(BitConverter.ToInt64(framedata, 4));
            Capabilities = framedata[12];

            BuildPacket((ushort)ZToolCMD.ZDO_END_DEVICE_ANNCE_IND, framedata);
        }
Example #2
0
 public NeighborLqiListItemClass(long extendedPanID, ZToolAddress64 extendedAddress,
                                 ZToolAddress16 networkAddress, int flags, int joining, int depth, int rxLqi)
 {
     this.extendedPanID   = extendedPanID;
     this.extendedAddress = extendedAddress;
     this.networkAddress  = networkAddress;
     this.Reserved_Relationship_RxOnWhenIdle_DeviceType = flags;
     this.Reserved_PermitJoining = joining;
     this.depth = depth;
     this.rxLQI = rxLqi;
 }
Example #3
0
        public ZDO_TC_DEVICE_IND(byte[] framedata)
        {
            SrcAddr = new ZToolAddress16(framedata[1], framedata[0]);
            byte[] bytes = new byte[8];
            for (int i = 0; i < 8; i++)
            {
                bytes[i] = framedata[9 - i];
            }
            IeeeAddr = new ZToolAddress64(bytes);
            NwkAddr  = new ZToolAddress16(framedata[11], framedata[10]);

            BuildPacket((ushort)ZToolCMD.ZDO_TC_DEVICE_IND, framedata);
        }
Example #4
0
        public ZDO_END_DEVICE_ANNCE(ZToolAddress16 num1, ZToolAddress64 num2, int capability_info1)
        {
            this.nwkAddr      = num1;
            this.IEEEAddress  = num2;
            this.Capabilities = capability_info1;

            byte[] framedata = new byte[11];
            framedata[0] = this.nwkAddr.Lsb;
            framedata[1] = this.nwkAddr.Msb;
            byte[] bytes = this.IEEEAddress.Address;
            for (int i = 0; i < 8; i++)
            {
                framedata[i + 2] = bytes[7 - i];
            }
            BuildPacket((ushort)ZToolCMD.ZDO_END_DEVICE_ANNCE, framedata);
        }
Example #5
0
        public ZDO_IEEE_ADDR_RSP(byte[] data)
        {
            Status      = (PacketStatus)data[0];
            IeeeAddr    = new ZToolAddress64(BitConverter.ToInt64(data, 1));
            NwkAddr     = new ZToolAddress16(data[10], data[9]);
            StartIndex  = data[11];
            NumAssocDev = data[12];

            AssocDevList = new List <ZToolAddress16>();
            for (int i = 0; i < AssocDevList.Count; i++)
            {
                this.AssocDevList[i] = new ZToolAddress16(data[14 + (i * 2)], data[13 + (i * 2)]);
            }

            BuildPacket((ushort)ZToolCMD.ZDO_IEEE_ADDR_RSP, data);
        }
Example #6
0
        public ZDO_MGMT_LEAVE_REQ(ZToolAddress16 num1, ZToolAddress64 num2, byte flag1)
        {
            this.DstAddr               = num1;
            this.DeviceAddress         = num2;
            this.RemoveChildren_Rejoin = flag1;

            byte[] framedata = new byte[11];
            framedata[0] = this.DstAddr.Lsb;
            framedata[1] = this.DstAddr.Msb;
            for (int i = 0; i < 8; i++)
            {
                framedata[2 + i] = this.DeviceAddress.Address[7 - i];
            }
            framedata[10] = this.RemoveChildren_Rejoin;
            BuildPacket(new DoubleByte((ushort)ZToolCMD.ZDO_MGMT_LEAVE_REQ), framedata);
        }
Example #7
0
        public ZB_BIND_DEVICE(bool create, ushort commandId, ZToolAddress64 destination)
        {
            Create      = create;
            CommandId   = commandId;
            Destination = destination;

            byte[] framedata = new byte[11];
            framedata[0] = create ? (byte)0x01 : (byte)0x00;
            framedata[1] = commandId.GetLSB();
            framedata[2] = commandId.GetMSB();

            byte[] dst = destination.Address;
            for (int i = 3; i < 8; i++)
            {
                framedata[i] = dst[i - 3];
            }

            BuildPacket((ushort)ZToolCMD.ZB_BIND_DEVICE, framedata);
        }
Example #8
0
        public ZB_BIND_DEVICE(bool create, DoubleByte commandId, ZToolAddress64 destination)
        {
            Create      = create;
            CommandId   = commandId;
            Destination = destination;

            byte[] framedata = new byte[11];
            framedata[0] = create ? (byte)0x01 : (byte)0x00;
            framedata[1] = commandId.Lsb;
            framedata[2] = commandId.Msb;

            byte[] dst = destination.Address;
            for (int i = 3; i < 8; i++)
            {
                framedata[i] = dst[i - 3];
            }

            BuildPacket(new DoubleByte(ZToolCMD.ZB_BIND_DEVICE), framedata);
        }
Example #9
0
        public ZDO_BIND_REQ(ZToolAddress16 nwkDst, ZToolAddress64 ieeeSrc, byte epSrc, DoubleByte cluster,
                            Address_Mode addressingMode, ZToolAddress64 ieeeDst, byte epDst)
        {
            byte[] framedata;
            if (addressingMode == Address_Mode.ADDRESS_64_BIT)
            {
                framedata = new byte[23];
            }
            else
            {
                framedata = new byte[16];
            }
            framedata[0] = nwkDst.Lsb;
            framedata[1] = nwkDst.Msb;
            byte[] bytes = ieeeSrc.Address;
            for (int i = 0; i < 8; i++)
            {
                framedata[i + 2] = (byte)(bytes[7 - i] & 0xFF);
            }
            framedata[10] = epSrc;

            framedata[11] = cluster.Lsb;
            framedata[12] = cluster.Msb;
            framedata[13] = (byte)addressingMode;
            bytes         = ieeeDst.Address;
            if (addressingMode == Address_Mode.ADDRESS_64_BIT)
            {
                for (int i = 0; i < 8; i++)
                {
                    framedata[i + 14] = (byte)(bytes[7 - i] & 0xFF);
                }
                framedata[22] = epDst;
            }
            else
            {
                framedata[14] = bytes[7];
                framedata[15] = bytes[6];
            }

            BuildPacket(new DoubleByte((ushort)ZToolCMD.ZDO_BIND_REQ), framedata);
        }
Example #10
0
        public ZDO_MGMT_LQI_RSP(byte[] framedata)
        {
            SrcAddress = new ZToolAddress16(framedata[1], framedata[0]);
            Status     = framedata[2];
            if (framedata.Length > 3)
            {
                NeighborLQIEntries = framedata[3];
                StartIndex         = framedata[4];
                NeighborLQICount   = framedata[5];
                NeighborLqiList    = new NeighborLqiListItemClass[framedata[5]];

                int NOpt1;
                int NOpt2;

                int    k     = 0;
                byte[] bytes = new byte[8];
                for (int z = 0; z < this.NeighborLqiList.Length; z++)
                {
                    for (int j = 0; j < 8; j++)
                    {
                        bytes[7 - j] = (byte)framedata[6 + k + j];/// MSB><LSB?
                    }
                    long panId = ByteUtils.ConvertMultiByteToLong(bytes);
                    for (int j = 0; j < 8; j++)
                    {
                        bytes[7 - j] = (byte)framedata[14 + k + j];/// MSB><LSB?
                    }
                    ZToolAddress64 ieeeAddr = new ZToolAddress64(bytes);
                    ZToolAddress16 nwkAddr  = new ZToolAddress16(framedata[23 + k], framedata[22 + k]);/// MSB><LSB?
                    NOpt1 = framedata[24 + k];
                    NOpt2 = framedata[25 + k];
                    byte lqi   = framedata[26 + k];
                    byte depth = framedata[27 + k];
                    NeighborLqiList[z] = new NeighborLqiListItemClass(panId, ieeeAddr, nwkAddr, NOpt1, NOpt2, lqi, depth);
                    k += 22;
                }
            }
            BuildPacket((ushort)ZToolCMD.ZDO_MGMT_LQI_RSP, framedata);
        }
Example #11
0
 public ZDO_UNBIND_REQ(ZToolAddress16 nwkDst, ZToolAddress64 ieeeSrc, byte epSrc, ushort cluster,
                       byte addressingMode, ZToolAddress64 ieeeDst, byte epDst)
 {
     byte[] framedata;
     if (addressingMode == 3)
     {
         framedata = new byte[23];
     }
     else
     {
         framedata = new byte[16];
     }
     framedata[0] = nwkDst.Lsb;
     framedata[1] = nwkDst.Msb;
     byte[] bytes = ieeeSrc.Address;
     for (int i = 0; i < 8; i++)
     {
         framedata[i + 2] = (byte)(bytes[7 - i] & 0xFF);
     }
     framedata[10] = epSrc;
     framedata[11] = cluster.GetLSB();
     framedata[12] = cluster.GetMSB();
     framedata[13] = addressingMode;
     bytes         = ieeeDst.Address;
     if (addressingMode == 3)
     {
         for (int i = 0; i < 8; i++)
         {
             framedata[i + 14] = (byte)(bytes[7 - i] & 0xFF);
         }
         framedata[22] = epDst;
     }
     else
     {
         framedata[14] = bytes[7];
         framedata[15] = bytes[6];
     }
     BuildPacket((ushort)ZToolCMD.ZDO_UNBIND_REQ, framedata);
 }