//Based on the original work of Diogo Cardoso //https://github.com/DVDPT/libMPSSE-.Net-Wrapper using System; using System.Collections.Generic; using System.Linq; using System.Runtime.InteropServices; using System.Text; using libMPSSEWrapper.Types; namespace libMPSSEWrapper { /// /// The LibMpsseSpi Wrapper Classes /// public class LibMpsseSpi { /// /// LibMpsseSpi Wrapper for SPI_OpenChannel() /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_OpenChannel(int index, out IntPtr handle); /// /// LibMpsseSpi Wrapper for SPI_CloseChannel() /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_CloseChannel(IntPtr handle); /// /// LibMpsseSpi Wrapper for SPI_GetNumChannels() /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_GetNumChannels(out UInt32 numChannels); /// /// LibMpsseSpi Wrapper for SPI_GetChannelInfo() /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_GetChannelInfo(int index, out FtDeviceInfo chanInfo); /// /// LibMpsseSpi Wrapper for SPI_InitChannel() /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_InitChannel(IntPtr handle, ref FtdiChannelConfig config); /// /// LibMpsseSpi Wrapper for SPI_ChangeCS() /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_ChangeCS(IntPtr handle, FtdiConfigOptions configOptions); /// /// LibMpsseSpi Wrapper for SPI)IsBusy() /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_IsBusy(IntPtr handle, out bool state); /// /// LibMpsseSpi Wrapper for FT_WriteGPIO() /// /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult FT_WriteGPIO(IntPtr handle, byte dir, byte value); /// /// LibMpsseSpi Wrapper for FT_ReadGPIO() /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult FT_ReadGPIO(IntPtr handle, out byte value); /// /// LibMpsseSpi Wrapper for SPI_Read() /// /// /// /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_Read( IntPtr handle, byte[] buffer, int sizeToTransfer, out int sizeTransfered, FtSpiTransferOptions options); /// /// LibMpsseSpi Wrapper for SPI_ReadWrite /// /// /// /// /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_ReadWrite( IntPtr handle, byte[] inBuffer, byte[] outBuffer, int sizeToTransfer, out int sizeTransferred, FtSpiTransferOptions transferOptions); /// /// LibMpsseSpi Wrapper for SPI_Write /// /// /// /// /// /// /// [DllImport(LibMpsse.DllName, SetLastError = true, CallingConvention = CallingConvention.Cdecl)] public extern static FtResult SPI_Write( IntPtr handle, byte[] buffer, int sizeToTransfer, out int sizeTransfered, FtSpiTransferOptions options); } }