private unsafe void Transfer(byte *writeBufferPtr, byte *readBufferPtr, int buffersLength) { var tr = new spi_ioc_transfer() { tx_buf = (ulong)writeBufferPtr, rx_buf = (ulong)readBufferPtr, len = (uint)buffersLength, speed_hz = _settings.ClockFrequency, bits_per_word = (byte)_settings.DataBitLength, delay_usecs = 0, }; int ret = ioctl(_deviceFileDescriptor, SPI_IOC_MESSAGE_1, new IntPtr(&tr)); if (ret < 1) { throw Utils.CreateIOException("Error performing Spi data transfer", ret); } }
private unsafe void Transfer(byte *writeBufferPtr, byte *readBufferPtr, int buffersLength) { var tr = new spi_ioc_transfer() { tx_buf = (ulong)writeBufferPtr, rx_buf = (ulong)readBufferPtr, len = (uint)buffersLength, speed_hz = _speed, bits_per_word = 8, delay_usecs = 0 }; int result = Interop.ioctl(_deviceFileDescriptor, SPI_IOC_MESSAGE_1, new IntPtr(&tr)); if (result < 1) { throw new IOException($"Error {Marshal.GetLastWin32Error()} performing SPI data transfer."); } }