示例#1
0
        protected static bool IsValid(byte[] packet, IntFromByteArray packetLengthCallback, int length = -1)
        {
            if (length < 0)
            {
                length = packet.Length;
            }
            if (length < PacketLengthMin)
            {
                return(false);
            }

            int packetLength = packetLengthCallback(packet);

            if (length < packetLength || packetLength < PacketLengthMin)
            {
                return(false);
            }

            byte check = 0x00;

            for (int i = 0; i < packetLength - 1; i++)
            {
                check ^= packet[i];
            }
            return(check == packet[packetLength - 1]);
        }
示例#2
0
        protected static bool CanStartWith(byte[] packet, IntFromByteArray packetLengthCallback, int length = -1)
        {
            if (length < 0)
            {
                length = packet.Length;
            }
            if (length < PacketLengthMin)
            {
                return(true);
            }

            int packetLength = packetLengthCallback(packet);

            if (packetLength < PacketLengthMin)
            {
                return(false);
            }

            if (length >= packetLength && !IsValid(packet, length))
            {
                return(false);
            }

            return(true);
        }
示例#3
0
        protected static new bool CanStartWith(byte[] packet, IntFromByteArray packetLengthCallback, int length = -1)
        {
            if (length < 0)
            {
                length = packet.Length;
            }

            if (length < PacketLengthMin)
            {
                return true;
            }

            byte packetLength = (byte)(packet[1] + 2);
            if (packetLength < PacketLengthMin)
            {
                return false;
            }

            if (length >= packetLength && !IsValid(packet, length))
            {
                return false;
            }

            return true;
        }
示例#4
0
        protected static bool IsValid(byte[] packet, IntFromByteArray packetLengthCallback, int length = -1)
        {
            if (length < 0)
            {
                length = packet.Length;
            }
            if (length < PacketLengthMin)
            {
                return false;
            }

            int packetLength = packetLengthCallback(packet);
            if (length < packetLength || packetLength < PacketLengthMin)
            {
                return false;
            }

            byte check = 0x00;
            for (int i = 0; i < packetLength - 1; i++)
            {
                check ^= packet[i];
            }
            return check == packet[packetLength - 1];
        }