00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036
00037
00038
00039
00040
00041 #ifndef FTD2XX_H
00042 #define FTD2XX_H
00043
00044 #ifndef _WINDOWS
00045 #include <pthread.h>
00046 #define WINAPI
00047 #endif
00048
00049
00050
00051
00052
00053
00054
00055
00056
00057 #ifdef FTD2XX_EXPORTS
00058 #define FTD2XX_API __declspec(dllexport)
00059 #else
00060 #define FTD2XX_API __declspec(dllimport)
00061 #endif
00062
00063 #ifndef _WINDOWS
00064 #include "WinTypes.h"
00065
00066 #ifdef FTD2XX_API
00067 #undef FTD2XX_API
00068 #define FTD2XX_API
00069 #endif
00070 #endif
00071 typedef struct _EVENT_HANDLE{
00072 pthread_cond_t eCondVar;
00073 pthread_mutex_t eMutex;
00074 int iVar;
00075 } EVENT_HANDLE;
00076
00077 typedef PVOID FT_HANDLE;
00078 typedef ULONG FT_STATUS;
00079
00080
00081
00082
00083 enum {
00084 FT_OK,
00085 FT_INVALID_HANDLE,
00086 FT_DEVICE_NOT_FOUND,
00087 FT_DEVICE_NOT_OPENED,
00088 FT_IO_ERROR,
00089 FT_INSUFFICIENT_RESOURCES,
00090 FT_INVALID_PARAMETER,
00091 FT_INVALID_BAUD_RATE,
00092
00093 FT_DEVICE_NOT_OPENED_FOR_ERASE,
00094 FT_DEVICE_NOT_OPENED_FOR_WRITE,
00095 FT_FAILED_TO_WRITE_DEVICE,
00096 FT_EEPROM_READ_FAILED,
00097 FT_EEPROM_WRITE_FAILED,
00098 FT_EEPROM_ERASE_FAILED,
00099 FT_EEPROM_NOT_PRESENT,
00100 FT_EEPROM_NOT_PROGRAMMED,
00101 FT_INVALID_ARGS,
00102 FT_NOT_SUPPORTED,
00103 FT_OTHER_ERROR
00104 };
00105
00106
00107 #define FT_SUCCESS(status) ((status) == FT_OK)
00108
00109
00110
00111
00112
00113 #define FT_OPEN_BY_SERIAL_NUMBER 1
00114 #define FT_OPEN_BY_DESCRIPTION 2
00115 #define FT_OPEN_BY_LOCATION 4
00116
00117
00118
00119
00120
00121 #define FT_LIST_NUMBER_ONLY 0x80000000
00122 #define FT_LIST_BY_INDEX 0x40000000
00123 #define FT_LIST_ALL 0x20000000
00124
00125 #define FT_LIST_MASK (FT_LIST_NUMBER_ONLY|FT_LIST_BY_INDEX|FT_LIST_ALL)
00126
00127
00128
00129
00130
00131 #define FT_BAUD_300 300
00132 #define FT_BAUD_600 600
00133 #define FT_BAUD_1200 1200
00134 #define FT_BAUD_2400 2400
00135 #define FT_BAUD_4800 4800
00136 #define FT_BAUD_9600 9600
00137 #define FT_BAUD_14400 14400
00138 #define FT_BAUD_19200 19200
00139 #define FT_BAUD_38400 38400
00140 #define FT_BAUD_57600 57600
00141 #define FT_BAUD_115200 115200
00142 #define FT_BAUD_230400 230400
00143 #define FT_BAUD_460800 460800
00144 #define FT_BAUD_921600 921600
00145
00146
00147
00148
00149
00150 #define FT_BITS_8 (UCHAR) 8
00151 #define FT_BITS_7 (UCHAR) 7
00152
00153
00154
00155
00156
00157 #define FT_STOP_BITS_1 (UCHAR) 0
00158 #define FT_STOP_BITS_2 (UCHAR) 2
00159
00160
00161
00162
00163
00164 #define FT_PARITY_NONE (UCHAR) 0
00165 #define FT_PARITY_ODD (UCHAR) 1
00166 #define FT_PARITY_EVEN (UCHAR) 2
00167 #define FT_PARITY_MARK (UCHAR) 3
00168 #define FT_PARITY_SPACE (UCHAR) 4
00169
00170
00171
00172
00173
00174 #define FT_FLOW_NONE 0x0000
00175 #define FT_FLOW_RTS_CTS 0x0100
00176 #define FT_FLOW_DTR_DSR 0x0200
00177 #define FT_FLOW_XON_XOFF 0x0400
00178
00179
00180
00181
00182 #define FT_PURGE_RX 1
00183 #define FT_PURGE_TX 2
00184
00185
00186
00187
00188
00189 typedef void (*PFT_EVENT_HANDLER)(DWORD,DWORD);
00190
00191 #define FT_EVENT_RXCHAR 1
00192 #define FT_EVENT_MODEM_STATUS 2
00193 #define FT_EVENT_LINE_STATUS 4
00194
00195
00196
00197
00198
00199 #define FT_DEFAULT_RX_TIMEOUT 300
00200 #define FT_DEFAULT_TX_TIMEOUT 300
00201
00202
00203
00204
00205
00206 typedef ULONG FT_DEVICE;
00207
00208 enum {
00209 FT_DEVICE_BM,
00210 FT_DEVICE_AM,
00211 FT_DEVICE_100AX,
00212 FT_DEVICE_UNKNOWN,
00213 FT_DEVICE_2232C,
00214 FT_DEVICE_232R,
00215 FT_DEVICE_2232H,
00216 FT_DEVICE_4232H
00217 };
00218
00219
00220
00221
00222
00223 #define FT_BITMODE_RESET 0x00
00224 #define FT_BITMODE_ASYNC_BITBANG 0x01
00225 #define FT_BITMODE_MPSSE 0x02
00226 #define FT_BITMODE_SYNC_BITBANG 0x04
00227 #define FT_BITMODE_MCU_HOST 0x08
00228 #define FT_BITMODE_FAST_SERIAL 0x10
00229 #define FT_BITMODE_CBUS_BITBANG 0x20
00230 #define FT_BITMODE_SYNC_FIFO 0x40
00231
00232
00233 #ifdef __cplusplus
00234 extern "C" {
00235 #endif
00236
00237 FTD2XX_API
00238 FT_STATUS WINAPI FT_Open(
00239 int deviceNumber,
00240 FT_HANDLE *pHandle
00241 );
00242
00243 FTD2XX_API
00244 FT_STATUS WINAPI FT_OpenEx(
00245 PVOID pArg1,
00246 DWORD Flags,
00247 FT_HANDLE *pHandle
00248 );
00249
00250 FTD2XX_API
00251 FT_STATUS WINAPI FT_ListDevices(
00252 PVOID pArg1,
00253 PVOID pArg2,
00254 DWORD Flags
00255 );
00256
00257 FTD2XX_API
00258 FT_STATUS FT_SetVIDPID(
00259 DWORD dwVID,
00260 DWORD dwPID
00261 );
00262
00263 FTD2XX_API
00264 FT_STATUS FT_GetVIDPID(
00265 DWORD * pdwVID,
00266 DWORD * pdwPID
00267 );
00268
00269 FTD2XX_API
00270 FT_STATUS WINAPI FT_Close(
00271 FT_HANDLE ftHandle
00272 );
00273
00274 FTD2XX_API
00275 FT_STATUS WINAPI FT_Read(
00276 FT_HANDLE ftHandle,
00277 LPVOID lpBuffer,
00278 DWORD nBufferSize,
00279 LPDWORD lpBytesReturned
00280 );
00281
00282 FTD2XX_API
00283 FT_STATUS WINAPI FT_Write(
00284 FT_HANDLE ftHandle,
00285 LPVOID lpBuffer,
00286 DWORD nBufferSize,
00287 LPDWORD lpBytesWritten
00288 );
00289
00290 FTD2XX_API
00291 FT_STATUS WINAPI FT_IoCtl(
00292 FT_HANDLE ftHandle,
00293 DWORD dwIoControlCode,
00294 LPVOID lpInBuf,
00295 DWORD nInBufSize,
00296 LPVOID lpOutBuf,
00297 DWORD nOutBufSize,
00298 LPDWORD lpBytesReturned,
00299 LPOVERLAPPED lpOverlapped
00300 );
00301
00302 FTD2XX_API
00303 FT_STATUS WINAPI FT_SetBaudRate(
00304 FT_HANDLE ftHandle,
00305 ULONG BaudRate
00306 );
00307
00308 FTD2XX_API
00309 FT_STATUS WINAPI FT_SetDivisor(
00310 FT_HANDLE ftHandle,
00311 USHORT Divisor
00312 );
00313
00314 FTD2XX_API
00315 FT_STATUS WINAPI FT_SetDataCharacteristics(
00316 FT_HANDLE ftHandle,
00317 UCHAR WordLength,
00318 UCHAR StopBits,
00319 UCHAR Parity
00320 );
00321
00322 FTD2XX_API
00323 FT_STATUS WINAPI FT_SetFlowControl(
00324 FT_HANDLE ftHandle,
00325 USHORT FlowControl,
00326 UCHAR XonChar,
00327 UCHAR XoffChar
00328 );
00329
00330 FTD2XX_API
00331 FT_STATUS WINAPI FT_ResetDevice(
00332 FT_HANDLE ftHandle
00333 );
00334
00335 FTD2XX_API
00336 FT_STATUS WINAPI FT_SetDtr(
00337 FT_HANDLE ftHandle
00338 );
00339
00340 FTD2XX_API
00341 FT_STATUS WINAPI FT_ClrDtr(
00342 FT_HANDLE ftHandle
00343 );
00344
00345 FTD2XX_API
00346 FT_STATUS WINAPI FT_SetRts(
00347 FT_HANDLE ftHandle
00348 );
00349
00350 FTD2XX_API
00351 FT_STATUS WINAPI FT_ClrRts(
00352 FT_HANDLE ftHandle
00353 );
00354
00355 FTD2XX_API
00356 FT_STATUS WINAPI FT_GetModemStatus(
00357 FT_HANDLE ftHandle,
00358 ULONG *pModemStatus
00359 );
00360
00361 FTD2XX_API
00362 FT_STATUS WINAPI FT_SetChars(
00363 FT_HANDLE ftHandle,
00364 UCHAR EventChar,
00365 UCHAR EventCharEnabled,
00366 UCHAR ErrorChar,
00367 UCHAR ErrorCharEnabled
00368 );
00369
00370 FTD2XX_API
00371 FT_STATUS WINAPI FT_Purge(
00372 FT_HANDLE ftHandle,
00373 ULONG Mask
00374 );
00375
00376 FTD2XX_API
00377 FT_STATUS WINAPI FT_SetTimeouts(
00378 FT_HANDLE ftHandle,
00379 ULONG ReadTimeout,
00380 ULONG WriteTimeout
00381 );
00382
00383 FTD2XX_API
00384 FT_STATUS WINAPI FT_GetQueueStatus(
00385 FT_HANDLE ftHandle,
00386 DWORD *dwRxBytes
00387 );
00388
00389 FTD2XX_API
00390 FT_STATUS WINAPI FT_SetEventNotification(
00391 FT_HANDLE ftHandle,
00392 DWORD Mask,
00393 PVOID Param
00394 );
00395
00396 FTD2XX_API
00397 FT_STATUS WINAPI FT_GetStatus(
00398 FT_HANDLE ftHandle,
00399 DWORD *dwRxBytes,
00400 DWORD *dwTxBytes,
00401 DWORD *dwEventDWord
00402 );
00403
00404 FTD2XX_API
00405 FT_STATUS WINAPI FT_SetBreakOn(
00406 FT_HANDLE ftHandle
00407 );
00408
00409 FTD2XX_API
00410 FT_STATUS WINAPI FT_SetBreakOff(
00411 FT_HANDLE ftHandle
00412 );
00413
00414 FTD2XX_API
00415 FT_STATUS WINAPI FT_SetWaitMask(
00416 FT_HANDLE ftHandle,
00417 DWORD Mask
00418 );
00419
00420 FTD2XX_API
00421 FT_STATUS WINAPI FT_WaitOnMask(
00422 FT_HANDLE ftHandle,
00423 DWORD *Mask
00424 );
00425
00426 FTD2XX_API
00427 FT_STATUS WINAPI FT_GetEventStatus(
00428 FT_HANDLE ftHandle,
00429 DWORD *dwEventDWord
00430 );
00431
00432 FTD2XX_API
00433 FT_STATUS WINAPI FT_ReadEE(
00434 FT_HANDLE ftHandle,
00435 DWORD dwWordOffset,
00436 LPWORD lpwValue
00437 );
00438
00439 FTD2XX_API
00440 FT_STATUS WINAPI FT_WriteEE(
00441 FT_HANDLE ftHandle,
00442 DWORD dwWordOffset,
00443 WORD wValue
00444 );
00445
00446 FTD2XX_API
00447 FT_STATUS WINAPI FT_EraseEE(
00448 FT_HANDLE ftHandle
00449 );
00450
00451
00452
00453
00454 typedef struct ft_program_data {
00455
00456 DWORD Signature1;
00457 DWORD Signature2;
00458 DWORD Version;
00459
00460
00461
00462
00463
00464 WORD VendorId;
00465 WORD ProductId;
00466 char *Manufacturer;
00467 char *ManufacturerId;
00468 char *Description;
00469 char *SerialNumber;
00470 WORD MaxPower;
00471 WORD PnP;
00472 WORD SelfPowered;
00473 WORD RemoteWakeup;
00474
00475
00476
00477 UCHAR Rev4;
00478 UCHAR IsoIn;
00479 UCHAR IsoOut;
00480 UCHAR PullDownEnable;
00481 UCHAR SerNumEnable;
00482 UCHAR USBVersionEnable;
00483 WORD USBVersion;
00484
00485
00486
00487 UCHAR Rev5;
00488 UCHAR IsoInA;
00489 UCHAR IsoInB;
00490 UCHAR IsoOutA;
00491 UCHAR IsoOutB;
00492 UCHAR PullDownEnable5;
00493 UCHAR SerNumEnable5;
00494 UCHAR USBVersionEnable5;
00495 WORD USBVersion5;
00496 UCHAR AIsHighCurrent;
00497 UCHAR BIsHighCurrent;
00498 UCHAR IFAIsFifo;
00499 UCHAR IFAIsFifoTar;
00500 UCHAR IFAIsFastSer;
00501 UCHAR AIsVCP;
00502 UCHAR IFBIsFifo;
00503 UCHAR IFBIsFifoTar;
00504 UCHAR IFBIsFastSer;
00505 UCHAR BIsVCP;
00506
00507
00508
00509 UCHAR UseExtOsc;
00510 UCHAR HighDriveIOs;
00511 UCHAR EndpointSize;
00512 UCHAR PullDownEnableR;
00513 UCHAR SerNumEnableR;
00514 UCHAR InvertTXD;
00515 UCHAR InvertRXD;
00516 UCHAR InvertRTS;
00517 UCHAR InvertCTS;
00518 UCHAR InvertDTR;
00519 UCHAR InvertDSR;
00520 UCHAR InvertDCD;
00521 UCHAR InvertRI;
00522 UCHAR Cbus0;
00523 UCHAR Cbus1;
00524 UCHAR Cbus2;
00525 UCHAR Cbus3;
00526 UCHAR Cbus4;
00527 UCHAR RIsD2XX;
00528
00529
00530
00531 UCHAR PullDownEnable7;
00532 UCHAR SerNumEnable7;
00533 UCHAR ALSlowSlew;
00534 UCHAR ALSchmittInput;
00535 UCHAR ALDriveCurrent;
00536 UCHAR AHSlowSlew;
00537 UCHAR AHSchmittInput;
00538 UCHAR AHDriveCurrent;
00539 UCHAR BLSlowSlew;
00540 UCHAR BLSchmittInput;
00541 UCHAR BLDriveCurrent;
00542 UCHAR BHSlowSlew;
00543 UCHAR BHSchmittInput;
00544 UCHAR BHDriveCurrent;
00545 UCHAR IFAIsFifo7;
00546 UCHAR IFAIsFifoTar7;
00547 UCHAR IFAIsFastSer7;
00548 UCHAR AIsVCP7;
00549 UCHAR IFBIsFifo7;
00550 UCHAR IFBIsFifoTar7;
00551 UCHAR IFBIsFastSer7;
00552 UCHAR BIsVCP7;
00553 UCHAR PowerSaveEnable;
00554
00555
00556
00557 UCHAR PullDownEnable8;
00558 UCHAR SerNumEnable8;
00559 UCHAR ASlowSlew;
00560 UCHAR ASchmittInput;
00561 UCHAR ADriveCurrent;
00562 UCHAR BSlowSlew;
00563 UCHAR BSchmittInput;
00564 UCHAR BDriveCurrent;
00565 UCHAR CSlowSlew;
00566 UCHAR CSchmittInput;
00567 UCHAR CDriveCurrent;
00568 UCHAR DSlowSlew;
00569 UCHAR DSchmittInput;
00570 UCHAR DDriveCurrent;
00571 UCHAR ARIIsTXDEN;
00572 UCHAR BRIIsTXDEN;
00573 UCHAR CRIIsTXDEN;
00574 UCHAR DRIIsTXDEN;
00575 UCHAR AIsVCP8;
00576 UCHAR BIsVCP8;
00577 UCHAR CIsVCP8;
00578 UCHAR DIsVCP8;
00579
00580 } FT_PROGRAM_DATA, *PFT_PROGRAM_DATA;
00581
00582
00583 FTD2XX_API
00584 FT_STATUS WINAPI FT_EE_Program(
00585 FT_HANDLE ftHandle,
00586 PFT_PROGRAM_DATA pData
00587 );
00588
00589 FTD2XX_API
00590 FT_STATUS WINAPI FT_EE_ProgramEx(
00591 FT_HANDLE ftHandle,
00592 PFT_PROGRAM_DATA lpData,
00593 char *Manufacturer,
00594 char *ManufacturerId,
00595 char *Description,
00596 char *SerialNumber
00597 );
00598
00599 FTD2XX_API
00600 FT_STATUS WINAPI FT_EE_Read(
00601 FT_HANDLE ftHandle,
00602 PFT_PROGRAM_DATA pData
00603 );
00604
00605 FTD2XX_API
00606 FT_STATUS WINAPI FT_EE_ReadEx(
00607 FT_HANDLE ftHandle,
00608 PFT_PROGRAM_DATA lpData,
00609 char *Manufacturer,
00610 char *ManufacturerId,
00611 char *Description,
00612 char *SerialNumber
00613 );
00614
00615 FTD2XX_API
00616 FT_STATUS WINAPI FT_EE_UASize(
00617 FT_HANDLE ftHandle,
00618 LPDWORD lpdwSize
00619 );
00620
00621 FTD2XX_API
00622 FT_STATUS WINAPI FT_EE_UAWrite(
00623 FT_HANDLE ftHandle,
00624 PUCHAR pucData,
00625 DWORD dwDataLen
00626 );
00627
00628 FTD2XX_API
00629 FT_STATUS WINAPI FT_EE_UARead(
00630 FT_HANDLE ftHandle,
00631 PUCHAR pucData,
00632 DWORD dwDataLen,
00633 LPDWORD lpdwBytesRead
00634 );
00635
00636 FTD2XX_API
00637 FT_STATUS WINAPI FT_SetLatencyTimer(
00638 FT_HANDLE ftHandle,
00639 UCHAR ucLatency
00640 );
00641
00642 FTD2XX_API
00643 FT_STATUS WINAPI FT_GetLatencyTimer(
00644 FT_HANDLE ftHandle,
00645 PUCHAR pucLatency
00646 );
00647
00648 FTD2XX_API
00649 FT_STATUS WINAPI FT_SetBitMode(
00650 FT_HANDLE ftHandle,
00651 UCHAR ucMask,
00652 UCHAR ucEnable
00653 );
00654
00655 FTD2XX_API
00656 FT_STATUS WINAPI FT_GetBitMode(
00657 FT_HANDLE ftHandle,
00658 PUCHAR pucMode
00659 );
00660
00661 FTD2XX_API
00662 FT_STATUS WINAPI FT_SetUSBParameters(
00663 FT_HANDLE ftHandle,
00664 ULONG ulInTransferSize,
00665 ULONG ulOutTransferSize
00666 );
00667
00668 FTD2XX_API
00669 FT_STATUS WINAPI FT_GetDeviceInfo(
00670 FT_HANDLE ftHandle,
00671 FT_DEVICE *lpftDevice,
00672 LPDWORD lpdwID,
00673 PCHAR SerialNumber,
00674 PCHAR Description,
00675 LPVOID Dummy
00676 );
00677
00678 FTD2XX_API
00679 FT_STATUS WINAPI FT_GetDeviceLocId(
00680 FT_HANDLE ftHandle,
00681 LPDWORD lpdwLocId
00682 );
00683
00684 FTD2XX_API
00685 FT_STATUS WINAPI FT_StopInTask(
00686 FT_HANDLE ftHandle
00687 );
00688
00689 FTD2XX_API
00690 FT_STATUS WINAPI FT_RestartInTask(
00691 FT_HANDLE ftHandle
00692 );
00693
00694 FTD2XX_API
00695 FT_STATUS WINAPI FT_SetResetPipeRetryCount(
00696 FT_HANDLE ftHandle,
00697 DWORD dwCount
00698 );
00699
00700 FTD2XX_API
00701 FT_STATUS WINAPI FT_ResetPort(
00702 FT_HANDLE ftHandle
00703 );
00704
00705
00706
00707
00708
00709
00710 FTD2XX_API
00711 FT_HANDLE WINAPI FT_W32_CreateFile(
00712 LPCSTR lpszName,
00713 DWORD dwAccess,
00714 DWORD dwShareMode,
00715 LPSECURITY_ATTRIBUTES lpSecurityAttributes,
00716 DWORD dwCreate,
00717 DWORD dwAttrsAndFlags,
00718 HANDLE hTemplate
00719 );
00720
00721 FTD2XX_API
00722 BOOL WINAPI FT_W32_CloseHandle(
00723 FT_HANDLE ftHandle
00724 );
00725
00726 FTD2XX_API
00727 BOOL WINAPI FT_W32_ReadFile(
00728 FT_HANDLE ftHandle,
00729 LPVOID lpBuffer,
00730 DWORD nBufferSize,
00731 LPDWORD lpBytesReturned,
00732 LPOVERLAPPED lpOverlapped
00733 );
00734
00735 FTD2XX_API
00736 BOOL WINAPI FT_W32_WriteFile(
00737 FT_HANDLE ftHandle,
00738 LPVOID lpBuffer,
00739 DWORD nBufferSize,
00740 LPDWORD lpBytesWritten,
00741 LPOVERLAPPED lpOverlapped
00742 );
00743
00744 FTD2XX_API
00745 DWORD WINAPI FT_W32_GetLastError(
00746 FT_HANDLE ftHandle
00747 );
00748
00749 FTD2XX_API
00750 BOOL WINAPI FT_W32_GetOverlappedResult(
00751 FT_HANDLE ftHandle,
00752 LPOVERLAPPED lpOverlapped,
00753 LPDWORD lpdwBytesTransferred,
00754 BOOL bWait
00755 );
00756
00757 FTD2XX_API
00758 BOOL WINAPI FT_W32_CancelIo(
00759 FT_HANDLE ftHandle
00760 );
00761
00762
00763
00764
00765
00766 typedef struct _FTCOMSTAT {
00767 DWORD fCtsHold : 1;
00768 DWORD fDsrHold : 1;
00769 DWORD fRlsdHold : 1;
00770 DWORD fXoffHold : 1;
00771 DWORD fXoffSent : 1;
00772 DWORD fEof : 1;
00773 DWORD fTxim : 1;
00774 DWORD fReserved : 25;
00775 DWORD cbInQue;
00776 DWORD cbOutQue;
00777 } FTCOMSTAT, *LPFTCOMSTAT;
00778
00779 typedef struct _FTDCB {
00780 DWORD DCBlength;
00781 DWORD BaudRate;
00782 DWORD fBinary: 1;
00783 DWORD fParity: 1;
00784 DWORD fOutxCtsFlow:1;
00785 DWORD fOutxDsrFlow:1;
00786 DWORD fDtrControl:2;
00787 DWORD fDsrSensitivity:1;
00788 DWORD fTXContinueOnXoff: 1;
00789 DWORD fOutX: 1;
00790 DWORD fInX: 1;
00791 DWORD fErrorChar: 1;
00792 DWORD fNull: 1;
00793 DWORD fRtsControl:2;
00794 DWORD fAbortOnError:1;
00795 DWORD fDummy2:17;
00796 WORD wReserved;
00797 WORD XonLim;
00798 WORD XoffLim;
00799 BYTE ByteSize;
00800 BYTE Parity;
00801 BYTE StopBits;
00802 char XonChar;
00803 char XoffChar;
00804 char ErrorChar;
00805 char EofChar;
00806 char EvtChar;
00807 WORD wReserved1;
00808 } FTDCB, *LPFTDCB;
00809
00810 typedef struct _FTTIMEOUTS {
00811 DWORD ReadIntervalTimeout;
00812 DWORD ReadTotalTimeoutMultiplier;
00813 DWORD ReadTotalTimeoutConstant;
00814 DWORD WriteTotalTimeoutMultiplier;
00815 DWORD WriteTotalTimeoutConstant;
00816 } FTTIMEOUTS,*LPFTTIMEOUTS;
00817
00818
00819 FTD2XX_API
00820 BOOL WINAPI FT_W32_ClearCommBreak(
00821 FT_HANDLE ftHandle
00822 );
00823
00824 FTD2XX_API
00825 BOOL WINAPI FT_W32_ClearCommError(
00826 FT_HANDLE ftHandle,
00827 LPDWORD lpdwErrors,
00828 LPFTCOMSTAT lpftComstat
00829 );
00830
00831 FTD2XX_API
00832 BOOL WINAPI FT_W32_EscapeCommFunction(
00833 FT_HANDLE ftHandle,
00834 DWORD dwFunc
00835 );
00836
00837 FTD2XX_API
00838 BOOL WINAPI FT_W32_GetCommModemStatus(
00839 FT_HANDLE ftHandle,
00840 LPDWORD lpdwModemStatus
00841 );
00842
00843 FTD2XX_API
00844 BOOL WINAPI FT_W32_GetCommState(
00845 FT_HANDLE ftHandle,
00846 LPFTDCB lpftDcb
00847 );
00848
00849 FTD2XX_API
00850 BOOL WINAPI FT_W32_GetCommTimeouts(
00851 FT_HANDLE ftHandle,
00852 FTTIMEOUTS *pTimeouts
00853 );
00854
00855 FTD2XX_API
00856 BOOL WINAPI FT_W32_PurgeComm(
00857 FT_HANDLE ftHandle,
00858 DWORD dwMask
00859 );
00860
00861 FTD2XX_API
00862 BOOL WINAPI FT_W32_SetCommBreak(
00863 FT_HANDLE ftHandle
00864 );
00865
00866 FTD2XX_API
00867 BOOL WINAPI FT_W32_SetCommMask(
00868 FT_HANDLE ftHandle,
00869 ULONG ulEventMask
00870 );
00871
00872 FTD2XX_API
00873 BOOL WINAPI FT_W32_SetCommState(
00874 FT_HANDLE ftHandle,
00875 LPFTDCB lpftDcb
00876 );
00877
00878 FTD2XX_API
00879 BOOL WINAPI FT_W32_SetCommTimeouts(
00880 FT_HANDLE ftHandle,
00881 FTTIMEOUTS *pTimeouts
00882 );
00883
00884 FTD2XX_API
00885 BOOL WINAPI FT_W32_SetupComm(
00886 FT_HANDLE ftHandle,
00887 DWORD dwReadBufferSize,
00888 DWORD dwWriteBufferSize
00889 );
00890
00891 FTD2XX_API
00892 BOOL WINAPI FT_W32_WaitCommEvent(
00893 FT_HANDLE ftHandle,
00894 PULONG pulEvent,
00895 LPOVERLAPPED lpOverlapped
00896 );
00897
00898
00899
00900
00901
00902 typedef struct _ft_device_list_info_node {
00903 ULONG Flags;
00904 ULONG Type;
00905 ULONG ID;
00906 DWORD LocId;
00907 char SerialNumber[16];
00908 char Description[64];
00909 FT_HANDLE ftHandle;
00910 } FT_DEVICE_LIST_INFO_NODE;
00911
00912
00913 enum {
00914 FT_FLAGS_OPENED = 1,
00915 FT_FLAGS_HISPEED = 2
00916 };
00917
00918 FTD2XX_API
00919 FT_STATUS WINAPI FT_CreateDeviceInfoList(
00920 LPDWORD lpdwNumDevs
00921 );
00922
00923 FTD2XX_API
00924 FT_STATUS WINAPI FT_GetDeviceInfoList(
00925 FT_DEVICE_LIST_INFO_NODE *pDest,
00926 LPDWORD lpdwNumDevs
00927 );
00928
00929 FTD2XX_API
00930 FT_STATUS WINAPI FT_GetDeviceInfoDetail(
00931 DWORD dwIndex,
00932 LPDWORD lpdwFlags,
00933 LPDWORD lpdwType,
00934 LPDWORD lpdwID,
00935 LPDWORD lpdwLocId,
00936 LPVOID lpSerialNumber,
00937 LPVOID lpDescription,
00938 FT_HANDLE *pftHandle
00939 );
00940
00941
00942
00943
00944
00945
00946 FTD2XX_API
00947 FT_STATUS WINAPI FT_GetDriverVersion(
00948 FT_HANDLE ftHandle,
00949 LPDWORD lpdwVersion
00950 );
00951
00952 FTD2XX_API
00953 FT_STATUS WINAPI FT_GetLibraryVersion(
00954 LPDWORD lpdwVersion
00955 );
00956
00957
00958
00959
00960
00961 #define EV_RXCHAR 0x0001 // Any Character received
00962 #define EV_RXFLAG 0x0002 // Received certain character
00963 #define EV_TXEMPTY 0x0004 // Transmitt Queue Empty
00964 #define EV_CTS 0x0008 // CTS changed state
00965 #define EV_DSR 0x0010 // DSR changed state
00966 #define EV_RLSD 0x0020 // RLSD changed state
00967 #define EV_BREAK 0x0040 // BREAK received
00968 #define EV_ERR 0x0080 // Line status error occurred
00969 #define EV_RING 0x0100 // Ring signal detected
00970 #define EV_PERR 0x0200 // Printer error occured
00971 #define EV_RX80FULL 0x0400 // Receive buffer is 80 percent full
00972 #define EV_EVENT1 0x0800 // Provider specific event 1
00973 #define EV_EVENT2 0x1000 // Provider specific event 2
00974
00975
00976
00977
00978
00979 #define SETXOFF 1 // Simulate XOFF received
00980 #define SETXON 2 // Simulate XON received
00981 #define SETRTS 3 // Set RTS high
00982 #define CLRRTS 4 // Set RTS low
00983 #define SETDTR 5 // Set DTR high
00984 #define CLRDTR 6 // Set DTR low
00985 #define RESETDEV 7 // Reset device if possible
00986 #define SETBREAK 8 // Set the device break line.
00987 #define CLRBREAK 9 // Clear the device break line.
00988
00989
00990
00991
00992 #define PURGE_TXABORT 0x0001 // Kill the pending/current writes to the comm port.
00993 #define PURGE_RXABORT 0x0002 // Kill the pending/current reads to the comm port.
00994 #define PURGE_TXCLEAR 0x0004 // Kill the transmit queue if there.
00995 #define PURGE_RXCLEAR 0x0008 // Kill the typeahead buffer if there.
00996
00997 #ifdef __cplusplus
00998 }
00999 #endif
01000
01001
01002 #endif
01003
01004
01005
01006
01007
01008