Mostly minor fixes up until version 0.8.10.
[irreco.git] / irtrans / irserver / src / common / FTD2XX.H
blob9cfe171db07b60ac68d92c5f3b4deb168f752e10
1 /*++
3 Copyright (c) 2001-2005  Future Technology Devices International Ltd.
5 Module Name:
7     ftd2xx.h
9 Abstract:
11     Native USB device driver for FTDI FT8U232/245
12     FTD2XX library definitions
14 Environment:
16     kernel & user mode
18 Revision History:
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         23/01/04        awm             Added support for open-by-location.
27         16/03/04        awm             Added support for FT2232C.
28         23/09/04        awm             Added support for FT232R.
29         20/10/04        awm             Added FT_CyclePort.
30         18/01/05        awm             Added FT_DEVICE_LIST_INFO_NODE type.
31         11/02/05        awm             Added LocId to FT_DEVICE_LIST_INFO_NODE.
32         25/08/05        awm             Added FT_SetDeadmanTimeout.
33         02/12/05        awm             Removed obsolete references.
34         05/12/05        awm             Added FT_GetVersion, FT_GetVersionEx.
35         
36         
37 --*/
40 #ifndef FTD2XX_H
41 #define FTD2XX_H
43 // The following ifdef block is the standard way of creating macros
44 // which make exporting from a DLL simpler.  All files within this DLL
45 // are compiled with the FTD2XX_EXPORTS symbol defined on the command line.
46 // This symbol should not be defined on any project that uses this DLL.
47 // This way any other project whose source files include this file see
48 // FTD2XX_API functions as being imported from a DLL, whereas this DLL
49 // sees symbols defined with this macro as being exported.
51 #ifdef FTD2XX_EXPORTS
52 #define FTD2XX_API __declspec(dllexport)
53 #else
54 #define FTD2XX_API __declspec(dllimport)
55 #endif
58 typedef PVOID   FT_HANDLE;
59 typedef ULONG   FT_STATUS;
62 // Device status
64 enum {
65     FT_OK,
66     FT_INVALID_HANDLE,
67     FT_DEVICE_NOT_FOUND,
68     FT_DEVICE_NOT_OPENED,
69     FT_IO_ERROR,
70     FT_INSUFFICIENT_RESOURCES,
71     FT_INVALID_PARAMETER,
72     FT_INVALID_BAUD_RATE,
74     FT_DEVICE_NOT_OPENED_FOR_ERASE,
75     FT_DEVICE_NOT_OPENED_FOR_WRITE,
76     FT_FAILED_TO_WRITE_DEVICE,
77     FT_EEPROM_READ_FAILED,
78     FT_EEPROM_WRITE_FAILED,
79     FT_EEPROM_ERASE_FAILED,
80         FT_EEPROM_NOT_PRESENT,
81         FT_EEPROM_NOT_PROGRAMMED,
82         FT_INVALID_ARGS,
83         FT_NOT_SUPPORTED,
84         FT_OTHER_ERROR
88 #define FT_SUCCESS(status) ((status) == FT_OK)
91 // FT_OpenEx Flags
94 #define FT_OPEN_BY_SERIAL_NUMBER    1
95 #define FT_OPEN_BY_DESCRIPTION      2
96 #define FT_OPEN_BY_LOCATION                     4
99 // FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags
102 #define FT_LIST_NUMBER_ONLY                     0x80000000
103 #define FT_LIST_BY_INDEX                        0x40000000
104 #define FT_LIST_ALL                                     0x20000000
106 #define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)
109 // Baud Rates
112 #define FT_BAUD_300                     300
113 #define FT_BAUD_600                     600
114 #define FT_BAUD_1200            1200
115 #define FT_BAUD_2400            2400
116 #define FT_BAUD_4800            4800
117 #define FT_BAUD_9600            9600
118 #define FT_BAUD_14400           14400
119 #define FT_BAUD_19200           19200
120 #define FT_BAUD_38400           38400
121 #define FT_BAUD_57600           57600
122 #define FT_BAUD_115200          115200
123 #define FT_BAUD_230400          230400
124 #define FT_BAUD_460800          460800
125 #define FT_BAUD_921600          921600
128 // Word Lengths
131 #define FT_BITS_8                       (UCHAR) 8
132 #define FT_BITS_7                       (UCHAR) 7
133 #define FT_BITS_6                       (UCHAR) 6
134 #define FT_BITS_5                       (UCHAR) 5
137 // Stop Bits
140 #define FT_STOP_BITS_1          (UCHAR) 0
141 #define FT_STOP_BITS_1_5        (UCHAR) 1
142 #define FT_STOP_BITS_2          (UCHAR) 2
145 // Parity
148 #define FT_PARITY_NONE          (UCHAR) 0
149 #define FT_PARITY_ODD           (UCHAR) 1
150 #define FT_PARITY_EVEN          (UCHAR) 2
151 #define FT_PARITY_MARK          (UCHAR) 3
152 #define FT_PARITY_SPACE         (UCHAR) 4
155 // Flow Control
158 #define FT_FLOW_NONE        0x0000
159 #define FT_FLOW_RTS_CTS     0x0100
160 #define FT_FLOW_DTR_DSR     0x0200
161 #define FT_FLOW_XON_XOFF    0x0400
164 // Purge rx and tx buffers
166 #define FT_PURGE_RX         1
167 #define FT_PURGE_TX         2
170 // Events
173 typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);
175 #define FT_EVENT_RXCHAR             1
176 #define FT_EVENT_MODEM_STATUS   2
179 // Timeouts
182 #define FT_DEFAULT_RX_TIMEOUT   300
183 #define FT_DEFAULT_TX_TIMEOUT   300
186 // Device types
189 typedef ULONG   FT_DEVICE;
191 enum {
192     FT_DEVICE_BM,
193     FT_DEVICE_AM,
194     FT_DEVICE_100AX,
195     FT_DEVICE_UNKNOWN,
196     FT_DEVICE_2232C,
197     FT_DEVICE_232R
201 #ifdef __cplusplus
202 extern "C" {
203 #endif
206 FTD2XX_API
207 FT_STATUS WINAPI FT_Open(
208         int deviceNumber,
209         FT_HANDLE *pHandle
210         );
212 FTD2XX_API
213 FT_STATUS WINAPI FT_OpenEx(
214     PVOID pArg1,
215     DWORD Flags,
216     FT_HANDLE *pHandle
217     );
219 FTD2XX_API 
220 FT_STATUS WINAPI FT_ListDevices(
221         PVOID pArg1,
222         PVOID pArg2,
223         DWORD Flags
224         );
226 FTD2XX_API
227 FT_STATUS WINAPI FT_Close(
228     FT_HANDLE ftHandle
229     );
231 FTD2XX_API
232 FT_STATUS WINAPI FT_Read(
233     FT_HANDLE ftHandle,
234     LPVOID lpBuffer,
235     DWORD nBufferSize,
236     LPDWORD lpBytesReturned
237     );
239 FTD2XX_API 
240 FT_STATUS WINAPI FT_Write(
241     FT_HANDLE ftHandle,
242     LPVOID lpBuffer,
243     DWORD nBufferSize,
244     LPDWORD lpBytesWritten
245     );
247 FTD2XX_API 
248 FT_STATUS WINAPI FT_IoCtl(
249     FT_HANDLE ftHandle,
250     DWORD dwIoControlCode,
251     LPVOID lpInBuf,
252     DWORD nInBufSize,
253     LPVOID lpOutBuf,
254     DWORD nOutBufSize,
255     LPDWORD lpBytesReturned,
256     LPOVERLAPPED lpOverlapped
257     );
259 FTD2XX_API
260 FT_STATUS WINAPI FT_SetBaudRate(
261     FT_HANDLE ftHandle,
262         ULONG BaudRate
263         );
265 FTD2XX_API
266 FT_STATUS WINAPI FT_SetDivisor(
267     FT_HANDLE ftHandle,
268         USHORT Divisor
269         );
271 FTD2XX_API
272 FT_STATUS WINAPI FT_SetDataCharacteristics(
273     FT_HANDLE ftHandle,
274         UCHAR WordLength,
275         UCHAR StopBits,
276         UCHAR Parity
277         );
279 FTD2XX_API
280 FT_STATUS WINAPI FT_SetFlowControl(
281     FT_HANDLE ftHandle,
282     USHORT FlowControl,
283     UCHAR XonChar,
284     UCHAR XoffChar
285         );
287 FTD2XX_API
288 FT_STATUS WINAPI FT_ResetDevice(
289     FT_HANDLE ftHandle
290         );
292 FTD2XX_API
293 FT_STATUS WINAPI FT_SetDtr(
294     FT_HANDLE ftHandle
295         );
297 FTD2XX_API
298 FT_STATUS WINAPI FT_ClrDtr(
299     FT_HANDLE ftHandle
300         );
302 FTD2XX_API
303 FT_STATUS WINAPI FT_SetRts(
304     FT_HANDLE ftHandle
305         );
307 FTD2XX_API
308 FT_STATUS WINAPI FT_ClrRts(
309     FT_HANDLE ftHandle
310         );
312 FTD2XX_API
313 FT_STATUS WINAPI FT_GetModemStatus(
314     FT_HANDLE ftHandle,
315         ULONG *pModemStatus
316         );
318 FTD2XX_API
319 FT_STATUS WINAPI FT_SetChars(
320     FT_HANDLE ftHandle,
321         UCHAR EventChar,
322         UCHAR EventCharEnabled,
323         UCHAR ErrorChar,
324         UCHAR ErrorCharEnabled
325     );
327 FTD2XX_API
328 FT_STATUS WINAPI FT_Purge(
329     FT_HANDLE ftHandle,
330         ULONG Mask
331         );
333 FTD2XX_API
334 FT_STATUS WINAPI FT_SetTimeouts(
335     FT_HANDLE ftHandle,
336         ULONG ReadTimeout,
337         ULONG WriteTimeout
338         );
340 FTD2XX_API
341 FT_STATUS WINAPI FT_GetQueueStatus(
342     FT_HANDLE ftHandle,
343         DWORD *dwRxBytes
344         );
346 FTD2XX_API
347 FT_STATUS WINAPI FT_SetEventNotification(
348     FT_HANDLE ftHandle,
349         DWORD Mask,
350         PVOID Param
351         );
353 FTD2XX_API
354 FT_STATUS WINAPI FT_GetStatus(
355     FT_HANDLE ftHandle,
356     DWORD *dwRxBytes,
357     DWORD *dwTxBytes,
358     DWORD *dwEventDWord
359         );
361 FTD2XX_API
362 FT_STATUS WINAPI FT_SetBreakOn(
363     FT_HANDLE ftHandle
364     );
366 FTD2XX_API
367 FT_STATUS WINAPI FT_SetBreakOff(
368     FT_HANDLE ftHandle
369     );
371 FTD2XX_API
372 FT_STATUS WINAPI FT_SetWaitMask(
373     FT_HANDLE ftHandle,
374     DWORD Mask
375     );
377 FTD2XX_API
378 FT_STATUS WINAPI FT_WaitOnMask(
379     FT_HANDLE ftHandle,
380     DWORD *Mask
381     );
383 FTD2XX_API
384 FT_STATUS WINAPI FT_GetEventStatus(
385     FT_HANDLE ftHandle,
386     DWORD *dwEventDWord
387     );
389 FTD2XX_API
390 FT_STATUS WINAPI FT_ReadEE(
391     FT_HANDLE ftHandle,
392         DWORD dwWordOffset,
393     LPWORD lpwValue
394         );
396 FTD2XX_API
397 FT_STATUS WINAPI FT_WriteEE(
398     FT_HANDLE ftHandle,
399         DWORD dwWordOffset,
400     WORD wValue
401         );
403 FTD2XX_API
404 FT_STATUS WINAPI FT_EraseEE(
405     FT_HANDLE ftHandle
406         );
409 // structure to hold program data for FT_Program function
411 typedef struct ft_program_data {
413         DWORD Signature1;                       // Header - must be 0x00000000 
414         DWORD Signature2;                       // Header - must be 0xffffffff
415         DWORD Version;                          // Header - FT_PROGRAM_DATA version
416                                                                 //          0 = original
417                                     //          1 = FT2232C extensions
418                                                                 //                      2 = FT232R extensions
420         WORD VendorId;                          // 0x0403
421         WORD ProductId;                         // 0x6001
422         char *Manufacturer;                     // "FTDI"
423         char *ManufacturerId;           // "FT"
424         char *Description;                      // "USB HS Serial Converter"
425         char *SerialNumber;                     // "FT000001" if fixed, or NULL
426         WORD MaxPower;                          // 0 < MaxPower <= 500
427         WORD PnP;                                       // 0 = disabled, 1 = enabled
428         WORD SelfPowered;                       // 0 = bus powered, 1 = self powered
429         WORD RemoteWakeup;                      // 0 = not capable, 1 = capable
430         //
431         // Rev4 extensions
432         //
433         UCHAR Rev4;                                     // non-zero if Rev4 chip, zero otherwise
434         UCHAR IsoIn;                            // non-zero if in endpoint is isochronous
435         UCHAR IsoOut;                           // non-zero if out endpoint is isochronous
436         UCHAR PullDownEnable;           // non-zero if pull down enabled
437         UCHAR SerNumEnable;                     // non-zero if serial number to be used
438         UCHAR USBVersionEnable;         // non-zero if chip uses USBVersion
439         WORD USBVersion;                        // BCD (0x0200 => USB2)
440         //
441         // FT2232C extensions
442         //
443         UCHAR Rev5;                                     // non-zero if Rev5 chip, zero otherwise
444         UCHAR IsoInA;                           // non-zero if in endpoint is isochronous
445         UCHAR IsoInB;                           // non-zero if in endpoint is isochronous
446         UCHAR IsoOutA;                          // non-zero if out endpoint is isochronous
447         UCHAR IsoOutB;                          // non-zero if out endpoint is isochronous
448         UCHAR PullDownEnable5;          // non-zero if pull down enabled
449         UCHAR SerNumEnable5;            // non-zero if serial number to be used
450         UCHAR USBVersionEnable5;        // non-zero if chip uses USBVersion
451         WORD USBVersion5;                       // BCD (0x0200 => USB2)
452         UCHAR AIsHighCurrent;           // non-zero if interface is high current
453         UCHAR BIsHighCurrent;           // non-zero if interface is high current
454         UCHAR IFAIsFifo;                        // non-zero if interface is 245 FIFO
455         UCHAR IFAIsFifoTar;                     // non-zero if interface is 245 FIFO CPU target
456         UCHAR IFAIsFastSer;                     // non-zero if interface is Fast serial
457         UCHAR AIsVCP;                           // non-zero if interface is to use VCP drivers
458         UCHAR IFBIsFifo;                        // non-zero if interface is 245 FIFO
459         UCHAR IFBIsFifoTar;                     // non-zero if interface is 245 FIFO CPU target
460         UCHAR IFBIsFastSer;                     // non-zero if interface is Fast serial
461         UCHAR BIsVCP;                           // non-zero if interface is to use VCP drivers
462         //
463         // FT232R extensions
464         //
465         UCHAR UseExtOsc;                        // Use External Oscillator
466         UCHAR HighDriveIOs;                     // High Drive I/Os
467         UCHAR EndpointSize;                     // Endpoint size
469         UCHAR PullDownEnableR;          // non-zero if pull down enabled
470         UCHAR SerNumEnableR;            // non-zero if serial number to be used
472         UCHAR InvertTXD;                        // non-zero if invert TXD
473         UCHAR InvertRXD;                        // non-zero if invert RXD
474         UCHAR InvertRTS;                        // non-zero if invert RTS
475         UCHAR InvertCTS;                        // non-zero if invert CTS
476         UCHAR InvertDTR;                        // non-zero if invert DTR
477         UCHAR InvertDSR;                        // non-zero if invert DSR
478         UCHAR InvertDCD;                        // non-zero if invert DCD
479         UCHAR InvertRI;                         // non-zero if invert RI
481         UCHAR Cbus0;                            // Cbus Mux control
482         UCHAR Cbus1;                            // Cbus Mux control
483         UCHAR Cbus2;                            // Cbus Mux control
484         UCHAR Cbus3;                            // Cbus Mux control
485         UCHAR Cbus4;                            // Cbus Mux control
487         UCHAR RIsVCP;                           // non-zero if using VCP drivers
489 } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;
491 FTD2XX_API
492 FT_STATUS WINAPI FT_EE_Program(
493     FT_HANDLE ftHandle,
494         PFT_PROGRAM_DATA pData
495         );
497 FTD2XX_API
498 FT_STATUS WINAPI FT_EE_ProgramEx(
499     FT_HANDLE ftHandle,
500         PFT_PROGRAM_DATA pData,
501         char *Manufacturer,
502         char *ManufacturerId,
503         char *Description,
504         char *SerialNumber
505         );
507 FTD2XX_API
508 FT_STATUS WINAPI FT_EE_Read(
509     FT_HANDLE ftHandle,
510         PFT_PROGRAM_DATA pData
511         );
513 FTD2XX_API
514 FT_STATUS WINAPI FT_EE_ReadEx(
515     FT_HANDLE ftHandle,
516         PFT_PROGRAM_DATA pData,
517         char *Manufacturer,
518         char *ManufacturerId,
519         char *Description,
520         char *SerialNumber
521         );
523 FTD2XX_API
524 FT_STATUS WINAPI FT_EE_UASize(
525     FT_HANDLE ftHandle,
526         LPDWORD lpdwSize
527         );
529 FTD2XX_API
530 FT_STATUS WINAPI FT_EE_UAWrite(
531     FT_HANDLE ftHandle,
532         PUCHAR pucData,
533         DWORD dwDataLen
534         );
536 FTD2XX_API
537 FT_STATUS WINAPI FT_EE_UARead(
538     FT_HANDLE ftHandle,
539         PUCHAR pucData,
540         DWORD dwDataLen,
541         LPDWORD lpdwBytesRead
542         );
544 FTD2XX_API
545 FT_STATUS WINAPI FT_SetLatencyTimer(
546     FT_HANDLE ftHandle,
547     UCHAR ucLatency
548     );
550 FTD2XX_API
551 FT_STATUS WINAPI FT_GetLatencyTimer(
552     FT_HANDLE ftHandle,
553     PUCHAR pucLatency
554     );
556 FTD2XX_API
557 FT_STATUS WINAPI FT_SetBitMode(
558     FT_HANDLE ftHandle,
559     UCHAR ucMask,
560         UCHAR ucEnable
561     );
563 FTD2XX_API
564 FT_STATUS WINAPI FT_GetBitMode(
565     FT_HANDLE ftHandle,
566     PUCHAR pucMode
567     );
569 FTD2XX_API
570 FT_STATUS WINAPI FT_SetUSBParameters(
571     FT_HANDLE ftHandle,
572     ULONG ulInTransferSize,
573     ULONG ulOutTransferSize
574         );
576 FTD2XX_API
577 FT_STATUS WINAPI FT_SetDeadmanTimeout(
578     FT_HANDLE ftHandle,
579         ULONG ulDeadmanTimeout
580     );
582 FTD2XX_API
583 FT_STATUS WINAPI FT_GetDeviceInfo(
584     FT_HANDLE ftHandle,
585     FT_DEVICE *lpftDevice,
586         LPDWORD lpdwID,
587         PCHAR SerialNumber,
588         PCHAR Description,
589         LPVOID Dummy
590     );
592 FTD2XX_API
593 FT_STATUS WINAPI FT_StopInTask(
594     FT_HANDLE ftHandle
595     );
597 FTD2XX_API
598 FT_STATUS WINAPI FT_RestartInTask(
599     FT_HANDLE ftHandle
600     );
602 FTD2XX_API
603 FT_STATUS WINAPI FT_SetResetPipeRetryCount(
604     FT_HANDLE ftHandle,
605         DWORD dwCount
606     );
608 FTD2XX_API
609 FT_STATUS WINAPI FT_ResetPort(
610     FT_HANDLE ftHandle
611     );
613 FTD2XX_API
614 FT_STATUS WINAPI FT_CyclePort(
615     FT_HANDLE ftHandle
616     );
620 // Win32-type functions
623 FTD2XX_API
624 FT_HANDLE WINAPI FT_W32_CreateFile(
625         LPCSTR                                  lpszName,
626         DWORD                                   dwAccess,
627         DWORD                                   dwShareMode,
628         LPSECURITY_ATTRIBUTES   lpSecurityAttributes,
629         DWORD                                   dwCreate,
630         DWORD                                   dwAttrsAndFlags,
631         HANDLE                                  hTemplate
632         );
634 FTD2XX_API
635 BOOL WINAPI FT_W32_CloseHandle(
636     FT_HANDLE ftHandle
637         );
639 FTD2XX_API
640 BOOL WINAPI FT_W32_ReadFile(
641     FT_HANDLE ftHandle,
642     LPVOID lpBuffer,
643     DWORD nBufferSize,
644     LPDWORD lpBytesReturned,
645         LPOVERLAPPED lpOverlapped
646     );
648 FTD2XX_API
649 BOOL WINAPI FT_W32_WriteFile(
650     FT_HANDLE ftHandle,
651     LPVOID lpBuffer,
652     DWORD nBufferSize,
653     LPDWORD lpBytesWritten,
654         LPOVERLAPPED lpOverlapped
655     );
657 FTD2XX_API
658 DWORD WINAPI FT_W32_GetLastError(
659     FT_HANDLE ftHandle
660     );
662 FTD2XX_API
663 BOOL WINAPI FT_W32_GetOverlappedResult(
664     FT_HANDLE ftHandle,
665         LPOVERLAPPED lpOverlapped,
666     LPDWORD lpdwBytesTransferred,
667         BOOL bWait
668     );
670 FTD2XX_API
671 BOOL WINAPI FT_W32_CancelIo(
672     FT_HANDLE ftHandle
673     );
677 // Win32 COMM API type functions
679 typedef struct _FTCOMSTAT {
680     DWORD fCtsHold : 1;
681     DWORD fDsrHold : 1;
682     DWORD fRlsdHold : 1;
683     DWORD fXoffHold : 1;
684     DWORD fXoffSent : 1;
685     DWORD fEof : 1;
686     DWORD fTxim : 1;
687     DWORD fReserved : 25;
688     DWORD cbInQue;
689     DWORD cbOutQue;
690 } FTCOMSTAT, *LPFTCOMSTAT;
692 typedef struct _FTDCB {
693     DWORD DCBlength;      /* sizeof(FTDCB)                   */
694     DWORD BaudRate;       /* Baudrate at which running       */
695     DWORD fBinary: 1;     /* Binary Mode (skip EOF check)    */
696     DWORD fParity: 1;     /* Enable parity checking          */
697     DWORD fOutxCtsFlow:1; /* CTS handshaking on output       */
698     DWORD fOutxDsrFlow:1; /* DSR handshaking on output       */
699     DWORD fDtrControl:2;  /* DTR Flow control                */
700     DWORD fDsrSensitivity:1; /* DSR Sensitivity              */
701     DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
702     DWORD fOutX: 1;       /* Enable output X-ON/X-OFF        */
703     DWORD fInX: 1;        /* Enable input X-ON/X-OFF         */
704     DWORD fErrorChar: 1;  /* Enable Err Replacement          */
705     DWORD fNull: 1;       /* Enable Null stripping           */
706     DWORD fRtsControl:2;  /* Rts Flow control                */
707     DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
708     DWORD fDummy2:17;     /* Reserved                        */
709     WORD wReserved;       /* Not currently used              */
710     WORD XonLim;          /* Transmit X-ON threshold         */
711     WORD XoffLim;         /* Transmit X-OFF threshold        */
712     BYTE ByteSize;        /* Number of bits/byte, 4-8        */
713     BYTE Parity;          /* 0-4=None,Odd,Even,Mark,Space    */
714     BYTE StopBits;        /* 0,1,2 = 1, 1.5, 2               */
715     char XonChar;         /* Tx and Rx X-ON character        */
716     char XoffChar;        /* Tx and Rx X-OFF character       */
717     char ErrorChar;       /* Error replacement char          */
718     char EofChar;         /* End of Input character          */
719     char EvtChar;         /* Received Event character        */
720     WORD wReserved1;      /* Fill for now.                   */
721 } FTDCB, *LPFTDCB;
723 typedef struct _FTTIMEOUTS {
724     DWORD ReadIntervalTimeout;          /* Maximum time between read chars. */
725     DWORD ReadTotalTimeoutMultiplier;   /* Multiplier of characters.        */
726     DWORD ReadTotalTimeoutConstant;     /* Constant in milliseconds.        */
727     DWORD WriteTotalTimeoutMultiplier;  /* Multiplier of characters.        */
728     DWORD WriteTotalTimeoutConstant;    /* Constant in milliseconds.        */
729 } FTTIMEOUTS,*LPFTTIMEOUTS;
732 FTD2XX_API
733 BOOL WINAPI FT_W32_ClearCommBreak(
734     FT_HANDLE ftHandle
735         );
737 FTD2XX_API
738 BOOL WINAPI FT_W32_ClearCommError(
739     FT_HANDLE ftHandle,
740         LPDWORD lpdwErrors,
741     LPFTCOMSTAT lpftComstat
742         );
744 FTD2XX_API
745 BOOL WINAPI FT_W32_EscapeCommFunction(
746     FT_HANDLE ftHandle,
747         DWORD dwFunc
748         );
750 FTD2XX_API
751 BOOL WINAPI FT_W32_GetCommModemStatus(
752     FT_HANDLE ftHandle,
753         LPDWORD lpdwModemStatus
754         );
756 FTD2XX_API
757 BOOL WINAPI FT_W32_GetCommState(
758     FT_HANDLE ftHandle,
759     LPFTDCB lpftDcb
760         );
762 FTD2XX_API
763 BOOL WINAPI FT_W32_GetCommTimeouts(
764     FT_HANDLE ftHandle,
765     FTTIMEOUTS *pTimeouts
766         );
768 FTD2XX_API
769 BOOL WINAPI FT_W32_PurgeComm(
770     FT_HANDLE ftHandle,
771         DWORD dwMask
772         );
774 FTD2XX_API
775 BOOL WINAPI FT_W32_SetCommBreak(
776     FT_HANDLE ftHandle
777         );
779 FTD2XX_API
780 BOOL WINAPI FT_W32_SetCommMask(
781     FT_HANDLE ftHandle,
782     ULONG ulEventMask
783     );
785 FTD2XX_API
786 BOOL WINAPI FT_W32_SetCommState(
787     FT_HANDLE ftHandle,
788     LPFTDCB lpftDcb
789         );
791 FTD2XX_API
792 BOOL WINAPI FT_W32_SetCommTimeouts(
793     FT_HANDLE ftHandle,
794     FTTIMEOUTS *pTimeouts
795         );
797 FTD2XX_API
798 BOOL WINAPI FT_W32_SetupComm(
799     FT_HANDLE ftHandle,
800         DWORD dwReadBufferSize,
801         DWORD dwWriteBufferSize
802         );
804 FTD2XX_API
805 BOOL WINAPI FT_W32_WaitCommEvent(
806     FT_HANDLE ftHandle,
807     PULONG pulEvent,
808         LPOVERLAPPED lpOverlapped
809     );
813 // Device information
816 typedef struct _ft_device_list_info_node {
817         ULONG Flags;
818     ULONG Type;
819         ULONG ID;
820         DWORD LocId;
821         char SerialNumber[16];
822         char Description[64];
823         FT_HANDLE ftHandle;
824 } FT_DEVICE_LIST_INFO_NODE;
827 FTD2XX_API
828 FT_STATUS WINAPI FT_CreateDeviceInfoList(
829         LPDWORD lpdwNumDevs
830         );
832 FTD2XX_API
833 FT_STATUS WINAPI FT_GetDeviceInfoList(
834         FT_DEVICE_LIST_INFO_NODE *pDest,
835         LPDWORD lpdwNumDevs
836         );
838 FTD2XX_API
839 FT_STATUS WINAPI FT_GetDeviceInfoDetail(
840         DWORD dwIndex,
841         LPDWORD lpdwFlags,
842         LPDWORD lpdwType,
843         LPDWORD lpdwID,
844         LPDWORD lpdwLocId,
845         LPVOID lpSerialNumber,
846         LPVOID lpDescription,
847         FT_HANDLE *pftHandle
848         );
852 // Version information
855 FTD2XX_API
856 FT_STATUS WINAPI FT_GetDriverVersion(
857     FT_HANDLE ftHandle,
858         LPDWORD lpdwVersion
859         );
861 FTD2XX_API
862 FT_STATUS WINAPI FT_GetLibraryVersion(
863         LPDWORD lpdwVersion
864         );
869 #ifdef __cplusplus
871 #endif
874 #endif  /* FTD2XX_H */