Important changes to repositories hosted on mbed.com
Mbed hosted mercurial repositories are deprecated and are due to be permanently deleted in July 2026.
To keep a copy of this software download the repository Zip archive or clone locally using Mercurial.
It is also possible to export all your personal repositories from the account settings page.
ftlib.h
00001 /** @file */ 00002 /******************************************************************************* 00003 * (c) by Knobloch GmbH 00004 * Weedgasse 14 00005 * D-55234 Erbes-B�im 00006 * 00007 * Header: FtLib.h Headerfile for fischertechnik USB-Library 00008 * 00009 * Version: 0.60 00010 * Date: 10. May 2006 00011 * 00012 * Revision: 00013 * 0.60: 10. May 2006 00014 * New Name: GetAnzFtUsbDevice() --> GetNumFtUsbDevice() 00015 * ClearFtMessagePuffer() --> ClearFtMessageBuffer() 00016 ********************************************************************************/ 00017 00018 00019 #ifndef _FT_LIBRARY_H_ 00020 #define _FT_LIBRARY_H_ 00021 00022 /** \cond doxygen ignore start */ 00023 #define DWORD long int 00024 #define BYTE unsigned char 00025 #define USHORT unsigned short int 00026 #define UINT unsigned int 00027 #define UCHAR unsigned char 00028 00029 #define HANDLE int 00030 #define HWND int 00031 #define __stdcall 00032 #define LPCSTR char * 00033 #define LPVOID void * 00034 /** \endcond doxygen ignore end */ 00035 00036 /// \brief Communication Area for ft-Device 00037 typedef struct _FT_TRANSFER_AREA 00038 { 00039 /// \brief Digital Inputs Main Module 00040 /// Base+0x00: | E8 | E7 | E6 | E5 | E4 | E3 | E2 | E1 | 00041 unsigned char E_Main; 00042 00043 /// \brief Digital Inputs Extension Modules 1 00044 /// Base+0x01: | E16| E15| E14| E13| E12| E11| E10| E9 | 00045 unsigned char E_Sub1; 00046 /// \brief Digital Inputs Extension Modules 2 00047 /// Base+0x02: | E24| E23| E22| E21| E20| E19| E18| E17| 00048 unsigned char E_Sub2; 00049 /// \brief Digital Inputs Extension Modules 3 00050 /// Base+0x03: | E32| E31| E30| E29| E28| E27| E26| E25| 00051 unsigned char E_Sub3; 00052 00053 /// \brief Reserved 00054 /// Base+0x04..0x0B 00055 unsigned char rsvd1[8]; 00056 00057 /// \brief Abstandsensoren (1=detektiert) 00058 /// Base+0x0C: | 0 | 0 | 0 | 0 | 0 | 0 | D2 | D1 | 00059 unsigned char Distance; 00060 00061 /// \brief Base+0x0D: reserved 00062 unsigned char rsvd2; 00063 00064 /// \brief IR-Receiver input code 00065 /// 00066 /// Base+0x0E: | 0 | 0 | 0 | C | T | T | T | T 00067 /// C = Code: 0 = Code 1 active, 1 = Code 2 active 00068 /// TTTT = Keycode 0..11 00069 /// Arangement of keys on Transmitter 00070 /// 1 8 00071 /// 2 7 00072 /// 3 10 00073 /// 4 9 00074 /// 5 11 00075 /// 6 00076 /// Taste 1 = M3 right 00077 /// Taste 2 = M3 left 00078 /// Taste 3 = Speed. M1 00079 /// Taste 4 = Speed. M2 00080 /// Taste 5 = Speed. M3 00081 /// Taste 6 = Code 2 00082 /// Taste 7 = M1 backward 00083 /// Taste 8 = M1 forward 00084 /// Taste 9 = M2 left 00085 /// Taste 10 = M2 right 00086 /// Taste 11 = Code 1 00087 unsigned char IRKeys; 00088 00089 /// \brief Base+0x0F: | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 00090 unsigned char res_1; 00091 00092 /// \brief Analoginput of main module 00093 /// 00094 /// 8x 16 Bit, Range 0..1023, L:H Format (intel) ) 00095 /// Base+0x10..0x11: AX (Master Modul) 00096 unsigned short AX; 00097 /// \brief Analoginput of main module 00098 /// 00099 /// 8x 16 Bit, Range 0..1023, L:H Format (intel) ) 00100 /// Base+0x12..0x13: AY (Master Modul) 00101 unsigned short AY; 00102 /// \brief Analoginput of main module 00103 /// 00104 /// 8x 16 Bit, Range 0..1023, L:H Format (intel) ) 00105 /// Base+0x14..0x15: A1 (Master Modul) 00106 unsigned short A1; 00107 /// \brief Analoginput of main module 00108 /// 00109 /// 8x 16 Bit, Range 0..1023, L:H Format (intel) ) 00110 /// Base+0x16..0x17: A2 (Master Modul) 00111 unsigned short A2; 00112 /// \brief Analoginput of main module 00113 /// 00114 /// 8x 16 Bit, Range 0..1023, L:H Format (intel) ) 00115 /// Base+0x18..0x19: AZ (Master Modul, vom SLAVE-Modul-BUS) 00116 unsigned short AZ; 00117 /// \brief Analoginput of main module 00118 /// 00119 /// 8x 16 Bit, Range 0..1023, L:H Format (intel) ) 00120 /// Base+0x1A..0x1B: AV (Versorgungsspannung Master Modul) 00121 unsigned short AV; 00122 /// \brief Analoginput of main module 00123 /// 00124 /// 8x 16 Bit, Range 0..1023, L:H Format (intel) ) 00125 /// Base+0x1C..0x1D: D1 (Abstandssensor 1) 00126 unsigned short D1; 00127 /// \brief Analoginput of main module 00128 /// 00129 /// 8x 16 Bit, Range 0..1023, L:H Format (intel) ) 00130 /// Base+0x1E..0x1F: D2 (Abstandssensor 2) 00131 unsigned short D2; 00132 00133 /// \brief Analoginput of slave module 1 00134 /// 00135 /// Base+0x20..0x21: AX (Slave 1 Modul) 00136 unsigned short AXS1; 00137 /// \brief Analoginput of slave module 1 00138 /// 00139 /// Base+0x22..0x23: AX (Slave 2 Modul) 00140 unsigned short AXS2; 00141 /// \brief Analoginput of slave module 1 00142 /// 00143 /// Base+0x24..0x25: AX (Slave 3 Modul) 00144 unsigned short AXS3; 00145 00146 /// \brief Detection limit for distance sensor 1 ( to generate digital from analog input ) 00147 /// 00148 /// Base+0x26..0x27: DS1 00149 unsigned short DS1; 00150 /// \brief Detection limit for distance sensor 2 ( to generate digital from analog input ) 00151 /// 00152 /// Base+0x28..0x29: DS2 00153 unsigned short DS2; 00154 00155 /// \brief Reserved 00156 /// Base+0x2A..0x2B 00157 unsigned short ZE; 00158 00159 /// \brief Reserved 00160 /// Base+0x2C..0x2F 00161 unsigned char rsvd3[4]; 00162 00163 /// \brief 16-Bit Timer 00164 /// 00165 /// Base+0x30..0x31: Timer 1ms Inkrement 00166 unsigned short Timer1ms; 00167 /// \brief 16-Bit Timer 00168 /// 00169 /// Base+0x32..0x33: Timer 10ms Inkrement 00170 unsigned short Timer10ms; 00171 /// \brief 16-Bit Timer 00172 /// 00173 /// Base+0x34..0x35: Timer 100ms Inkrement 00174 unsigned short Timer100ms; 00175 /// \brief 16-Bit Timer 00176 /// 00177 /// Base+0x36..0x37: Timer 1s Inkrement 00178 unsigned short Timer1s; 00179 /// \brief 16-Bit Timer 00180 /// 00181 /// Base+0x38..0x39: Timer 10s Inkrement 00182 unsigned short Timer10s; 00183 /// \brief 16-Bit Timer 00184 /// 00185 /// Base+0x3A..0x3B: Timer 1min Inkrement 00186 unsigned short Timer1min; 00187 00188 /// \brief Reserved 00189 /// Base+0x3C..0x3D 00190 unsigned short res_bF; 00191 /// \brief Reserved 00192 /// Base+0x3E 00193 unsigned char res_bT; 00194 00195 /// \brief Reserved 00196 /// Base+0x3F 00197 unsigned char rsvd4[1]; 00198 00199 /// \brief Outputs of the main module ( polarity ) 00200 /// 00201 /// Base+0x40: |M4B |M4A |M3B |M3A |M2B |M2A |M1B |M1A | 00202 unsigned char M_Main; 00203 /// \brief Outputs of extension module 1 00204 /// 00205 /// Base+0x41: |M8B |M8A |M7B |M7A |M6B |M6A |M5B |M5A | 00206 unsigned char M_Sub1; 00207 /// \brief Outputs of extension module 2 00208 /// 00209 /// Base+0x42: |M12B|M12A|M11B|M11A|M10B|M10A|M9B |M9A | 00210 unsigned char M_Sub2; 00211 /// \brief Outputs of extension module 3 00212 /// 00213 /// Base+0x43: |M16B|M16A|M15B|M15A|M14B|M14A|M13B|M13A| 00214 unsigned char M_Sub3; 00215 00216 /// \brief Reserved 00217 /// Base+0x44..0x47 00218 unsigned char rsvd5[4]; 00219 00220 ///\brief Outputs of the main module ( energy saver mode ) 00221 /// 00222 /// 1 = energy saver mode, 0 = operational, PowerUp = 1 00223 /// Base+0x48: | 0 | 0 | 0 | 0 | M4 | M3 | M2 | M1 | 00224 unsigned char MES_Main; 00225 /// \brief Outputs of extension module 1 ( energy saver mode ) 00226 /// 00227 /// Base+0x49: | 0 | 0 | 0 | 0 | M8 | M7 | M6 | M5 | 00228 unsigned char MES_Sub1; 00229 /// \brief Outputs of extension module 2 ( energy saver mode ) 00230 /// 00231 /// Base+0x4A: | 0 | 0 | 0 | 0 | M12| M11| M10| M9 | 00232 unsigned char MES_Sub2; 00233 /// \brief Outputs of extension module 3 ( energy saver mode ) 00234 /// 00235 /// Base+0x4B: | 0 | 0 | 0 | 0 | M16| M15| M14| M13| 00236 unsigned char MES_Sub3; 00237 00238 /// \brief Reserved 00239 /// Base+0x4C 00240 unsigned char rsvd6[1]; 00241 00242 /// \brief Reserved 00243 /// Base+0x4D: 00244 unsigned char reserved_l1; 00245 /// \brief Reserved 00246 /// Base+0x4E: 00247 unsigned char reserved_l2; 00248 /// \brief Reserved 00249 /// Base+0x4F: 00250 unsigned char reserved_l3; 00251 00252 /// \brief Outputs of the main module (PWM values, range =0..7) 00253 /// 00254 /// Base+0x50: M1A 00255 /// Base+0x51: M1B 00256 /// Base+0x52: M2A 00257 /// Base+0x53: M2B 00258 /// Base+0x54: M3A 00259 /// Base+0x55: M3B 00260 /// Base+0x56: M4A 00261 /// Base+0x57: M4B 00262 unsigned char MPWM_Main[8]; 00263 00264 /// \brief Outputs of slave module 1 (PWM values, range =0..7) 00265 /// 00266 /// Base+0x58: M5A 00267 /// Base+0x59: M5B 00268 /// Base+0x5A: M6A 00269 /// Base+0x5B: M6B 00270 /// Base+0x5C: M7A 00271 /// Base+0x5D: M7B 00272 /// Base+0x5E: M8A 00273 /// Base+0x5F: M8B 00274 unsigned char MPWM_Sub1[8]; 00275 00276 /// \brief Outputs of slave module 2 (PWM values, range =0..7) 00277 /// 00278 /// Base+0x60: M9A 00279 /// Base+0x61: M9B 00280 /// Base+0x62: M10A 00281 /// Base+0x63: M10B 00282 /// Base+0x64: M11A 00283 /// Base+0x65: M11B 00284 /// Base+0x66: M12A 00285 /// Base+0x67: M12B 00286 unsigned char MPWM_Sub2[8]; 00287 00288 /// \brief Outputs of slave module 3 (PWM values, range =0..7) 00289 /// 00290 /// Base+0x68: M13A 00291 /// Base+0x69: M13B 00292 /// Base+0x6A: M14A 00293 /// Base+0x6B: M14B 00294 /// Base+0x6C: M15A 00295 /// Base+0x6D: M15B 00296 /// Base+0x6E: M16A 00297 /// Base+0x6F: M16B 00298 unsigned char MPWM_Sub3[8]; 00299 00300 /// \brief Reserved 00301 /// Base+0x70..0x8F 00302 unsigned char rsvd7[32]; 00303 00304 00305 /// \brief Analoginput of slave module 1 (Update-Time: 20ms) 00306 /// 00307 /// Base+0x90..0x91: A1 (Slave 1 Modul) 00308 unsigned short A1S1; 00309 /// \brief Analoginput of slave module 2 (Update-Time: 20ms) 00310 /// 00311 /// Base+0x92..0x93: A1 (Slave 2 Modul) 00312 unsigned short A1S2; 00313 /// \brief Analoginput of slave module 3 (Update-Time: 20ms) 00314 /// 00315 /// Base+0x94..0x95: A1 (Slave 3 Modul) 00316 unsigned short A1S3; 00317 00318 /// \brief Analoginput of slave modules 1 (Update-Time: 20ms) 00319 /// 00320 /// Base+0x96..0x97: AV (Slave 1 Modul) 00321 unsigned short AVS1; 00322 /// \brief Analoginput of slave modules 2 (Update-Time: 20ms) 00323 /// 00324 /// Base+0x98..0x99: AV (Slave 2 Modul) 00325 unsigned short AVS2; 00326 /// \brief Analoginput of slave modules 3 (Update-Time: 20ms) 00327 /// 00328 /// Base+0x9A..0x9B: AV (Slave 3 Modul) 00329 unsigned short AVS3; 00330 00331 /// \brief Reserved 00332 /// Base+0x9C..0x9F 00333 unsigned char rsvd8[4]; 00334 00335 /// \brief Reserved 00336 /// Base+0xA0..0xA1: AX (Interface) Resistor-Value (0..5662 Ohm) 00337 unsigned short AX_R; 00338 00339 /// \brief Base+0xA2..0xA3: AY (Interface) Resistor-Value (0..5662 Ohm) 00340 unsigned short AY_R; 00341 00342 /// \brief Base+0xA4..0xA5: AX (Slave 1 Modul) Resistor-Value (0..5662 Ohm) 00343 unsigned short AXS1_R; 00344 00345 /// \brief Base+0xA6..0xA7: AX (Slave 2 Modul) Resistor-Value (0..5662 Ohm) 00346 unsigned short AXS2_R; 00347 00348 /// \brief Base+0xA8..0xA9: AX (Slave 3 Modul) Resistor-Value (0..5662 Ohm) 00349 unsigned short AXS3_R; 00350 00351 /// \brief Reserved 00352 /// Base+0xAA..0xDF 00353 unsigned char rsvd10[54]; 00354 00355 /// \brief Operation mode 00356 /// Base+0xE0: 0x00=online, 0x01=binary download 00357 unsigned char Mode; 00358 00359 /// \brief Output PWM update (0x01=always, 0x02=once) 00360 /// Base+0xE1: | 0 | 0 | 0 | 0 | 0 | 0 |ONCE|ALWA| 00361 unsigned char MPWM_Update; 00362 00363 /// \brief Base+0xE2 00364 /// 00365 /// 0 = Transfer Area closed 00366 /// 1 = Transfer Area is working (Library Thread is running) 00367 unsigned char TransferAktiv; 00368 00369 /// \brief Reserved 00370 /// Base+0xE3..0xE5 00371 unsigned char rsvd11[3]; 00372 00373 /// \brief I/O Extension modules connected 00374 /// 00375 /// Base+0xE6: | 0 | 0 | 0 | 0 | 0 | S2 | S1 | S0 | 00376 /// S2..S0 = Number of connected I/O Extension Modules 00377 unsigned char BusModules; 00378 00379 /// \brief Slot 1 connected extension module type 00380 /// Base+0xE7: ? 00381 unsigned char SlotModule1; 00382 00383 /// \brief Slot 2 connected extension module type 00384 /// Base+0xE8: ? 00385 unsigned char SlotModule2; 00386 00387 /// \brief Reserved 00388 /// Base+0xE9..0xEF 00389 unsigned char rsvd12[7]; 00390 00391 00392 /// \brief Change Bytes 00393 /// 00394 /// 1 = EG (Master or Slave 1..3) have changed 00395 /// The Application must read and change this byte to "0" 00396 /// Base+0xF0: 00397 unsigned char ChangeEg; 00398 00399 /// \brief 1 = Analog Inputs (Master AX, AY, A1, A2, AV, AZ or Extension 1..3 AX,AY,AV) 00400 /// 00401 /// or RfPower, RfError have changed 00402 /// The Application must read and change this byte to "0" 00403 /// Base+0xF1: 00404 unsigned char ChangeAn; 00405 00406 /// \brief 1 = Infrared Input (Robo-IF) or RfStatus have changed 00407 /// 00408 /// The Application must read and change this byte to "0" 00409 /// Base+0xF2: 00410 unsigned char ChangeIr; 00411 00412 00413 /// \brief Reserved 00414 /// Base+0xF3..0xFF 00415 unsigned char rsvd13[13]; 00416 00417 00418 /// \brief Digital inputs as 16 bit values 00419 /// 00420 /// Base+0x100..0x101 Input 1 (Master-Modul) 00421 /// Base+0x102..0x103 Input 2 (Master-Modul) 00422 /// Base+0x104..0x105 Input 3 (Master-Modul) 00423 /// Base+0x106..0x107 Input 4 (Master-Modul) 00424 /// Base+0x108..0x109 Input 5 (Master-Modul) 00425 /// Base+0x10A..0x10B Input 6 (Master-Modul) 00426 /// Base+0x10C..0x10D Input 7 (Master-Modul) 00427 /// Base+0x10E..0x10F Input 8 (Master-Modul) 00428 unsigned short E16_Main[8]; 00429 /// \brief Digital inputs as 16 bit values 00430 /// 00431 /// Base+0x110..0x111 Input 9 (Slave1-Modul) 00432 /// Base+0x112..0x113 Input 10 (Slave1-Modul) 00433 /// Base+0x114..0x115 Input 11 (Slave1-Modul) 00434 /// Base+0x116..0x117 Input 12 (Slave1-Modul) 00435 /// Base+0x118..0x119 Input 13 (Slave1-Modul) 00436 /// Base+0x11A..0x11B Input 14 (Slave1-Modul) 00437 /// Base+0x11C..0x11D Input 15 (Slave1-Modul) 00438 /// Base+0x11E..0x11F Input 16 (Slave1-Modul) 00439 unsigned short E16_Sub1[8]; 00440 /// \brief Digital inputs as 16 bit values 00441 /// 00442 /// Base+0x120..0x121 Input 17 (Slave2-Modul) 00443 /// Base+0x122..0x123 Input 18 (Slave2-Modul) 00444 /// Base+0x124..0x125 Input 19 (Slave2-Modul) 00445 /// Base+0x126..0x127 Input 20 (Slave2-Modul) 00446 /// Base+0x128..0x129 Input 21 (Slave2-Modul) 00447 /// Base+0x12A..0x12B Input 22 (Slave2-Modul) 00448 /// Base+0x12C..0x12D Input 23 (Slave2-Modul) 00449 /// Base+0x12E..0x12F Input 24 (Slave2-Modul) 00450 unsigned short E16_Sub2[8]; 00451 /// \brief Digital inputs as 16 bit values 00452 /// 00453 /// Base+0x130..0x131 Input 25 (Slave3-Modul) 00454 /// Base+0x132..0x133 Input 26 (Slave3-Modul) 00455 /// Base+0x134..0x135 Input 27 (Slave3-Modul) 00456 /// Base+0x136..0x137 Input 28 (Slave3-Modul) 00457 /// Base+0x138..0x139 Input 29 (Slave3-Modul) 00458 /// Base+0x13A..0x13B Input 30 (Slave3-Modul) 00459 /// Base+0x13C..0x13D Input 31 (Slave3-Modul) 00460 /// Base+0x13E..0x13F Input 32 (Slave3-Modul) 00461 unsigned short E16_Sub3[8]; 00462 /// \brief Distance sensors D1 & D2 (Master Modul) 00463 /// 00464 /// Base+0x140..0x141 Distance sensor D1 (Master-Modul) 00465 /// Base+0x142..0x143 Distance sensor D2 (Master-Modul) 00466 unsigned short Distance16[2]; 00467 00468 /// \brief Reserved 00469 /// Base+0x144..0x14F 00470 unsigned char rsvd14[12]; 00471 00472 /// \brief IR-Keys as 16 bit values (independent of code) 00473 /// 00474 /// Base+0x150..0x151 IR Taste 1 (M3R) 00475 /// Base+0x152..0x153 IR Taste 2 (M3L) 00476 /// Base+0x154..0x155 IR Taste 3 (M1) 00477 /// Base+0x156..0x157 IR Taste 4 (M2) 00478 /// Base+0x158..0x159 IR Taste 5 (M3) 00479 /// Base+0x15A..0x15B IR Taste 6 (Code2) 00480 /// Base+0x15C..0x15D IR Taste 7 (M1BW) 00481 /// Base+0x15E..0x15F IR Taste 8 (M1FW) 00482 /// Base+0x160..0x161 IR Taste 9 (M2L) 00483 /// Base+0x162..0x163 IR Taste 10 (M2R) 00484 /// Base+0x164..0x165 IR Taste 11 (Code1) 00485 unsigned short IRKeys16[11]; 00486 /// \brief Reserved 00487 /// Base+0x166..0x16F 00488 unsigned char rsvd15[10]; 00489 00490 /// \brief IR-Keys as 16 bit values (code 1) 00491 /// 00492 /// Base+0x170..0x171 IR Taste 1 (M3R) Code1 00493 /// Base+0x172..0x173 IR Taste 2 (M3L) Code1 00494 /// Base+0x174..0x175 IR Taste 3 (M1) Code1 00495 /// Base+0x176..0x177 IR Taste 4 (M2) Code1 00496 /// Base+0x178..0x179 IR Taste 5 (M3) Code1 00497 /// Base+0x17A..0x17B always 0 00498 /// Base+0x17C..0x17D IR Taste 7 (M1BW) Code1 00499 /// Base+0x17E..0x17F IR Taste 8 (M1FW) Code1 00500 /// Base+0x180..0x181 IR Taste 9 (M2L) Code1 00501 /// Base+0x182..0x183 IR Taste 10 (M2R) Code1 00502 /// Base+0x184..0x185 IR Taste 11 (Code1) Code1 00503 unsigned short IRKeys16Code1[11]; 00504 00505 /// \brief Reserved 00506 /// 00507 /// Base+0x186..0x18F 00508 unsigned char rsvd16[10]; 00509 00510 /// \brief IR-Keys as 16 bit values (code 1) 00511 /// 00512 /// Base+0x190..0x191 IR Taste 1 (M3R) Code2 00513 /// Base+0x192..0x193 IR Taste 2 (M3L) Code2 00514 /// Base+0x194..0x195 IR Taste 3 (M1) Code2 00515 /// Base+0x196..0x197 IR Taste 4 (M2) Code2 00516 /// Base+0x198..0x199 IR Taste 5 (M3) Code2 00517 /// Base+0x19A..0x19B IR Taste 6 (Code2) Code2 00518 /// Base+0x19C..0x19D IR Taste 7 (M1BW) Code2 00519 /// Base+0x19E..0x19F IR Taste 8 (M1FW) Code2 00520 /// Base+0x1A0..0x1A1 IR Taste 9 (M2LE) Code2 00521 /// Base+0x1A2..0x1A3 IR Taste 10 (M2RI) Code2 00522 /// Base+0x1A4..0x1A5 always 0 00523 unsigned short IRKeys16Code2[11]; 00524 00525 /// \brief Reserved 00526 /// 00527 /// Base+0x1A6..0x1AF 00528 unsigned char rsvd17[10]; 00529 00530 /// \brief 1 = RfError (0x1B4..0x1B5) is > 25. We think, Rf connection (only Onlinemodus) is lost 00531 /// 00532 /// Base+0x1B0..0x1B1 00533 unsigned short RfStatus; 00534 00535 /// \brief Signal Power of the RF Signal entering the RF input (only Onlinemodus, 7 bit, 0..127) 00536 /// 00537 /// Base+0x1B2..0x1B3 00538 unsigned short RfPower; 00539 00540 /// \brief Rf-Error Count (0..250) 00541 /// 00542 /// Base+0x1B4..0x1B5 00543 unsigned short RfError; 00544 00545 /// \brief Number of Messages inside the Buffer 00546 /// 00547 /// Base+0x1B6..0x1B7 00548 unsigned short MsgNumInBuffer; 00549 00550 /// \brief Number of Interface-RF-Modul if installed or "-1" if not installed 00551 /// 00552 /// Base+0x1B8..0x1B9 00553 unsigned short RfModulNr; 00554 00555 /// \brief Reserved 00556 /// Base+0x1BA..0x1BB 00557 unsigned char rsvd19[2]; 00558 00559 /// \brief Reserved for Internal Use 00560 /// Base+0x1BC..0x1BF 00561 DWORD dwTC; 00562 00563 /// \brief Reserved 00564 /// Base+0x1C0..0x1FF 00565 unsigned char rsvd20[64]; 00566 00567 } FT_TRANSFER_AREA; 00568 /** \fn typedef FT_TRANSFER_AREA 00569 * Type definition for the transfer area. 00570 */ 00571 00572 struct ft_handle_devices;//forward declaration 00573 typedef struct ft_handle_devices *FT_HANDLE; 00574 00575 /** \cond doxygen ignore start */ 00576 00577 bool test_and_set(int& s); 00578 void increment(int& s); 00579 00580 FT_HANDLE OpenFtCommDevice(char *sDevice, long int dwTyp, long int dwZyklus); 00581 int GetFtStatus(FT_HANDLE hFt, int *num); 00582 long int GetFtDeviceTypeString(FT_HANDLE hft, char *dest, int len); 00583 char *GetLibVersionStrg(); 00584 long int SetRFMode(FT_HANDLE hFt, long int frequency, long int callSign); 00585 long int GetRFMode(FT_HANDLE hFt, long int *frequency, long int *callSign); 00586 long int SetRealSerial(FT_HANDLE hFt, unsigned char bOn); 00587 char IsFtInterfaceConnected(FT_HANDLE hFt); 00588 00589 // Numbers from GetFtDeviceTyp() 00590 #define NO_FT_DEVICE 0 // No ft Device connected 00591 #define FT_AUTO_TYPE 1 // Search for Device 00592 #define FT_INTELLIGENT_IF 10 // FT-Intelligent Interface connect (serial) 00593 #define FT_INTELLIGENT_IF_SLAVE 20 // FT-Intelligent Interface with Extension connect (serial) 00594 #define FT_ROBO_IF_IIM 50 // FT-Robo Interface with Intelligent-Interface-Modus connect (serial) 00595 #define FT_ROBO_IF_USB 60 // FT-Robo Interface connect with USB-Port 00596 #define FT_ROBO_IF_COM 70 // FT-Robo Interface connect with COM- (serial-) Port 00597 #define FT_ROBO_IF_OVER_RF 80 // FT-Robo Interface connect over RF-Data-Link 00598 #define FT_ROBO_IO_EXTENSION 90 // FT-Robo I/O-Extension 00599 #define FT_ROBO_RF_DATA_LINK 110 // FT-Robo RF Data Link 00600 #define FT_MAX_TYP_NUMBER 999 // Max Typ Number 00601 00602 00603 #define FT_ANALOG_CYCLE 5 // Standard: 5*Read Digital Inputs, then EX, EY 00604 // Only for old Intelligent Interface { for OpenFtCommDevice() } 00605 00606 00607 #define PORT_NONE 0 00608 #define PORT_COM 1 // Standard: COM1 00609 #define PORT_COM1 1 00610 #define PORT_COM2 2 00611 #define PORT_COM3 3 00612 #define PORT_COM4 4 00613 #define PORT_USB 50 00614 00615 // Moduletypes for Robo Interface 00616 #define MODULE_NOT_INSTALLED 0 // Not installed 00617 #define MODULE_RF1 1 // RF Data Link Module is installed 00618 00619 00620 #define LEN_STRG1 30 // Length of SN / FW Strings 00621 #define LEN_STRG2 255 // Length of Name-Strigs 00622 #define ANZ_DISTANCE_TYPES 2 // Number of supported Distance-Modes 00623 #define LEN_DIST_TYPE_NAMES 30 // Lenght of Mode-Names 00624 #define LEN_DIST_VAR_NAMES 20 // Lenght of Variable-Names 00625 #define NAME_LEN 85 // Lenght of Prog-Names 00626 00627 00628 #define MEM_FLASH1 0 // Use Memory FLASH-1 Block 00629 #define MEM_FLASH2 1 // Use Memory FLASH-2 Block 00630 #define MEM_RAM 2 // Use Memory RAM Block 00631 #define MEM_NO_ACCESS -1 // No Memory Select (for SetFtProgramActiv() ) 00632 #define DOWNLOAD_PROG_NAMELEN 80 // Max. 80 characters/bytes for the programname 00633 00634 // Values for "dwParameter" from DownloadFtProgram() 00635 #define PROG_TYP_NORMAL 1 // Program can bei Start with Software and Switch 00636 #define PROG_TYP_AUTOSTART 2 // Program is startable at Power-On 00637 00638 00639 // COM-Modes for SetFtDeviceCommMode() 00640 #define IF_COM_ONLINE 1 // Online Mode 00641 #define IF_COM_MESSAGE 3 // Messagemode 00642 #define IF_COM_DATA 4 // Datatransfer 00643 #define IF_COM_PARAMETER 5 // Get Mode 00644 00645 00646 // Message-System 00647 #define MSG_HWID_SELF 0 // Message for himself 00648 #define MSG_HWID_SER 1 // Message for the Robo-Interface serial port 00649 #define MSG_HWID_RF 2 // Message for other Interfaces (over RF) 00650 #define MSG_HWID_RF_SELF 3 // Message for other Interfaces (over RF) and for himself (back over RF) 00651 00652 #define MSG_BUFF_SER 1 // SER-Messagebuffer (for ClearRfMessage() ) 00653 #define MSG_BUFF_RF 2 // RF-Messagebuffer (for ClearRfMessage() ) 00654 #define MSG_BUFF_SELF 4 // SELF-Messagebuffer (for ClearRfMessage() ) 00655 00656 #define MSG_SEND_NORMAL 0 // Message send "normal" 00657 #define MSG_SEND_OTHER_THAN_LAST 1 // Message send "if not the same as the last message" 00658 #define MSG_SEND_IF_NOT_PRESENT 2 // Message send "if not present in the send buffer" 00659 00660 00661 00662 // Interface Distancesensor-Inputs Type 00663 #define IF_DS_INPUT_VOLTAGE 0 // Voltage 00664 #define IF_DS_INPUT_DISTANCE 1 // Distance 00665 #define IF_DS_INPUT_TOL_STD 20 // Toleranz (Standard) 00666 #define IF_DS_INPUT_REP_STD 3 // Repeat (Standard) 00667 00668 00669 #ifndef FT_H 00670 #pragma pack( push, 1 ) 00671 typedef union 00672 { 00673 BYTE aucMsg[6]; 00674 00675 struct 00676 { 00677 BYTE ucHwId; 00678 BYTE ucSubId; 00679 BYTE ucB0; 00680 BYTE ucB1; 00681 BYTE ucB2; 00682 BYTE ucB3; 00683 } B; 00684 00685 struct 00686 { 00687 BYTE ucHwId; 00688 BYTE ucSubId; 00689 USHORT uiMsgId; 00690 USHORT uiMsg; 00691 } W; 00692 00693 struct 00694 { 00695 BYTE ucHwId; 00696 BYTE ucSubId; 00697 DWORD dw; 00698 } L; 00699 } SMESSAGE; 00700 #pragma pack( pop ) 00701 #endif 00702 00703 //typedef void * FT_HANDLE; 00704 typedef void (*DATA_UPDATE_CALLBACK)(void* Context); 00705 typedef void (*MSG_UPDATE_CALLBACK)(SMESSAGE *); 00706 00707 00708 00709 // Important: 00710 // Initialise all unused Variables in this Structure with "NULL" 00711 // 00712 // Every Time the driver reads new information from the Device 00713 // the Library checks this structure 00714 typedef struct _NOTIFICATION_EVENTS 00715 { 00716 // Callback-Procedure 00717 DATA_UPDATE_CALLBACK NotificationCallback; // Pointer to the Callback-Procedure 00718 void* Context; // Pointer to the Context for the Callback-Procedure 00719 00720 // for SetEvent() 00721 HANDLE hEvent; 00722 00723 // for posting a Message (PostMessage() with wParam & lParam = 0) 00724 HWND WindowsHandle; // handle to the destination window 00725 DWORD Message; // message ID 00726 00727 00728 // Callback-Procedure for Messaging 00729 MSG_UPDATE_CALLBACK CallbackMessage; // Pointer to the Callback-Procedure for Receiving Messages 00730 00731 } 00732 NOTIFICATION_EVENTS; 00733 00734 00735 00736 00737 typedef struct _FT_SERIAL_NUMBER 00738 { 00739 DWORD dwSn; // actually Serial Number at Power On 00740 DWORD dwSn1; // Serial Number-1 00741 DWORD dwSn2; // Serial Number-2 00742 DWORD dwSnAktiv; // Serial Number Activ (1/2) for next Power On 00743 } FT_SERIAL_NUMBER; 00744 00745 00746 00747 typedef struct _FT_DISTANCE // Robo Interface Distance Sensor 00748 { 00749 unsigned char aDistModeNames[LEN_DIST_TYPE_NAMES]; // RO Names for the Modes 00750 00751 DWORD dwEnableDisVal1; // RO 1=Ask for Distance Value 1 00752 unsigned char aDisVal1Name[LEN_DIST_VAR_NAMES]; // RO Value 1 Name 00753 DWORD dwDisVal1; // RW Value 1 00754 00755 DWORD dwEnableDisVal2; // RO 1=Ask for Distance Value 2 00756 unsigned char aDisVal2Name[LEN_DIST_VAR_NAMES]; // RO Value 2 Name 00757 DWORD dwDisVal2; // RW Value 2 00758 00759 DWORD dwEnableDisVal3; // RO 1=Ask for Distance Value 3 00760 unsigned char aDisVal3Name[LEN_DIST_VAR_NAMES]; // RO Value 3 Name 00761 DWORD dwDisVal3; // RW Value 3 00762 00763 DWORD dwEnableDisVal4; // RO 1=Ask for Distance Value 4 00764 unsigned char aDisVal4Name[LEN_DIST_VAR_NAMES]; // RO Value 4 Name 00765 DWORD dwDisVal4; // RW Value 4 00766 00767 DWORD dwEnableDisVal5; // RO 1=Ask for Distance Value 5 00768 unsigned char aDisVal5Name[LEN_DIST_VAR_NAMES]; // RO Value 5 Name 00769 DWORD dwDisVal5; // RW Value 5 00770 00771 DWORD dwEnableDisVal6; // RO 1=Ask for Distance Value 6 00772 unsigned char aDisVal6Name[LEN_DIST_VAR_NAMES]; // RO Value 6 Name 00773 DWORD dwDisVal6; // RW Value 6 00774 00775 DWORD dwEnableDisVal7; // RO 1=Ask for Distance Value 7 00776 unsigned char aDisVal7Name[LEN_DIST_VAR_NAMES]; // RO Value 7 Name 00777 DWORD dwDisVal7; // RW Value 7 00778 00779 DWORD dwEnableDisVal8; // RO 1=Ask for Distance Value 8 00780 unsigned char aDisVal8Name[LEN_DIST_VAR_NAMES]; // RO Value 8 Name 00781 DWORD dwDisVal8; // RW Value 8 00782 } FT_DISTANCE; 00783 00784 00785 00786 typedef union _FT_SETTING 00787 { 00788 struct // RO = Read Only, RW = Read / Write 00789 { 00790 DWORD dwIfTyp; // RO Type of connected Device 00791 // possible Values: 00792 // NO_FT_DEVICE no answer from the Device - is it gone ? 00793 // FT_INTELLIGENT_IF FT-Intelligent Interface connect (serial) 00794 // FT_ROBO_IF_IIM FT-Robo Interface with Intelligent-Interface-Modus connect (serial) 00795 // FT_ROBO_IF_USB FT-Robo Interface connect with USB-Port 00796 // FT_ROBO_IF_COM FT-Robo Interface connect with COM- (serial-) Port 00797 // FT_ROBO_IO_EXTENSION FT-Robo I/O-Extension 00798 // FT_ROBO_RF_DATA_LINK FT-Robo RF Data Link 00799 // FT_ROBO_IF_OVER_RF FT-Robo Interface connect over RF-Data-Link 00800 00801 // Serial numbers section 00802 DWORD dwSn; // RO actually Serial Number at Power On 00803 DWORD dwSn1; // RW Serial Number-1 (only FT-Robo Products) 00804 DWORD dwSn2; // RO Serial Number-2 (only FT-Robo Products) 00805 DWORD dwSnAktiv; // RW Set Serial Number Activ (1/2) for next Power On 00806 00807 DWORD dwFw; // RO Is Firmware Version for this product (only FT-Robo Products) 00808 00809 unsigned char aSnStrg[LEN_STRG1]; // RO String with Serialnumber (only FT-Robo Products) 00810 unsigned char aSn1Strg[LEN_STRG1]; // RO String with Serialnumber1 (only FT-Robo Products) 00811 unsigned char aSn2Strg[LEN_STRG1]; // RO String with Serialnumber2 (only FT-Robo Products) 00812 unsigned char aFwStrg[LEN_STRG1]; // RO String with Firmware (only FT-Robo Products) 00813 unsigned char aSNaStrg[LEN_STRG2]; // RO String with Short-Name (only FT-Robo Products) 00814 unsigned char aLNaStrg[LEN_STRG2]; // RO String with Long-Name (only FT-Robo Products) 00815 00816 DWORD dwFwRoboIfVerAtLibIsMade; // RO Robo-If Firmware Version as this Lib is made 00817 DWORD dwFwIoExtVerAtLibIsMade; // RO IO-Extension Firmware Version as this Lib is made 00818 DWORD dwFwRfDataVerAtLibIsMade; // RO RF-DataLink Firmware Version as this Lib is made 00819 unsigned char aFwRoboIfVerAtLibIsMadeStrg[LEN_STRG1]; // RO String with Robo-If Firmware Version as this Lib is made 00820 unsigned char aFwIoExtVerAtLibIsMadeStrg[LEN_STRG1]; // RO String with IO-Extension Firmware Version as this Lib is made 00821 unsigned char aFwRfDataVerAtLibIsMadeStrg[LEN_STRG1]; // RO String with Rf-Data-Link Firmware Version as this Lib is made 00822 00823 DWORD dwReserved; // Reserved for later use 00824 00825 00826 // Output Section 00827 DWORD dwOutputAutoOff[4]; // RW M1=[0]...M4=[3] Energy saver: 00828 // "1" = "Power Off" motor driver when both outputs logical "0" (reduces Energy) 00829 // "0" = do not automatically disable the motor driver 00830 DWORD dwOutputPwmType; // RW PWM-Type (Today only "0" supported) 00831 00832 00833 // Robo Interface Distance Sensor 00834 DWORD dwAnzDistanceModes; // RO Number of supported Distance Modes (Array Entries) 00835 DWORD dwDistanceMode; // RW Type and Mode for Distance-Sensor (Index-Number in the range 0...ANZ_DISTANCE_TYPES) 00836 FT_DISTANCE sDistance[ANZ_DISTANCE_TYPES]; // RW Values for setting 00837 00838 00839 // Robo Interface Memory Section 00840 DWORD dwProg[3]; // RO 1=Program is saved in the Memory block; [0]=Flash-1 [1]=Flash-2 [2]=Ram 00841 unsigned char aProgNames[3][NAME_LEN]; // RO [0]=Flash-1 Prog Name; [1]=Flash-2 Prog Name; [2]=Ram Prog-Name 00842 DWORD dwF1AutoStart; // RO 1=Autostart Flash-1 programm, 0=no autostart 00843 00844 00845 // Robo Interface Module Section 00846 DWORD dwMod1Typ; // RO Type of left Module (only Robo-If) 00847 DWORD dwMod2Typ; // RO Type of right Module (only Robo-If) 00848 // possible Values: 00849 // MODULE_NOT_INSTALLED No Module is installed 00850 // MODULE_RF1 RF Data Link is installed 00851 00852 unsigned char aMod1Strg[LEN_STRG1]; // RO String with Module-1 Name (only FT-Robo Products) 00853 unsigned char aMod2Strg[LEN_STRG1]; // RO String with Module-2 Name (only FT-Robo Products) 00854 00855 00856 // Robo Interface & RF Data Link Section 00857 DWORD dwRfOn; // RW 0=disable RF 1=Enable RF 00858 DWORD dwRfChannel; // RW Channel-Number (2..80) for RF-Communication 00859 DWORD dwRfSubChannel; // RW Sub-Channel of Device for the specified Channel (1..3) 00860 DWORD dwRfMessage; // RW 0=Disable Message-Router Function 1=Enable Message-Rounter Function 00861 DWORD dwRfWrite; // W 0=write values permanent (FLASH); 1=write values temporary (RAM) 00862 DWORD dwRfFw; // RO Firmwareversion of RF-Module 00863 unsigned char aRfFwStrg[LEN_STRG1]; // RO String with Firmware of RF-Module 00864 00865 // Information for the PC-RF Module 00866 DWORD dwRfStopTransferOnError; // RW 1=Stop the RF-Transfer Thread on bad RF Connection 00867 00868 // Information for the Interface RF-Module 00869 DWORD dwRfMotorOffOnError; // RW 1=Motor Off on bad RF Connection 00870 } sIf; 00871 } FT_SETTING; 00872 00873 #ifdef MBED 00874 #include "mbed.h" 00875 #define ABF_IF_COMPLETE_NUM_WRITE 32 00876 #define ABF_IF_COMPLETE_NUM_READ 42 00877 #else 00878 #include <usb.h> 00879 #include <pthread.h> 00880 #include <semaphore.h> 00881 #include <termios.h> 00882 #endif 00883 00884 /// \brief Handle for the ft Interface 00885 typedef struct ft_handle_devices { 00886 /// Place to hold the transfer area 00887 FT_TRANSFER_AREA transfer_area; 00888 NOTIFICATION_EVENTS ne; 00889 #ifdef USE_USB 00890 /// Pointer to the usb device 00891 struct usb_device *dev; 00892 /// Handle for USB communication 00893 usb_dev_handle *device; 00894 #endif 00895 #ifdef MBED 00896 /// Serial device 00897 Serial *sdev; 00898 /// Type of device 00899 long int type; 00900 /// Communication Thread 00901 Ticker *t; 00902 void FtThread(); 00903 void FtThreadInit(); 00904 void FtThreadTrigger(); 00905 bool guardedFtThreadBegin(); 00906 void FtThreadBegin(); 00907 void FtThreadEnd(); 00908 void FtThreadFinish(); 00909 int write(); 00910 void writeByte(); 00911 void readByte(); 00912 bool busy; 00913 unsigned char out[ABF_IF_COMPLETE_NUM_WRITE]; //= {ABF_IF_COMPLETE,1,0x07,0,0,0,0,0,0,0,0,0,0,0,0,0,0}; 00914 unsigned char in[ABF_IF_COMPLETE_NUM_READ]; 00915 int num_write ;//= ABF_IF_COMPLETE_NUM_WRITE; 00916 int num_read ;//= ABF_IF_COMPLETE_NUM_READ; 00917 int windex,rindex; //read/write pointers 00918 int usb_endpoint_write;// = FT_ENDPOINT_INTERRUPT_OUT; 00919 int usb_endpoint_read;// = FT_ENDPOINT_INTERRUPT_IN; 00920 int cycle;//=0; 00921 /// Lock for communication 00922 int lock; 00923 #else 00924 /// Serial device 00925 long int sdev; 00926 /// Type of device 00927 long int type; 00928 /// Communication Thread 00929 pthread_t t; 00930 /// Lock for communication 00931 sem_t lock; 00932 /// Serial settings 00933 struct termios saveioset; 00934 /// Serial settings 00935 struct termios newioset; 00936 #endif 00937 /// Anaylog cycle time (II only) 00938 int analogcycle; 00939 /// Query time for the Interface 00940 unsigned int query_time; 00941 /// 0 = no connection to the interface 00942 unsigned char interface_connected; 00943 } *FT_HANDLE; 00944 /** \fn typedef FT_HANDLE 00945 * Type definition for the ft handle. 00946 */ 00947 00948 // ****** Function Prototypes ****** 00949 DWORD __stdcall GetLibVersion(void); 00950 DWORD __stdcall InitFtLib(void); 00951 DWORD __stdcall CloseFtLib(void); 00952 DWORD __stdcall IsFtLibInit(void); 00953 DWORD __stdcall InitFtUsbDeviceList(void); 00954 UINT __stdcall GetNumFtUsbDevice(void); 00955 FT_HANDLE __stdcall GetFtUsbDeviceHandle(UCHAR ucDevNr); 00956 FT_HANDLE __stdcall GetFtUsbDeviceHandleSerialNr(DWORD dwSN, DWORD dwTyp); 00957 DWORD __stdcall OpenFtUsbDevice(FT_HANDLE hFt); 00958 //FT_HANDLE __stdcall OpenFtCommDevice(DWORD dwPort, DWORD dwTyp, DWORD dwZyklus, DWORD *pdwError); 00959 DWORD __stdcall SetFtDeviceCommMode (FT_HANDLE hFt, DWORD dwMode, DWORD dwParameter, USHORT *puiValue); 00960 DWORD __stdcall CloseAllFtDevices(void); 00961 DWORD __stdcall CloseFtDevice(FT_HANDLE hFt); 00962 DWORD __stdcall GetFtDeviceTyp(FT_HANDLE hFt); 00963 LPCSTR __stdcall GetFtSerialNrStrg(FT_HANDLE hFt); 00964 DWORD __stdcall GetFtSerialNr(FT_HANDLE hFt); 00965 LPCSTR __stdcall GetFtFirmwareStrg(FT_HANDLE hFt); 00966 DWORD __stdcall GetFtFirmware(FT_HANDLE hFt); 00967 LPCSTR __stdcall GetFtManufacturerStrg(FT_HANDLE hFt); 00968 LPCSTR __stdcall GetFtShortNameStrg(FT_HANDLE hFt); 00969 LPCSTR __stdcall GetFtLongNameStrg(FT_HANDLE hFt); 00970 LPCSTR __stdcall GetFtLibErrorString(DWORD dwErrorCode, DWORD dwTyp); 00971 DWORD __stdcall GetFtDeviceSetting(FT_HANDLE hFt, FT_SETTING *pSet); 00972 DWORD __stdcall SetFtDeviceSetting(FT_HANDLE hFt, FT_SETTING *pSet); 00973 DWORD __stdcall SetFtDistanceSensorMode(FT_HANDLE hFt, DWORD dwMode, DWORD dwTol1, DWORD dwTol2, 00974 DWORD dwSchwell1, DWORD dwSchwell2, DWORD dwRepeat1, DWORD dwRepeat2); 00975 00976 00977 DWORD __stdcall StartFtTransferArea(FT_HANDLE hFt, NOTIFICATION_EVENTS* sNEvent ); 00978 DWORD __stdcall StartFtTransferAreaWithCommunication(FT_HANDLE hFt, NOTIFICATION_EVENTS* sNEvent ); 00979 DWORD __stdcall StopFtTransferArea(FT_HANDLE hFt); 00980 FT_TRANSFER_AREA* __stdcall GetFtTransferAreaAddress(FT_HANDLE hFt); 00981 DWORD __stdcall IsFtTransferActiv(FT_HANDLE hFt); 00982 DWORD __stdcall ResetFtTransfer (FT_HANDLE hFt); 00983 00984 00985 DWORD __stdcall GetFtMemoryLayout(FT_HANDLE hFt, BYTE * pbArray, DWORD dwSize); 00986 DWORD __stdcall DownloadFtProgram(FT_HANDLE hFt, DWORD dwMemBlock, BYTE* pbArray, DWORD dwSize, DWORD dwParameter, BYTE *pbName, DWORD dwNameLen); 00987 DWORD __stdcall StartFtProgram(FT_HANDLE hFt, DWORD dwMemBlock); 00988 DWORD __stdcall StopFtProgram(FT_HANDLE hFt); 00989 DWORD __stdcall DeleteFtProgram(FT_HANDLE hFt, DWORD dwMemBlock); 00990 DWORD __stdcall SetFtProgramActiv(FT_HANDLE hFt, DWORD dwMemBlock); 00991 DWORD __stdcall GetFtProgramName(FT_HANDLE hFt, DWORD dwMemBlock, DWORD dwSize, LPVOID pName); 00992 DWORD __stdcall WriteFtMemoryData(FT_HANDLE hFt, DWORD dwData, DWORD dwAddress); 00993 DWORD __stdcall GetFtMemoryData(FT_HANDLE hFt, BYTE * pbArray, DWORD dwSize, DWORD dwAddress); 00994 00995 00996 DWORD __stdcall SendFtMessage(FT_HANDLE hFt, BYTE bHwId, BYTE bSubId, DWORD dwMessage, DWORD dwWaitTime, DWORD dwOption); 00997 DWORD __stdcall ClearFtMessageBuffer(FT_HANDLE hFt); 00998 00999 01000 01001 01002 // 01003 // FTLIB Error Codes 01004 // 01005 #define FTLIB_ERR_SUCCESS 0x00000000L 01006 #define FTLIB_ERR_CRC 0xE0000001L 01007 #define FTLIB_ERR_BTSTUFF 0xE0000002L 01008 #define FTLIB_ERR_DATA_TOGGLE_MISMATCH 0xE0000003L 01009 #define FTLIB_ERR_STALL_PID 0xE0000004L 01010 #define FTLIB_ERR_DEV_NOT_RESPONDING 0xE0000005L 01011 #define FTLIB_ERR_PID_CHECK_FAILURE 0xE0000006L 01012 #define FTLIB_ERR_UNEXPECTED_PID 0xE0000007L 01013 #define FTLIB_ERR_DATA_OVERRUN 0xE0000008L 01014 #define FTLIB_ERR_DATA_UNDERRUN 0xE0000009L 01015 #define FTLIB_ERR_RESERVED1 0xE000000AL 01016 #define FTLIB_ERR_RESERVED2 0xE000000BL 01017 #define FTLIB_ERR_BUFFER_OVERRUN 0xE000000CL 01018 #define FTLIB_ERR_BUFFER_UNDERRUN 0xE000000DL 01019 #define FTLIB_ERR_NOT_ACCESSED 0xE000000FL 01020 #define FTLIB_ERR_FIFO 0xE0000010L 01021 #define FTLIB_ERR_XACT_ERROR 0xE0000011L 01022 #define FTLIB_ERR_BABBLE_DETECTED 0xE0000012L 01023 #define FTLIB_ERR_DATA_BUFFER_ERROR 0xE0000013L 01024 01025 #define FTLIB_ERR_ENDPOINT_HALTED 0xE0000030L 01026 #define FTLIB_ERR_NO_MEMORY 0xE0000100L 01027 #define FTLIB_ERR_INVALID_URB_FUNCTION 0xE0000200L 01028 #define FTLIB_ERR_INVALID_PARAMETER 0xE0000300L 01029 #define FTLIB_ERR_ERROR_BUSY 0xE0000400L 01030 #define FTLIB_ERR_INVALID_PIPE_HANDLE 0xE0000600L 01031 #define FTLIB_ERR_NO_BANDWIDTH 0xE0000700L 01032 #define FTLIB_ERR_INTERNAL_HC_ERROR 0xE0000800L 01033 #define FTLIB_ERR_ERROR_SHORT_TRANSFER 0xE0000900L 01034 #define FTLIB_ERR_BAD_START_FRAME 0xE0000A00L 01035 #define FTLIB_ERR_ISOCH_REQUEST_FAILED 0xE0000B00L 01036 #define FTLIB_ERR_FRAME_CONTROL_OWNED 0xE0000C00L 01037 #define FTLIB_ERR_FRAME_CONTROL_NOT_OWNED 0xE0000D00L 01038 #define FTLIB_ERR_NOT_SUPPORTED 0xE0000E00L 01039 #define FTLIB_ERR_INVALID_CONFIGURATION_DESCRIPTOR 0xE0000F00L 01040 01041 #define FTLIB_ERR_INSUFFICIENT_RESOURCES 0xE8001000L 01042 #define FTLIB_ERR_SET_CONFIG_FAILED 0xE0002000L 01043 #define FTLIB_ERR_USBD_BUFFER_TOO_SMALL 0xE0003000L 01044 #define FTLIB_ERR_USBD_INTERFACE_NOT_FOUND 0xE0004000L 01045 #define FTLIB_ERR_INVALID_PIPE_FLAGS 0xE0005000L 01046 #define FTLIB_ERR_USBD_TIMEOUT 0xE0006000L 01047 #define FTLIB_ERR_DEVICE_GONE 0xE0007000L 01048 #define FTLIB_ERR_STATUS_NOT_MAPPED 0xE0008000L 01049 01050 #define FTLIB_ERR_CANCELED 0xE0010000L 01051 #define FTLIB_ERR_ISO_NOT_ACCESSED_BY_HW 0xE0020000L 01052 #define FTLIB_ERR_ISO_TD_ERROR 0xE0030000L 01053 #define FTLIB_ERR_ISO_NA_LATE_USBPORT 0xE0040000L 01054 #define FTLIB_ERR_ISO_NOT_ACCESSED_LATE 0xE0050000L 01055 01056 #define FTLIB_ERR_FAILED 0xE0001000L 01057 #define FTLIB_ERR_INVALID_INBUFFER 0xE0001001L 01058 #define FTLIB_ERR_INVALID_OUTBUFFER 0xE0001002L 01059 #define FTLIB_ERR_OUT_OF_MEMORY 0xE0001003L 01060 #define FTLIB_ERR_PENDING_REQUESTS 0xE0001004L 01061 #define FTLIB_ERR_ALREADY_CONFIGURED 0xE0001005L 01062 #define FTLIB_ERR_NOT_CONFIGURED 0xE0001006L 01063 #define FTLIB_ERR_OPEN_PIPES 0xE0001007L 01064 #define FTLIB_ERR_ALREADY_BOUND 0xE0001008L 01065 #define FTLIB_ERR_NOT_BOUND 0xE0001009L 01066 #define FTLIB_ERR_DEVICE_NOT_PRESENT 0xE000100AL 01067 #define FTLIB_ERR_CONTROL_NOT_SUPPORTED 0xE000100BL 01068 #define FTLIB_ERR_TIMEOUT 0xE000100CL 01069 #define FTLIB_ERR_INVALID_RECIPIENT 0xE000100DL 01070 #define FTLIB_ERR_INVALID_TYPE 0xE000100EL 01071 #define FTLIB_ERR_INVALID_IOCTL 0xE000100FL 01072 #define FTLIB_ERR_INVALID_DIRECTION 0xE0001010L 01073 #define FTLIB_ERR_TOO_MUCH_ISO_PACKETS 0xE0001011L 01074 #define FTLIB_ERR_POOL_EMPTY 0xE0001012L 01075 #define FTLIB_ERR_PIPE_NOT_FOUND 0xE0001013L 01076 #define FTLIB_ERR_INVALID_ISO_PACKET 0xE0001014L 01077 #define FTLIB_ERR_OUT_OF_ADDRESS_SPACE 0xE0001015L 01078 #define FTLIB_ERR_INTERFACE_NOT_FOUND 0xE0001016L 01079 #define FTLIB_ERR_INVALID_DEVICE_STATE 0xE0001017L 01080 #define FTLIB_ERR_INVALID_PARAM 0xE0001018L 01081 #define FTLIB_ERR_INVALID_POWER_STATE 0xE000101AL 01082 #define FTLIB_ERR_POWER_DOWN 0xE000101BL 01083 #define FTLIB_ERR_VERSION_MISMATCH 0xE000101CL 01084 #define FTLIB_ERR_SET_CONFIGURATION_FAILED 0xE000101DL 01085 01086 #define FTLIB_ERR_VID_RESTRICTION 0xE0001080L 01087 #define FTLIB_ERR_ISO_RESTRICTION 0xE0001081L 01088 #define FTLIB_ERR_BULK_RESTRICTION 0xE0001082L 01089 #define FTLIB_ERR_EP0_RESTRICTION 0xE0001083L 01090 #define FTLIB_ERR_PIPE_RESTRICTION 0xE0001084L 01091 #define FTLIB_ERR_PIPE_SIZE_RESTRICTION 0xE0001085L 01092 #define FTLIB_ERR_CONTROL_RESTRICTION 0xE0001086L 01093 #define FTLIB_ERR_INTERRUPT_RESTRICTION 0xE0001087L 01094 01095 #define FTLIB_ERR_DEVICE_NOT_FOUND 0xE0001100L 01096 #define FTLIB_ERR_SOME_DEVICES_ARE_OPEN 0xE0001101L 01097 #define FTLIB_ERR_DEVICE_IS_OPEN 0xE0001102L 01098 #define FTLIB_ERR_DEVICE_NOT_OPEN 0xE0001103L 01099 #define FTLIB_ERR_NO_SUCH_DEVICE_INSTANCE 0xE0001104L 01100 #define FTLIB_ERR_INVALID_FUNCTION_PARAM 0xE0001105L 01101 #define FTLIB_ERR_DESTROY_DEVICE_LIST 0xE0001106L 01102 #define FTLIB_ERR_USB_NOT_SUPPORTET_FROM_OS 0xE0001107L 01103 #define FTLIB_ERR_CLOSE_DEVICE 0xE0001108L 01104 01105 #define FTLIB_ERR_DEVICE_NOT_SUPPORTET 0xE0001281L 01106 #define FTLIB_ERR_WRONG_DEVICE_NUMBER 0xE0001282L 01107 #define FTLIB_ERR_UNKNOWN_DEVICE_HANDLE 0xE0001283L 01108 #define FTLIB_ERR_WRONG_USB_HANDLE 0xE0001284L 01109 #define FTLIB_ERR_WRONG_PATHNAME 0xE0001285L 01110 #define FTLIB_ERR_LIB_IS_INITIALIZED 0xE0001286L 01111 #define FTLIB_ERR_LIB_IS_NOT_INITIALIZED 0xE0001287L 01112 #define FTLIB_ERR_SERIAL_NR_UNKNOWN 0xE0001288L 01113 #define FTLIB_ERR_POWER_TOO_LOW 0xE0001289L 01114 #define FTLIB_ERR_WRONG_RETURN_VALUE 0xE000128AL 01115 #define FTLIB_ERR_USB_SUPPORT_IS_NOT_INITIALIZED 0xE000128BL 01116 01117 #define FTLIB_ERR_USB_MUT0 0xE0001290L 01118 #define FTLIB_ERR_USB_MUT1 0xE0001291L 01119 #define FTLIB_ERR_USB_MUT2 0xE0001292L 01120 #define FTLIB_ERR_USB_MUT3 0xE0001293L 01121 #define FTLIB_ERR_USB_DEVICE_IS_IN_USE 0xE0001295L 01122 01123 #define FTLIB_ERR_THREAD_NOT_STARTABLE 0xE00012A0L 01124 #define FTLIB_ERR_THREAD_NOT_STARTABLE_X1 0xE00012A1L 01125 #define FTLIB_ERR_THREAD_NOT_STARTABLE_X2 0xE00012A2L 01126 #define FTLIB_ERR_THREAD_NOT_STARTABLE_X3 0xE00012A3L 01127 #define FTLIB_ERR_OTHER_THREAD_FOR_SAME_DEVICE_IS_RUN 0xE00012A4L 01128 #define FTLIB_ERR_THREAD_IS_RUNNING 0xE00012A5L 01129 #define FTLIB_ERR_THREAD_NOT_RUNNING 0xE00012A6L 01130 #define FTLIB_ERR_THREAD_X1 0xE00012A7L 01131 #define FTLIB_ERR_THREAD_X2 0xE00012A8L 01132 #define FTLIB_ERR_THREAD_WRITE_USB 0xE00012A9L 01133 #define FTLIB_ERR_THREAD_READ_USB 0xE00012AAL 01134 #define FTLIB_ERR_THREAD_IS_NORMAL_STOPPED 0xE00012ABL 01135 #define FTLIB_ERR_THREAD_WAIT_TIMEOUT 0xE00012ACL 01136 #define FTLIB_ERR_THREAD_WRITE_COM 0xE00012ADL 01137 #define FTLIB_ERR_THREAD_READ_COM 0xE00012AEL 01138 01139 #define FTLIB_ERR_DOWNLOAD 0xE00012C0L 01140 #define FTLIB_ERR_DOWNLOAD_WRONG_PARAMETER 0xE00012C1L 01141 #define FTLIB_ERR_DOWNLOAD_WRONG_MEM_BLOCK 0xE00012C2L 01142 #define FTLIB_ERR_DOWNLOAD_DATA_SIZE_IS_NULL 0xE00012C3L 01143 #define FTLIB_ERR_DOWNLOAD_DATA_SIZE_TOO_BIG 0xE00012C4L 01144 #define FTLIB_ERR_DOWNLOAD_DATA_SIZE 0xE00012C5L 01145 #define FTLIB_ERR_DOWNLOAD_ERASE 0xE00012C6L 01146 #define FTLIB_ERR_DOWNLOAD_F5 0xE00012C7L 01147 #define FTLIB_ERR_DOWNLOAD_PROG_SNF1 0xE00012C8L 01148 #define FTLIB_ERR_DOWNLOAD_PROG_SNF2 0xE00012C9L 01149 #define FTLIB_ERR_DOWNLOAD_BLOCK 0xE00012CAL 01150 #define FTLIB_ERR_DOWNLOAD_BLOCK_NR 0xE00012CBL 01151 #define FTLIB_ERR_DOWNLOAD_CRC 0xE00012CDL 01152 01153 #define FTLIB_ERR_IF_NO_PROGRAM 0xE00012E0L 01154 #define FTLIB_ERR_IF_PROGRAM_IS_RUNNING 0xE00012E1L 01155 #define FTLIB_ERR_IF_NO_PROGRAM_IS_RUNNING 0xE00012E2L 01156 #define FTLIB_ERR_IF_WRONG_PROG_NUMBER 0xE00012E3L 01157 #define FTLIB_ERR_IF_BUFFER_TOO_SMALL 0xE00012E4L 01158 #define FTLIB_ERR_IF_MEM_ADDRESS 0xE00012E5L 01159 #define FTLIB_ERR_IF_MEM_VERIFY 0xE00012E6L 01160 #define FTLIB_ERR_IF_NOT_SUPPORTET_MODUS 0xE00012E7L 01161 #define FTLIB_ERR_IF_FUNCTION_NOT_SUPPORT 0xE00012E8L 01162 #define FTLIB_ERR_FUNCTION_OVER_RF_NOT_ALLOWED 0xE00012E9L 01163 01164 01165 #define FTLIB_INFO_PROGRAM_0_IS_RUNNING 0xE0001600L 01166 #define FTLIB_INFO_PROGRAM_1_IS_RUNNING 0xE0001601L 01167 #define FTLIB_INFO_PROGRAM_2_IS_RUNNING 0xE0001602L 01168 #define FTLIB_INFO_ONLINE_MODUS 0xE0001620L 01169 01170 #define FTLIB_FIRMWARE_UPDATE_FILE_WRONG_0 0xE0001800L 01171 #define FTLIB_FIRMWARE_UPDATE_CRC 0xE0001801L 01172 #define FTLIB_FIRMWARE_UPDATE_FILE_OLD 0xE0001802L 01173 #define FTLIB_FIRMWARE_UPDATE_FILE_WRONG_1 0xE0001803L 01174 01175 01176 #define FTLIB_ERR_PORT_NUMBER 0xE0001900L 01177 #define FTLIB_ERR_WRONG_PORT 0xE0001901L 01178 #define FTLIB_ERR_PORT_NUMBER_IS_NULL 0xE0001902L 01179 #define FTLIB_ERR_TYP 0xE0001903L 01180 #define FTLIB_ERR_PORT_NOT_FOUND 0xE0001904L 01181 #define FTLIB_ERR_ACCESS_DENIED 0xE0001905L 01182 #define FTLIB_ERR_OPEN_COM 0xE0001906L 01183 #define FTLIB_ERR_CLOSE_COM 0xE0001907L 01184 #define FTLIB_ERR_INIT_COM 0xE0001908L 01185 #define FTLIB_ERR_INIT_COM_TIMEOUT 0xE0001909L 01186 #define FTLIB_ERR_WRITE_COM 0xE000190AL 01187 #define FTLIB_ERR_READ_COM 0xE000190BL 01188 #define FTLIB_ERR_READ_COM_NUMBER 0xE000190CL 01189 #define FTLIB_ERR_READ_COM_NOTHING 0xE000190DL 01190 01191 #define FTLIB_ERR_RF_NOT_INSTALLED 0xE0001A00L 01192 #define FTLIB_ERR_RF_WRONG_CHANNEL 0xE0001A01L 01193 #define FTLIB_ERR_RF_WRONG_SUB_CHANNEL 0xE0001A02L 01194 #define FTLIB_ERR_RF_NO_CONNECTION 0xE0001A03L 01195 #define FTLIB_ERR_RF_NO_CONNECTION_A 0xE0001A04L 01196 #define FTLIB_ERR_RF_NO_CONNECTION_B 0xE0001A05L 01197 #define FTLIB_ERR_RF_NO_CONNECTION_C 0xE0001A06L 01198 #define FTLIB_ERR_RF_TIMEOUT_1 0xE0001A08L 01199 #define FTLIB_ERR_RF_TIMEOUT_2 0xE0001A09L 01200 #define FTLIB_ERR_RF_FW_OLD1 0xE0001A0AL 01201 #define FTLIB_ERR_RF_INTERNAL_1 0xE0001A0DL 01202 #define FTLIB_ERR_RF_NO_INTERFACE_MODULE_FOUND 0xE0001A0EL 01203 01204 #define FTLIB_ERR_DLL_NOT_LOADABLE 0xE0001B00L 01205 #define FTLIB_ERR_DLL_FUNCTION_ERROR 0xE0001B01L 01206 01207 #define FTLIB_ERR_MSG_HWID_WRONG 0xE0001C00L 01208 #define FTLIB_ERR_MSG_BUFFER_FULL_TIMEOUT 0xE0001C01L 01209 01210 #define FTLIB_ERR_UNKNOWN_OPTION_VALUE 0xE0001D00L 01211 01212 #define FTLIB_ERR_INTERFACE_00 0xE0001F00L 01213 #define FTLIB_ERR_INTERFACE_01 0xE0001F01L 01214 #define FTLIB_ERR_INTERFACE_02 0xE0001F02L 01215 #define FTLIB_ERR_INTERFACE_03 0xE0001F03L 01216 #define FTLIB_ERR_INTERFACE_04 0xE0001F04L 01217 #define FTLIB_ERR_INTERFACE_05 0xE0001F05L 01218 #define FTLIB_ERR_INTERFACE_06 0xE0001F06L 01219 #define FTLIB_ERR_INTERFACE_07 0xE0001F07L 01220 #define FTLIB_ERR_INTERFACE_08 0xE0001F08L 01221 #define FTLIB_ERR_INTERFACE_09 0xE0001F09L 01222 #define FTLIB_ERR_INTERFACE_0A 0xE0001F0AL 01223 #define FTLIB_ERR_INTERFACE_0B 0xE0001F0BL 01224 #define FTLIB_ERR_INTERFACE_0C 0xE0001F0CL 01225 #define FTLIB_ERR_INTERFACE_0D 0xE0001F0DL 01226 #define FTLIB_ERR_INTERFACE_0E 0xE0001F0EL 01227 #define FTLIB_ERR_INTERFACE_0F 0xE0001F0FL 01228 01229 #define FTLIB_ERR_INTERFACE_D0 0xE0001FD0L 01230 #define FTLIB_ERR_INTERFACE_D1 0xE0001FD1L 01231 #define FTLIB_ERR_INTERFACE_D2 0xE0001FD2L 01232 #define FTLIB_ERR_INTERFACE_D3 0xE0001FD3L 01233 #define FTLIB_ERR_INTERFACE_D4 0xE0001FD4L 01234 #define FTLIB_ERR_INTERFACE_D5 0xE0001FD5L 01235 #define FTLIB_ERR_INTERFACE_D6 0xE0001FD6L 01236 #define FTLIB_ERR_INTERFACE_D7 0xE0001FD7L 01237 #define FTLIB_ERR_INTERFACE_D8 0xE0001FD8L 01238 #define FTLIB_ERR_INTERFACE_D9 0xE0001FD9L 01239 #define FTLIB_ERR_INTERFACE_DA 0xE0001FDAL 01240 #define FTLIB_ERR_INTERFACE_DB 0xE0001FDBL 01241 #define FTLIB_ERR_INTERFACE_DC 0xE0001FDCL 01242 #define FTLIB_ERR_INTERFACE_DD 0xE0001FDDL 01243 #define FTLIB_ERR_INTERFACE_DE 0xE0001FDEL 01244 #define FTLIB_ERR_INTERFACE_DF 0xE0001FDFL 01245 01246 #define FTLIB_ERR_INTERFACE_E0 0xE0001FE0L 01247 #define FTLIB_ERR_INTERFACE_E1 0xE0001FE1L 01248 #define FTLIB_ERR_INTERFACE_E2 0xE0001FE2L 01249 #define FTLIB_ERR_INTERFACE_E3 0xE0001FE3L 01250 #define FTLIB_ERR_INTERFACE_E4 0xE0001FE4L 01251 #define FTLIB_ERR_INTERFACE_E5 0xE0001FE5L 01252 #define FTLIB_ERR_INTERFACE_E6 0xE0001FE6L 01253 #define FTLIB_ERR_INTERFACE_E7 0xE0001FE7L 01254 #define FTLIB_ERR_INTERFACE_E8 0xE0001FE8L 01255 #define FTLIB_ERR_INTERFACE_E9 0xE0001FE9L 01256 #define FTLIB_ERR_INTERFACE_EA 0xE0001FEAL 01257 #define FTLIB_ERR_INTERFACE_EB 0xE0001FEBL 01258 #define FTLIB_ERR_INTERFACE_EC 0xE0001FECL 01259 #define FTLIB_ERR_INTERFACE_ED 0xE0001FEDL 01260 #define FTLIB_ERR_INTERFACE_EE 0xE0001FEEL 01261 #define FTLIB_ERR_INTERFACE_EF 0xE0001FEFL 01262 01263 #define FTLIB_ERR_INTERFACE_F0 0xE0001FF0L 01264 #define FTLIB_ERR_INTERFACE_F1 0xE0001FF1L 01265 #define FTLIB_ERR_INTERFACE_F2 0xE0001FF2L 01266 #define FTLIB_ERR_INTERFACE_F3 0xE0001FF3L 01267 #define FTLIB_ERR_INTERFACE_F4 0xE0001FF4L 01268 #define FTLIB_ERR_INTERFACE_F5 0xE0001FF5L 01269 #define FTLIB_ERR_INTERFACE_F6 0xE0001FF6L 01270 #define FTLIB_ERR_INTERFACE_F7 0xE0001FF7L 01271 #define FTLIB_ERR_INTERFACE_F8 0xE0001FF8L 01272 #define FTLIB_ERR_INTERFACE_F9 0xE0001FF9L 01273 #define FTLIB_ERR_INTERFACE_FA 0xE0001FFAL 01274 #define FTLIB_ERR_INTERFACE_FB 0xE0001FFBL 01275 #define FTLIB_ERR_INTERFACE_FC 0xE0001FFCL 01276 #define FTLIB_ERR_INTERFACE_FD 0xE0001FFDL 01277 #define FTLIB_ERR_INTERFACE_FE 0xE0001FFEL 01278 #define FTLIB_ERR_INTERFACE_FF 0xE0001FFFL 01279 01280 /** \endcond doxygen ignore end */ 01281 01282 #endif 01283 01284 01285
Generated on Tue Jul 12 2022 20:02:50 by
1.7.2