📄 ftd2xx.h
字号:
/* NanoStack: MCU software and PC tools for IP-based wireless sensor networking. Copyright (C) 2006-2007 Sensinode Ltd. This program is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2 of the License, or (at your option) any later version. This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Address: Sensinode Ltd. Teknologiantie 6 90570 Oulu, Finland E-mail: info@sensinode.com*//*++Copyright (c) 2001-2006 Future Technology Devices International Ltd.Module Name: ftd2xx.hAbstract: Native USB interface for FTDI FT8U232/245/2232C FTD2XX library definitionsEnvironment: kernel & user modeRevision History: 13/03/01 awm Created. 13/01/03 awm Added device information support. 19/03/03 awm Added FT_W32_CancelIo. 12/06/03 awm Added FT_StopInTask and FT_RestartInTask. 18/09/03 awm Added FT_SetResetPipeRetryCount. 10/10/03 awm Added FT_ResetPort. /03/04 st modified for linux users 12/10/04 st added FT_SetVIDPID --*/#ifndef FTD2XX_H#define FTD2XX_H#ifndef _WINDOWS#include <pthread.h>#define WINAPI#endif// 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#ifndef _WINDOWS#include "WinTypes.h"#ifdef FTD2XX_API#undef FTD2XX_API#define FTD2XX_API#endif#endiftypedef struct _EVENT_HANDLE{ pthread_cond_t eCondVar; pthread_mutex_t eMutex; int iVar;} EVENT_HANDLE;typedef DWORD *FT_HANDLE;typedef ULONG FT_STATUS;//// Device status//enum { FT_OK, FT_INVALID_HANDLE, FT_DEVICE_NOT_FOUND, FT_DEVICE_NOT_OPENED, FT_IO_ERROR, FT_INSUFFICIENT_RESOURCES, FT_INVALID_PARAMETER, FT_INVALID_BAUD_RATE, //7 FT_DEVICE_NOT_OPENED_FOR_ERASE, FT_DEVICE_NOT_OPENED_FOR_WRITE, FT_FAILED_TO_WRITE_DEVICE, FT_EEPROM_READ_FAILED, FT_EEPROM_WRITE_FAILED, FT_EEPROM_ERASE_FAILED, FT_EEPROM_NOT_PRESENT, FT_EEPROM_NOT_PROGRAMMED, FT_INVALID_ARGS, FT_NOT_SUPPORTED, FT_OTHER_ERROR};#define FT_SUCCESS(status) ((status) == FT_OK)//// FT_OpenEx Flags//#define FT_OPEN_BY_SERIAL_NUMBER 1#define FT_OPEN_BY_DESCRIPTION 2//// FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags//#define FT_LIST_NUMBER_ONLY 0x80000000#define FT_LIST_BY_INDEX 0x40000000#define FT_LIST_ALL 0x20000000#define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)//// Baud Rates//#define FT_BAUD_300 300#define FT_BAUD_600 600#define FT_BAUD_1200 1200#define FT_BAUD_2400 2400#define FT_BAUD_4800 4800#define FT_BAUD_9600 9600#define FT_BAUD_14400 14400#define FT_BAUD_19200 19200#define FT_BAUD_38400 38400#define FT_BAUD_57600 57600#define FT_BAUD_115200 115200#define FT_BAUD_230400 230400#define FT_BAUD_460800 460800#define FT_BAUD_921600 921600//// Word Lengths//#define FT_BITS_8 (UCHAR) 8#define FT_BITS_7 (UCHAR) 7#define FT_BITS_6 (UCHAR) 6#define FT_BITS_5 (UCHAR) 5//// Stop Bits//#define FT_STOP_BITS_1 (UCHAR) 0#define FT_STOP_BITS_1_5 (UCHAR) 1#define FT_STOP_BITS_2 (UCHAR) 2//// Parity//#define FT_PARITY_NONE (UCHAR) 0#define FT_PARITY_ODD (UCHAR) 1#define FT_PARITY_EVEN (UCHAR) 2#define FT_PARITY_MARK (UCHAR) 3#define FT_PARITY_SPACE (UCHAR) 4//// Flow Control//#define FT_FLOW_NONE 0x0000#define FT_FLOW_RTS_CTS 0x0100#define FT_FLOW_DTR_DSR 0x0200#define FT_FLOW_XON_XOFF 0x0400//// Purge rx and tx buffers//#define FT_PURGE_RX 1#define FT_PURGE_TX 2//// Events//typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);#define FT_EVENT_RXCHAR 1#define FT_EVENT_MODEM_STATUS 2//// Timeouts//#define FT_DEFAULT_RX_TIMEOUT 300#define FT_DEFAULT_TX_TIMEOUT 300//// Device types//typedef ULONG FT_DEVICE;enum { FT_DEVICE_BM, FT_DEVICE_AM, FT_DEVICE_100AX, FT_DEVICE_UNKNOWN, FT_DEVICE_2232C, FT_DEVICE_232R };#ifdef __cplusplusextern "C" {#endif FTD2XX_APIFT_STATUS WINAPI FT_Open( int deviceNumber, FT_HANDLE *pHandle );FTD2XX_APIFT_STATUS WINAPI FT_OpenEx( PVOID pArg1, DWORD Flags, FT_HANDLE *pHandle );FTD2XX_API FT_STATUS WINAPI FT_ListDevices( PVOID pArg1, PVOID pArg2, DWORD Flags );FTD2XX_APIFT_STATUS FT_SetVIDPID( DWORD dwVID, DWORD dwPID ); FTD2XX_APIFT_STATUS FT_GetVIDPID( DWORD * pdwVID, DWORD * pdwPID );FTD2XX_APIFT_STATUS WINAPI FT_Close( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_Read( FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesReturned );FTD2XX_API FT_STATUS WINAPI FT_Write( FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesWritten );FTD2XX_API FT_STATUS WINAPI FT_IoCtl( // Linux, OS X: Not supported FT_HANDLE ftHandle, DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped );FTD2XX_APIFT_STATUS WINAPI FT_SetBaudRate( FT_HANDLE ftHandle, ULONG BaudRate );FTD2XX_APIFT_STATUS WINAPI FT_SetDivisor( FT_HANDLE ftHandle, USHORT Divisor );FTD2XX_APIFT_STATUS WINAPI FT_SetDataCharacteristics( FT_HANDLE ftHandle, UCHAR WordLength, UCHAR StopBits, UCHAR Parity );FTD2XX_APIFT_STATUS WINAPI FT_SetFlowControl( FT_HANDLE ftHandle, USHORT FlowControl, UCHAR XonChar, UCHAR XoffChar );FTD2XX_APIFT_STATUS WINAPI FT_ResetDevice( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_SetDtr( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_ClrDtr( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_SetRts( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_ClrRts( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_GetModemStatus( FT_HANDLE ftHandle, ULONG *pModemStatus ); FTD2XX_APIFT_STATUS WINAPI FT_SetChars( FT_HANDLE ftHandle, UCHAR EventChar, UCHAR EventCharEnabled, UCHAR ErrorChar, UCHAR ErrorCharEnabled );FTD2XX_APIFT_STATUS WINAPI FT_Purge( FT_HANDLE ftHandle, ULONG Mask );FTD2XX_APIFT_STATUS WINAPI FT_SetTimeouts( FT_HANDLE ftHandle, ULONG ReadTimeout, ULONG WriteTimeout );FTD2XX_APIFT_STATUS WINAPI FT_GetQueueStatus( FT_HANDLE ftHandle, DWORD *dwRxBytes );FTD2XX_APIFT_STATUS WINAPI FT_SetEventNotification( FT_HANDLE ftHandle, DWORD Mask, PVOID Param );FTD2XX_APIFT_STATUS WINAPI FT_GetStatus( FT_HANDLE ftHandle, DWORD *dwRxBytes, DWORD *dwTxBytes, DWORD *dwEventDWord );FTD2XX_APIFT_STATUS WINAPI FT_SetBreakOn( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_SetBreakOff( FT_HANDLE ftHandle );FTD2XX_APIFT_STATUS WINAPI FT_SetWaitMask( // Linux, OS X: Not supported FT_HANDLE ftHandle, DWORD Mask );FTD2XX_APIFT_STATUS WINAPI FT_WaitOnMask( // Linux, OS X: Not supported FT_HANDLE ftHandle, DWORD *Mask );FTD2XX_APIFT_STATUS WINAPI FT_GetEventStatus( FT_HANDLE ftHandle, DWORD *dwEventDWord );FTD2XX_APIFT_STATUS WINAPI FT_ReadEE( FT_HANDLE ftHandle, DWORD dwWordOffset, LPWORD lpwValue );FTD2XX_APIFT_STATUS WINAPI FT_WriteEE( FT_HANDLE ftHandle, DWORD dwWordOffset, WORD wValue );FTD2XX_APIFT_STATUS WINAPI FT_EraseEE( FT_HANDLE ftHandle ); //// structure to hold program data for FT_Program function//typedef struct ft_program_data { DWORD Signature1; // Header - must be 0x00000000 DWORD Signature2; // Header - must be 0xffffffff DWORD Version; // Header - FT_PROGRAM_DATA version // 0 = original // 1 = FT2232C extensions // 2 = FT232R extensions WORD VendorId; // 0x0403 WORD ProductId; // 0x6001 char *Manufacturer; // "FTDI" char *ManufacturerId; // "FT" char *Description; // "USB HS Serial Converter" char *SerialNumber; // "FT000001" 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; // non-zero if Rev4 chip, zero otherwise UCHAR IsoIn; // non-zero if in endpoint is isochronous UCHAR IsoOut; // non-zero if out endpoint is isochronous UCHAR PullDownEnable; // non-zero if pull down enabled UCHAR SerNumEnable; // non-zero if serial number to be used
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -