LokiProgrammer.PacketChecksum.ComputeChecksum C# (CSharp) Method

ComputeChecksum() public static method

public static ComputeChecksum ( PacketChecksumType type, byte data, long len ) : UInt16
type PacketChecksumType
data byte
len long
return System.UInt16
        public static UInt16 ComputeChecksum(PacketChecksumType type, byte[] data, long len)
        {
            switch (type)
            {
                case PacketChecksumType.Summation:
                    return ComputeSummationChecksum(data, len);
                case PacketChecksumType.CRC16:
                    return ComputeCRC16Checksum(data, len);
            }
            throw new ArgumentException();
        }

Usage Example

Example #1
0
        public void Deserialize(PacketChecksumType checksumType, byte[] data)
        {
            MemoryStream       ms     = new MemoryStream(data);
            EndianBinaryReader reader = new EndianBinaryReader(EndianBitConverter.Little, ms);

            if (reader.ReadByte() != 0x01)
            {
                throw new InvalidDataException("Message start byte must be 0x01");
            }
            StatusCode status = (StatusCode)reader.ReadByte();

            if (status != StatusCode.CYRET_SUCCESS)
            {
                throw new BootloaderError(status);
            }
            ushort length = reader.ReadUInt16();

            if (length > data.Length - 7)
            {
                throw new InvalidDataException("Invalid data length");
            }
            this.DeserializePayload(reader, length);
            ushort checksum = reader.ReadUInt16();

            if (checksum != PacketChecksum.ComputeChecksum(checksumType, data, length + 4))
            {
                throw new InvalidDataException("Invalid checksum");
            }
            if (reader.ReadByte() != 0x17)
            {
                throw new InvalidDataException("Message end byte must be 0x17");
            }
        }
All Usage Examples Of LokiProgrammer.PacketChecksum::ComputeChecksum