Example #1
0
        private Message(string data, Encoding encoding)
        {
            Data16Bits[] dataInInData16Bits = convertStringToData16Bits(data, encoding);
            Data16Bits   checksumData       = checksum(dataInInData16Bits);

            Data16Bits[] datawithChecksum = dataInInData16Bits.Join(new[] { checksumData });

            this.data = datawithChecksum;
        }
Example #2
0
        private Data16Bits sumOfAll(Data16Bits[] data)
        {
            var sumOfAllBitArrays = new Data16Bits();

            for (int i = 0; i < data.Length; i++)
            {
                sumOfAllBitArrays = sumOfAllBitArrays + data[i];
            }
            return(sumOfAllBitArrays);
        }
Example #3
0
        public void Validate()
        {
            var checksumExpectedResult = new Data16Bits(true);
            var checksumResult         = sumOfAll(data);

            if (!checksumResult.Equals(checksumExpectedResult))
            {
                throw new Exception("Invalid message, checksum does not match");
            }
        }
Example #4
0
        private Data16Bits[] convertStringToData16Bits(string data, Encoding encoding)
        {
            byte[] bytesOfData = encoding.GetBytes(data);

            var lenghtOfBitArray = bytesOfData.Length / 2;
            var addBitArray      = bytesOfData.Length % 2 != 0 ? 1 : 0;
            var bitArrayOfData   = new Data16Bits[lenghtOfBitArray + addBitArray];

            for (int i = 0; i < bitArrayOfData.Length - 1; i++)
            {
                bitArrayOfData[i] = new Data16Bits(bytesOfData[i * 2], bytesOfData[(i * 2) + 1]);
            }

            if (addBitArray == 0)
            {
                bitArrayOfData[bitArrayOfData.Length - 1] = new Data16Bits(bytesOfData[(bitArrayOfData.Length - 1) * 2], bytesOfData[((bitArrayOfData.Length - 1) * 2) + 1]);
            }
            else
            {
                bitArrayOfData[bitArrayOfData.Length - 1] = new Data16Bits(bytesOfData[(bitArrayOfData.Length - 1) * 2], new byte());
            }

            return(bitArrayOfData);
        }