Exemple #1
0
        internal void Write(IROCMessage message)
        {
            var frameBytes    = BuildMessageFrame(message);
            var frameLength   = frameBytes.Length;
            var bufferedBytes = new byte[frameLength];

            Buffer.BlockCopy(frameBytes, 0, bufferedBytes, 0, frameLength);
            Channel.Write(ref bufferedBytes, 0, frameLength);
        }
Exemple #2
0
 internal bool ChecksumsMatch(IROCMessage message, byte[] messageFrame)
 {
     if (messageFrame.Length < message.MessageFrame.Length)
     {
         return(false);
     }
     // Compute the hash
     using (CRC16 Hash = new CRC16())
     {
         var crc = BitConverter.ToUInt16(Hash.ComputeHash(message.MessageFrame, 0, (messageFrame.Length - CRC_LENGTH)), 0);
         return(BitConverter.ToUInt16(messageFrame, messageFrame.Length - CRC_LENGTH) == crc);
     }
 }
Exemple #3
0
        internal byte[] BuildMessageFrame(IROCMessage message)
        {
            var messageBody = new List <byte>();

            messageBody.AddRange(message.MessageFrame);

            using (CRC16 Hash = new CRC16())
            {
                messageBody.AddRange(Hash.ComputeHash(message.MessageFrame, 0, messageBody.Count));
            }

            return(messageBody.ToArray());
        }