예제 #1
0
        private void Request(bool isPost, int dstAddr, byte action, byte?parameter, byte[] data)
        {
            var p = new ProtoPacket
            {
                DstAddr = dstAddr, SrcAddr = _mesh.ShortAddress, Control = new Control()
                {
                    CommandType = isPost ? (byte)CommandTypes.Post : (byte)CommandTypes.Get
                }
            };

            if (parameter.HasValue)
            {
                p.Control.HasParameter = true;
                p.Parameter            = parameter.Value;
            }

            if (data.Length > 0)
            {
                p.Control.HasData = true;
                p.Data            = data;
            }
            p.Command = action;

            Send(p);
        }
예제 #2
0
        private void Send(ProtoPacket packet)
        {
            var bp = new Packet
            {
                Lqi = 0xff, Rssi = 0xff, SrcAddr = packet.SrcAddr, DstAddr = packet.DstAddr, SrcEndPoint = EndPoint, DstEndPoint = EndPoint, Size = packet.GetRaw().Length, Frame = packet.GetRaw()
            };

            _mesh.SendPacket(bp);
        }
예제 #3
0
        public void SendNack(int dstAddr)
        {
            var ppk = new ProtoPacket
            {
                DstAddr = dstAddr, SrcAddr = _mesh.ShortAddress, Control = new Control(0)
                {
                    CommandType = (byte)CommandTypes.Nack
                }
            };

            Send(ppk);
        }
예제 #4
0
        public ProtoPacket Parse(Packet packet)
        {
            var pkt = new ProtoPacket();

            if (packet.SrcEndPoint != EndPoint || packet.DstEndPoint != EndPoint)
            {
                return(null);
            }

            pkt.SrcAddr = packet.SrcAddr;
            pkt.DstAddr = packet.DstAddr;
            pkt.FromRaw(packet.Frame);

            return(pkt.Version != Version ? null : pkt);
        }
예제 #5
0
        public void RequestCustom(int dstAddr, byte[] data)
        {
            var p = new ProtoPacket
            {
                DstAddr = dstAddr, SrcAddr = _mesh.ShortAddress, Control = new Control(0)
                {
                    CommandType = (byte)CommandTypes.Custom
                }
            };

            if (data.Length > 0)
            {
                p.Control.HasData = true;
                p.Data            = data;
            }

            Send(p);
        }
예제 #6
0
        public void RequestAction(int dstAddr, byte action, byte?parameter)
        {
            var p = new ProtoPacket
            {
                DstAddr = dstAddr, SrcAddr = _mesh.ShortAddress, Control = new Control()
                {
                    CommandType = (byte)CommandTypes.Action
                }
            };

            if (parameter.HasValue)
            {
                p.Control.HasParameter = true;
                p.Parameter            = parameter.Value;
            }
            p.Command = action;

            Send(p);
        }