namespace Unosquare.WiringPi.Native { using System.Runtime.InteropServices; public partial class WiringPi { #region WiringPi - SPI Library Calls /// /// This function is undocumented. /// /// The channel. /// Unknown. [DllImport(WiringPiLibrary, EntryPoint = "wiringPiSPIGetFd", SetLastError = true)] public static extern int WiringPiSPIGetFd(int channel); /// /// This performs a simultaneous write/read transaction over the selected SPI bus. Data that was in your buffer is overwritten by data returned from the SPI bus. /// That’s all there is in the helper library. It is possible to do simple read and writes over the SPI bus using the standard read() and write() system calls though – /// write() may be better to use for sending data to chains of shift registers, or those LED strings where you send RGB triplets of data. /// Devices such as A/D and D/A converters usually need to perform a concurrent write/read transaction to work. /// /// The channel. /// The data. /// The length. /// The result. [DllImport(WiringPiLibrary, EntryPoint = "wiringPiSPIDataRW", SetLastError = true)] public static extern int WiringPiSPIDataRW(int channel, byte[] data, int len); /// /// This function is undocumented. /// /// The channel. /// The speed. /// The mode. /// Unkown. [DllImport(WiringPiLibrary, EntryPoint = "wiringPiSPISetupMode", SetLastError = true)] public static extern int WiringPiSPISetupMode(int channel, int speed, int mode); /// /// This is the way to initialize a channel (The Pi has 2 channels; 0 and 1). The speed parameter is an integer /// in the range 500,000 through 32,000,000 and represents the SPI clock speed in Hz. /// The returned value is the Linux file-descriptor for the device, or -1 on error. If an error has happened, you may use the standard errno global variable to see why. /// /// The channel. /// The speed. /// The Linux file descriptor for the device or -1 for error. [DllImport(WiringPiLibrary, EntryPoint = "wiringPiSPISetup", SetLastError = true)] public static extern int WiringPiSPISetup(int channel, int speed); #endregion } }