//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);
}
}