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]); }
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); }
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; }
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]; }