/// <summary>
        /// Starts the SPI data transfer.
        /// </summary>
        /// <param name="transferBuffers">The transfer buffers that contain data to be send and/or the received data.</param>
        /// <returns>An <see cref="int"/> that contains the result of the transfer operation.</returns>
        public int Transfer(ISpiTransferBufferCollection transferBuffers)
        {
            if (transferBuffers == null)
            {
                throw new ArgumentNullException("transferBuffers");
            }

            var request = Interop.Interop.GetSpiMessageRequest(transferBuffers.Length);

            var structures = transferBuffers
                             .Select(buf => buf.ControlStructure)
                             .ToArray();
            var result = deviceFile.Control(request, structures);

            result.ThrowOnPInvokeError <SendSpiMessageException>("Can't send SPI messages. Error {1}: {2}");

            return(result);
        }
        /// <summary>
        /// Starts the SPI data transfer.
        /// </summary>
        /// <param name="transferBuffers">The transfer buffers that contain data to be send and/or the received data.</param>
        /// <returns>An <see cref="int"/> that contains the result of the transfer operation.</returns>
        public int Transfer(ISpiTransferBufferCollection transferBuffers)
        {
            if (transferBuffers == null) {
                throw new ArgumentNullException("transferBuffers");
            }

            var request = Interop.GetSpiMessageRequest(transferBuffers.Length);

            var structures = transferBuffers
                .Select(buf => buf.ControlStructure)
                .ToArray();
            var result = deviceFile.Control(request, structures);

            result.ThrowOnPInvokeError<SendSpiMessageException>("Can't send SPI messages. Error {1}: {2}");

            return result;
        }