#ifndef FTD2XX_H #define FTD2XX_H // The following ifdef block is the standard way of creating macros // which make exporting from a DLL simpler. All files within this DLL // are compiled with the FTD2XX_EXPORTS symbol defined on the command line. // This symbol should not be defined on any project that uses this DLL. // This way any other project whose source files include this file see // FTD2XX_API functions as being imported from a DLL, whereas this DLL // sees symbols defined with this macro as being exported. #ifdef FTD2XX_EXPORTS #define FTD2XX_API __declspec(dllexport) #else #define FTD2XX_API __declspec(dllimport) #endif typedef PVOID HANDLE; typedef ULONG STATUS; //***************************************************************************************************************************************************************************//Function declarations //*************************************************************************************************************************************************************************** FTD2XX_API STATUS WINAPI FT_ListDevices (PVOID pArg1, PVOID pArg2, DWORD Flags); FTD2XX_API STATUS WINAPI FT_Open (int deviceNumber, HANDLE *pHandle); FTD2XX_API STATUS WINAPI FT_OpenEx (PVOID pArg1, DWORD Flags, HANDLE *pHandle); FTD2XX_API STATUS WINAPI FT_Close (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_Read (HANDLE Handle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesReturned); FTD2XX_API STATUS WINAPI FT_Write (HANDLE Handle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesWritten); FTD2XX_API STATUS WINAPI FT_SetBaudRate (HANDLE Handle, ULONG BaudRate); FTD2XX_API STATUS WINAPI FT_SetDataCharacteristics (HANDLE Handle, UCHAR WordLength, UCHAR StopBits, UCHAR Parity); FTD2XX_API STATUS WINAPI FT_SetFlowControl (HANDLE Handle, USHORT FlowControl, UCHAR XonChar, UCHAR XoffChar); FTD2XX_API STATUS WINAPI FT_SetDtr (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_ClrDtr (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_SetRts (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_ClrRts (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_GetModemStatus (HANDLE Handle, ULONG *pModemStatus); FTD2XX_API STATUS WINAPI FT_SetChars (HANDLE Handle, UCHAR EventChar, UCHAR EventCharEnabled, UCHAR ErrorChar, UCHAR ErrorCharEnabled); FTD2XX_API STATUS WINAPI FT_Purge (HANDLE Handle, ULONG Mask); FTD2XX_API STATUS WINAPI FT_SetTimeouts (HANDLE Handle, ULONG ReadTimeout, ULONG WriteTimeout); FTD2XX_API STATUS WINAPI FT_GetQueueStatus (HANDLE Handle, DWORD *dwRxBytes); FTD2XX_API STATUS WINAPI FT_SetBreakOn (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_SetBreakOff (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_GetStatus (HANDLE Handle, DWORD *dwRxBytes, DWORD *dwTxBytes, DWORD *dwEventDWord); FTD2XX_API STATUS WINAPI FT_ResetDevice (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_SetEventNotification (HANDLE Handle, DWORD Mask, PVOID Param); FTD2XX_API STATUS WINAPI FT_ResetPort (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_RestartInTask (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_StopInTask (HANDLE Handle); FTD2XX_API STATUS WINAPI FT_SetResetPipeRetryCount (HANDLE Handle, DWORD dwCount); //***************************************************************************************************************************************************************************//EEPROM function declarations //*************************************************************************************************************************************************************************** FTD2XX_API STATUS WINAPI FT_EE_Program (HANDLE Handle, PPROGRAM_DATA pData); FTD2XX_API STATUS WINAPI FT_EE_Read (HANDLE Handle, PPROGRAM_DATA pData); FTD2XX_API STATUS WINAPI FT_EE_UARead (HANDLE Handle, PUCHAR pucData, DWORD dwDataLen, LPDWORD lpdwBytesRead); FTD2XX_API STATUS WINAPI FT_EE_UAWrite (HANDLE Handle, PUCHAR pucData, DWORD dwDataLen); FTD2XX_API STATUS WINAPI FT_EE_UASize (HANDLE Handle, LPDWORD lpdwSize); FTD2XX_API STATUS WINAPI FT_EraseEE (HANDLE Handle); //***************************************************************************************************************************************************************************//Constant Declarations //*************************************************************************************************************************************************************************** '//Return codes enum { OK, INVALID_HANDLE, DEVICE_NOT_FOUND, DEVICE_NOT_OPENED, IO_ERROR, INSUFFICIENT_RESOURCES, INVALID_PARAMETER, INVALID_BAUD_RATE, DEVICE_NOT_OPENED_FOR_ERASE, DEVICE_NOT_OPENED_FOR_WRITE, FAILED_TO_WRITE_DEVICE, EEPROM_READ_FAILED, EEPROM_WRITE_FAILED, EEPROM_ERASE_FAILED, EEPROM_NOT_PRESENT, EEPROM_NOT_PROGRAMMED, INVALID_ARGS, OTHER_ERROR }; // Flow Control #define FLOW_NONE 0x0000 #define FLOW_RTS_CTS 0x0100 #define FLOW_DTR_DSR 0x0200 #define FLOW_XON_XOFF 0x0400 // Purge rx and tx buffers #define PURGE_RX 1 #define PURGE_TX 2 // FT_OpenEx Flags #define OPEN_BY_SERIAL_NUMBER 1 #define OPEN_BY_DESCRIPTION 2 // FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags) #define LIST_NUMBER_ONLY 0x80000000 #define LIST_BY_INDEX 0x40000000 #define LIST_ALL 0x20000000 #define LIST_MASK (LIST_NUMBER_ONLY | LIST_BY_INDEX | LIST_ALL) // Modem Status #define MODEM_STATUS_CTS &H10 #define MODEM_STATUS_DSR &H20 #define MODEM_STATUS_RI &H40 #define MODEM_STATUS_DCD &H80 // Event Masks #define EVENT_RXCHAR 1 #define EVENT_MODEM_STATUS 2 // Baud Rates #define BAUD_300 300 #define BAUD_600 600 #define BAUD_1200 1200 #define BAUD_2400 2400 #define BAUD_4800 4800 #define BAUD_9600 9600 #define BAUD_14400 14400 #define BAUD_19200 19200 #define BAUD_38400 38400 #define BAUD_57600 57600 #define BAUD_115200 115200 #define BAUD_230400 230400 #define BAUD_460800 460800 #define BAUD_921600 921600 // Word Lengths #define BITS_8 (UCHAR) 8 #define BITS_7 (UCHAR) 7 #define BITS_6 (UCHAR) 6 #define BITS_5 (UCHAR) 5 // Stop Bits #define STOP_BITS_1 (UCHAR) 0 #define STOP_BITS_1_5 (UCHAR) 1 #define STOP_BITS_2 (UCHAR) 2 // Parity #define PARITY_NONE (UCHAR) 0 #define PARITY_ODD (UCHAR) 1 #define PARITY_EVEN (UCHAR) 2 #define PARITY_MARK (UCHAR) 3 #define PARITY_SPACE (UCHAR) 4 // Type declaration for EEPROM programming typedef struct PROGRAM_DATA { WORD VendorId; // 0x0403 WORD ProductId; // 0xF448 char *Manufacturer; // 32, "Linx Technologies" char *ManufacturerId; // 16, "LT" char *Description; // 64 "LINX SDM-USB-QS-S" char *SerialNumber; // 16 "LT000001" if fixed, or NULL WORD MaxPower; // 0 < MaxPower <= 500 WORD PnP; // 0 = disabled, 1 = enabled WORD SelfPowered; // 0 = bus powered, 1 = self powered WORD RemoteWakeup; // 0 = not capable, 1 = capable // Rev4 extensions UCHAR Rev4; // true if Rev4 chip, false otherwise UCHAR IsoIn; // true if in endpoint is isochronous UCHAR IsoOut; // true if out endpoint is isochronous UCHAR PullDownEnable; // true if pull down enabled UCHAR SerNumEnable; // true if serial number to be used UCHAR USBVersionEnable; // true if chip uses USBVersion WORD USBVersion; // BCD (0x0200 => USB2) } PROGRAM_DATA, *PPROGRAM_DATA;