Rev 3090 Rev 4530
1 /*++ 1 /*++
2   2  
3 Copyright (c) 2001-2011 Future Technology Devices International Limited 3 Copyright © 2001-2011 Future Technology Devices International Limited
4 4  
5 THIS SOFTWARE IS PROVIDED BY FUTURE TECHNOLOGY DEVICES INTERNATIONAL LIMITED "AS IS" 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 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 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, 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 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) 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 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, 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. 13 EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
14 14  
15 FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS. 15 FTDI DRIVERS MAY BE USED ONLY IN CONJUNCTION WITH PRODUCTS BASED ON FTDI PARTS.
16 16  
17 FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED. 17 FTDI DRIVERS MAY BE DISTRIBUTED IN ANY FORM AS LONG AS LICENSE INFORMATION IS NOT MODIFIED.
18 18  
19 IF A CUSTOM VENDOR ID AND/OR PRODUCT ID OR DESCRIPTION STRING ARE USED, IT IS THE 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 20 RESPONSIBILITY OF THE PRODUCT MANUFACTURER TO MAINTAIN ANY CHANGES AND SUBSEQUENT WHQL
21 RE-CERTIFICATION AS A RESULT OF MAKING THESE CHANGES. 21 RE-CERTIFICATION AS A RESULT OF MAKING THESE CHANGES.
22 22  
23 23  
24 Module Name: 24 Module Name:
25 25  
26 ftd2xx.h 26 ftd2xx.h
27 27  
28 Abstract: 28 Abstract:
29 29  
30 Native USB device driver for FTDI FT232x, FT245x, FT2232x and FT4232x devices 30 Native USB device driver for FTDI FT232x, FT245x, FT2232x and FT4232x devices
31 FTD2XX library definitions 31 FTD2XX library definitions
32 32  
33 Environment: 33 Environment:
34 34  
35 user mode 35 kernel & user mode
36 36  
37 37  
38 --*/ 38 --*/
39   39  
40   40  
41 #ifndef FTD2XX_H 41 #ifndef FTD2XX_H
42 #define FTD2XX_H 42 #define FTD2XX_H
43   43  
44 #ifndef _WINDOWS 44 #ifdef _WIN32
45 #include <pthread.h> 45 // Compiling on Windows
46 #define WINAPI 46 #include <windows.h>
47 #endif -  
48   47  
49 // The following ifdef block is the standard way of creating macros 48 // The following ifdef block is the standard way of creating macros
50 // which make exporting from a DLL simpler. All files within this DLL 49 // which make exporting from a DLL simpler. All files within this DLL
51 // are compiled with the FTD2XX_EXPORTS symbol defined on the command line. 50 // are compiled with the FTD2XX_EXPORTS symbol defined on the command line.
52 // This symbol should not be defined on any project that uses this DLL. 51 // This symbol should not be defined on any project that uses this DLL.
53 // This way any other project whose source files include this file see 52 // This way any other project whose source files include this file see
54 // FTD2XX_API functions as being imported from a DLL, whereas this DLL 53 // FTD2XX_API functions as being imported from a DLL, whereas this DLL
55 // sees symbols defined with this macro as being exported. 54 // sees symbols defined with this macro as being exported.
56   55  
57 #ifdef FTD2XX_EXPORTS 56 #ifdef FTD2XX_EXPORTS
58 #define FTD2XX_API __declspec(dllexport) 57 #define FTD2XX_API __declspec(dllexport)
-   58 #elif defined(FTD2XX_STATIC)
-   59 // Avoid decorations when linking statically to D2XX.
-   60 #define FTD2XX_API
59 #else 61 #else
60 #define FTD2XX_API __declspec(dllimport) 62 #define FTD2XX_API __declspec(dllimport)
61 #endif 63 #endif
62   64  
63 #ifndef _WINDOWS 65 #else // _WIN32
-   66 // Compiling on non-Windows platform.
64 #include "WinTypes.h" 67 #include "WinTypes.h"
65   -  
66 #ifdef FTD2XX_API -  
67 #undef FTD2XX_API 68 // No decorations needed.
68 #define FTD2XX_API 69 #define FTD2XX_API
69 #endif 70  
70 #endif 71 #endif // _WIN32
71 typedef struct _EVENT_HANDLE{ -  
72 pthread_cond_t eCondVar; -  
73 pthread_mutex_t eMutex; -  
74 int iVar; -  
75 } EVENT_HANDLE; -  
76   72  
77 typedef PVOID FT_HANDLE; 73 typedef PVOID FT_HANDLE;
78 typedef ULONG FT_STATUS; 74 typedef ULONG FT_STATUS;
79   75  
80 // 76 //
81 // Device status 77 // Device status
82 // 78 //
83 enum { 79 enum {
84 FT_OK, 80 FT_OK,
85 FT_INVALID_HANDLE, 81 FT_INVALID_HANDLE,
86 FT_DEVICE_NOT_FOUND, 82 FT_DEVICE_NOT_FOUND,
87 FT_DEVICE_NOT_OPENED, 83 FT_DEVICE_NOT_OPENED,
88 FT_IO_ERROR, 84 FT_IO_ERROR,
89 FT_INSUFFICIENT_RESOURCES, 85 FT_INSUFFICIENT_RESOURCES,
90 FT_INVALID_PARAMETER, 86 FT_INVALID_PARAMETER,
91 FT_INVALID_BAUD_RATE, //7 87 FT_INVALID_BAUD_RATE,
92   88  
93 FT_DEVICE_NOT_OPENED_FOR_ERASE, 89 FT_DEVICE_NOT_OPENED_FOR_ERASE,
94 FT_DEVICE_NOT_OPENED_FOR_WRITE, 90 FT_DEVICE_NOT_OPENED_FOR_WRITE,
95 FT_FAILED_TO_WRITE_DEVICE, 91 FT_FAILED_TO_WRITE_DEVICE,
96 FT_EEPROM_READ_FAILED, 92 FT_EEPROM_READ_FAILED,
97 FT_EEPROM_WRITE_FAILED, 93 FT_EEPROM_WRITE_FAILED,
98 FT_EEPROM_ERASE_FAILED, 94 FT_EEPROM_ERASE_FAILED,
99 FT_EEPROM_NOT_PRESENT, 95 FT_EEPROM_NOT_PRESENT,
100 FT_EEPROM_NOT_PROGRAMMED, 96 FT_EEPROM_NOT_PROGRAMMED,
101 FT_INVALID_ARGS, 97 FT_INVALID_ARGS,
102 FT_NOT_SUPPORTED, 98 FT_NOT_SUPPORTED,
103 FT_OTHER_ERROR 99 FT_OTHER_ERROR,
-   100 FT_DEVICE_LIST_NOT_READY,
104 }; 101 };
105   102  
106   103  
107 #define FT_SUCCESS(status) ((status) == FT_OK) 104 #define FT_SUCCESS(status) ((status) == FT_OK)
108   105  
109 // 106 //
110 // FT_OpenEx Flags 107 // FT_OpenEx Flags
111 // 108 //
112   109  
113 #define FT_OPEN_BY_SERIAL_NUMBER 1 110 #define FT_OPEN_BY_SERIAL_NUMBER 1
114 #define FT_OPEN_BY_DESCRIPTION 2 111 #define FT_OPEN_BY_DESCRIPTION 2
115 #define FT_OPEN_BY_LOCATION 4 112 #define FT_OPEN_BY_LOCATION 4
116   113  
-   114 #define FT_OPEN_MASK (FT_OPEN_BY_SERIAL_NUMBER | \
-   115 FT_OPEN_BY_DESCRIPTION | \
-   116 FT_OPEN_BY_LOCATION)
-   117  
117 // 118 //
118 // FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags 119 // FT_ListDevices Flags (used in conjunction with FT_OpenEx Flags
119 // 120 //
120   121  
121 #define FT_LIST_NUMBER_ONLY 0x80000000 122 #define FT_LIST_NUMBER_ONLY 0x80000000
122 #define FT_LIST_BY_INDEX 0x40000000 123 #define FT_LIST_BY_INDEX 0x40000000
123 #define FT_LIST_ALL 0x20000000 124 #define FT_LIST_ALL 0x20000000
124   125  
125 #define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL) 126 #define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)
126   127  
127 // 128 //
128 // Baud Rates 129 // Baud Rates
129 // 130 //
130   131  
131 #define FT_BAUD_300 300 132 #define FT_BAUD_300 300
132 #define FT_BAUD_600 600 133 #define FT_BAUD_600 600
133 #define FT_BAUD_1200 1200 134 #define FT_BAUD_1200 1200
134 #define FT_BAUD_2400 2400 135 #define FT_BAUD_2400 2400
135 #define FT_BAUD_4800 4800 136 #define FT_BAUD_4800 4800
136 #define FT_BAUD_9600 9600 137 #define FT_BAUD_9600 9600
137 #define FT_BAUD_14400 14400 138 #define FT_BAUD_14400 14400
138 #define FT_BAUD_19200 19200 139 #define FT_BAUD_19200 19200
139 #define FT_BAUD_38400 38400 140 #define FT_BAUD_38400 38400
140 #define FT_BAUD_57600 57600 141 #define FT_BAUD_57600 57600
141 #define FT_BAUD_115200 115200 142 #define FT_BAUD_115200 115200
142 #define FT_BAUD_230400 230400 143 #define FT_BAUD_230400 230400
143 #define FT_BAUD_460800 460800 144 #define FT_BAUD_460800 460800
144 #define FT_BAUD_921600 921600 145 #define FT_BAUD_921600 921600
145   146  
146 // 147 //
147 // Word Lengths 148 // Word Lengths
148 // 149 //
149   150  
150 #define FT_BITS_8 (UCHAR) 8 151 #define FT_BITS_8 (UCHAR) 8
151 #define FT_BITS_7 (UCHAR) 7 152 #define FT_BITS_7 (UCHAR) 7
152   153  
153 // 154 //
154 // Stop Bits 155 // Stop Bits
155 // 156 //
156   157  
157 #define FT_STOP_BITS_1 (UCHAR) 0 158 #define FT_STOP_BITS_1 (UCHAR) 0
158 #define FT_STOP_BITS_2 (UCHAR) 2 159 #define FT_STOP_BITS_2 (UCHAR) 2
159   160  
160 // 161 //
161 // Parity 162 // Parity
162 // 163 //
163   164  
164 #define FT_PARITY_NONE (UCHAR) 0 165 #define FT_PARITY_NONE (UCHAR) 0
165 #define FT_PARITY_ODD (UCHAR) 1 166 #define FT_PARITY_ODD (UCHAR) 1
166 #define FT_PARITY_EVEN (UCHAR) 2 167 #define FT_PARITY_EVEN (UCHAR) 2
167 #define FT_PARITY_MARK (UCHAR) 3 168 #define FT_PARITY_MARK (UCHAR) 3
168 #define FT_PARITY_SPACE (UCHAR) 4 169 #define FT_PARITY_SPACE (UCHAR) 4
169   170  
170 // 171 //
171 // Flow Control 172 // Flow Control
172 // 173 //
173   174  
174 #define FT_FLOW_NONE 0x0000 175 #define FT_FLOW_NONE 0x0000
175 #define FT_FLOW_RTS_CTS 0x0100 176 #define FT_FLOW_RTS_CTS 0x0100
176 #define FT_FLOW_DTR_DSR 0x0200 177 #define FT_FLOW_DTR_DSR 0x0200
177 #define FT_FLOW_XON_XOFF 0x0400 178 #define FT_FLOW_XON_XOFF 0x0400
178   179  
179 // 180 //
180 // Purge rx and tx buffers 181 // Purge rx and tx buffers
181 // 182 //
182 #define FT_PURGE_RX 1 183 #define FT_PURGE_RX 1
183 #define FT_PURGE_TX 2 184 #define FT_PURGE_TX 2
184   185  
185 // 186 //
186 // Events 187 // Events
187 // 188 //
188   189  
189 typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD); 190 typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);
190   191  
191 #define FT_EVENT_RXCHAR 1 192 #define FT_EVENT_RXCHAR 1
192 #define FT_EVENT_MODEM_STATUS 2 193 #define FT_EVENT_MODEM_STATUS 2
193 #define FT_EVENT_LINE_STATUS 4 194 #define FT_EVENT_LINE_STATUS 4
194   195  
195 // 196 //
196 // Timeouts 197 // Timeouts
197 // 198 //
198   199  
199 #define FT_DEFAULT_RX_TIMEOUT 300 200 #define FT_DEFAULT_RX_TIMEOUT 300
200 #define FT_DEFAULT_TX_TIMEOUT 300 201 #define FT_DEFAULT_TX_TIMEOUT 300
201   202  
202 // 203 //
203 // Device types 204 // Device types
204 // 205 //
205   206  
206 typedef ULONG FT_DEVICE; 207 typedef ULONG FT_DEVICE;
207   208  
208 enum { 209 enum {
209 FT_DEVICE_BM, 210 FT_DEVICE_BM,
210 FT_DEVICE_AM, 211 FT_DEVICE_AM,
211 FT_DEVICE_100AX, 212 FT_DEVICE_100AX,
212 FT_DEVICE_UNKNOWN, 213 FT_DEVICE_UNKNOWN,
213 FT_DEVICE_2232C, 214 FT_DEVICE_2232C,
214 FT_DEVICE_232R, 215 FT_DEVICE_232R,
215 FT_DEVICE_2232H, 216 FT_DEVICE_2232H,
216 FT_DEVICE_4232H, 217 FT_DEVICE_4232H,
217 FT_DEVICE_232H 218 FT_DEVICE_232H,
-   219 FT_DEVICE_X_SERIES,
-   220 FT_DEVICE_4222H_0,
-   221 FT_DEVICE_4222H_1_2,
-   222 FT_DEVICE_4222H_3,
-   223 FT_DEVICE_4222_PROG,
218 }; 224 };
219   225  
220 // 226 //
221 // Bit Modes 227 // Bit Modes
222 // 228 //
223   229  
224 #define FT_BITMODE_RESET 0x00 230 #define FT_BITMODE_RESET 0x00
225 #define FT_BITMODE_ASYNC_BITBANG 0x01 231 #define FT_BITMODE_ASYNC_BITBANG 0x01
226 #define FT_BITMODE_MPSSE 0x02 232 #define FT_BITMODE_MPSSE 0x02
227 #define FT_BITMODE_SYNC_BITBANG 0x04 233 #define FT_BITMODE_SYNC_BITBANG 0x04
228 #define FT_BITMODE_MCU_HOST 0x08 234 #define FT_BITMODE_MCU_HOST 0x08
229 #define FT_BITMODE_FAST_SERIAL 0x10 235 #define FT_BITMODE_FAST_SERIAL 0x10
230 #define FT_BITMODE_CBUS_BITBANG 0x20 236 #define FT_BITMODE_CBUS_BITBANG 0x20
231 #define FT_BITMODE_SYNC_FIFO 0x40 237 #define FT_BITMODE_SYNC_FIFO 0x40
232   238  
233   -  
234 // 239 //
235 // FT232R CBUS Options EEPROM values 240 // FT232R CBUS Options EEPROM values
236 // 241 //
237   242  
238 #define FT_232R_CBUS_TXDEN 0x00 // Tx Data Enable 243 #define FT_232R_CBUS_TXDEN 0x00 // Tx Data Enable
239 #define FT_232R_CBUS_PWRON 0x01 // Power On 244 #define FT_232R_CBUS_PWRON 0x01 // Power On
240 #define FT_232R_CBUS_RXLED 0x02 // Rx LED 245 #define FT_232R_CBUS_RXLED 0x02 // Rx LED
241 #define FT_232R_CBUS_TXLED 0x03 // Tx LED 246 #define FT_232R_CBUS_TXLED 0x03 // Tx LED
242 #define FT_232R_CBUS_TXRXLED 0x04 // Tx and Rx LED 247 #define FT_232R_CBUS_TXRXLED 0x04 // Tx and Rx LED
243 #define FT_232R_CBUS_SLEEP 0x05 // Sleep 248 #define FT_232R_CBUS_SLEEP 0x05 // Sleep
244 #define FT_232R_CBUS_CLK48 0x06 // 48MHz clock 249 #define FT_232R_CBUS_CLK48 0x06 // 48MHz clock
245 #define FT_232R_CBUS_CLK24 0x07 // 24MHz clock 250 #define FT_232R_CBUS_CLK24 0x07 // 24MHz clock
246 #define FT_232R_CBUS_CLK12 0x08 // 12MHz clock 251 #define FT_232R_CBUS_CLK12 0x08 // 12MHz clock
247 #define FT_232R_CBUS_CLK6 0x09 // 6MHz clock 252 #define FT_232R_CBUS_CLK6 0x09 // 6MHz clock
248 #define FT_232R_CBUS_IOMODE 0x0A // IO Mode for CBUS bit-bang 253 #define FT_232R_CBUS_IOMODE 0x0A // IO Mode for CBUS bit-bang
249 #define FT_232R_CBUS_BITBANG_WR 0x0B // Bit-bang write strobe 254 #define FT_232R_CBUS_BITBANG_WR 0x0B // Bit-bang write strobe
250 #define FT_232R_CBUS_BITBANG_RD 0x0C // Bit-bang read strobe 255 #define FT_232R_CBUS_BITBANG_RD 0x0C // Bit-bang read strobe
251   256  
252 // 257 //
253 // FT232H CBUS Options EEPROM values 258 // FT232H CBUS Options EEPROM values
254 // 259 //
255   260  
256 #define FT_232H_CBUS_TRISTATE 0x00 // Tristate 261 #define FT_232H_CBUS_TRISTATE 0x00 // Tristate
257 #define FT_232H_CBUS_TXLED 0x01 // Tx LED 262 #define FT_232H_CBUS_TXLED 0x01 // Tx LED
258 #define FT_232H_CBUS_RXLED 0x02 // Rx LED 263 #define FT_232H_CBUS_RXLED 0x02 // Rx LED
259 #define FT_232H_CBUS_TXRXLED 0x03 // Tx and Rx LED 264 #define FT_232H_CBUS_TXRXLED 0x03 // Tx and Rx LED
260 #define FT_232H_CBUS_PWREN 0x04 // Power Enable 265 #define FT_232H_CBUS_PWREN 0x04 // Power Enable
261 #define FT_232H_CBUS_SLEEP 0x05 // Sleep 266 #define FT_232H_CBUS_SLEEP 0x05 // Sleep
262 #define FT_232H_CBUS_DRIVE_0 0x06 // Drive pin to logic 0 267 #define FT_232H_CBUS_DRIVE_0 0x06 // Drive pin to logic 0
263 #define FT_232H_CBUS_DRIVE_1 0x07 // Drive pin to logic 1 268 #define FT_232H_CBUS_DRIVE_1 0x07 // Drive pin to logic 1
264 #define FT_232H_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang 269 #define FT_232H_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang
265 #define FT_232H_CBUS_TXDEN 0x09 // Tx Data Enable 270 #define FT_232H_CBUS_TXDEN 0x09 // Tx Data Enable
266 #define FT_232H_CBUS_CLK30 0x0A // 30MHz clock 271 #define FT_232H_CBUS_CLK30 0x0A // 30MHz clock
267 #define FT_232H_CBUS_CLK15 0x0B // 15MHz clock 272 #define FT_232H_CBUS_CLK15 0x0B // 15MHz clock
268 #define FT_232H_CBUS_CLK7_5 0x0C // 7.5MHz clock 273 #define FT_232H_CBUS_CLK7_5 0x0C // 7.5MHz clock
269   274  
-   275 //
-   276 // FT X Series CBUS Options EEPROM values
-   277 //
-   278  
-   279 #define FT_X_SERIES_CBUS_TRISTATE 0x00 // Tristate
-   280 #define FT_X_SERIES_CBUS_TXLED 0x01 // Tx LED
-   281 #define FT_X_SERIES_CBUS_RXLED 0x02 // Rx LED
-   282 #define FT_X_SERIES_CBUS_TXRXLED 0x03 // Tx and Rx LED
-   283 #define FT_X_SERIES_CBUS_PWREN 0x04 // Power Enable
-   284 #define FT_X_SERIES_CBUS_SLEEP 0x05 // Sleep
-   285 #define FT_X_SERIES_CBUS_DRIVE_0 0x06 // Drive pin to logic 0
-   286 #define FT_X_SERIES_CBUS_DRIVE_1 0x07 // Drive pin to logic 1
-   287 #define FT_X_SERIES_CBUS_IOMODE 0x08 // IO Mode for CBUS bit-bang
-   288 #define FT_X_SERIES_CBUS_TXDEN 0x09 // Tx Data Enable
-   289 #define FT_X_SERIES_CBUS_CLK24 0x0A // 24MHz clock
-   290 #define FT_X_SERIES_CBUS_CLK12 0x0B // 12MHz clock
-   291 #define FT_X_SERIES_CBUS_CLK6 0x0C // 6MHz clock
-   292 #define FT_X_SERIES_CBUS_BCD_CHARGER 0x0D // Battery charger detected
-   293 #define FT_X_SERIES_CBUS_BCD_CHARGER_N 0x0E // Battery charger detected inverted
-   294 #define FT_X_SERIES_CBUS_I2C_TXE 0x0F // I2C Tx empty
-   295 #define FT_X_SERIES_CBUS_I2C_RXF 0x10 // I2C Rx full
-   296 #define FT_X_SERIES_CBUS_VBUS_SENSE 0x11 // Detect VBUS
-   297 #define FT_X_SERIES_CBUS_BITBANG_WR 0x12 // Bit-bang write strobe
-   298 #define FT_X_SERIES_CBUS_BITBANG_RD 0x13 // Bit-bang read strobe
-   299 #define FT_X_SERIES_CBUS_TIMESTAMP 0x14 // Toggle output when a USB SOF token is received
-   300 #define FT_X_SERIES_CBUS_KEEP_AWAKE 0x15 //
-   301  
-   302  
-   303 // Driver types
-   304 #define FT_DRIVER_TYPE_D2XX 0
-   305 #define FT_DRIVER_TYPE_VCP 1
-   306  
-   307  
270   308  
271 #ifdef __cplusplus 309 #ifdef __cplusplus
272 extern "C" { 310 extern "C" {
273 #endif 311 #endif
274 312  
-   313  
275 FTD2XX_API 314 FTD2XX_API
276 FT_STATUS WINAPI FT_Open( 315 FT_STATUS WINAPI FT_Open(
277 int deviceNumber, 316 int deviceNumber,
278 FT_HANDLE *pHandle 317 FT_HANDLE *pHandle
279 ); 318 );
280   319  
281 FTD2XX_API 320 FTD2XX_API
282 FT_STATUS WINAPI FT_OpenEx( 321 FT_STATUS WINAPI FT_OpenEx(
283 PVOID pArg1, 322 PVOID pArg1,
284 DWORD Flags, 323 DWORD Flags,
285 FT_HANDLE *pHandle 324 FT_HANDLE *pHandle
286 ); 325 );
287   326  
288 FTD2XX_API 327 FTD2XX_API
289 FT_STATUS WINAPI FT_ListDevices( 328 FT_STATUS WINAPI FT_ListDevices(
290 PVOID pArg1, 329 PVOID pArg1,
291 PVOID pArg2, 330 PVOID pArg2,
292 DWORD Flags 331 DWORD Flags
293 ); 332 );
294   333  
295 FTD2XX_API 334 FTD2XX_API
296 FT_STATUS FT_SetVIDPID( -  
297 DWORD dwVID, -  
298 DWORD dwPID -  
299 ); -  
300 -  
301 FTD2XX_API -  
302 FT_STATUS FT_GetVIDPID( -  
303 DWORD * pdwVID, -  
304 DWORD * pdwPID -  
305 ); -  
306   -  
307 FTD2XX_API -  
308 FT_STATUS WINAPI FT_Close( 335 FT_STATUS WINAPI FT_Close(
309 FT_HANDLE ftHandle 336 FT_HANDLE ftHandle
310 ); 337 );
311   338  
312 FTD2XX_API 339 FTD2XX_API
313 FT_STATUS WINAPI FT_Read( 340 FT_STATUS WINAPI FT_Read(
314 FT_HANDLE ftHandle, 341 FT_HANDLE ftHandle,
315 LPVOID lpBuffer, 342 LPVOID lpBuffer,
316 DWORD nBufferSize, 343 DWORD dwBytesToRead,
317 LPDWORD lpBytesReturned 344 LPDWORD lpBytesReturned
318 ); 345 );
319   346  
320 FTD2XX_API 347 FTD2XX_API
321 FT_STATUS WINAPI FT_Write( 348 FT_STATUS WINAPI FT_Write(
322 FT_HANDLE ftHandle, 349 FT_HANDLE ftHandle,
323 LPVOID lpBuffer, 350 LPVOID lpBuffer,
324 DWORD nBufferSize, 351 DWORD dwBytesToWrite,
325 LPDWORD lpBytesWritten 352 LPDWORD lpBytesWritten
326 ); 353 );
327   354  
328 FTD2XX_API 355 FTD2XX_API
329 FT_STATUS WINAPI FT_IoCtl( 356 FT_STATUS WINAPI FT_IoCtl(
330 FT_HANDLE ftHandle, 357 FT_HANDLE ftHandle,
331 DWORD dwIoControlCode, 358 DWORD dwIoControlCode,
332 LPVOID lpInBuf, 359 LPVOID lpInBuf,
333 DWORD nInBufSize, 360 DWORD nInBufSize,
334 LPVOID lpOutBuf, 361 LPVOID lpOutBuf,
335 DWORD nOutBufSize, 362 DWORD nOutBufSize,
336 LPDWORD lpBytesReturned, 363 LPDWORD lpBytesReturned,
337 LPOVERLAPPED lpOverlapped 364 LPOVERLAPPED lpOverlapped
338 ); 365 );
339   366  
340 FTD2XX_API 367 FTD2XX_API
341 FT_STATUS WINAPI FT_SetBaudRate( 368 FT_STATUS WINAPI FT_SetBaudRate(
342 FT_HANDLE ftHandle, 369 FT_HANDLE ftHandle,
343 ULONG BaudRate 370 ULONG BaudRate
344 ); 371 );
345   372  
346 FTD2XX_API 373 FTD2XX_API
347 FT_STATUS WINAPI FT_SetDivisor( 374 FT_STATUS WINAPI FT_SetDivisor(
348 FT_HANDLE ftHandle, 375 FT_HANDLE ftHandle,
349 USHORT Divisor 376 USHORT Divisor
350 ); 377 );
351   378  
352 FTD2XX_API 379 FTD2XX_API
353 FT_STATUS WINAPI FT_SetDataCharacteristics( 380 FT_STATUS WINAPI FT_SetDataCharacteristics(
354 FT_HANDLE ftHandle, 381 FT_HANDLE ftHandle,
355 UCHAR WordLength, 382 UCHAR WordLength,
356 UCHAR StopBits, 383 UCHAR StopBits,
357 UCHAR Parity 384 UCHAR Parity
358 ); 385 );
359   386  
360 FTD2XX_API 387 FTD2XX_API
361 FT_STATUS WINAPI FT_SetFlowControl( 388 FT_STATUS WINAPI FT_SetFlowControl(
362 FT_HANDLE ftHandle, 389 FT_HANDLE ftHandle,
363 USHORT FlowControl, 390 USHORT FlowControl,
364 UCHAR XonChar, 391 UCHAR XonChar,
365 UCHAR XoffChar 392 UCHAR XoffChar
366 ); 393 );
367   394  
368 FTD2XX_API 395 FTD2XX_API
369 FT_STATUS WINAPI FT_ResetDevice( 396 FT_STATUS WINAPI FT_ResetDevice(
370 FT_HANDLE ftHandle 397 FT_HANDLE ftHandle
371 ); 398 );
372   399  
373 FTD2XX_API 400 FTD2XX_API
374 FT_STATUS WINAPI FT_SetDtr( 401 FT_STATUS WINAPI FT_SetDtr(
375 FT_HANDLE ftHandle 402 FT_HANDLE ftHandle
376 ); 403 );
377   404  
378 FTD2XX_API 405 FTD2XX_API
379 FT_STATUS WINAPI FT_ClrDtr( 406 FT_STATUS WINAPI FT_ClrDtr(
380 FT_HANDLE ftHandle 407 FT_HANDLE ftHandle
381 ); 408 );
382   409  
383 FTD2XX_API 410 FTD2XX_API
384 FT_STATUS WINAPI FT_SetRts( 411 FT_STATUS WINAPI FT_SetRts(
385 FT_HANDLE ftHandle 412 FT_HANDLE ftHandle
386 ); 413 );
387   414  
388 FTD2XX_API 415 FTD2XX_API
389 FT_STATUS WINAPI FT_ClrRts( 416 FT_STATUS WINAPI FT_ClrRts(
390 FT_HANDLE ftHandle 417 FT_HANDLE ftHandle
391 ); 418 );
392   419  
393 FTD2XX_API 420 FTD2XX_API
394 FT_STATUS WINAPI FT_GetModemStatus( 421 FT_STATUS WINAPI FT_GetModemStatus(
395 FT_HANDLE ftHandle, 422 FT_HANDLE ftHandle,
396 ULONG *pModemStatus 423 ULONG *pModemStatus
397 ); 424 );
398   425  
399 FTD2XX_API 426 FTD2XX_API
400 FT_STATUS WINAPI FT_SetChars( 427 FT_STATUS WINAPI FT_SetChars(
401 FT_HANDLE ftHandle, 428 FT_HANDLE ftHandle,
402 UCHAR EventChar, 429 UCHAR EventChar,
403 UCHAR EventCharEnabled, 430 UCHAR EventCharEnabled,
404 UCHAR ErrorChar, 431 UCHAR ErrorChar,
405 UCHAR ErrorCharEnabled 432 UCHAR ErrorCharEnabled
406 ); 433 );
407   434  
408 FTD2XX_API 435 FTD2XX_API
409 FT_STATUS WINAPI FT_Purge( 436 FT_STATUS WINAPI FT_Purge(
410 FT_HANDLE ftHandle, 437 FT_HANDLE ftHandle,
411 ULONG Mask 438 ULONG Mask
412 ); 439 );
413   440  
414 FTD2XX_API 441 FTD2XX_API
415 FT_STATUS WINAPI FT_SetTimeouts( 442 FT_STATUS WINAPI FT_SetTimeouts(
416 FT_HANDLE ftHandle, 443 FT_HANDLE ftHandle,
417 ULONG ReadTimeout, 444 ULONG ReadTimeout,
418 ULONG WriteTimeout 445 ULONG WriteTimeout
419 ); 446 );
420   447  
421 FTD2XX_API 448 FTD2XX_API
422 FT_STATUS WINAPI FT_GetQueueStatus( 449 FT_STATUS WINAPI FT_GetQueueStatus(
423 FT_HANDLE ftHandle, 450 FT_HANDLE ftHandle,
424 DWORD *dwRxBytes 451 DWORD *dwRxBytes
425 ); 452 );
426 453  
427 FTD2XX_API 454 FTD2XX_API
428 FT_STATUS WINAPI FT_GetQueueStatusEx( -  
429 FT_HANDLE ftHandle, -  
430 DWORD *dwRxBytes -  
431 ); -  
432 -  
433 FTD2XX_API -  
434 FT_STATUS WINAPI FT_SetEventNotification( 455 FT_STATUS WINAPI FT_SetEventNotification(
435 FT_HANDLE ftHandle, 456 FT_HANDLE ftHandle,
436 DWORD Mask, 457 DWORD Mask,
437 PVOID Param 458 PVOID Param
438 ); 459 );
439   460  
440 FTD2XX_API 461 FTD2XX_API
441 FT_STATUS WINAPI FT_GetStatus( 462 FT_STATUS WINAPI FT_GetStatus(
442 FT_HANDLE ftHandle, 463 FT_HANDLE ftHandle,
443 DWORD *dwRxBytes, 464 DWORD *dwRxBytes,
444 DWORD *dwTxBytes, 465 DWORD *dwTxBytes,
445 DWORD *dwEventDWord 466 DWORD *dwEventDWord
446 ); 467 );
447   468  
448 FTD2XX_API 469 FTD2XX_API
449 FT_STATUS WINAPI FT_SetBreakOn( 470 FT_STATUS WINAPI FT_SetBreakOn(
450 FT_HANDLE ftHandle 471 FT_HANDLE ftHandle
451 ); 472 );
452   473  
453 FTD2XX_API 474 FTD2XX_API
454 FT_STATUS WINAPI FT_SetBreakOff( 475 FT_STATUS WINAPI FT_SetBreakOff(
455 FT_HANDLE ftHandle 476 FT_HANDLE ftHandle
456 ); 477 );
457   478  
458 FTD2XX_API 479 FTD2XX_API
459 FT_STATUS WINAPI FT_SetWaitMask( 480 FT_STATUS WINAPI FT_SetWaitMask(
460 FT_HANDLE ftHandle, 481 FT_HANDLE ftHandle,
461 DWORD Mask 482 DWORD Mask
462 ); 483 );
463   484  
464 FTD2XX_API 485 FTD2XX_API
465 FT_STATUS WINAPI FT_WaitOnMask( 486 FT_STATUS WINAPI FT_WaitOnMask(
466 FT_HANDLE ftHandle, 487 FT_HANDLE ftHandle,
467 DWORD *Mask 488 DWORD *Mask
468 ); 489 );
469   490  
470 FTD2XX_API 491 FTD2XX_API
471 FT_STATUS WINAPI FT_GetEventStatus( 492 FT_STATUS WINAPI FT_GetEventStatus(
472 FT_HANDLE ftHandle, 493 FT_HANDLE ftHandle,
473 DWORD *dwEventDWord 494 DWORD *dwEventDWord
474 ); 495 );
475   496  
476 FTD2XX_API 497 FTD2XX_API
477 FT_STATUS WINAPI FT_ReadEE( 498 FT_STATUS WINAPI FT_ReadEE(
478 FT_HANDLE ftHandle, 499 FT_HANDLE ftHandle,
479 DWORD dwWordOffset, 500 DWORD dwWordOffset,
480 LPWORD lpwValue 501 LPWORD lpwValue
481 ); 502 );
482   503  
483 FTD2XX_API 504 FTD2XX_API
484 FT_STATUS WINAPI FT_WriteEE( 505 FT_STATUS WINAPI FT_WriteEE(
485 FT_HANDLE ftHandle, 506 FT_HANDLE ftHandle,
486 DWORD dwWordOffset, 507 DWORD dwWordOffset,
487 WORD wValue 508 WORD wValue
488 ); 509 );
489   510  
490 FTD2XX_API 511 FTD2XX_API
491 FT_STATUS WINAPI FT_EraseEE( 512 FT_STATUS WINAPI FT_EraseEE(
492 FT_HANDLE ftHandle 513 FT_HANDLE ftHandle
493 ); 514 );
494 515  
495 // 516 //
496 // structure to hold program data for FT_Program function 517 // structure to hold program data for FT_EE_Program, FT_EE_ProgramEx, FT_EE_Read
-   518 // and FT_EE_ReadEx functions
497 // 519 //
498 typedef struct ft_program_data { 520 typedef struct ft_program_data {
499   521  
500 DWORD Signature1; // Header - must be 0x00000000 522 DWORD Signature1; // Header - must be 0x00000000
501 DWORD Signature2; // Header - must be 0xffffffff 523 DWORD Signature2; // Header - must be 0xffffffff
502 DWORD Version; // Header - FT_PROGRAM_DATA version 524 DWORD Version; // Header - FT_PROGRAM_DATA version
503 // 0 = original 525 // 0 = original
504 // 1 = FT2232C extensions 526 // 1 = FT2232 extensions
505 // 2 = FT232R extensions 527 // 2 = FT232R extensions
506 // 3 = FT2232H extensions 528 // 3 = FT2232H extensions
507 // 4 = FT4232H extensions 529 // 4 = FT4232H extensions
508 // 5 = FT232H extensions 530 // 5 = FT232H extensions
-   531  
509 WORD VendorId; // 0x0403 532 WORD VendorId; // 0x0403
510 WORD ProductId; // 0x6001 533 WORD ProductId; // 0x6001
511 char *Manufacturer; // "FTDI" 534 char *Manufacturer; // "FTDI"
512 char *ManufacturerId; // "FT" 535 char *ManufacturerId; // "FT"
513 char *Description; // "USB HS Serial Converter" 536 char *Description; // "USB HS Serial Converter"
514 char *SerialNumber; // "FT000001" if fixed, or NULL 537 char *SerialNumber; // "FT000001" if fixed, or NULL
515 WORD MaxPower; // 0 < MaxPower <= 500 538 WORD MaxPower; // 0 < MaxPower <= 500
516 WORD PnP; // 0 = disabled, 1 = enabled 539 WORD PnP; // 0 = disabled, 1 = enabled
517 WORD SelfPowered; // 0 = bus powered, 1 = self powered 540 WORD SelfPowered; // 0 = bus powered, 1 = self powered
518 WORD RemoteWakeup; // 0 = not capable, 1 = capable 541 WORD RemoteWakeup; // 0 = not capable, 1 = capable
519 // 542 //
520 // Rev4 (FT232B) extensions 543 // Rev4 (FT232B) extensions
521 // 544 //
522 UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise 545 UCHAR Rev4; // non-zero if Rev4 chip, zero otherwise
523 UCHAR IsoIn; // non-zero if in endpoint is isochronous 546 UCHAR IsoIn; // non-zero if in endpoint is isochronous
524 UCHAR IsoOut; // non-zero if out endpoint is isochronous 547 UCHAR IsoOut; // non-zero if out endpoint is isochronous
525 UCHAR PullDownEnable; // non-zero if pull down enabled 548 UCHAR PullDownEnable; // non-zero if pull down enabled
526 UCHAR SerNumEnable; // non-zero if serial number to be used 549 UCHAR SerNumEnable; // non-zero if serial number to be used
527 UCHAR USBVersionEnable; // non-zero if chip uses USBVersion 550 UCHAR USBVersionEnable; // non-zero if chip uses USBVersion
528 WORD USBVersion; // BCD (0x0200 => USB2) 551 WORD USBVersion; // BCD (0x0200 => USB2)
529 // 552 //
530 // Rev 5 (FT2232) extensions 553 // Rev 5 (FT2232) extensions
531 // 554 //
532 UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise 555 UCHAR Rev5; // non-zero if Rev5 chip, zero otherwise
533 UCHAR IsoInA; // non-zero if in endpoint is isochronous 556 UCHAR IsoInA; // non-zero if in endpoint is isochronous
534 UCHAR IsoInB; // non-zero if in endpoint is isochronous 557 UCHAR IsoInB; // non-zero if in endpoint is isochronous
535 UCHAR IsoOutA; // non-zero if out endpoint is isochronous 558 UCHAR IsoOutA; // non-zero if out endpoint is isochronous
536 UCHAR IsoOutB; // non-zero if out endpoint is isochronous 559 UCHAR IsoOutB; // non-zero if out endpoint is isochronous
537 UCHAR PullDownEnable5; // non-zero if pull down enabled 560 UCHAR PullDownEnable5; // non-zero if pull down enabled
538 UCHAR SerNumEnable5; // non-zero if serial number to be used 561 UCHAR SerNumEnable5; // non-zero if serial number to be used
539 UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion 562 UCHAR USBVersionEnable5; // non-zero if chip uses USBVersion
540 WORD USBVersion5; // BCD (0x0200 => USB2) 563 WORD USBVersion5; // BCD (0x0200 => USB2)
541 UCHAR AIsHighCurrent; // non-zero if interface is high current 564 UCHAR AIsHighCurrent; // non-zero if interface is high current
542 UCHAR BIsHighCurrent; // non-zero if interface is high current 565 UCHAR BIsHighCurrent; // non-zero if interface is high current
543 UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO 566 UCHAR IFAIsFifo; // non-zero if interface is 245 FIFO
544 UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target 567 UCHAR IFAIsFifoTar; // non-zero if interface is 245 FIFO CPU target
545 UCHAR IFAIsFastSer; // non-zero if interface is Fast serial 568 UCHAR IFAIsFastSer; // non-zero if interface is Fast serial
546 UCHAR AIsVCP; // non-zero if interface is to use VCP drivers 569 UCHAR AIsVCP; // non-zero if interface is to use VCP drivers
547 UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO 570 UCHAR IFBIsFifo; // non-zero if interface is 245 FIFO
548 UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target 571 UCHAR IFBIsFifoTar; // non-zero if interface is 245 FIFO CPU target
549 UCHAR IFBIsFastSer; // non-zero if interface is Fast serial 572 UCHAR IFBIsFastSer; // non-zero if interface is Fast serial
550 UCHAR BIsVCP; // non-zero if interface is to use VCP drivers 573 UCHAR BIsVCP; // non-zero if interface is to use VCP drivers
551 // 574 //
552 // Rev 6 (FT232R) extensions 575 // Rev 6 (FT232R) extensions
553 // 576 //
554 UCHAR UseExtOsc; // Use External Oscillator 577 UCHAR UseExtOsc; // Use External Oscillator
555 UCHAR HighDriveIOs; // High Drive I/Os 578 UCHAR HighDriveIOs; // High Drive I/Os
556 UCHAR EndpointSize; // Endpoint size 579 UCHAR EndpointSize; // Endpoint size
557 UCHAR PullDownEnableR; // non-zero if pull down enabled 580 UCHAR PullDownEnableR; // non-zero if pull down enabled
558 UCHAR SerNumEnableR; // non-zero if serial number to be used 581 UCHAR SerNumEnableR; // non-zero if serial number to be used
559 UCHAR InvertTXD; // non-zero if invert TXD 582 UCHAR InvertTXD; // non-zero if invert TXD
560 UCHAR InvertRXD; // non-zero if invert RXD 583 UCHAR InvertRXD; // non-zero if invert RXD
561 UCHAR InvertRTS; // non-zero if invert RTS 584 UCHAR InvertRTS; // non-zero if invert RTS
562 UCHAR InvertCTS; // non-zero if invert CTS 585 UCHAR InvertCTS; // non-zero if invert CTS
563 UCHAR InvertDTR; // non-zero if invert DTR 586 UCHAR InvertDTR; // non-zero if invert DTR
564 UCHAR InvertDSR; // non-zero if invert DSR 587 UCHAR InvertDSR; // non-zero if invert DSR
565 UCHAR InvertDCD; // non-zero if invert DCD 588 UCHAR InvertDCD; // non-zero if invert DCD
566 UCHAR InvertRI; // non-zero if invert RI 589 UCHAR InvertRI; // non-zero if invert RI
567 UCHAR Cbus0; // Cbus Mux control 590 UCHAR Cbus0; // Cbus Mux control
568 UCHAR Cbus1; // Cbus Mux control 591 UCHAR Cbus1; // Cbus Mux control
569 UCHAR Cbus2; // Cbus Mux control 592 UCHAR Cbus2; // Cbus Mux control
570 UCHAR Cbus3; // Cbus Mux control 593 UCHAR Cbus3; // Cbus Mux control
571 UCHAR Cbus4; // Cbus Mux control 594 UCHAR Cbus4; // Cbus Mux control
572 UCHAR RIsD2XX; // non-zero if using D2XX drivers 595 UCHAR RIsD2XX; // non-zero if using D2XX driver
573 // 596 //
574 // Rev 7 (FT2232H) Extensions 597 // Rev 7 (FT2232H) Extensions
575 // 598 //
576 UCHAR PullDownEnable7; // non-zero if pull down enabled 599 UCHAR PullDownEnable7; // non-zero if pull down enabled
577 UCHAR SerNumEnable7; // non-zero if serial number to be used 600 UCHAR SerNumEnable7; // non-zero if serial number to be used
578 UCHAR ALSlowSlew; // non-zero if AL pins have slow slew 601 UCHAR ALSlowSlew; // non-zero if AL pins have slow slew
579 UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input 602 UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input
580 UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA 603 UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
581 UCHAR AHSlowSlew; // non-zero if AH pins have slow slew 604 UCHAR AHSlowSlew; // non-zero if AH pins have slow slew
582 UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input 605 UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input
583 UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA 606 UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
584 UCHAR BLSlowSlew; // non-zero if BL pins have slow slew 607 UCHAR BLSlowSlew; // non-zero if BL pins have slow slew
585 UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input 608 UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input
586 UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA 609 UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
587 UCHAR BHSlowSlew; // non-zero if BH pins have slow slew 610 UCHAR BHSlowSlew; // non-zero if BH pins have slow slew
588 UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input 611 UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input
589 UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA 612 UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
590 UCHAR IFAIsFifo7; // non-zero if interface is 245 FIFO 613 UCHAR IFAIsFifo7; // non-zero if interface is 245 FIFO
591 UCHAR IFAIsFifoTar7; // non-zero if interface is 245 FIFO CPU target 614 UCHAR IFAIsFifoTar7; // non-zero if interface is 245 FIFO CPU target
592 UCHAR IFAIsFastSer7; // non-zero if interface is Fast serial 615 UCHAR IFAIsFastSer7; // non-zero if interface is Fast serial
593 UCHAR AIsVCP7; // non-zero if interface is to use VCP drivers 616 UCHAR AIsVCP7; // non-zero if interface is to use VCP drivers
594 UCHAR IFBIsFifo7; // non-zero if interface is 245 FIFO 617 UCHAR IFBIsFifo7; // non-zero if interface is 245 FIFO
595 UCHAR IFBIsFifoTar7; // non-zero if interface is 245 FIFO CPU target 618 UCHAR IFBIsFifoTar7; // non-zero if interface is 245 FIFO CPU target
596 UCHAR IFBIsFastSer7; // non-zero if interface is Fast serial 619 UCHAR IFBIsFastSer7; // non-zero if interface is Fast serial
597 UCHAR BIsVCP7; // non-zero if interface is to use VCP drivers 620 UCHAR BIsVCP7; // non-zero if interface is to use VCP drivers
598 UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs 621 UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs
599 // 622 //
600 // Rev 8 (FT4232H) Extensions 623 // Rev 8 (FT4232H) Extensions
601 // 624 //
602 UCHAR PullDownEnable8; // non-zero if pull down enabled 625 UCHAR PullDownEnable8; // non-zero if pull down enabled
603 UCHAR SerNumEnable8; // non-zero if serial number to be used 626 UCHAR SerNumEnable8; // non-zero if serial number to be used
604 UCHAR ASlowSlew; // non-zero if AL pins have slow slew 627 UCHAR ASlowSlew; // non-zero if A pins have slow slew
605 UCHAR ASchmittInput; // non-zero if AL pins are Schmitt input 628 UCHAR ASchmittInput; // non-zero if A pins are Schmitt input
606 UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA 629 UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
607 UCHAR BSlowSlew; // non-zero if AH pins have slow slew 630 UCHAR BSlowSlew; // non-zero if B pins have slow slew
608 UCHAR BSchmittInput; // non-zero if AH pins are Schmitt input 631 UCHAR BSchmittInput; // non-zero if B pins are Schmitt input
609 UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA 632 UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
610 UCHAR CSlowSlew; // non-zero if BL pins have slow slew 633 UCHAR CSlowSlew; // non-zero if C pins have slow slew
611 UCHAR CSchmittInput; // non-zero if BL pins are Schmitt input 634 UCHAR CSchmittInput; // non-zero if C pins are Schmitt input
612 UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA 635 UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
613 UCHAR DSlowSlew; // non-zero if BH pins have slow slew 636 UCHAR DSlowSlew; // non-zero if D pins have slow slew
614 UCHAR DSchmittInput; // non-zero if BH pins are Schmitt input 637 UCHAR DSchmittInput; // non-zero if D pins are Schmitt input
615 UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA 638 UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
616 UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN 639 UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN
617 UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN 640 UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN
618 UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN 641 UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN
619 UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN 642 UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN
620 UCHAR AIsVCP8; // non-zero if interface is to use VCP drivers 643 UCHAR AIsVCP8; // non-zero if interface is to use VCP drivers
621 UCHAR BIsVCP8; // non-zero if interface is to use VCP drivers 644 UCHAR BIsVCP8; // non-zero if interface is to use VCP drivers
622 UCHAR CIsVCP8; // non-zero if interface is to use VCP drivers 645 UCHAR CIsVCP8; // non-zero if interface is to use VCP drivers
623 UCHAR DIsVCP8; // non-zero if interface is to use VCP drivers 646 UCHAR DIsVCP8; // non-zero if interface is to use VCP drivers
624 // 647 //
625 // Rev 9 (FT232H) Extensions 648 // Rev 9 (FT232H) Extensions
626 // 649 //
627 UCHAR PullDownEnableH; // non-zero if pull down enabled 650 UCHAR PullDownEnableH; // non-zero if pull down enabled
628 UCHAR SerNumEnableH; // non-zero if serial number to be used 651 UCHAR SerNumEnableH; // non-zero if serial number to be used
629 UCHAR ACSlowSlewH; // non-zero if AC pins have slow slew 652 UCHAR ACSlowSlewH; // non-zero if AC pins have slow slew
630 UCHAR ACSchmittInputH; // non-zero if AC pins are Schmitt input 653 UCHAR ACSchmittInputH; // non-zero if AC pins are Schmitt input
631 UCHAR ACDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA 654 UCHAR ACDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA
632 UCHAR ADSlowSlewH; // non-zero if AD pins have slow slew 655 UCHAR ADSlowSlewH; // non-zero if AD pins have slow slew
633 UCHAR ADSchmittInputH; // non-zero if AD pins are Schmitt input 656 UCHAR ADSchmittInputH; // non-zero if AD pins are Schmitt input
634 UCHAR ADDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA 657 UCHAR ADDriveCurrentH; // valid values are 4mA, 8mA, 12mA, 16mA
635 UCHAR Cbus0H; // Cbus Mux control 658 UCHAR Cbus0H; // Cbus Mux control
636 UCHAR Cbus1H; // Cbus Mux control 659 UCHAR Cbus1H; // Cbus Mux control
637 UCHAR Cbus2H; // Cbus Mux control 660 UCHAR Cbus2H; // Cbus Mux control
638 UCHAR Cbus3H; // Cbus Mux control 661 UCHAR Cbus3H; // Cbus Mux control
639 UCHAR Cbus4H; // Cbus Mux control 662 UCHAR Cbus4H; // Cbus Mux control
640 UCHAR Cbus5H; // Cbus Mux control 663 UCHAR Cbus5H; // Cbus Mux control
641 UCHAR Cbus6H; // Cbus Mux control 664 UCHAR Cbus6H; // Cbus Mux control
642 UCHAR Cbus7H; // Cbus Mux control 665 UCHAR Cbus7H; // Cbus Mux control
643 UCHAR Cbus8H; // Cbus Mux control 666 UCHAR Cbus8H; // Cbus Mux control
644 UCHAR Cbus9H; // Cbus Mux control 667 UCHAR Cbus9H; // Cbus Mux control
645 UCHAR IsFifoH; // non-zero if interface is 245 FIFO 668 UCHAR IsFifoH; // non-zero if interface is 245 FIFO
646 UCHAR IsFifoTarH; // non-zero if interface is 245 FIFO CPU target 669 UCHAR IsFifoTarH; // non-zero if interface is 245 FIFO CPU target
647 UCHAR IsFastSerH; // non-zero if interface is Fast serial 670 UCHAR IsFastSerH; // non-zero if interface is Fast serial
648 UCHAR IsFT1248H; // non-zero if interface is FT1248 671 UCHAR IsFT1248H; // non-zero if interface is FT1248
649 UCHAR FT1248CpolH; // FT1248 clock polarity - clock idle high (1) or clock idle low (0) 672 UCHAR FT1248CpolH; // FT1248 clock polarity - clock idle high (1) or clock idle low (0)
650 UCHAR FT1248LsbH; // FT1248 data is LSB (1) or MSB (0) 673 UCHAR FT1248LsbH; // FT1248 data is LSB (1) or MSB (0)
651 UCHAR FT1248FlowControlH; // FT1248 flow control enable 674 UCHAR FT1248FlowControlH; // FT1248 flow control enable
652 UCHAR IsVCPH; // non-zero if interface is to use VCP drivers 675 UCHAR IsVCPH; // non-zero if interface is to use VCP drivers
653 UCHAR PowerSaveEnableH; // non-zero if using ACBUS7 to save power for self-powered designs 676 UCHAR PowerSaveEnableH; // non-zero if using ACBUS7 to save power for self-powered designs
654 677
655 } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA; 678 } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;
656   679  
657 -  
658 FTD2XX_API 680 FTD2XX_API
659 FT_STATUS WINAPI FT_EE_Program( 681 FT_STATUS WINAPI FT_EE_Program(
660 FT_HANDLE ftHandle, 682 FT_HANDLE ftHandle,
661 PFT_PROGRAM_DATA pData 683 PFT_PROGRAM_DATA pData
662 ); 684 );
663   685  
664 FTD2XX_API 686 FTD2XX_API
665 FT_STATUS WINAPI FT_EE_ProgramEx( 687 FT_STATUS WINAPI FT_EE_ProgramEx(
666 FT_HANDLE ftHandle, 688 FT_HANDLE ftHandle,
667 PFT_PROGRAM_DATA lpData, 689 PFT_PROGRAM_DATA pData,
668 char *Manufacturer, 690 char *Manufacturer,
669 char *ManufacturerId, 691 char *ManufacturerId,
670 char *Description, 692 char *Description,
671 char *SerialNumber 693 char *SerialNumber
672 ); 694 );
673 695  
674 FTD2XX_API 696 FTD2XX_API
675 FT_STATUS WINAPI FT_EE_Read( 697 FT_STATUS WINAPI FT_EE_Read(
676 FT_HANDLE ftHandle, 698 FT_HANDLE ftHandle,
677 PFT_PROGRAM_DATA pData 699 PFT_PROGRAM_DATA pData
678 ); 700 );
679   701  
680 FTD2XX_API 702 FTD2XX_API
681 FT_STATUS WINAPI FT_EE_ReadEx( 703 FT_STATUS WINAPI FT_EE_ReadEx(
682 FT_HANDLE ftHandle, 704 FT_HANDLE ftHandle,
683 PFT_PROGRAM_DATA lpData, 705 PFT_PROGRAM_DATA pData,
684 char *Manufacturer, 706 char *Manufacturer,
685 char *ManufacturerId, 707 char *ManufacturerId,
686 char *Description, 708 char *Description,
687 char *SerialNumber 709 char *SerialNumber
688 ); 710 );
689 711  
690 FTD2XX_API 712 FTD2XX_API
691 FT_STATUS WINAPI FT_EE_UASize( 713 FT_STATUS WINAPI FT_EE_UASize(
692 FT_HANDLE ftHandle, 714 FT_HANDLE ftHandle,
693 LPDWORD lpdwSize 715 LPDWORD lpdwSize
694 ); 716 );
695   717  
696 FTD2XX_API 718 FTD2XX_API
697 FT_STATUS WINAPI FT_EE_UAWrite( 719 FT_STATUS WINAPI FT_EE_UAWrite(
698 FT_HANDLE ftHandle, 720 FT_HANDLE ftHandle,
699 PUCHAR pucData, 721 PUCHAR pucData,
700 DWORD dwDataLen 722 DWORD dwDataLen
701 ); 723 );
702   724  
703 FTD2XX_API 725 FTD2XX_API
704 FT_STATUS WINAPI FT_EE_UARead( 726 FT_STATUS WINAPI FT_EE_UARead(
705 FT_HANDLE ftHandle, 727 FT_HANDLE ftHandle,
706 PUCHAR pucData, 728 PUCHAR pucData,
707 DWORD dwDataLen, 729 DWORD dwDataLen,
708 LPDWORD lpdwBytesRead 730 LPDWORD lpdwBytesRead
709 ); 731 );
710   732  
-   733  
-   734 typedef struct ft_eeprom_header {
-   735 FT_DEVICE deviceType; // FTxxxx device type to be programmed
-   736 // Device descriptor options
-   737 WORD VendorId; // 0x0403
-   738 WORD ProductId; // 0x6001
-   739 UCHAR SerNumEnable; // non-zero if serial number to be used
-   740 // Config descriptor options
-   741 WORD MaxPower; // 0 < MaxPower <= 500
-   742 UCHAR SelfPowered; // 0 = bus powered, 1 = self powered
-   743 UCHAR RemoteWakeup; // 0 = not capable, 1 = capable
-   744 // Hardware options
-   745 UCHAR PullDownEnable; // non-zero if pull down in suspend enabled
-   746 } FT_EEPROM_HEADER, *PFT_EEPROM_HEADER;
-   747  
-   748  
-   749 // FT232B EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
-   750 typedef struct ft_eeprom_232b {
-   751 // Common header
-   752 FT_EEPROM_HEADER common; // common elements for all device EEPROMs
-   753 } FT_EEPROM_232B, *PFT_EEPROM_232B;
-   754  
-   755  
-   756 // FT2232 EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
-   757 typedef struct ft_eeprom_2232 {
-   758 // Common header
-   759 FT_EEPROM_HEADER common; // common elements for all device EEPROMs
-   760 // Drive options
-   761 UCHAR AIsHighCurrent; // non-zero if interface is high current
-   762 UCHAR BIsHighCurrent; // non-zero if interface is high current
-   763 // Hardware options
-   764 UCHAR AIsFifo; // non-zero if interface is 245 FIFO
-   765 UCHAR AIsFifoTar; // non-zero if interface is 245 FIFO CPU target
-   766 UCHAR AIsFastSer; // non-zero if interface is Fast serial
-   767 UCHAR BIsFifo; // non-zero if interface is 245 FIFO
-   768 UCHAR BIsFifoTar; // non-zero if interface is 245 FIFO CPU target
-   769 UCHAR BIsFastSer; // non-zero if interface is Fast serial
-   770 // Driver option
-   771 UCHAR ADriverType; //
-   772 UCHAR BDriverType; //
-   773 } FT_EEPROM_2232, *PFT_EEPROM_2232;
-   774  
-   775  
-   776 // FT232R EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
-   777 typedef struct ft_eeprom_232r {
-   778 // Common header
-   779 FT_EEPROM_HEADER common; // common elements for all device EEPROMs
-   780 // Drive options
-   781 UCHAR IsHighCurrent; // non-zero if interface is high current
-   782 // Hardware options
-   783 UCHAR UseExtOsc; // Use External Oscillator
-   784 UCHAR InvertTXD; // non-zero if invert TXD
-   785 UCHAR InvertRXD; // non-zero if invert RXD
-   786 UCHAR InvertRTS; // non-zero if invert RTS
-   787 UCHAR InvertCTS; // non-zero if invert CTS
-   788 UCHAR InvertDTR; // non-zero if invert DTR
-   789 UCHAR InvertDSR; // non-zero if invert DSR
-   790 UCHAR InvertDCD; // non-zero if invert DCD
-   791 UCHAR InvertRI; // non-zero if invert RI
-   792 UCHAR Cbus0; // Cbus Mux control
-   793 UCHAR Cbus1; // Cbus Mux control
-   794 UCHAR Cbus2; // Cbus Mux control
-   795 UCHAR Cbus3; // Cbus Mux control
-   796 UCHAR Cbus4; // Cbus Mux control
-   797 // Driver option
-   798 UCHAR DriverType; //
-   799 } FT_EEPROM_232R, *PFT_EEPROM_232R;
-   800  
-   801  
-   802 // FT2232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
-   803 typedef struct ft_eeprom_2232h {
-   804 // Common header
-   805 FT_EEPROM_HEADER common; // common elements for all device EEPROMs
-   806 // Drive options
-   807 UCHAR ALSlowSlew; // non-zero if AL pins have slow slew
-   808 UCHAR ALSchmittInput; // non-zero if AL pins are Schmitt input
-   809 UCHAR ALDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   810 UCHAR AHSlowSlew; // non-zero if AH pins have slow slew
-   811 UCHAR AHSchmittInput; // non-zero if AH pins are Schmitt input
-   812 UCHAR AHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   813 UCHAR BLSlowSlew; // non-zero if BL pins have slow slew
-   814 UCHAR BLSchmittInput; // non-zero if BL pins are Schmitt input
-   815 UCHAR BLDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   816 UCHAR BHSlowSlew; // non-zero if BH pins have slow slew
-   817 UCHAR BHSchmittInput; // non-zero if BH pins are Schmitt input
-   818 UCHAR BHDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   819 // Hardware options
-   820 UCHAR AIsFifo; // non-zero if interface is 245 FIFO
-   821 UCHAR AIsFifoTar; // non-zero if interface is 245 FIFO CPU target
-   822 UCHAR AIsFastSer; // non-zero if interface is Fast serial
-   823 UCHAR BIsFifo; // non-zero if interface is 245 FIFO
-   824 UCHAR BIsFifoTar; // non-zero if interface is 245 FIFO CPU target
-   825 UCHAR BIsFastSer; // non-zero if interface is Fast serial
-   826 UCHAR PowerSaveEnable; // non-zero if using BCBUS7 to save power for self-powered designs
-   827 // Driver option
-   828 UCHAR ADriverType; //
-   829 UCHAR BDriverType; //
-   830 } FT_EEPROM_2232H, *PFT_EEPROM_2232H;
-   831  
-   832  
-   833 // FT4232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
-   834 typedef struct ft_eeprom_4232h {
-   835 // Common header
-   836 FT_EEPROM_HEADER common; // common elements for all device EEPROMs
-   837 // Drive options
-   838 UCHAR ASlowSlew; // non-zero if A pins have slow slew
-   839 UCHAR ASchmittInput; // non-zero if A pins are Schmitt input
-   840 UCHAR ADriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   841 UCHAR BSlowSlew; // non-zero if B pins have slow slew
-   842 UCHAR BSchmittInput; // non-zero if B pins are Schmitt input
-   843 UCHAR BDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   844 UCHAR CSlowSlew; // non-zero if C pins have slow slew
-   845 UCHAR CSchmittInput; // non-zero if C pins are Schmitt input
-   846 UCHAR CDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   847 UCHAR DSlowSlew; // non-zero if D pins have slow slew
-   848 UCHAR DSchmittInput; // non-zero if D pins are Schmitt input
-   849 UCHAR DDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   850 // Hardware options
-   851 UCHAR ARIIsTXDEN; // non-zero if port A uses RI as RS485 TXDEN
-   852 UCHAR BRIIsTXDEN; // non-zero if port B uses RI as RS485 TXDEN
-   853 UCHAR CRIIsTXDEN; // non-zero if port C uses RI as RS485 TXDEN
-   854 UCHAR DRIIsTXDEN; // non-zero if port D uses RI as RS485 TXDEN
-   855 // Driver option
-   856 UCHAR ADriverType; //
-   857 UCHAR BDriverType; //
-   858 UCHAR CDriverType; //
-   859 UCHAR DDriverType; //
-   860 } FT_EEPROM_4232H, *PFT_EEPROM_4232H;
-   861  
-   862  
-   863 // FT232H EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
-   864 typedef struct ft_eeprom_232h {
-   865 // Common header
-   866 FT_EEPROM_HEADER common; // common elements for all device EEPROMs
-   867 // Drive options
-   868 UCHAR ACSlowSlew; // non-zero if AC bus pins have slow slew
-   869 UCHAR ACSchmittInput; // non-zero if AC bus pins are Schmitt input
-   870 UCHAR ACDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   871 UCHAR ADSlowSlew; // non-zero if AD bus pins have slow slew
-   872 UCHAR ADSchmittInput; // non-zero if AD bus pins are Schmitt input
-   873 UCHAR ADDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   874 // CBUS options
-   875 UCHAR Cbus0; // Cbus Mux control
-   876 UCHAR Cbus1; // Cbus Mux control
-   877 UCHAR Cbus2; // Cbus Mux control
-   878 UCHAR Cbus3; // Cbus Mux control
-   879 UCHAR Cbus4; // Cbus Mux control
-   880 UCHAR Cbus5; // Cbus Mux control
-   881 UCHAR Cbus6; // Cbus Mux control
-   882 UCHAR Cbus7; // Cbus Mux control
-   883 UCHAR Cbus8; // Cbus Mux control
-   884 UCHAR Cbus9; // Cbus Mux control
-   885 // FT1248 options
-   886 UCHAR FT1248Cpol; // FT1248 clock polarity - clock idle high (1) or clock idle low (0)
-   887 UCHAR FT1248Lsb; // FT1248 data is LSB (1) or MSB (0)
-   888 UCHAR FT1248FlowControl; // FT1248 flow control enable
-   889 // Hardware options
-   890 UCHAR IsFifo; // non-zero if interface is 245 FIFO
-   891 UCHAR IsFifoTar; // non-zero if interface is 245 FIFO CPU target
-   892 UCHAR IsFastSer; // non-zero if interface is Fast serial
-   893 UCHAR IsFT1248 ; // non-zero if interface is FT1248
-   894 UCHAR PowerSaveEnable; //
-   895 // Driver option
-   896 UCHAR DriverType; //
-   897 } FT_EEPROM_232H, *PFT_EEPROM_232H;
-   898  
-   899  
-   900 // FT X Series EEPROM structure for use with FT_EEPROM_Read and FT_EEPROM_Program
-   901 typedef struct ft_eeprom_x_series {
-   902 // Common header
-   903 FT_EEPROM_HEADER common; // common elements for all device EEPROMs
-   904 // Drive options
-   905 UCHAR ACSlowSlew; // non-zero if AC bus pins have slow slew
-   906 UCHAR ACSchmittInput; // non-zero if AC bus pins are Schmitt input
-   907 UCHAR ACDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   908 UCHAR ADSlowSlew; // non-zero if AD bus pins have slow slew
-   909 UCHAR ADSchmittInput; // non-zero if AD bus pins are Schmitt input
-   910 UCHAR ADDriveCurrent; // valid values are 4mA, 8mA, 12mA, 16mA
-   911 // CBUS options
-   912 UCHAR Cbus0; // Cbus Mux control
-   913 UCHAR Cbus1; // Cbus Mux control
-   914 UCHAR Cbus2; // Cbus Mux control
-   915 UCHAR Cbus3; // Cbus Mux control
-   916 UCHAR Cbus4; // Cbus Mux control
-   917 UCHAR Cbus5; // Cbus Mux control
-   918 UCHAR Cbus6; // Cbus Mux control
-   919 // UART signal options
-   920 UCHAR InvertTXD; // non-zero if invert TXD
-   921 UCHAR InvertRXD; // non-zero if invert RXD
-   922 UCHAR InvertRTS; // non-zero if invert RTS
-   923 UCHAR InvertCTS; // non-zero if invert CTS
-   924 UCHAR InvertDTR; // non-zero if invert DTR
-   925 UCHAR InvertDSR; // non-zero if invert DSR
-   926 UCHAR InvertDCD; // non-zero if invert DCD
-   927 UCHAR InvertRI; // non-zero if invert RI
-   928 // Battery Charge Detect options
-   929 UCHAR BCDEnable; // Enable Battery Charger Detection
-   930 UCHAR BCDForceCbusPWREN; // asserts the power enable signal on CBUS when charging port detected
-   931 UCHAR BCDDisableSleep; // forces the device never to go into sleep mode
-   932 // I2C options
-   933 WORD I2CSlaveAddress; // I2C slave device address
-   934 DWORD I2CDeviceId; // I2C device ID
-   935 UCHAR I2CDisableSchmitt; // Disable I2C Schmitt trigger
-   936 // FT1248 options
-   937 UCHAR FT1248Cpol; // FT1248 clock polarity - clock idle high (1) or clock idle low (0)
-   938 UCHAR FT1248Lsb; // FT1248 data is LSB (1) or MSB (0)
-   939 UCHAR FT1248FlowControl; // FT1248 flow control enable
-   940 // Hardware options
-   941 UCHAR RS485EchoSuppress; //
-   942 UCHAR PowerSaveEnable; //
-   943 // Driver option
-   944 UCHAR DriverType; //
-   945 } FT_EEPROM_X_SERIES, *PFT_EEPROM_X_SERIES;
-   946  
-   947  
-   948 FTD2XX_API
-   949 FT_STATUS WINAPI FT_EEPROM_Read(
-   950 FT_HANDLE ftHandle,
-   951 void *eepromData,
-   952 DWORD eepromDataSize,
-   953 char *Manufacturer,
-   954 char *ManufacturerId,
-   955 char *Description,
-   956 char *SerialNumber
-   957 );
-   958  
-   959  
-   960 FTD2XX_API
-   961 FT_STATUS WINAPI FT_EEPROM_Program(
-   962 FT_HANDLE ftHandle,
-   963 void *eepromData,
-   964 DWORD eepromDataSize,
-   965 char *Manufacturer,
-   966 char *ManufacturerId,
-   967 char *Description,
-   968 char *SerialNumber
-   969 );
-   970  
-   971  
711 FTD2XX_API 972 FTD2XX_API
712 FT_STATUS WINAPI FT_SetLatencyTimer( 973 FT_STATUS WINAPI FT_SetLatencyTimer(
713 FT_HANDLE ftHandle, 974 FT_HANDLE ftHandle,
714 UCHAR ucLatency 975 UCHAR ucLatency
715 ); 976 );
716   977  
717 FTD2XX_API 978 FTD2XX_API
718 FT_STATUS WINAPI FT_GetLatencyTimer( 979 FT_STATUS WINAPI FT_GetLatencyTimer(
719 FT_HANDLE ftHandle, 980 FT_HANDLE ftHandle,
720 PUCHAR pucLatency 981 PUCHAR pucLatency
721 ); 982 );
722   983  
723 FTD2XX_API 984 FTD2XX_API
724 FT_STATUS WINAPI FT_SetBitMode( 985 FT_STATUS WINAPI FT_SetBitMode(
725 FT_HANDLE ftHandle, 986 FT_HANDLE ftHandle,
726 UCHAR ucMask, 987 UCHAR ucMask,
727 UCHAR ucEnable 988 UCHAR ucEnable
728 ); 989 );
729   990  
730 FTD2XX_API 991 FTD2XX_API
731 FT_STATUS WINAPI FT_GetBitMode( 992 FT_STATUS WINAPI FT_GetBitMode(
732 FT_HANDLE ftHandle, 993 FT_HANDLE ftHandle,
733 PUCHAR pucMode 994 PUCHAR pucMode
734 ); 995 );
735   996  
736 FTD2XX_API 997 FTD2XX_API
737 FT_STATUS WINAPI FT_SetUSBParameters( 998 FT_STATUS WINAPI FT_SetUSBParameters(
738 FT_HANDLE ftHandle, 999 FT_HANDLE ftHandle,
739 ULONG ulInTransferSize, 1000 ULONG ulInTransferSize,
740 ULONG ulOutTransferSize 1001 ULONG ulOutTransferSize
741 ); 1002 );
742   1003  
743 FTD2XX_API 1004 FTD2XX_API
744 FT_STATUS WINAPI FT_GetDeviceInfo( 1005 FT_STATUS WINAPI FT_SetDeadmanTimeout(
745 FT_HANDLE ftHandle, 1006 FT_HANDLE ftHandle,
-   1007 ULONG ulDeadmanTimeout
-   1008 );
-   1009  
-   1010 #ifndef _WIN32
-   1011 // Extra functions for non-Windows platforms to compensate
-   1012 // for lack of .INF file to specify Vendor and Product IDs.
-   1013  
-   1014 FTD2XX_API
746 FT_DEVICE *lpftDevice, 1015 FT_STATUS FT_SetVIDPID(
747 LPDWORD lpdwID, 1016 DWORD dwVID,
-   1017 DWORD dwPID
-   1018 );
-   1019
-   1020 FTD2XX_API
748 PCHAR SerialNumber, 1021 FT_STATUS FT_GetVIDPID(
749 PCHAR Description, 1022 DWORD * pdwVID,
750 LPVOID Dummy 1023 DWORD * pdwPID
751 ); 1024 );
752 1025  
753 FTD2XX_API 1026 FTD2XX_API
754 FT_STATUS WINAPI FT_GetDeviceLocId( 1027 FT_STATUS WINAPI FT_GetDeviceLocId(
755 FT_HANDLE ftHandle, 1028 FT_HANDLE ftHandle,
756 LPDWORD lpdwLocId 1029 LPDWORD lpdwLocId
757 ); 1030 );
-   1031 #endif // _WIN32
-   1032  
-   1033 FTD2XX_API
-   1034 FT_STATUS WINAPI FT_GetDeviceInfo(
-   1035 FT_HANDLE ftHandle,
-   1036 FT_DEVICE *lpftDevice,
-   1037 LPDWORD lpdwID,
-   1038 PCHAR SerialNumber,
-   1039 PCHAR Description,
-   1040 LPVOID Dummy
-   1041 );
758   1042  
759 FTD2XX_API 1043 FTD2XX_API
760 FT_STATUS WINAPI FT_StopInTask( 1044 FT_STATUS WINAPI FT_StopInTask(
761 FT_HANDLE ftHandle 1045 FT_HANDLE ftHandle
762 ); 1046 );
763   1047  
764 FTD2XX_API 1048 FTD2XX_API
765 FT_STATUS WINAPI FT_RestartInTask( 1049 FT_STATUS WINAPI FT_RestartInTask(
766 FT_HANDLE ftHandle 1050 FT_HANDLE ftHandle
767 ); 1051 );
768   1052  
769 FTD2XX_API 1053 FTD2XX_API
770 FT_STATUS WINAPI FT_SetResetPipeRetryCount( 1054 FT_STATUS WINAPI FT_SetResetPipeRetryCount(
771 FT_HANDLE ftHandle, 1055 FT_HANDLE ftHandle,
772 DWORD dwCount 1056 DWORD dwCount
773 ); 1057 );
774   1058  
775 FTD2XX_API 1059 FTD2XX_API
776 FT_STATUS WINAPI FT_ResetPort( 1060 FT_STATUS WINAPI FT_ResetPort(
777 FT_HANDLE ftHandle 1061 FT_HANDLE ftHandle
778 ); 1062 );
779 1063  
780 FTD2XX_API 1064 FTD2XX_API
781 FT_STATUS WINAPI FT_CyclePort( 1065 FT_STATUS WINAPI FT_CyclePort(
782 FT_HANDLE ftHandle 1066 FT_HANDLE ftHandle
783 ); 1067 );
784   1068  
-   1069  
785 // 1070 //
786 // Win32-type functions 1071 // Win32-type functions
787 // 1072 //
788   1073  
789 FTD2XX_API 1074 FTD2XX_API
790 FT_HANDLE WINAPI FT_W32_CreateFile( 1075 FT_HANDLE WINAPI FT_W32_CreateFile(
791 LPCSTR lpszName, 1076 LPCTSTR lpszName,
792 DWORD dwAccess, 1077 DWORD dwAccess,
793 DWORD dwShareMode, 1078 DWORD dwShareMode,
794 LPSECURITY_ATTRIBUTES lpSecurityAttributes, 1079 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
795 DWORD dwCreate, 1080 DWORD dwCreate,
796 DWORD dwAttrsAndFlags, 1081 DWORD dwAttrsAndFlags,
797 HANDLE hTemplate 1082 HANDLE hTemplate
798 ); 1083 );
799   1084  
800 FTD2XX_API 1085 FTD2XX_API
801 BOOL WINAPI FT_W32_CloseHandle( 1086 BOOL WINAPI FT_W32_CloseHandle(
802 FT_HANDLE ftHandle 1087 FT_HANDLE ftHandle
803 ); 1088 );
804   1089  
805 FTD2XX_API 1090 FTD2XX_API
806 BOOL WINAPI FT_W32_ReadFile( 1091 BOOL WINAPI FT_W32_ReadFile(
807 FT_HANDLE ftHandle, 1092 FT_HANDLE ftHandle,
808 LPVOID lpBuffer, 1093 LPVOID lpBuffer,
809 DWORD nBufferSize, 1094 DWORD nBufferSize,
810 LPDWORD lpBytesReturned, 1095 LPDWORD lpBytesReturned,
811 LPOVERLAPPED lpOverlapped 1096 LPOVERLAPPED lpOverlapped
812 ); 1097 );
813   1098  
814 FTD2XX_API 1099 FTD2XX_API
815 BOOL WINAPI FT_W32_WriteFile( 1100 BOOL WINAPI FT_W32_WriteFile(
816 FT_HANDLE ftHandle, 1101 FT_HANDLE ftHandle,
817 LPVOID lpBuffer, 1102 LPVOID lpBuffer,
818 DWORD nBufferSize, 1103 DWORD nBufferSize,
819 LPDWORD lpBytesWritten, 1104 LPDWORD lpBytesWritten,
820 LPOVERLAPPED lpOverlapped 1105 LPOVERLAPPED lpOverlapped
821 ); 1106 );
822   1107  
823 FTD2XX_API 1108 FTD2XX_API
824 DWORD WINAPI FT_W32_GetLastError( 1109 DWORD WINAPI FT_W32_GetLastError(
825 FT_HANDLE ftHandle 1110 FT_HANDLE ftHandle
826 ); 1111 );
827   1112  
828 FTD2XX_API 1113 FTD2XX_API
829 BOOL WINAPI FT_W32_GetOverlappedResult( 1114 BOOL WINAPI FT_W32_GetOverlappedResult(
830 FT_HANDLE ftHandle, 1115 FT_HANDLE ftHandle,
831 LPOVERLAPPED lpOverlapped, 1116 LPOVERLAPPED lpOverlapped,
832 LPDWORD lpdwBytesTransferred, 1117 LPDWORD lpdwBytesTransferred,
833 BOOL bWait 1118 BOOL bWait
834 ); 1119 );
835   1120  
836 FTD2XX_API 1121 FTD2XX_API
837 BOOL WINAPI FT_W32_CancelIo( 1122 BOOL WINAPI FT_W32_CancelIo(
838 FT_HANDLE ftHandle 1123 FT_HANDLE ftHandle
839 ); 1124 );
840   1125  
841   1126  
842 // 1127 //
843 // Win32 COMM API type functions 1128 // Win32 COMM API type functions
844 // 1129 //
845 typedef struct _FTCOMSTAT { 1130 typedef struct _FTCOMSTAT {
846 DWORD fCtsHold : 1; 1131 DWORD fCtsHold : 1;
847 DWORD fDsrHold : 1; 1132 DWORD fDsrHold : 1;
848 DWORD fRlsdHold : 1; 1133 DWORD fRlsdHold : 1;
849 DWORD fXoffHold : 1; 1134 DWORD fXoffHold : 1;
850 DWORD fXoffSent : 1; 1135 DWORD fXoffSent : 1;
851 DWORD fEof : 1; 1136 DWORD fEof : 1;
852 DWORD fTxim : 1; 1137 DWORD fTxim : 1;
853 DWORD fReserved : 25; 1138 DWORD fReserved : 25;
854 DWORD cbInQue; 1139 DWORD cbInQue;
855 DWORD cbOutQue; 1140 DWORD cbOutQue;
856 } FTCOMSTAT, *LPFTCOMSTAT; 1141 } FTCOMSTAT, *LPFTCOMSTAT;
857   1142  
858 typedef struct _FTDCB { 1143 typedef struct _FTDCB {
859 DWORD DCBlength; /* sizeof(FTDCB) */ 1144 DWORD DCBlength; /* sizeof(FTDCB) */
860 DWORD BaudRate; /* Baudrate at which running */ 1145 DWORD BaudRate; /* Baudrate at which running */
861 DWORD fBinary: 1; /* Binary Mode (skip EOF check) */ 1146 DWORD fBinary: 1; /* Binary Mode (skip EOF check) */
862 DWORD fParity: 1; /* Enable parity checking */ 1147 DWORD fParity: 1; /* Enable parity checking */
863 DWORD fOutxCtsFlow:1; /* CTS handshaking on output */ 1148 DWORD fOutxCtsFlow:1; /* CTS handshaking on output */
864 DWORD fOutxDsrFlow:1; /* DSR handshaking on output */ 1149 DWORD fOutxDsrFlow:1; /* DSR handshaking on output */
865 DWORD fDtrControl:2; /* DTR Flow control */ 1150 DWORD fDtrControl:2; /* DTR Flow control */
866 DWORD fDsrSensitivity:1; /* DSR Sensitivity */ 1151 DWORD fDsrSensitivity:1; /* DSR Sensitivity */
867 DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */ 1152 DWORD fTXContinueOnXoff: 1; /* Continue TX when Xoff sent */
868 DWORD fOutX: 1; /* Enable output X-ON/X-OFF */ 1153 DWORD fOutX: 1; /* Enable output X-ON/X-OFF */
869 DWORD fInX: 1; /* Enable input X-ON/X-OFF */ 1154 DWORD fInX: 1; /* Enable input X-ON/X-OFF */
870 DWORD fErrorChar: 1; /* Enable Err Replacement */ 1155 DWORD fErrorChar: 1; /* Enable Err Replacement */
871 DWORD fNull: 1; /* Enable Null stripping */ 1156 DWORD fNull: 1; /* Enable Null stripping */
872 DWORD fRtsControl:2; /* Rts Flow control */ 1157 DWORD fRtsControl:2; /* Rts Flow control */
873 DWORD fAbortOnError:1; /* Abort all reads and writes on Error */ 1158 DWORD fAbortOnError:1; /* Abort all reads and writes on Error */
874 DWORD fDummy2:17; /* Reserved */ 1159 DWORD fDummy2:17; /* Reserved */
875 WORD wReserved; /* Not currently used */ 1160 WORD wReserved; /* Not currently used */
876 WORD XonLim; /* Transmit X-ON threshold */ 1161 WORD XonLim; /* Transmit X-ON threshold */
877 WORD XoffLim; /* Transmit X-OFF threshold */ 1162 WORD XoffLim; /* Transmit X-OFF threshold */
878 BYTE ByteSize; /* Number of bits/byte, 4-8 */ 1163 BYTE ByteSize; /* Number of bits/byte, 4-8 */
879 BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */ 1164 BYTE Parity; /* 0-4=None,Odd,Even,Mark,Space */
880 BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */ 1165 BYTE StopBits; /* 0,1,2 = 1, 1.5, 2 */
881 char XonChar; /* Tx and Rx X-ON character */ 1166 char XonChar; /* Tx and Rx X-ON character */
882 char XoffChar; /* Tx and Rx X-OFF character */ 1167 char XoffChar; /* Tx and Rx X-OFF character */
883 char ErrorChar; /* Error replacement char */ 1168 char ErrorChar; /* Error replacement char */
884 char EofChar; /* End of Input character */ 1169 char EofChar; /* End of Input character */
885 char EvtChar; /* Received Event character */ 1170 char EvtChar; /* Received Event character */
886 WORD wReserved1; /* Fill for now. */ 1171 WORD wReserved1; /* Fill for now. */
887 } FTDCB, *LPFTDCB; 1172 } FTDCB, *LPFTDCB;
888   1173  
889 typedef struct _FTTIMEOUTS { 1174 typedef struct _FTTIMEOUTS {
890 DWORD ReadIntervalTimeout; /* Maximum time between read chars. */ 1175 DWORD ReadIntervalTimeout; /* Maximum time between read chars. */
891 DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */ 1176 DWORD ReadTotalTimeoutMultiplier; /* Multiplier of characters. */
892 DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */ 1177 DWORD ReadTotalTimeoutConstant; /* Constant in milliseconds. */
893 DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */ 1178 DWORD WriteTotalTimeoutMultiplier; /* Multiplier of characters. */
894 DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */ 1179 DWORD WriteTotalTimeoutConstant; /* Constant in milliseconds. */
895 } FTTIMEOUTS,*LPFTTIMEOUTS; 1180 } FTTIMEOUTS,*LPFTTIMEOUTS;
896   1181  
897   1182  
898 FTD2XX_API 1183 FTD2XX_API
899 BOOL WINAPI FT_W32_ClearCommBreak( 1184 BOOL WINAPI FT_W32_ClearCommBreak(
900 FT_HANDLE ftHandle 1185 FT_HANDLE ftHandle
901 ); 1186 );
902   1187  
903 FTD2XX_API 1188 FTD2XX_API
904 BOOL WINAPI FT_W32_ClearCommError( 1189 BOOL WINAPI FT_W32_ClearCommError(
905 FT_HANDLE ftHandle, 1190 FT_HANDLE ftHandle,
906 LPDWORD lpdwErrors, 1191 LPDWORD lpdwErrors,
907 LPFTCOMSTAT lpftComstat 1192 LPFTCOMSTAT lpftComstat
908 ); 1193 );
909   1194  
910 FTD2XX_API 1195 FTD2XX_API
911 BOOL WINAPI FT_W32_EscapeCommFunction( 1196 BOOL WINAPI FT_W32_EscapeCommFunction(
912 FT_HANDLE ftHandle, 1197 FT_HANDLE ftHandle,
913 DWORD dwFunc 1198 DWORD dwFunc
914 ); 1199 );
915   1200  
916 FTD2XX_API 1201 FTD2XX_API
917 BOOL WINAPI FT_W32_GetCommModemStatus( 1202 BOOL WINAPI FT_W32_GetCommModemStatus(
918 FT_HANDLE ftHandle, 1203 FT_HANDLE ftHandle,
919 LPDWORD lpdwModemStatus 1204 LPDWORD lpdwModemStatus
920 ); 1205 );
921   1206  
922 FTD2XX_API 1207 FTD2XX_API
923 BOOL WINAPI FT_W32_GetCommState( 1208 BOOL WINAPI FT_W32_GetCommState(
924 FT_HANDLE ftHandle, 1209 FT_HANDLE ftHandle,
925 LPFTDCB lpftDcb 1210 LPFTDCB lpftDcb
926 ); 1211 );
927   1212  
928 FTD2XX_API 1213 FTD2XX_API
929 BOOL WINAPI FT_W32_GetCommTimeouts( 1214 BOOL WINAPI FT_W32_GetCommTimeouts(
930 FT_HANDLE ftHandle, 1215 FT_HANDLE ftHandle,
931 FTTIMEOUTS *pTimeouts 1216 FTTIMEOUTS *pTimeouts
932 ); 1217 );
933   1218  
934 FTD2XX_API 1219 FTD2XX_API
935 BOOL WINAPI FT_W32_PurgeComm( 1220 BOOL WINAPI FT_W32_PurgeComm(
936 FT_HANDLE ftHandle, 1221 FT_HANDLE ftHandle,
937 DWORD dwMask 1222 DWORD dwMask
938 ); 1223 );
939   1224  
940 FTD2XX_API 1225 FTD2XX_API
941 BOOL WINAPI FT_W32_SetCommBreak( 1226 BOOL WINAPI FT_W32_SetCommBreak(
942 FT_HANDLE ftHandle 1227 FT_HANDLE ftHandle
943 ); 1228 );
944   1229  
945 FTD2XX_API 1230 FTD2XX_API
946 BOOL WINAPI FT_W32_SetCommMask( 1231 BOOL WINAPI FT_W32_SetCommMask(
947 FT_HANDLE ftHandle, 1232 FT_HANDLE ftHandle,
948 ULONG ulEventMask 1233 ULONG ulEventMask
949 ); 1234 );
950   1235  
951 FTD2XX_API 1236 FTD2XX_API
-   1237 BOOL WINAPI FT_W32_GetCommMask(
-   1238 FT_HANDLE ftHandle,
-   1239 LPDWORD lpdwEventMask
-   1240 );
-   1241  
-   1242 FTD2XX_API
952 BOOL WINAPI FT_W32_SetCommState( 1243 BOOL WINAPI FT_W32_SetCommState(
953 FT_HANDLE ftHandle, 1244 FT_HANDLE ftHandle,
954 LPFTDCB lpftDcb 1245 LPFTDCB lpftDcb
955 ); 1246 );
956   1247  
957 FTD2XX_API 1248 FTD2XX_API
958 BOOL WINAPI FT_W32_SetCommTimeouts( 1249 BOOL WINAPI FT_W32_SetCommTimeouts(
959 FT_HANDLE ftHandle, 1250 FT_HANDLE ftHandle,
960 FTTIMEOUTS *pTimeouts 1251 FTTIMEOUTS *pTimeouts
961 ); 1252 );
962   1253  
963 FTD2XX_API 1254 FTD2XX_API
964 BOOL WINAPI FT_W32_SetupComm( 1255 BOOL WINAPI FT_W32_SetupComm(
965 FT_HANDLE ftHandle, 1256 FT_HANDLE ftHandle,
966 DWORD dwReadBufferSize, 1257 DWORD dwReadBufferSize,
967 DWORD dwWriteBufferSize 1258 DWORD dwWriteBufferSize
968 ); 1259 );
969   1260  
970 FTD2XX_API 1261 FTD2XX_API
971 BOOL WINAPI FT_W32_WaitCommEvent( 1262 BOOL WINAPI FT_W32_WaitCommEvent(
972 FT_HANDLE ftHandle, 1263 FT_HANDLE ftHandle,
973 PULONG pulEvent, 1264 PULONG pulEvent,
974 LPOVERLAPPED lpOverlapped 1265 LPOVERLAPPED lpOverlapped
975 ); 1266 );
976   1267  
-   1268  
977 // 1269 //
978 // Device information 1270 // Device information
979 // 1271 //
980   1272  
981 typedef struct _ft_device_list_info_node { 1273 typedef struct _ft_device_list_info_node {
982 ULONG Flags; 1274 ULONG Flags;
983 ULONG Type; 1275 ULONG Type;
984 ULONG ID; 1276 ULONG ID;
985 DWORD LocId; 1277 DWORD LocId;
986 char SerialNumber[16]; 1278 char SerialNumber[16];
987 char Description[64]; 1279 char Description[64];
988 FT_HANDLE ftHandle; 1280 FT_HANDLE ftHandle;
989 } FT_DEVICE_LIST_INFO_NODE; 1281 } FT_DEVICE_LIST_INFO_NODE;
990   1282  
991 // Device information flags 1283 // Device information flags
992 enum { 1284 enum {
993 FT_FLAGS_OPENED = 1, 1285 FT_FLAGS_OPENED = 1,
994 FT_FLAGS_HISPEED = 2 1286 FT_FLAGS_HISPEED = 2
995 }; 1287 };
996   1288  
-   1289  
997 FTD2XX_API 1290 FTD2XX_API
998 FT_STATUS WINAPI FT_CreateDeviceInfoList( 1291 FT_STATUS WINAPI FT_CreateDeviceInfoList(
999 LPDWORD lpdwNumDevs 1292 LPDWORD lpdwNumDevs
1000 ); 1293 );
1001   1294  
1002 FTD2XX_API 1295 FTD2XX_API
1003 FT_STATUS WINAPI FT_GetDeviceInfoList( 1296 FT_STATUS WINAPI FT_GetDeviceInfoList(
1004 FT_DEVICE_LIST_INFO_NODE *pDest, 1297 FT_DEVICE_LIST_INFO_NODE *pDest,
1005 LPDWORD lpdwNumDevs 1298 LPDWORD lpdwNumDevs
1006 ); 1299 );
1007   1300  
1008 FTD2XX_API 1301 FTD2XX_API
1009 FT_STATUS WINAPI FT_GetDeviceInfoDetail( 1302 FT_STATUS WINAPI FT_GetDeviceInfoDetail(
1010 DWORD dwIndex, 1303 DWORD dwIndex,
1011 LPDWORD lpdwFlags, 1304 LPDWORD lpdwFlags,
1012 LPDWORD lpdwType, 1305 LPDWORD lpdwType,
1013 LPDWORD lpdwID, 1306 LPDWORD lpdwID,
1014 LPDWORD lpdwLocId, 1307 LPDWORD lpdwLocId,
1015 LPVOID lpSerialNumber, 1308 LPVOID lpSerialNumber,
1016 LPVOID lpDescription, 1309 LPVOID lpDescription,
1017 FT_HANDLE *pftHandle 1310 FT_HANDLE *pftHandle
1018 ); 1311 );
1019   1312  
1020   1313  
1021 // 1314 //
1022 // Version information 1315 // Version information
1023 // 1316 //
1024   1317  
1025 FTD2XX_API 1318 FTD2XX_API
1026 FT_STATUS WINAPI FT_GetDriverVersion( 1319 FT_STATUS WINAPI FT_GetDriverVersion(
1027 FT_HANDLE ftHandle, 1320 FT_HANDLE ftHandle,
1028 LPDWORD lpdwVersion 1321 LPDWORD lpdwVersion
1029 ); 1322 );
1030   1323  
1031 FTD2XX_API 1324 FTD2XX_API
1032 FT_STATUS WINAPI FT_GetLibraryVersion( 1325 FT_STATUS WINAPI FT_GetLibraryVersion(
1033 LPDWORD lpdwVersion 1326 LPDWORD lpdwVersion
1034 ); 1327 );
1035   1328  
-   1329  
-   1330 FTD2XX_API
-   1331 FT_STATUS WINAPI FT_Rescan(
-   1332 void
-   1333 );
-   1334  
-   1335 FTD2XX_API
-   1336 FT_STATUS WINAPI FT_Reload(
-   1337 WORD wVid,
-   1338 WORD wPid
-   1339 );
-   1340  
-   1341 FTD2XX_API
-   1342 FT_STATUS WINAPI FT_GetComPortNumber(
-   1343 FT_HANDLE ftHandle,
-   1344 LPLONG lpdwComPortNumber
-   1345 );
-   1346  
-   1347  
1036 // 1348 //
1037 // Events 1349 // FT232H additional EEPROM functions
1038 // 1350 //
1039   1351  
1040 #define EV_RXCHAR 0x0001 // Any Character received -  
1041 #define EV_RXFLAG 0x0002 // Received certain character -  
1042 #define EV_TXEMPTY 0x0004 // Transmitt Queue Empty -  
1043 #define EV_CTS 0x0008 // CTS changed state -  
1044 #define EV_DSR 0x0010 // DSR changed state -  
1045 #define EV_RLSD 0x0020 // RLSD changed state -  
1046 #define EV_BREAK 0x0040 // BREAK received -  
1047 #define EV_ERR 0x0080 // Line status error occurred -  
1048 #define EV_RING 0x0100 // Ring signal detected -  
1049 #define EV_PERR 0x0200 // Printer error occured -  
1050 #define EV_RX80FULL 0x0400 // Receive buffer is 80 percent full -  
1051 #define EV_EVENT1 0x0800 // Provider specific event 1 -  
1052 #define EV_EVENT2 0x1000 // Provider specific event 2 -  
1053   -  
1054 // -  
1055 // Escape Functions 1352 FTD2XX_API
1056 // -  
1057   -  
1058 #define SETXOFF 1 // Simulate XOFF received -  
1059 #define SETXON 2 // Simulate XON received -  
1060 #define SETRTS 3 // Set RTS high 1353 FT_STATUS WINAPI FT_EE_ReadConfig(
1061 #define CLRRTS 4 // Set RTS low 1354 FT_HANDLE ftHandle,
1062 #define SETDTR 5 // Set DTR high -  
1063 #define CLRDTR 6 // Set DTR low 1355 UCHAR ucAddress,
1064 #define RESETDEV 7 // Reset device if possible -  
1065 #define SETBREAK 8 // Set the device break line. -  
1066 #define CLRBREAK 9 // Clear the device break line. -  
1067   -  
1068 // -  
1069 // PURGE function flags. 1356 PUCHAR pucValue
1070 // 1357 );
1071 #define PURGE_TXABORT 0x0001 // Kill the pending/current writes to the comm port. -  
1072 #define PURGE_RXABORT 0x0002 // Kill the pending/current reads to the comm port. -  
1073 #define PURGE_TXCLEAR 0x0004 // Kill the transmit queue if there. -  
1074 #define PURGE_RXCLEAR 0x0008 // Kill the typeahead buffer if there. -  
1075   1358  
-   1359 FTD2XX_API
-   1360 FT_STATUS WINAPI FT_EE_WriteConfig(
-   1361 FT_HANDLE ftHandle,
1076 #ifdef __cplusplus 1362 UCHAR ucAddress,
1077 } 1363 UCHAR ucValue
1078 #endif 1364 );
1079   1365  
-   1366 FTD2XX_API
-   1367 FT_STATUS WINAPI FT_EE_ReadECC(
-   1368 FT_HANDLE ftHandle,
-   1369 UCHAR ucOption,
-   1370 LPWORD lpwValue
-   1371 );
1080   1372  
1081 #endif /* FTD2XX_H */ 1373 FTD2XX_API
-   1374 FT_STATUS WINAPI FT_GetQueueStatusEx(
-   1375 FT_HANDLE ftHandle,
-   1376 DWORD *dwRxBytes
-   1377 );
1082   1378  
-   1379 FTD2XX_API
-   1380 FT_STATUS WINAPI FT_ComPortIdle(
-   1381 FT_HANDLE ftHandle
-   1382 );
-   1383  
-   1384 FTD2XX_API
-   1385 FT_STATUS WINAPI FT_ComPortCancelIdle(
-   1386 FT_HANDLE ftHandle
-   1387 );
-   1388  
-   1389 FTD2XX_API
-   1390 FT_STATUS WINAPI FT_VendorCmdGet(
-   1391 FT_HANDLE ftHandle,
-   1392 UCHAR Request,
-   1393 UCHAR *Buf,
-   1394 USHORT Len
-   1395 );
-   1396  
-   1397 FTD2XX_API
-   1398 FT_STATUS WINAPI FT_VendorCmdSet(
-   1399 FT_HANDLE ftHandle,
-   1400 UCHAR Request,
-   1401 UCHAR *Buf,
-   1402 USHORT Len
-   1403 );
1083   1404  
-   1405 FTD2XX_API
-   1406 FT_STATUS WINAPI FT_VendorCmdGetEx(
-   1407 FT_HANDLE ftHandle,
-   1408 USHORT wValue,
-   1409 UCHAR *Buf,
-   1410 USHORT Len
-   1411 );
1084   1412  
-   1413 FTD2XX_API
-   1414 FT_STATUS WINAPI FT_VendorCmdSetEx(
-   1415 FT_HANDLE ftHandle,
-   1416 USHORT wValue,
-   1417 UCHAR *Buf,
-   1418 USHORT Len
-   1419 );
-   1420  
-   1421 #ifdef __cplusplus
-   1422 }
-   1423 #endif
1085   1424  
1086   1425  
-   1426 #endif /* FTD2XX_H */
1087   1427