Cirrious.MvvmCross.Plugins.Sphero.Commands.BaseSpheroCommand.GetBytes C# (CSharp) Method

GetBytes() public method

public GetBytes ( int sequenceNumber ) : byte[]
sequenceNumber int
return byte[]
        public byte[] GetBytes(int sequenceNumber)
        {
            var data = GetPayloadBytes();

            var dataLength = data != null ? data.Length : 0;
            var packetLength = dataLength + CommandHeaderLength + ChecksumLength;

            var buffer = new byte[packetLength];
            var checksum = (byte) 0;

            buffer[IndexStart1] = CommandPrefix;
            buffer[IndexStart2] = CommandPrefix;

            var deviceId = DeviceId;
            checksum = (byte) (checksum + deviceId);
            buffer[IndexDeviceId] = deviceId;

            var command = CommandId;
            checksum = (byte) (checksum + command);
            buffer[IndexCommand] = command;

            checksum = (byte) (checksum + sequenceNumber);
            buffer[IndexCommandSequenceNo] = (byte) (sequenceNumber);

            var responseLength = (byte) (dataLength + 1);
            checksum = (byte) (checksum + responseLength);
            buffer[IndexCommandDataLength] = responseLength;

            // Check if we need to calculate the checksum for the data we have added
            if (data != null)
            {
                // Calculate the checksum for the data (also add the data to the array)
                for (var i = 0; i < dataLength; i++)
                {
                    buffer[(i + CommandHeaderLength)] = data[i];
                    checksum = (byte) (checksum + data[i]);
                }
            }

            buffer[(packetLength - ChecksumLength)] = (byte) (checksum ^ 0xFFFFFFFF);

            return buffer;
        }