Barst  2.0
A server that controls lab hardware.
ftd2xx.h
1 /*++
2 
3 Copyright © 2001-2011 Future Technology Devices International Limited
4 
5 THIS SOFTWARE IS PROVIDED BY FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED "AS IS"
6 AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
7 OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL
8 FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
9 SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT
10 OF SUBSTITUTE GOODS OR SERVICES LOSS OF USE, DATA, OR PROFITS OR BUSINESS INTERRUPTION)
11 HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR
12 TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
13 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14 
15 FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS.
16 
17 FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED.
18 
19 IF A CUSTOM VENDOR ID AND/OR PRODUCT ID OR DESCRIPTION STRING ARE USED, IT IS THE
20 RESPONSIBILITY OF THE PRODUCT MANUFACTURER TO MAINTAIN ANY CHANGES AND SUBSEQUENT WHQL
21 RE-CERTIFICATION AS A RESULT OF MAKING THESE CHANGES.
22 
23 
24 Module Name:
25 
26 ftd2xx.h
27 
28 Abstract:
29 
30 Native USB device driver for FTDI FT232x, FT245x, FT2232x and FT4232x devices
31 FTD2XX library definitions
32 
33 Environment:
34 
35 kernel & user mode
36 
37 
38 --*/
39 
40 
41 #ifndef FTD2XX_H
42 #define FTD2XX_H
43 
44 // The following ifdef block is the standard way of creating macros
45 // which make exporting from a DLL simpler. All files within this DLL
46 // are compiled with the FTD2XX_EXPORTS symbol defined on the command line.
47 // This symbol should not be defined on any project that uses this DLL.
48 // This way any other project whose source files include this file see
49 // FTD2XX_API functions as being imported from a DLL, whereas this DLL
50 // sees symbols defined with this macro as being exported.
51 
52 #ifdef FTD2XX_EXPORTS
53 #define FTD2XX_API __declspec(dllexport)
54 #else
55 #define FTD2XX_API __declspec(dllimport)
56 #endif
57 
58 
59 typedef PVOID FT_HANDLE;
60 typedef ULONG FT_STATUS;
61 
62 //
63 // Device status
64 //
65 enum {
66  FT_OK,
67  FT_INVALID_HANDLE,
68  FT_DEVICE_NOT_FOUND,
69  FT_DEVICE_NOT_OPENED,
70  FT_IO_ERROR,
71  FT_INSUFFICIENT_RESOURCES,
72  FT_INVALID_PARAMETER,
73  FT_INVALID_BAUD_RATE,
74 
75  FT_DEVICE_NOT_OPENED_FOR_ERASE,
76  FT_DEVICE_NOT_OPENED_FOR_WRITE,
77  FT_FAILED_TO_WRITE_DEVICE,
78  FT_EEPROM_READ_FAILED,
79  FT_EEPROM_WRITE_FAILED,
80  FT_EEPROM_ERASE_FAILED,
81  FT_EEPROM_NOT_PRESENT,
82  FT_EEPROM_NOT_PROGRAMMED,
83  FT_INVALID_ARGS,
84  FT_NOT_SUPPORTED,
85  FT_OTHER_ERROR,
86  FT_DEVICE_LIST_NOT_READY,
87 };
88 
89 
90 #define FT_SUCCESS(status) ((status) == FT_OK)
91 
92 //
93 // FT_OpenEx Flags
94 //
95 
96 #define FT_OPEN_BY_SERIAL_NUMBER 1
97 #define FT_OPEN_BY_DESCRIPTION 2
98 #define FT_OPEN_BY_LOCATION 4
99 
100 //
101 // FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags
102 //
103 
104 #define FT_LIST_NUMBER_ONLY 0x80000000
105 #define FT_LIST_BY_INDEX 0x40000000
106 #define FT_LIST_ALL 0x20000000
107 
108 #define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)
109 
110 //
111 // Baud Rates
112 //
113 
114 #define FT_BAUD_300 300
115 #define FT_BAUD_600 600
116 #define FT_BAUD_1200 1200
117 #define FT_BAUD_2400 2400
118 #define FT_BAUD_4800 4800
119 #define FT_BAUD_9600 9600
120 #define FT_BAUD_14400 14400
121 #define FT_BAUD_19200 19200
122 #define FT_BAUD_38400 38400
123 #define FT_BAUD_57600 57600
124 #define FT_BAUD_115200 115200
125 #define FT_BAUD_230400 230400
126 #define FT_BAUD_460800 460800
127 #define FT_BAUD_921600 921600
128 
129 //
130 // Word Lengths
131 //
132 
133 #define FT_BITS_8 (UCHAR) 8
134 #define FT_BITS_7 (UCHAR) 7
135 
136 //
137 // Stop Bits
138 //
139 
140 #define FT_STOP_BITS_1 (UCHAR) 0
141 #define FT_STOP_BITS_2 (UCHAR) 2
142 
143 //
144 // Parity
145 //
146 
147 #define FT_PARITY_NONE (UCHAR) 0
148 #define FT_PARITY_ODD (UCHAR) 1
149 #define FT_PARITY_EVEN (UCHAR) 2
150 #define FT_PARITY_MARK (UCHAR) 3
151 #define FT_PARITY_SPACE (UCHAR) 4
152 
153 //
154 // Flow Control
155 //
156 
157 #define FT_FLOW_NONE 0x0000
158 #define FT_FLOW_RTS_CTS 0x0100
159 #define FT_FLOW_DTR_DSR 0x0200
160 #define FT_FLOW_XON_XOFF 0x0400
161 
162 //
163 // Purge rx and tx buffers
164 //
165 #define FT_PURGE_RX 1
166 #define FT_PURGE_TX 2
167 
168 //
169 // Events
170 //
171 
172 typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);
173 
174 #define FT_EVENT_RXCHAR 1
175 #define FT_EVENT_MODEM_STATUS 2
176 #define FT_EVENT_LINE_STATUS 4
177 
178 //
179 // Timeouts
180 //
181 
182 #define FT_DEFAULT_RX_TIMEOUT 300
183 #define FT_DEFAULT_TX_TIMEOUT 300
184 
185 //
186 // Device types
187 //
188 
189 typedef ULONG FT_DEVICE;
190 
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,
198  FT_DEVICE_2232H,
199  FT_DEVICE_4232H,
200  FT_DEVICE_232H
201 };
202 
203 //
204 // Bit Modes
205 //
206 
207 #define FT_BITMODE_RESET 0x00
208 #define FT_BITMODE_ASYNC_BITBANG 0x01
209 #define FT_BITMODE_MPSSE 0x02
210 #define FT_BITMODE_SYNC_BITBANG 0x04
211 #define FT_BITMODE_MCU_HOST 0x08
212 #define FT_BITMODE_FAST_SERIAL 0x10
213 #define FT_BITMODE_CBUS_BITBANG 0x20
214 #define FT_BITMODE_SYNC_FIFO 0x40
215 
216 //
217 // FT232R CBUS Options EEPROM values
218 //
219 
220 #define FT_232R_CBUS_TXDEN 0x00 // Tx Data Enable
221 #define FT_232R_CBUS_PWRON 0x01 // Power On
222 #define FT_232R_CBUS_RXLED 0x02 // Rx LED
223 #define FT_232R_CBUS_TXLED 0x03 // Tx LED
224 #define FT_232R_CBUS_TXRXLED 0x04 // Tx and Rx LED
225 #define FT_232R_CBUS_SLEEP 0x05 // Sleep
226 #define FT_232R_CBUS_CLK48 0x06 // 48MHz clock
227 #define FT_232R_CBUS_CLK24 0x07 // 24MHz clock
228 #define FT_232R_CBUS_CLK12 0x08 // 12MHz clock
229 #define FT_232R_CBUS_CLK6 0x09 // 6MHz clock
230 #define FT_232R_CBUS_IOMODE 0x0A // IO Mode for CBUS bit-bang
231 #define FT_232R_CBUS_BITBANG_WR 0x0B // Bit-bang write strobe
232 #define FT_232R_CBUS_BITBANG_RD 0x0C // Bit-bang read strobe
233 
234 //
235 // FT232H CBUS Options EEPROM values
236 //
237 
238 #define FT_232H_CBUS_TRISTATE 0x00 // Tristate
239 #define FT_232H_CBUS_TXLED 0x01 // Tx LED
240 #define FT_232H_CBUS_RXLED 0x02 // Rx LED
241 #define FT_232H_CBUS_TXRXLED 0x03 // Tx and Rx LED
242 #define FT_232H_CBUS_PWREN 0x04 // Power Enable
243 #define FT_232H_CBUS_SLEEP 0x05 // Sleep
244 #define FT_232H_CBUS_DRIVE_0 0x06 // Drive pin to logic 0
245 #define FT_232H_CBUS_DRIVE_1 0x07 // Drive pin to logic 1
246 #define FT_232H_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang
247 #define FT_232H_CBUS_TXDEN 0x09 // Tx Data Enable
248 #define FT_232H_CBUS_CLK30 0x0A // 30MHz clock
249 #define FT_232H_CBUS_CLK15 0x0B // 15MHz clock
250 #define FT_232H_CBUS_CLK7_5 0x0C // 7.5MHz clock
251 
252 
253 #ifdef __cplusplus
254 extern "C" {
255 #endif
256 
257 
258  FTD2XX_API
259  FT_STATUS WINAPI FT_Open(
260  int deviceNumber,
261  FT_HANDLE *pHandle
262  );
263 
264  FTD2XX_API
265  FT_STATUS WINAPI FT_OpenEx(
266  PVOID pArg1,
267  DWORD Flags,
268  FT_HANDLE *pHandle
269  );
270 
271  FTD2XX_API
272  FT_STATUS WINAPI FT_ListDevices(
273  PVOID pArg1,
274  PVOID pArg2,
275  DWORD Flags
276  );
277 
278  FTD2XX_API
279  FT_STATUS WINAPI FT_Close(
280  FT_HANDLE ftHandle
281  );
282 
283  FTD2XX_API
284  FT_STATUS WINAPI FT_Read(
285  FT_HANDLE ftHandle,
286  LPVOID lpBuffer,
287  DWORD dwBytesToRead,
288  LPDWORD lpBytesReturned
289  );
290 
291  FTD2XX_API
292  FT_STATUS WINAPI FT_Write(
293  FT_HANDLE ftHandle,
294  LPVOID lpBuffer,
295  DWORD dwBytesToWrite,
296  LPDWORD lpBytesWritten
297  );
298 
299  FTD2XX_API
300  FT_STATUS WINAPI FT_IoCtl(
301  FT_HANDLE ftHandle,
302  DWORD dwIoControlCode,
303  LPVOID lpInBuf,
304  DWORD nInBufSize,
305  LPVOID lpOutBuf,
306  DWORD nOutBufSize,
307  LPDWORD lpBytesReturned,
308  LPOVERLAPPED lpOverlapped
309  );
310 
311  FTD2XX_API
312  FT_STATUS WINAPI FT_SetBaudRate(
313  FT_HANDLE ftHandle,
314  ULONG BaudRate
315  );
316 
317  FTD2XX_API
318  FT_STATUS WINAPI FT_SetDivisor(
319  FT_HANDLE ftHandle,
320  USHORT Divisor
321  );
322 
323  FTD2XX_API
324  FT_STATUS WINAPI FT_SetDataCharacteristics(
325  FT_HANDLE ftHandle,
326  UCHAR WordLength,
327  UCHAR StopBits,
328  UCHAR Parity
329  );
330 
331  FTD2XX_API
332  FT_STATUS WINAPI FT_SetFlowControl(
333  FT_HANDLE ftHandle,
334  USHORT FlowControl,
335  UCHAR XonChar,
336  UCHAR XoffChar
337  );
338 
339  FTD2XX_API
340  FT_STATUS WINAPI FT_ResetDevice(
341  FT_HANDLE ftHandle
342  );
343 
344  FTD2XX_API
345  FT_STATUS WINAPI FT_SetDtr(
346  FT_HANDLE ftHandle
347  );
348 
349  FTD2XX_API
350  FT_STATUS WINAPI FT_ClrDtr(
351  FT_HANDLE ftHandle
352  );
353 
354  FTD2XX_API
355  FT_STATUS WINAPI FT_SetRts(
356  FT_HANDLE ftHandle
357  );
358 
359  FTD2XX_API
360  FT_STATUS WINAPI FT_ClrRts(
361  FT_HANDLE ftHandle
362  );
363 
364  FTD2XX_API
365  FT_STATUS WINAPI FT_GetModemStatus(
366  FT_HANDLE ftHandle,
367  ULONG *pModemStatus
368  );
369 
370  FTD2XX_API
371  FT_STATUS WINAPI FT_SetChars(
372  FT_HANDLE ftHandle,
373  UCHAR EventChar,
374  UCHAR EventCharEnabled,
375  UCHAR ErrorChar,
376  UCHAR ErrorCharEnabled
377  );
378 
379  FTD2XX_API
380  FT_STATUS WINAPI FT_Purge(
381  FT_HANDLE ftHandle,
382  ULONG Mask
383  );
384 
385  FTD2XX_API
386  FT_STATUS WINAPI FT_SetTimeouts(
387  FT_HANDLE ftHandle,
388  ULONG ReadTimeout,
389  ULONG WriteTimeout
390  );
391 
392  FTD2XX_API
393  FT_STATUS WINAPI FT_GetQueueStatus(
394  FT_HANDLE ftHandle,
395  DWORD *dwRxBytes
396  );
397 
398  FTD2XX_API
399  FT_STATUS WINAPI FT_SetEventNotification(
400  FT_HANDLE ftHandle,
401  DWORD Mask,
402  PVOID Param
403  );
404 
405  FTD2XX_API
406  FT_STATUS WINAPI FT_GetStatus(
407  FT_HANDLE ftHandle,
408  DWORD *dwRxBytes,
409  DWORD *dwTxBytes,
410  DWORD *dwEventDWord
411  );
412 
413  FTD2XX_API
414  FT_STATUS WINAPI FT_SetBreakOn(
415  FT_HANDLE ftHandle
416  );
417 
418  FTD2XX_API
419  FT_STATUS WINAPI FT_SetBreakOff(
420  FT_HANDLE ftHandle
421  );
422 
423  FTD2XX_API
424  FT_STATUS WINAPI FT_SetWaitMask(
425  FT_HANDLE ftHandle,
426  DWORD Mask
427  );
428 
429  FTD2XX_API
430  FT_STATUS WINAPI FT_WaitOnMask(
431  FT_HANDLE ftHandle,
432  DWORD *Mask
433  );
434 
435  FTD2XX_API
436  FT_STATUS WINAPI FT_GetEventStatus(
437  FT_HANDLE ftHandle,
438  DWORD *dwEventDWord
439  );
440 
441  FTD2XX_API
442  FT_STATUS WINAPI FT_ReadEE(
443  FT_HANDLE ftHandle,
444  DWORD dwWordOffset,
445  LPWORD lpwValue
446  );
447 
448  FTD2XX_API
449  FT_STATUS WINAPI FT_WriteEE(
450  FT_HANDLE ftHandle,
451  DWORD dwWordOffset,
452  WORD wValue
453  );
454 
455  FTD2XX_API
456  FT_STATUS WINAPI FT_EraseEE(
457  FT_HANDLE ftHandle
458  );
459 
460  //
461  // structure to hold program data for FT_Program function
462  //
463  typedef struct ft_program_data {
464 
465  DWORD Signature1; // Header - must be 0x00000000
466  DWORD Signature2; // Header - must be 0xffffffff
467  DWORD Version; // Header - FT_PROGRAM_DATA version
468  // 0 = original
469  // 1 = FT2232C extensions
470  // 2 = FT232R extensions
471  // 3 = FT2232H extensions
472  // 4 = FT4232H extensions
473  // 5 = FT232H extensions
474 
475  WORD VendorId; // 0x0403
476  WORD ProductId; // 0x6001
477  char *Manufacturer; // "FTDI"
478  char *ManufacturerId; // "FT"
479  char *Description; // "USB HS Serial Converter"
480  char *SerialNumber; // "FT000001" if fixed, or NULL
481  WORD MaxPower; // 0 < MaxPower <= 500
482  WORD PnP; // 0 = disabled, 1 = enabled
483  WORD SelfPowered; // 0 = bus powered, 1 = self powered
484  WORD RemoteWakeup; // 0 = not capable, 1 = capable
485  //
486  // Rev4 (FT232B) extensions
487  //
488  UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise
489  UCHAR IsoIn; // non-zero if in endpoint is isochronous
490  UCHAR IsoOut; // non-zero if out endpoint is isochronous
491  UCHAR PullDownEnable; // non-zero if pull down enabled
492  UCHAR SerNumEnable; // non-zero if serial number to be used
493  UCHAR USBVersionEnable; // non-zero if chip uses USBVersion
494  WORD USBVersion; // BCD (0x0200 => USB2)
495  //
496  // Rev 5 (FT2232) extensions
497  //
498  UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise
499  UCHAR IsoInA; // non-zero if in endpoint is isochronous
500  UCHAR IsoInB; // non-zero if in endpoint is isochronous
501  UCHAR IsoOutA; // non-zero if out endpoint is isochronous
502  UCHAR IsoOutB; // non-zero if out endpoint is isochronous
503  UCHAR PullDownEnable5; // non-zero if pull down enabled
504  UCHAR SerNumEnable5; // non-zero if serial number to be used
505  UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion
506  WORD USBVersion5; // BCD (0x0200 => USB2)
507  UCHAR AIsHighCurrent; // non-zero if interface is high current
508  UCHAR BIsHighCurrent; // non-zero if interface is high current
509  UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO
510  UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target
511  UCHAR IFAIsFastSer; // non-zero if interface is Fast serial
512  UCHAR AIsVCP; // non-zero if interface is to use VCP drivers
513  UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO
514  UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target
515  UCHAR IFBIsFastSer; // non-zero if interface is Fast serial
516  UCHAR BIsVCP; // non-zero if interface is to use VCP drivers
517  //
518  // Rev 6 (FT232R) extensions
519  //
520  UCHAR UseExtOsc; // Use External Oscillator
521  UCHAR HighDriveIOs; // High Drive I/Os
522  UCHAR EndpointSize; // Endpoint size
523  UCHAR PullDownEnableR; // non-zero if pull down enabled
524  UCHAR SerNumEnableR; // non-zero if serial number to be used
525  UCHAR InvertTXD; // non-zero if invert TXD
526  UCHAR InvertRXD; // non-zero if invert RXD
527  UCHAR InvertRTS; // non-zero if invert RTS
528  UCHAR InvertCTS; // non-zero if invert CTS
529  UCHAR InvertDTR; // non-zero if invert DTR
530  UCHAR InvertDSR; // non-zero if invert DSR
531  UCHAR InvertDCD; // non-zero if invert DCD
532  UCHAR InvertRI; // non-zero if invert RI
533  UCHAR Cbus0; // Cbus Mux control
534  UCHAR Cbus1; // Cbus Mux control
535  UCHAR Cbus2; // Cbus Mux control
536  UCHAR Cbus3; // Cbus Mux control
537  UCHAR Cbus4; // Cbus Mux control
538  UCHAR RIsD2XX; // non-zero if using D2XX driver
539  //
540  // Rev 7 (FT2232H) Extensions
541  //
542  UCHAR PullDownEnable7; // non-zero if pull down enabled
543  UCHAR SerNumEnable7; // non-zero if serial number to be used
544  UCHAR ALSlowSlew; // non-zero if AL pins have slow slew
545  UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input
546  UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
547  UCHAR AHSlowSlew; // non-zero if AH pins have slow slew
548  UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input
549  UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
550  UCHAR BLSlowSlew; // non-zero if BL pins have slow slew
551  UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input
552  UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
553  UCHAR BHSlowSlew; // non-zero if BH pins have slow slew
554  UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input
555  UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
556  UCHAR IFAIsFifo7; // non-zero if interface is 245 FIFO
557  UCHAR IFAIsFifoTar7; // non-zero if interface is 245 FIFO CPU target
558  UCHAR IFAIsFastSer7; // non-zero if interface is Fast serial
559  UCHAR AIsVCP7; // non-zero if interface is to use VCP drivers
560  UCHAR IFBIsFifo7; // non-zero if interface is 245 FIFO
561  UCHAR IFBIsFifoTar7; // non-zero if interface is 245 FIFO CPU target
562  UCHAR IFBIsFastSer7; // non-zero if interface is Fast serial
563  UCHAR BIsVCP7; // non-zero if interface is to use VCP drivers
564  UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs
565  //
566  // Rev 8 (FT4232H) Extensions
567  //
568  UCHAR PullDownEnable8; // non-zero if pull down enabled
569  UCHAR SerNumEnable8; // non-zero if serial number to be used
570  UCHAR ASlowSlew; // non-zero if AL pins have slow slew
571  UCHAR ASchmittInput; // non-zero if AL pins are Schmitt input
572  UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
573  UCHAR BSlowSlew; // non-zero if AH pins have slow slew
574  UCHAR BSchmittInput; // non-zero if AH pins are Schmitt input
575  UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
576  UCHAR CSlowSlew; // non-zero if BL pins have slow slew
577  UCHAR CSchmittInput; // non-zero if BL pins are Schmitt input
578  UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
579  UCHAR DSlowSlew; // non-zero if BH pins have slow slew
580  UCHAR DSchmittInput; // non-zero if BH pins are Schmitt input
581  UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
582  UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN
583  UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN
584  UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN
585  UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN
586  UCHAR AIsVCP8; // non-zero if interface is to use VCP drivers
587  UCHAR BIsVCP8; // non-zero if interface is to use VCP drivers
588  UCHAR CIsVCP8; // non-zero if interface is to use VCP drivers
589  UCHAR DIsVCP8; // non-zero if interface is to use VCP drivers
590  //
591  // Rev 9 (FT232H) Extensions
592  //
593  UCHAR PullDownEnableH; // non-zero if pull down enabled
594  UCHAR SerNumEnableH; // non-zero if serial number to be used
595  UCHAR ACSlowSlewH; // non-zero if AC pins have slow slew
596  UCHAR ACSchmittInputH; // non-zero if AC pins are Schmitt input
597  UCHAR ACDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA
598  UCHAR ADSlowSlewH; // non-zero if AD pins have slow slew
599  UCHAR ADSchmittInputH; // non-zero if AD pins are Schmitt input
600  UCHAR ADDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA
601  UCHAR Cbus0H; // Cbus Mux control
602  UCHAR Cbus1H; // Cbus Mux control
603  UCHAR Cbus2H; // Cbus Mux control
604  UCHAR Cbus3H; // Cbus Mux control
605  UCHAR Cbus4H; // Cbus Mux control
606  UCHAR Cbus5H; // Cbus Mux control
607  UCHAR Cbus6H; // Cbus Mux control
608  UCHAR Cbus7H; // Cbus Mux control
609  UCHAR Cbus8H; // Cbus Mux control
610  UCHAR Cbus9H; // Cbus Mux control
611  UCHAR IsFifoH; // non-zero if interface is 245 FIFO
612  UCHAR IsFifoTarH; // non-zero if interface is 245 FIFO CPU target
613  UCHAR IsFastSerH; // non-zero if interface is Fast serial
614  UCHAR IsFT1248H; // non-zero if interface is FT1248
615  UCHAR FT1248CpolH; // FT1248 clock polarity - clock idle high (1) or clock idle low (0)
616  UCHAR FT1248LsbH; // FT1248 data is LSB (1) or MSB (0)
617  UCHAR FT1248FlowControlH; // FT1248 flow control enable
618  UCHAR IsVCPH; // non-zero if interface is to use VCP drivers
619  UCHAR PowerSaveEnableH; // non-zero if using ACBUS7 to save power for self-powered designs
620 
622 
623  FTD2XX_API
624  FT_STATUS WINAPI FT_EE_Program(
625  FT_HANDLE ftHandle,
626  PFT_PROGRAM_DATA pData
627  );
628 
629  FTD2XX_API
630  FT_STATUS WINAPI FT_EE_ProgramEx(
631  FT_HANDLE ftHandle,
632  PFT_PROGRAM_DATA pData,
633  char *Manufacturer,
634  char *ManufacturerId,
635  char *Description,
636  char *SerialNumber
637  );
638 
639  FTD2XX_API
640  FT_STATUS WINAPI FT_EE_Read(
641  FT_HANDLE ftHandle,
642  PFT_PROGRAM_DATA pData
643  );
644 
645  FTD2XX_API
646  FT_STATUS WINAPI FT_EE_ReadEx(
647  FT_HANDLE ftHandle,
648  PFT_PROGRAM_DATA pData,
649  char *Manufacturer,
650  char *ManufacturerId,
651  char *Description,
652  char *SerialNumber
653  );
654 
655  FTD2XX_API
656  FT_STATUS WINAPI FT_EE_UASize(
657  FT_HANDLE ftHandle,
658  LPDWORD lpdwSize
659  );
660 
661  FTD2XX_API
662  FT_STATUS WINAPI FT_EE_UAWrite(
663  FT_HANDLE ftHandle,
664  PUCHAR pucData,
665  DWORD dwDataLen
666  );
667 
668  FTD2XX_API
669  FT_STATUS WINAPI FT_EE_UARead(
670  FT_HANDLE ftHandle,
671  PUCHAR pucData,
672  DWORD dwDataLen,
673  LPDWORD lpdwBytesRead
674  );
675 
676  FTD2XX_API
677  FT_STATUS WINAPI FT_SetLatencyTimer(
678  FT_HANDLE ftHandle,
679  UCHAR ucLatency
680  );
681 
682  FTD2XX_API
683  FT_STATUS WINAPI FT_GetLatencyTimer(
684  FT_HANDLE ftHandle,
685  PUCHAR pucLatency
686  );
687 
688  FTD2XX_API
689  FT_STATUS WINAPI FT_SetBitMode(
690  FT_HANDLE ftHandle,
691  UCHAR ucMask,
692  UCHAR ucEnable
693  );
694 
695  FTD2XX_API
696  FT_STATUS WINAPI FT_GetBitMode(
697  FT_HANDLE ftHandle,
698  PUCHAR pucMode
699  );
700 
701  FTD2XX_API
702  FT_STATUS WINAPI FT_SetUSBParameters(
703  FT_HANDLE ftHandle,
704  ULONG ulInTransferSize,
705  ULONG ulOutTransferSize
706  );
707 
708  FTD2XX_API
709  FT_STATUS WINAPI FT_SetDeadmanTimeout(
710  FT_HANDLE ftHandle,
711  ULONG ulDeadmanTimeout
712  );
713 
714  FTD2XX_API
715  FT_STATUS WINAPI FT_GetDeviceInfo(
716  FT_HANDLE ftHandle,
717  FT_DEVICE *lpftDevice,
718  LPDWORD lpdwID,
719  PCHAR SerialNumber,
720  PCHAR Description,
721  LPVOID Dummy
722  );
723 
724  FTD2XX_API
725  FT_STATUS WINAPI FT_StopInTask(
726  FT_HANDLE ftHandle
727  );
728 
729  FTD2XX_API
730  FT_STATUS WINAPI FT_RestartInTask(
731  FT_HANDLE ftHandle
732  );
733 
734  FTD2XX_API
735  FT_STATUS WINAPI FT_SetResetPipeRetryCount(
736  FT_HANDLE ftHandle,
737  DWORD dwCount
738  );
739 
740  FTD2XX_API
741  FT_STATUS WINAPI FT_ResetPort(
742  FT_HANDLE ftHandle
743  );
744 
745  FTD2XX_API
746  FT_STATUS WINAPI FT_CyclePort(
747  FT_HANDLE ftHandle
748  );
749 
750 
751  //
752  // Win32-type functions
753  //
754 
755  FTD2XX_API
756  FT_HANDLE WINAPI FT_W32_CreateFile(
757  LPCTSTR lpszName,
758  DWORD dwAccess,
759  DWORD dwShareMode,
760  LPSECURITY_ATTRIBUTES lpSecurityAttributes,
761  DWORD dwCreate,
762  DWORD dwAttrsAndFlags,
763  HANDLE hTemplate
764  );
765 
766  FTD2XX_API
767  BOOL WINAPI FT_W32_CloseHandle(
768  FT_HANDLE ftHandle
769  );
770 
771  FTD2XX_API
772  BOOL WINAPI FT_W32_ReadFile(
773  FT_HANDLE ftHandle,
774  LPVOID lpBuffer,
775  DWORD nBufferSize,
776  LPDWORD lpBytesReturned,
777  LPOVERLAPPED lpOverlapped
778  );
779 
780  FTD2XX_API
781  BOOL WINAPI FT_W32_WriteFile(
782  FT_HANDLE ftHandle,
783  LPVOID lpBuffer,
784  DWORD nBufferSize,
785  LPDWORD lpBytesWritten,
786  LPOVERLAPPED lpOverlapped
787  );
788 
789  FTD2XX_API
790  DWORD WINAPI FT_W32_GetLastError(
791  FT_HANDLE ftHandle
792  );
793 
794  FTD2XX_API
795  BOOL WINAPI FT_W32_GetOverlappedResult(
796  FT_HANDLE ftHandle,
797  LPOVERLAPPED lpOverlapped,
798  LPDWORD lpdwBytesTransferred,
799  BOOL bWait
800  );
801 
802  FTD2XX_API
803  BOOL WINAPI FT_W32_CancelIo(
804  FT_HANDLE ftHandle
805  );
806 
807 
808  //
809  // Win32 COMM API type functions
810  //
811  typedef struct _FTCOMSTAT {
812  DWORD fCtsHold : 1;
813  DWORD fDsrHold : 1;
814  DWORD fRlsdHold : 1;
815  DWORD fXoffHold : 1;
816  DWORD fXoffSent : 1;
817  DWORD fEof : 1;
818  DWORD fTxim : 1;
819  DWORD fReserved : 25;
820  DWORD cbInQue;
821  DWORD cbOutQue;
823 
824  typedef struct _FTDCB {
825  DWORD DCBlength; /* sizeof(FTDCB) */
826  DWORD BaudRate; /* Baudrate at which running */
827  DWORD fBinary: 1; /* Binary Mode (skip EOF check) */
828  DWORD fParity: 1; /* Enable parity checking */
829  DWORD fOutxCtsFlow:1; /* CTS handshaking on output */
830  DWORD fOutxDsrFlow:1; /* DSR handshaking on output */
831  DWORD fDtrControl:2; /* DTR Flow control */
832  DWORD fDsrSensitivity:1; /* DSR Sensitivity */
833  DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
834  DWORD fOutX: 1; /* Enable output X-ON/X-OFF */
835  DWORD fInX: 1; /* Enable input X-ON/X-OFF */
836  DWORD fErrorChar: 1; /* Enable Err Replacement */
837  DWORD fNull: 1; /* Enable Null stripping */
838  DWORD fRtsControl:2; /* Rts Flow control */
839  DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
840  DWORD fDummy2:17; /* Reserved */
841  WORD wReserved; /* Not currently used */
842  WORD XonLim; /* Transmit X-ON threshold */
843  WORD XoffLim; /* Transmit X-OFF threshold */
844  BYTE ByteSize; /* Number of bits/byte, 4-8 */
845  BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */
846  BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */
847  char XonChar; /* Tx and Rx X-ON character */
848  char XoffChar; /* Tx and Rx X-OFF character */
849  char ErrorChar; /* Error replacement char */
850  char EofChar; /* End of Input character */
851  char EvtChar; /* Received Event character */
852  WORD wReserved1; /* Fill for now. */
853  } FTDCB, *LPFTDCB;
854 
855  typedef struct _FTTIMEOUTS {
856  DWORD ReadIntervalTimeout; /* Maximum time between read chars. */
857  DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */
858  DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */
859  DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */
860  DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */
862 
863 
864  FTD2XX_API
865  BOOL WINAPI FT_W32_ClearCommBreak(
866  FT_HANDLE ftHandle
867  );
868 
869  FTD2XX_API
870  BOOL WINAPI FT_W32_ClearCommError(
871  FT_HANDLE ftHandle,
872  LPDWORD lpdwErrors,
873  LPFTCOMSTAT lpftComstat
874  );
875 
876  FTD2XX_API
877  BOOL WINAPI FT_W32_EscapeCommFunction(
878  FT_HANDLE ftHandle,
879  DWORD dwFunc
880  );
881 
882  FTD2XX_API
883  BOOL WINAPI FT_W32_GetCommModemStatus(
884  FT_HANDLE ftHandle,
885  LPDWORD lpdwModemStatus
886  );
887 
888  FTD2XX_API
889  BOOL WINAPI FT_W32_GetCommState(
890  FT_HANDLE ftHandle,
891  LPFTDCB lpftDcb
892  );
893 
894  FTD2XX_API
895  BOOL WINAPI FT_W32_GetCommTimeouts(
896  FT_HANDLE ftHandle,
897  FTTIMEOUTS *pTimeouts
898  );
899 
900  FTD2XX_API
901  BOOL WINAPI FT_W32_PurgeComm(
902  FT_HANDLE ftHandle,
903  DWORD dwMask
904  );
905 
906  FTD2XX_API
907  BOOL WINAPI FT_W32_SetCommBreak(
908  FT_HANDLE ftHandle
909  );
910 
911  FTD2XX_API
912  BOOL WINAPI FT_W32_SetCommMask(
913  FT_HANDLE ftHandle,
914  ULONG ulEventMask
915  );
916 
917  FTD2XX_API
918  BOOL WINAPI FT_W32_GetCommMask(
919  FT_HANDLE ftHandle,
920  LPDWORD lpdwEventMask
921  );
922 
923  FTD2XX_API
924  BOOL WINAPI FT_W32_SetCommState(
925  FT_HANDLE ftHandle,
926  LPFTDCB lpftDcb
927  );
928 
929  FTD2XX_API
930  BOOL WINAPI FT_W32_SetCommTimeouts(
931  FT_HANDLE ftHandle,
932  FTTIMEOUTS *pTimeouts
933  );
934 
935  FTD2XX_API
936  BOOL WINAPI FT_W32_SetupComm(
937  FT_HANDLE ftHandle,
938  DWORD dwReadBufferSize,
939  DWORD dwWriteBufferSize
940  );
941 
942  FTD2XX_API
943  BOOL WINAPI FT_W32_WaitCommEvent(
944  FT_HANDLE ftHandle,
945  PULONG pulEvent,
946  LPOVERLAPPED lpOverlapped
947  );
948 
949 
950  //
951  // Device information
952  //
953 
954  typedef struct _ft_device_list_info_node {
955  ULONG Flags;
956  ULONG Type;
957  ULONG ID;
958  DWORD LocId;
959  char SerialNumber[16];
960  char Description[64];
961  FT_HANDLE ftHandle;
963 
964  // Device information flags
965  enum {
966  FT_FLAGS_OPENED = 1,
967  FT_FLAGS_HISPEED = 2
968  };
969 
970 
971  FTD2XX_API
972  FT_STATUS WINAPI FT_CreateDeviceInfoList(
973  LPDWORD lpdwNumDevs
974  );
975 
976  FTD2XX_API
977  FT_STATUS WINAPI FT_GetDeviceInfoList(
979  LPDWORD lpdwNumDevs
980  );
981 
982  FTD2XX_API
983  FT_STATUS WINAPI FT_GetDeviceInfoDetail(
984  DWORD dwIndex,
985  LPDWORD lpdwFlags,
986  LPDWORD lpdwType,
987  LPDWORD lpdwID,
988  LPDWORD lpdwLocId,
989  LPVOID lpSerialNumber,
990  LPVOID lpDescription,
991  FT_HANDLE *pftHandle
992  );
993 
994 
995  //
996  // Version information
997  //
998 
999  FTD2XX_API
1000  FT_STATUS WINAPI FT_GetDriverVersion(
1001  FT_HANDLE ftHandle,
1002  LPDWORD lpdwVersion
1003  );
1004 
1005  FTD2XX_API
1006  FT_STATUS WINAPI FT_GetLibraryVersion(
1007  LPDWORD lpdwVersion
1008  );
1009 
1010 
1011  FTD2XX_API
1012  FT_STATUS WINAPI FT_Rescan(
1013  void
1014  );
1015 
1016  FTD2XX_API
1017  FT_STATUS WINAPI FT_Reload(
1018  WORD wVid,
1019  WORD wPid
1020  );
1021 
1022  FTD2XX_API
1023  FT_STATUS WINAPI FT_GetComPortNumber(
1024  FT_HANDLE ftHandle,
1025  LPLONG lpdwComPortNumber
1026  );
1027 
1028 
1029  //
1030  // FT232H additional EEPROM functions
1031  //
1032 
1033  FTD2XX_API
1034  FT_STATUS WINAPI FT_EE_ReadConfig(
1035  FT_HANDLE ftHandle,
1036  UCHAR ucAddress,
1037  PUCHAR pucValue
1038  );
1039 
1040  FTD2XX_API
1041  FT_STATUS WINAPI FT_EE_WriteConfig(
1042  FT_HANDLE ftHandle,
1043  UCHAR ucAddress,
1044  UCHAR ucValue
1045  );
1046 
1047  FTD2XX_API
1048  FT_STATUS WINAPI FT_EE_ReadECC(
1049  FT_HANDLE ftHandle,
1050  UCHAR ucOption,
1051  LPWORD lpwValue
1052  );
1053 
1054  FTD2XX_API
1055  FT_STATUS WINAPI FT_GetQueueStatusEx(
1056  FT_HANDLE ftHandle,
1057  DWORD *dwRxBytes
1058  );
1059 
1060 
1061 #ifdef __cplusplus
1062 }
1063 #endif
1064 
1065 
1066 #endif /* FTD2XX_H */
1067 
Definition: ftd2xx.h:824