Rev 3090 Rev 4530
Line 1... Line 1...
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,
Line 30... Line 30...
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.
Line 54... Line 53...
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 //
Line 86... Line 82...
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,
Line 98... Line 94...
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  
Line 112... Line 109...
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
Line 212... Line 213...
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 //
Line 228... Line 234...
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
Line 265... Line 270...
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 );
Line 291... Line 330...
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(
Line 423... Line 450...
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 );
Line 491... Line 512...
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"
Line 567... Line 590...
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
Line 599... Line 622...
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
Line 652... Line 675...
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 );
Line 678... Line 700...
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 );
Line 706... Line 728...
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 );
Line 739... Line 1000...
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 );
Line 780... Line 1064...
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,
Line 947... Line 1232...
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  
Line 972... Line 1263...
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 {
Line 992... Line 1284...
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  
Line 1031... Line 1324...
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