FTD2XX.H 19 KB

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