Cat
ftd2xx.h
Go to the documentation of this file.
1 /*++
2 
3 Copyright (c) 2001-2006 Future Technology Devices International Ltd.
4 
5 Module Name:
6 
7  ftd2xx.h
8 
9 Abstract:
10 
11  Native USB interface for FTDI FT8U232/245/2232C
12  FTD2XX library definitions
13 
14 Environment:
15 
16  kernel & user mode
17 
18 Revision History:
19 
20  13/03/01 awm Created.
21  13/01/03 awm Added device information support.
22  19/03/03 awm Added FT_W32_CancelIo.
23  12/06/03 awm Added FT_StopInTask and FT_RestartInTask.
24  18/09/03 awm Added FT_SetResetPipeRetryCount.
25  10/10/03 awm Added FT_ResetPort.
26  /03/04 st modified for linux users
27  12/10/04 st added FT_SetVIDPID
28 
29 
30 --*/
31 
32 
33 #ifndef FTD2XX_H
34 #define FTD2XX_H
35 
36 #ifndef _WINDOWS
37 #include <pthread.h>
38 #define WINAPI
39 #endif
40 
41 // The following ifdef block is the standard way of creating macros
42 // which make exporting from a DLL simpler. All files within this DLL
43 // are compiled with the FTD2XX_EXPORTS symbol defined on the command line.
44 // This symbol should not be defined on any project that uses this DLL.
45 // This way any other project whose source files include this file see
46 // FTD2XX_API functions as being imported from a DLL, whereas this DLL
47 // sees symbols defined with this macro as being exported.
48 
49 #ifdef FTD2XX_EXPORTS
50 #define FTD2XX_API __declspec(dllexport)
51 #else
52 #define FTD2XX_API __declspec(dllimport)
53 #endif
54 
55 #ifndef _WINDOWS
56 #include "WinTypes.h"
57 
58 #ifdef FTD2XX_API
59 #undef FTD2XX_API
60 #define FTD2XX_API
61 #endif
62 #endif
63 typedef struct _EVENT_HANDLE{
64  pthread_cond_t eCondVar;
65  pthread_mutex_t eMutex;
66  int iVar;
67 } EVENT_HANDLE;
68 
69 typedef DWORD *FT_HANDLE;
70 
71 typedef ULONG FT_STATUS;
72 
73 //
74 // Device status
75 //
76 enum {
85 
97 };
98 
99 
100 #define FT_SUCCESS(status) ((status) == FT_OK)
101 
102 //
103 // FT_OpenEx Flags
104 //
105 
106 #define FT_OPEN_BY_SERIAL_NUMBER 1
107 #define FT_OPEN_BY_DESCRIPTION 2
108 
109 //
110 // FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags
111 //
112 
113 #define FT_LIST_NUMBER_ONLY 0x80000000
114 #define FT_LIST_BY_INDEX 0x40000000
115 #define FT_LIST_ALL 0x20000000
116 
117 #define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)
118 
119 //
120 // Baud Rates
121 //
122 
123 #define FT_BAUD_300 300
124 #define FT_BAUD_600 600
125 #define FT_BAUD_1200 1200
126 #define FT_BAUD_2400 2400
127 #define FT_BAUD_4800 4800
128 #define FT_BAUD_9600 9600
129 #define FT_BAUD_14400 14400
130 #define FT_BAUD_19200 19200
131 #define FT_BAUD_38400 38400
132 #define FT_BAUD_57600 57600
133 #define FT_BAUD_115200 115200
134 #define FT_BAUD_230400 230400
135 #define FT_BAUD_460800 460800
136 #define FT_BAUD_921600 921600
137 
138 //
139 // Word Lengths
140 //
141 
142 #define FT_BITS_8 (UCHAR) 8
143 #define FT_BITS_7 (UCHAR) 7
144 #define FT_BITS_6 (UCHAR) 6
145 #define FT_BITS_5 (UCHAR) 5
146 
147 //
148 // Stop Bits
149 //
150 
151 #define FT_STOP_BITS_1 (UCHAR) 0
152 #define FT_STOP_BITS_1_5 (UCHAR) 1
153 #define FT_STOP_BITS_2 (UCHAR) 2
154 
155 //
156 // Parity
157 //
158 
159 #define FT_PARITY_NONE (UCHAR) 0
160 #define FT_PARITY_ODD (UCHAR) 1
161 #define FT_PARITY_EVEN (UCHAR) 2
162 #define FT_PARITY_MARK (UCHAR) 3
163 #define FT_PARITY_SPACE (UCHAR) 4
164 
165 //
166 // Flow Control
167 //
168 
169 #define FT_FLOW_NONE 0x0000
170 #define FT_FLOW_RTS_CTS 0x0100
171 #define FT_FLOW_DTR_DSR 0x0200
172 #define FT_FLOW_XON_XOFF 0x0400
173 
174 //
175 // Purge rx and tx buffers
176 //
177 #define FT_PURGE_RX 1
178 #define FT_PURGE_TX 2
179 
180 //
181 // Events
182 //
183 
184 typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);
185 
186 #define FT_EVENT_RXCHAR 1
187 #define FT_EVENT_MODEM_STATUS 2
188 #define FT_EVENT_LINE_STATUS 4
189 
190 //
191 // Timeouts
192 //
193 
194 #define FT_DEFAULT_RX_TIMEOUT 300
195 #define FT_DEFAULT_TX_TIMEOUT 300
196 
197 //
198 // Device types
199 //
200 
201 typedef ULONG FT_DEVICE;
202 
203 enum {
212  };
213 
214 
215 #ifdef __cplusplus
216 extern "C" {
217 #endif
218 
221  int deviceNumber,
222  FT_HANDLE *pHandle
223  );
224 
227  PVOID pArg1,
228  DWORD Flags,
229  FT_HANDLE *pHandle
230  );
231 
232 FTD2XX_API
234  PVOID pArg1,
235  PVOID pArg2,
236  DWORD Flags
237  );
238 
241  DWORD dwVID,
242  DWORD dwPID
243  );
244 
247  DWORD * pdwVID,
248  DWORD * pdwPID
249  );
250 
253  FT_HANDLE ftHandle
254  );
255 
258  FT_HANDLE ftHandle,
259  LPVOID lpBuffer,
260  DWORD nBufferSize,
261  LPDWORD lpBytesReturned
262  );
263 
264 FTD2XX_API
266  FT_HANDLE ftHandle,
267  LPVOID lpBuffer,
268  DWORD nBufferSize,
269  LPDWORD lpBytesWritten
270  );
271 
272 FTD2XX_API
273 FT_STATUS WINAPI FT_IoCtl( // Linux, OS X: Not supported
274  FT_HANDLE ftHandle,
275  DWORD dwIoControlCode,
276  LPVOID lpInBuf,
277  DWORD nInBufSize,
278  LPVOID lpOutBuf,
279  DWORD nOutBufSize,
280  LPDWORD lpBytesReturned,
281  LPOVERLAPPED lpOverlapped
282  );
283 
286  FT_HANDLE ftHandle,
287  ULONG BaudRate
288  );
289 
292  FT_HANDLE ftHandle,
293  USHORT Divisor
294  );
295 
298  FT_HANDLE ftHandle,
299  UCHAR WordLength,
300  UCHAR StopBits,
301  UCHAR Parity
302  );
303 
306  FT_HANDLE ftHandle,
307  USHORT FlowControl,
308  UCHAR XonChar,
309  UCHAR XoffChar
310  );
311 
314  FT_HANDLE ftHandle
315  );
316 
319  FT_HANDLE ftHandle
320  );
321 
324  FT_HANDLE ftHandle
325  );
326 
329  FT_HANDLE ftHandle
330  );
331 
334  FT_HANDLE ftHandle
335  );
336 
339  FT_HANDLE ftHandle,
340  ULONG *pModemStatus
341  );
342 
345  FT_HANDLE ftHandle,
346  UCHAR EventChar,
347  UCHAR EventCharEnabled,
348  UCHAR ErrorChar,
349  UCHAR ErrorCharEnabled
350  );
351 
354  FT_HANDLE ftHandle,
355  ULONG Mask
356  );
357 
360  FT_HANDLE ftHandle,
361  ULONG ReadTimeout,
362  ULONG WriteTimeout
363  );
364 
367  FT_HANDLE ftHandle,
368  DWORD *dwRxBytes
369  );
370 
373  FT_HANDLE ftHandle,
374  DWORD Mask,
375  PVOID Param
376  );
377 
380  FT_HANDLE ftHandle,
381  DWORD *dwRxBytes,
382  DWORD *dwTxBytes,
383  DWORD *dwEventDWord
384  );
385 
388  FT_HANDLE ftHandle
389  );
390 
393  FT_HANDLE ftHandle
394  );
395 
397 FT_STATUS WINAPI FT_SetWaitMask( // Linux, OS X: Not supported
398  FT_HANDLE ftHandle,
399  DWORD Mask
400  );
401 
403 FT_STATUS WINAPI FT_WaitOnMask( // Linux, OS X: Not supported
404  FT_HANDLE ftHandle,
405  DWORD *Mask
406  );
407 
410  FT_HANDLE ftHandle,
411  DWORD *dwEventDWord
412  );
413 
416  FT_HANDLE ftHandle,
417  DWORD dwWordOffset,
418  LPWORD lpwValue
419  );
420 
423  FT_HANDLE ftHandle,
424  DWORD dwWordOffset,
425  WORD wValue
426  );
427 
430  FT_HANDLE ftHandle
431  );
432 
433 //
434 // structure to hold program data for FT_Program function
435 //
436 typedef struct ft_program_data {
437 
438  DWORD Signature1; // Header - must be 0x00000000
439  DWORD Signature2; // Header - must be 0xffffffff
440  DWORD Version; // Header - FT_PROGRAM_DATA version
441  // 0 = original
442  // 1 = FT2232C extensions
443  // 2 = FT232R extensions
444  // 3 = FT2232H extensions
445  // 4 = FT4232H extensions
446 
447  WORD VendorId; // 0x0403
448  WORD ProductId; // 0x6001
449  char *Manufacturer; // "FTDI"
450  char *ManufacturerId; // "FT"
451  char *Description; // "USB HS Serial Converter"
452  char *SerialNumber; // "FT000001" if fixed, or NULL
453  WORD MaxPower; // 0 < MaxPower <= 500
454  WORD PnP; // 0 = disabled, 1 = enabled
455  WORD SelfPowered; // 0 = bus powered, 1 = self powered
456  WORD RemoteWakeup; // 0 = not capable, 1 = capable
457 
458  //
459  // Rev4 extensions
460  //
461  UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise
462  UCHAR IsoIn; // non-zero if in endpoint is isochronous
463  UCHAR IsoOut; // non-zero if out endpoint is isochronous
464  UCHAR PullDownEnable; // non-zero if pull down enabled
465  UCHAR SerNumEnable; // non-zero if serial number to be used
466  UCHAR USBVersionEnable; // non-zero if chip uses USBVersion
467  WORD USBVersion; // BCD (0x0200 => USB2)
468 
469  //
470  // FT2232 extensions
471  //
472  UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise
473  UCHAR IsoInA; // non-zero if in endpoint is isochronous
474  UCHAR IsoInB; // non-zero if in endpoint is isochronous
475  UCHAR IsoOutA; // non-zero if out endpoint is isochronous
476  UCHAR IsoOutB; // non-zero if out endpoint is isochronous
477  UCHAR PullDownEnable5; // non-zero if pull down enabled
478  UCHAR SerNumEnable5; // non-zero if serial number to be used
479  UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion
480  WORD USBVersion5; // BCD (0x0200 => USB2)
481  UCHAR AIsHighCurrent; // non-zero if interface is high current
482  UCHAR BIsHighCurrent; // non-zero if interface is high current
483  UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO
484  UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target
485  UCHAR IFAIsFastSer; // non-zero if interface is Fast serial
486  UCHAR AIsVCP; // non-zero if interface is to use VCP drivers
487  UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO
488  UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target
489  UCHAR IFBIsFastSer; // non-zero if interface is Fast serial
490  UCHAR BIsVCP; // non-zero if interface is to use VCP drivers
491 
492  //
493  // FT232R extensions
494  //
495  UCHAR UseExtOsc; // Use External Oscillator
496  UCHAR HighDriveIOs; // High Drive I/Os
497  UCHAR EndpointSize; // Endpoint size
498  UCHAR PullDownEnableR; // non-zero if pull down enabled
499  UCHAR SerNumEnableR; // non-zero if serial number to be used
500  UCHAR InvertTXD; // non-zero if invert TXD
501  UCHAR InvertRXD; // non-zero if invert RXD
502  UCHAR InvertRTS; // non-zero if invert RTS
503  UCHAR InvertCTS; // non-zero if invert CTS
504  UCHAR InvertDTR; // non-zero if invert DTR
505  UCHAR InvertDSR; // non-zero if invert DSR
506  UCHAR InvertDCD; // non-zero if invert DCD
507  UCHAR InvertRI; // non-zero if invert RI
508  UCHAR Cbus0; // Cbus Mux control
509  UCHAR Cbus1; // Cbus Mux control
510  UCHAR Cbus2; // Cbus Mux control
511  UCHAR Cbus3; // Cbus Mux control
512  UCHAR Cbus4; // Cbus Mux control
513  UCHAR RIsD2XX; // non-zero if using D2XX drivers
514 
515  //
516  // Rev 7 (FT2232H) Extensions
517  //
518  UCHAR PullDownEnable7; // non-zero if pull down enabled
519  UCHAR SerNumEnable7; // non-zero if serial number to be used
520  UCHAR ALSlowSlew; // non-zero if AL pins have slow slew
521  UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input
522  UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
523  UCHAR AHSlowSlew; // non-zero if AH pins have slow slew
524  UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input
525  UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
526  UCHAR BLSlowSlew; // non-zero if BL pins have slow slew
527  UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input
528  UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
529  UCHAR BHSlowSlew; // non-zero if BH pins have slow slew
530  UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input
531  UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
532  UCHAR IFAIsFifo7; // non-zero if interface is 245 FIFO
533  UCHAR IFAIsFifoTar7; // non-zero if interface is 245 FIFO CPU target
534  UCHAR IFAIsFastSer7; // non-zero if interface is Fast serial
535  UCHAR AIsVCP7; // non-zero if interface is to use VCP drivers
536  UCHAR IFBIsFifo7; // non-zero if interface is 245 FIFO
537  UCHAR IFBIsFifoTar7; // non-zero if interface is 245 FIFO CPU target
538  UCHAR IFBIsFastSer7; // non-zero if interface is Fast serial
539  UCHAR BIsVCP7; // non-zero if interface is to use VCP drivers
540  UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs
541  //
542  // Rev 8 (FT4232H) Extensions
543  //
544  UCHAR PullDownEnable8; // non-zero if pull down enabled
545  UCHAR SerNumEnable8; // non-zero if serial number to be used
546  UCHAR ASlowSlew; // non-zero if AL pins have slow slew
547  UCHAR ASchmittInput; // non-zero if AL pins are Schmitt input
548  UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
549  UCHAR BSlowSlew; // non-zero if AH pins have slow slew
550  UCHAR BSchmittInput; // non-zero if AH pins are Schmitt input
551  UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
552  UCHAR CSlowSlew; // non-zero if BL pins have slow slew
553  UCHAR CSchmittInput; // non-zero if BL pins are Schmitt input
554  UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
555  UCHAR DSlowSlew; // non-zero if BH pins have slow slew
556  UCHAR DSchmittInput; // non-zero if BH pins are Schmitt input
557  UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
558  UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN
559  UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN
560  UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN
561  UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN
562  UCHAR AIsVCP8; // non-zero if interface is to use VCP drivers
563  UCHAR BIsVCP8; // non-zero if interface is to use VCP drivers
564  UCHAR CIsVCP8; // non-zero if interface is to use VCP drivers
565  UCHAR DIsVCP8; // non-zero if interface is to use VCP drivers
566 
568 
569 
572  FT_HANDLE ftHandle,
573  PFT_PROGRAM_DATA pData
574  );
575 
578  FT_HANDLE ftHandle,
579  PFT_PROGRAM_DATA lpData,
580  char *Manufacturer,
581  char *ManufacturerId,
582  char *Description,
583  char *SerialNumber
584  );
585 
588  FT_HANDLE ftHandle,
589  PFT_PROGRAM_DATA pData
590  );
591 
594  FT_HANDLE ftHandle,
595  PFT_PROGRAM_DATA lpData,
596  char *Manufacturer,
597  char *ManufacturerId,
598  char *Description,
599  char *SerialNumber
600  );
601 
604  FT_HANDLE ftHandle,
605  LPDWORD lpdwSize
606  );
607 
610  FT_HANDLE ftHandle,
611  PUCHAR pucData,
612  DWORD dwDataLen
613  );
614 
617  FT_HANDLE ftHandle,
618  PUCHAR pucData,
619  DWORD dwDataLen,
620  LPDWORD lpdwBytesRead
621  );
622 
625  FT_HANDLE ftHandle,
626  UCHAR ucLatency
627  );
628 
631  FT_HANDLE ftHandle,
632  PUCHAR pucLatency
633  );
634 
637  FT_HANDLE ftHandle,
638  UCHAR ucMask,
639  UCHAR ucEnable
640  );
641 
644  FT_HANDLE ftHandle,
645  PUCHAR pucMode
646  );
647 
650  FT_HANDLE ftHandle,
651  ULONG ulInTransferSize,
652  ULONG ulOutTransferSize
653  );
654 
657  FT_HANDLE ftHandle,
658  ULONG ulDeadmanTimeout // -1 for infinite (2.6 kernels only). High +ve number for 2.4 kernels
659  );
660 
663  FT_HANDLE ftHandle,
664  FT_DEVICE *lpftDevice,
665  LPDWORD lpdwID,
666  PCHAR SerialNumber,
667  PCHAR Description,
668  LPVOID Dummy
669  );
670 
673  FT_HANDLE ftHandle
674  );
675 
678  FT_HANDLE ftHandle
679  );
680 
682 FT_STATUS WINAPI FT_SetResetPipeRetryCount( // Linux, OS X: Not supported
683  FT_HANDLE ftHandle,
684  DWORD dwCount
685  );
686 
688 FT_STATUS WINAPI FT_ResetPort( // Linux, OS X: Not supported
689  FT_HANDLE ftHandle
690  );
691 
693 FT_STATUS WINAPI FT_CyclePort( // Linux, OS X: Not supported
694  FT_HANDLE ftHandle
695  );
696 
697 
698 //
699 // Win32-type functions
700 //
701 
704  LPCSTR lpszName,
705  DWORD dwAccess,
706  DWORD dwShareMode,
707  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
708  DWORD dwCreate,
709  DWORD dwAttrsAndFlags,
710  HANDLE hTemplate
711  );
712 
715  FT_HANDLE ftHandle
716  );
717 
720  FT_HANDLE ftHandle,
721  LPVOID lpBuffer,
722  DWORD nBufferSize,
723  LPDWORD lpBytesReturned,
724  LPOVERLAPPED lpOverlapped
725  );
726 
729  FT_HANDLE ftHandle,
730  LPVOID lpBuffer,
731  DWORD nBufferSize,
732  LPDWORD lpBytesWritten,
733  LPOVERLAPPED lpOverlapped
734  );
735 
738  FT_HANDLE ftHandle
739  );
740 
742 BOOL WINAPI FT_W32_GetOverlappedResult( // Linux, OS X: Not supported
743  FT_HANDLE ftHandle,
744  LPOVERLAPPED lpOverlapped,
745  LPDWORD lpdwBytesTransferred,
746  BOOL bWait
747  );
748 
750 BOOL WINAPI FT_W32_CancelIo( // Linux, OS X: Not supported
751  FT_HANDLE ftHandle
752  );
753 
754 
755 //
756 // Win32 COMM API type functions
757 //
758 typedef struct _FTCOMSTAT {
759  DWORD fCtsHold : 1;
760  DWORD fDsrHold : 1;
761  DWORD fRlsdHold : 1;
762  DWORD fXoffHold : 1;
763  DWORD fXoffSent : 1;
764  DWORD fEof : 1;
765  DWORD fTxim : 1;
766  DWORD fReserved : 25;
767  DWORD cbInQue;
768  DWORD cbOutQue;
770 
771 typedef struct _FTDCB {
772  DWORD DCBlength; /* sizeof(FTDCB) */
773  DWORD BaudRate; /* Baudrate at which running */
774  DWORD fBinary: 1; /* Binary Mode (skip EOF check) */
775  DWORD fParity: 1; /* Enable parity checking */
776  DWORD fOutxCtsFlow:1; /* CTS handshaking on output */
777  DWORD fOutxDsrFlow:1; /* DSR handshaking on output */
778  DWORD fDtrControl:2; /* DTR Flow control */
779  DWORD fDsrSensitivity:1; /* DSR Sensitivity */
780  DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
781  DWORD fOutX: 1; /* Enable output X-ON/X-OFF */
782  DWORD fInX: 1; /* Enable input X-ON/X-OFF */
783  DWORD fErrorChar: 1; /* Enable Err Replacement */
784  DWORD fNull: 1; /* Enable Null stripping */
785  DWORD fRtsControl:2; /* Rts Flow control */
786  DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
787  DWORD fDummy2:17; /* Reserved */
788  WORD wReserved; /* Not currently used */
789  WORD XonLim; /* Transmit X-ON threshold */
790  WORD XoffLim; /* Transmit X-OFF threshold */
791  BYTE ByteSize; /* Number of bits/byte, 4-8 */
792  BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */
793  BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */
794  char XonChar; /* Tx and Rx X-ON character */
795  char XoffChar; /* Tx and Rx X-OFF character */
796  char ErrorChar; /* Error replacement char */
797  char EofChar; /* End of Input character */
798  char EvtChar; /* Received Event character */
799  WORD wReserved1; /* Fill for now. */
800 } FTDCB, *LPFTDCB;
801 
802 typedef struct _FTTIMEOUTS {
803  DWORD ReadIntervalTimeout; /* Maximum time between read chars. */
804  DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */
805  DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */
806  DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */
807  DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */
809 
810 
813  FT_HANDLE ftHandle
814  );
815 
818  FT_HANDLE ftHandle,
819  LPDWORD lpdwErrors,
820  LPFTCOMSTAT lpftComstat
821  );
822 
825  FT_HANDLE ftHandle,
826  DWORD dwFunc
827  );
828 
831  FT_HANDLE ftHandle,
832  LPDWORD lpdwModemStatus
833  );
834 
837  FT_HANDLE ftHandle,
838  LPFTDCB lpftDcb
839  );
840 
843  FT_HANDLE ftHandle,
844  FTTIMEOUTS *pTimeouts
845  );
846 
849  FT_HANDLE ftHandle,
850  DWORD dwMask
851  );
852 
855  FT_HANDLE ftHandle
856  );
857 
860  FT_HANDLE ftHandle,
861  ULONG ulEventMask
862  );
863 
866  FT_HANDLE ftHandle,
867  LPFTDCB lpftDcb
868  );
869 
872  FT_HANDLE ftHandle,
873  FTTIMEOUTS *pTimeouts
874  );
875 
878  FT_HANDLE ftHandle,
879  DWORD dwReadBufferSize,
880  DWORD dwWriteBufferSize
881  );
882 
885  FT_HANDLE ftHandle,
886  PULONG pulEvent,
887  LPOVERLAPPED lpOverlapped
888  );
889 
890 //
891 // Device information
892 //
893 
894 typedef struct _ft_device_list_info_node {
895  ULONG Flags;
896  ULONG Type;
897  ULONG ID;
898  DWORD LocId;
899  char SerialNumber[16];
900  char Description[64];
901  FT_HANDLE ftHandle;
903 
904 // Device information flags
905 
906 enum {
909 };
910 
911 
914  LPDWORD lpdwNumDevs
915  );
916 
920  LPDWORD lpdwNumDevs
921  );
922 
925  DWORD dwIndex,
926  LPDWORD lpdwFlags,
927  LPDWORD lpdwType,
928  LPDWORD lpdwID,
929  LPDWORD lpdwLocId,
930  LPVOID lpSerialNumber,
931  LPVOID lpDescription,
932  FT_HANDLE *pftHandle
933  );
934 
937  FT_HANDLE ftHandle,
938  LPDWORD lpdwVersion
939  );
940 
943  LPDWORD lpdwVersion
944  );
945 
946 //
947 // Events
948 //
949 
950 #define EV_RXCHAR 0x0001 // Any Character received
951 #define EV_RXFLAG 0x0002 // Received certain character
952 #define EV_TXEMPTY 0x0004 // Transmitt Queue Empty
953 #define EV_CTS 0x0008 // CTS changed state
954 #define EV_DSR 0x0010 // DSR changed state
955 #define EV_RLSD 0x0020 // RLSD changed state
956 #define EV_BREAK 0x0040 // BREAK received
957 #define EV_ERR 0x0080 // Line status error occurred
958 #define EV_RING 0x0100 // Ring signal detected
959 #define EV_PERR 0x0200 // Printer error occured
960 #define EV_RX80FULL 0x0400 // Receive buffer is 80 percent full
961 #define EV_EVENT1 0x0800 // Provider specific event 1
962 #define EV_EVENT2 0x1000 // Provider specific event 2
963 
964 //
965 // Escape Functions
966 //
967 
968 #define SETXOFF 1 // Simulate XOFF received
969 #define SETXON 2 // Simulate XON received
970 #define SETRTS 3 // Set RTS high
971 #define CLRRTS 4 // Set RTS low
972 #define SETDTR 5 // Set DTR high
973 #define CLRDTR 6 // Set DTR low
974 #define RESETDEV 7 // Reset device if possible
975 #define SETBREAK 8 // Set the device break line.
976 #define CLRBREAK 9 // Clear the device break line.
977 
978 //
979 // PURGE function flags.
980 //
981 #define PURGE_TXABORT 0x0001 // Kill the pending/current writes to the comm port.
982 #define PURGE_RXABORT 0x0002 // Kill the pending/current reads to the comm port.
983 #define PURGE_TXCLEAR 0x0004 // Kill the transmit queue if there.
984 #define PURGE_RXCLEAR 0x0008 // Kill the typeahead buffer if there.
985 
986 
987 
988 
989 
990 
991 
992 
993 
994 
995 
996 
997 
998 
999 #ifdef __cplusplus
1000 }
1001 #endif
1002 
1003 
1004 #endif /* FTD2XX_H */
1005 
1006 
1007 
1008 
1009 
1010 
FTD2XX_API FT_STATUS WINAPI FT_EE_Read(FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData)
struct _EVENT_HANDLE EVENT_HANDLE
FTD2XX_API BOOL WINAPI FT_W32_WriteFile(FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesWritten, LPOVERLAPPED lpOverlapped)
FTD2XX_API FT_STATUS WINAPI FT_OpenEx(PVOID pArg1, DWORD Flags, FT_HANDLE *pHandle)
FTD2XX_API FT_STATUS WINAPI FT_Open(int deviceNumber, FT_HANDLE *pHandle)
WORD * LPWORD
Definition: WinTypes.h:30
FTD2XX_API FT_STATUS FT_SetVIDPID(DWORD dwVID, DWORD dwPID)
FTD2XX_API FT_STATUS WINAPI FT_WriteEE(FT_HANDLE ftHandle, DWORD dwWordOffset, WORD wValue)
FTD2XX_API FT_STATUS WINAPI FT_ListDevices(PVOID pArg1, PVOID pArg2, DWORD Flags)
unsigned char UCHAR
Definition: WinTypes.h:11
FTD2XX_API FT_STATUS WINAPI FT_EE_UAWrite(FT_HANDLE ftHandle, PUCHAR pucData, DWORD dwDataLen)
unsigned char BYTE
Definition: WinTypes.h:13
FTD2XX_API BOOL WINAPI FT_W32_ReadFile(FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD nBufferSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped)
struct _ft_device_list_info_node FT_DEVICE_LIST_INFO_NODE
void(* PFT_EVENT_HANDLER)(DWORD, DWORD)
Definition: ftd2xx.h:190
FTD2XX_API FT_STATUS WINAPI FT_WaitOnMask(FT_HANDLE ftHandle, DWORD *Mask)
DWORD * LPDWORD
Definition: WinTypes.h:29
FTD2XX_API BOOL WINAPI FT_W32_EscapeCommFunction(FT_HANDLE ftHandle, DWORD dwFunc)
FTD2XX_API FT_STATUS WINAPI FT_GetLibraryVersion(LPDWORD lpdwVersion)
FTD2XX_API FT_STATUS WINAPI FT_EE_ProgramEx(FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData, char *Manufacturer, char *ManufacturerId, char *Description, char *SerialNumber)
FTD2XX_API BOOL WINAPI FT_W32_SetCommState(FT_HANDLE ftHandle, LPFTDCB lpftDcb)
FTD2XX_API FT_STATUS WINAPI FT_ResetDevice(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_SetUSBParameters(FT_HANDLE ftHandle, ULONG ulInTransferSize, ULONG ulOutTransferSize)
FTD2XX_API BOOL WINAPI FT_W32_SetupComm(FT_HANDLE ftHandle, DWORD dwReadBufferSize, DWORD dwWriteBufferSize)
struct ft_program_data FT_PROGRAM_DATA
struct _FTDCB FTDCB
FTD2XX_API BOOL WINAPI FT_W32_GetOverlappedResult(FT_HANDLE ftHandle, LPOVERLAPPED lpOverlapped, LPDWORD lpdwBytesTransferred, BOOL bWait)
FTD2XX_API FT_STATUS WINAPI FT_GetModemStatus(FT_HANDLE ftHandle, ULONG *pModemStatus)
FTD2XX_API FT_STATUS WINAPI FT_ClrDtr(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_GetDeviceInfoList(FT_DEVICE_LIST_INFO_NODE *pDest, LPDWORD lpdwNumDevs)
FTD2XX_API FT_STATUS WINAPI FT_SetChars(FT_HANDLE ftHandle, UCHAR EventChar, UCHAR EventCharEnabled, UCHAR ErrorChar, UCHAR ErrorCharEnabled)
FTD2XX_API FT_STATUS WINAPI FT_EraseEE(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_CyclePort(FT_HANDLE ftHandle)
struct _FTTIMEOUTS FTTIMEOUTS
FTD2XX_API FT_STATUS WINAPI FT_SetBitMode(FT_HANDLE ftHandle, UCHAR ucMask, UCHAR ucEnable)
PVOID FT_HANDLE
Definition: ftd2xx.h:73
FTD2XX_API FT_STATUS WINAPI FT_CreateDeviceInfoList(LPDWORD lpdwNumDevs)
Definition: ftd2xx.h:80
FTD2XX_API BOOL WINAPI FT_W32_GetCommTimeouts(FT_HANDLE ftHandle, FTTIMEOUTS *pTimeouts)
FTD2XX_API BOOL WINAPI FT_W32_PurgeComm(FT_HANDLE ftHandle, DWORD dwMask)
FTD2XX_API FT_STATUS WINAPI FT_SetFlowControl(FT_HANDLE ftHandle, USHORT FlowControl, UCHAR XonChar, UCHAR XoffChar)
void * PVOID
Definition: WinTypes.h:22
FTD2XX_API FT_STATUS WINAPI FT_GetEventStatus(FT_HANDLE ftHandle, DWORD *dwEventDWord)
FTD2XX_API BOOL WINAPI FT_W32_ClearCommBreak(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_ReadEE(FT_HANDLE ftHandle, DWORD dwWordOffset, LPWORD lpwValue)
FTD2XX_API FT_STATUS WINAPI FT_SetDataCharacteristics(FT_HANDLE ftHandle, UCHAR WordLength, UCHAR StopBits, UCHAR Parity)
FTD2XX_API FT_STATUS WINAPI FT_RestartInTask(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_GetLatencyTimer(FT_HANDLE ftHandle, PUCHAR pucLatency)
FTD2XX_API FT_STATUS WINAPI FT_IoCtl(FT_HANDLE ftHandle, DWORD dwIoControlCode, LPVOID lpInBuf, DWORD nInBufSize, LPVOID lpOutBuf, DWORD nOutBufSize, LPDWORD lpBytesReturned, LPOVERLAPPED lpOverlapped)
struct ft_program_data * PFT_PROGRAM_DATA
FTD2XX_API FT_STATUS WINAPI FT_EE_UASize(FT_HANDLE ftHandle, LPDWORD lpdwSize)
FTD2XX_API FT_STATUS WINAPI FT_Read(FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToRead, LPDWORD lpBytesReturned)
#define WINAPI
Definition: ftd2xx.h:38
FTD2XX_API FT_STATUS WINAPI FT_EE_Program(FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData)
FTD2XX_API FT_STATUS WINAPI FT_EE_ReadEx(FT_HANDLE ftHandle, PFT_PROGRAM_DATA pData, char *Manufacturer, char *ManufacturerId, char *Description, char *SerialNumber)
FTD2XX_API FT_STATUS WINAPI FT_EE_UARead(FT_HANDLE ftHandle, PUCHAR pucData, DWORD dwDataLen, LPDWORD lpdwBytesRead)
int iVar
Definition: ftd2xx.h:65
FTD2XX_API FT_STATUS WINAPI FT_GetStatus(FT_HANDLE ftHandle, DWORD *dwRxBytes, DWORD *dwTxBytes, DWORD *dwEventDWord)
FTD2XX_API FT_HANDLE WINAPI FT_W32_CreateFile(LPCTSTR lpszName, DWORD dwAccess, DWORD dwShareMode, LPSECURITY_ATTRIBUTES lpSecurityAttributes, DWORD dwCreate, DWORD dwAttrsAndFlags, HANDLE hTemplate)
FTD2XX_API BOOL WINAPI FT_W32_WaitCommEvent(FT_HANDLE ftHandle, PULONG pulEvent, LPOVERLAPPED lpOverlapped)
FTD2XX_API FT_STATUS WINAPI FT_ResetPort(FT_HANDLE ftHandle)
struct _FTCOMSTAT * LPFTCOMSTAT
FTD2XX_API FT_STATUS WINAPI FT_SetBaudRate(FT_HANDLE ftHandle, ULONG BaudRate)
FTD2XX_API FT_STATUS WINAPI FT_GetDriverVersion(FT_HANDLE ftHandle, LPDWORD lpdwVersion)
FTD2XX_API FT_STATUS WINAPI FT_SetWaitMask(FT_HANDLE ftHandle, DWORD Mask)
ULONG FT_DEVICE
Definition: ftd2xx.h:207
FTD2XX_API FT_STATUS WINAPI FT_Purge(FT_HANDLE ftHandle, ULONG Mask)
unsigned long ULONG
Definition: WinTypes.h:8
FTD2XX_API FT_STATUS FT_GetVIDPID(DWORD *pdwVID, DWORD *pdwPID)
void * HANDLE
Definition: WinTypes.h:23
FTD2XX_API BOOL WINAPI FT_W32_ClearCommError(FT_HANDLE ftHandle, LPDWORD lpdwErrors, LPFTCOMSTAT lpftComstat)
FTD2XX_API FT_STATUS WINAPI FT_ClrRts(FT_HANDLE ftHandle)
#define FTD2XX_API
Definition: ftd2xx.h:60
FTD2XX_API BOOL WINAPI FT_W32_GetCommModemStatus(FT_HANDLE ftHandle, LPDWORD lpdwModemStatus)
unsigned short USHORT
Definition: WinTypes.h:9
FTD2XX_API FT_STATUS WINAPI FT_GetQueueStatus(FT_HANDLE ftHandle, DWORD *dwRxBytes)
FTD2XX_API BOOL WINAPI FT_W32_CloseHandle(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_GetDeviceInfoDetail(DWORD dwIndex, LPDWORD lpdwFlags, LPDWORD lpdwType, LPDWORD lpdwID, LPDWORD lpdwLocId, LPVOID lpSerialNumber, LPVOID lpDescription, FT_HANDLE *pftHandle)
FTD2XX_API FT_STATUS WINAPI FT_Close(FT_HANDLE ftHandle)
FTD2XX_API BOOL WINAPI FT_W32_CancelIo(FT_HANDLE ftHandle)
FTD2XX_API BOOL WINAPI FT_W32_GetCommState(FT_HANDLE ftHandle, LPFTDCB lpftDcb)
FTD2XX_API FT_STATUS WINAPI FT_SetDeadmanTimeout(FT_HANDLE ftHandle, ULONG ulDeadmanTimeout)
FTD2XX_API FT_STATUS WINAPI FT_SetEventNotification(FT_HANDLE ftHandle, DWORD Mask, PVOID Param)
PVOID LPVOID
Definition: WinTypes.h:32
struct _FTTIMEOUTS * LPFTTIMEOUTS
const char * LPCSTR
Definition: WinTypes.h:20
struct _FTDCB * LPFTDCB
unsigned short WORD
Definition: WinTypes.h:12
char * PCHAR
Definition: WinTypes.h:21
FTD2XX_API BOOL WINAPI FT_W32_SetCommBreak(FT_HANDLE ftHandle)
int BOOL
Definition: WinTypes.h:15
FTD2XX_API FT_STATUS WINAPI FT_GetBitMode(FT_HANDLE ftHandle, PUCHAR pucMode)
FTD2XX_API FT_STATUS WINAPI FT_SetLatencyTimer(FT_HANDLE ftHandle, UCHAR ucLatency)
FTD2XX_API DWORD WINAPI FT_W32_GetLastError(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_SetDivisor(FT_HANDLE ftHandle, USHORT Divisor)
FTD2XX_API BOOL WINAPI FT_W32_SetCommMask(FT_HANDLE ftHandle, ULONG ulEventMask)
FTD2XX_API BOOL WINAPI FT_W32_SetCommTimeouts(FT_HANDLE ftHandle, FTTIMEOUTS *pTimeouts)
FTD2XX_API FT_STATUS WINAPI FT_SetTimeouts(FT_HANDLE ftHandle, ULONG ReadTimeout, ULONG WriteTimeout)
unsigned long DWORD
Definition: WinTypes.h:7
FTD2XX_API FT_STATUS WINAPI FT_SetRts(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_SetBreakOn(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_Write(FT_HANDLE ftHandle, LPVOID lpBuffer, DWORD dwBytesToWrite, LPDWORD lpBytesWritten)
unsigned char * PUCHAR
Definition: WinTypes.h:19
ULONG * PULONG
Definition: WinTypes.h:31
pthread_mutex_t eMutex
Definition: ftd2xx.h:64
FTD2XX_API FT_STATUS WINAPI FT_StopInTask(FT_HANDLE ftHandle)
FTD2XX_API FT_STATUS WINAPI FT_SetResetPipeRetryCount(FT_HANDLE ftHandle, DWORD dwCount)
FTD2XX_API FT_STATUS WINAPI FT_SetDtr(FT_HANDLE ftHandle)
struct _FTCOMSTAT FTCOMSTAT
FTD2XX_API FT_STATUS WINAPI FT_GetDeviceInfo(FT_HANDLE ftHandle, FT_DEVICE *lpftDevice, LPDWORD lpdwID, PCHAR SerialNumber, PCHAR Description, LPVOID Dummy)
pthread_cond_t eCondVar
Definition: ftd2xx.h:63
FTD2XX_API FT_STATUS WINAPI FT_SetBreakOff(FT_HANDLE ftHandle)
ULONG FT_STATUS
Definition: ftd2xx.h:74