libroboint
roboint.h
Go to the documentation of this file.
1 
2 /*******************************************************************************
3  * (c) by Knobloch GmbH
4  * Weedgasse 14
5  * D-55234 Erbes-Büdesheim
6  *
7  * Header: FtLib.h Headerfile for fischertechnik USB-Library
8  *
9  * Version: 0.60
10  * Date: 10. May 2006
11  *
12  * Revision:
13  * 0.60: 10. May 2006
14  * New Name: GetAnzFtUsbDevice() --> GetNumFtUsbDevice()
15  * ClearFtMessagePuffer() --> ClearFtMessageBuffer()
16  ********************************************************************************/
17 
18 
19 #ifndef _FT_LIBRARY_H_
20 #define _FT_LIBRARY_H_
21 
22 #ifdef __cplusplus
23 extern "C" {
24 #endif
25 
27 #define DWORD long int
28 #define BYTE unsigned char
29 #define USHORT unsigned short int
30 #define UINT unsigned int
31 #define UCHAR unsigned char
32 
33 #define HANDLE int
34 #define HWND int
35 #define __stdcall
36 #define LPCSTR char *
37 #define LPVOID void *
38 
40 
41 typedef struct _FT_TRANSFER_AREA
42 {
45  unsigned char E_Main;
46 
49  unsigned char E_Sub1;
52  unsigned char E_Sub2;
55  unsigned char E_Sub3;
56 
59  unsigned char rsvd1[8];
60 
63  unsigned char Distance;
64 
66  unsigned char rsvd2;
67 
91  unsigned char IRKeys;
92 
94  unsigned char res_1;
95 
100  unsigned short AX;
105  unsigned short AY;
110  unsigned short A1;
115  unsigned short A2;
120  unsigned short AZ;
125  unsigned short AV;
130  unsigned short D1;
135  unsigned short D2;
136 
140  unsigned short AXS1;
144  unsigned short AXS2;
148  unsigned short AXS3;
149 
153  unsigned short DS1;
157  unsigned short DS2;
158 
161  unsigned short ZE;
162 
165  unsigned char rsvd3[4];
166 
170  unsigned short Timer1ms;
174  unsigned short Timer10ms;
178  unsigned short Timer100ms;
182  unsigned short Timer1s;
186  unsigned short Timer10s;
190  unsigned short Timer1min;
191 
194  unsigned short res_bF;
197  unsigned char res_bT;
198 
201  unsigned char rsvd4[1];
202 
206  unsigned char M_Main;
210  unsigned char M_Sub1;
214  unsigned char M_Sub2;
218  unsigned char M_Sub3;
219 
222  unsigned char rsvd5[4];
223 
228  unsigned char MES_Main;
232  unsigned char MES_Sub1;
236  unsigned char MES_Sub2;
240  unsigned char MES_Sub3;
241 
244  unsigned char rsvd6[1];
245 
248  unsigned char reserved_l1;
251  unsigned char reserved_l2;
254  unsigned char reserved_l3;
255 
266  unsigned char MPWM_Main[8];
267 
278  unsigned char MPWM_Sub1[8];
279 
290  unsigned char MPWM_Sub2[8];
291 
302  unsigned char MPWM_Sub3[8];
303 
306  unsigned char rsvd7[32];
307 
308 
312  unsigned short A1S1;
316  unsigned short A1S2;
320  unsigned short A1S3;
321 
325  unsigned short AVS1;
329  unsigned short AVS2;
333  unsigned short AVS3;
334 
337  unsigned char rsvd8[4];
338 
341  unsigned short AX_R;
342 
344  unsigned short AY_R;
345 
347  unsigned short AXS1_R;
348 
350  unsigned short AXS2_R;
351 
353  unsigned short AXS3_R;
354 
357  unsigned char rsvd10[54];
358 
361  unsigned char Mode;
362 
365  unsigned char MPWM_Update;
366 
371  unsigned char TransferAktiv;
372 
375  unsigned char rsvd11[3];
376 
381  unsigned char BusModules;
382 
385  unsigned char SlotModule1;
386 
389  unsigned char SlotModule2;
390 
393  unsigned char rsvd12[7];
394 
395 
401  unsigned char ChangeEg;
402 
408  unsigned char ChangeAn;
409 
414  unsigned char ChangeIr;
415 
416 
419  unsigned char rsvd13[13];
420 
421 
432  unsigned short E16_Main[8];
443  unsigned short E16_Sub1[8];
454  unsigned short E16_Sub2[8];
465  unsigned short E16_Sub3[8];
470  unsigned short Distance16[2];
471 
474  unsigned char rsvd14[12];
475 
489  unsigned short IRKeys16[11];
492  unsigned char rsvd15[10];
493 
507  unsigned short IRKeys16Code1[11];
508 
512  unsigned char rsvd16[10];
513 
527  unsigned short IRKeys16Code2[11];
528 
532  unsigned char rsvd17[10];
533 
537  unsigned short RfStatus;
538 
542  unsigned short RfPower;
543 
547  unsigned short RfError;
548 
552  unsigned short MsgNumInBuffer;
553 
557  unsigned short RfModulNr;
558 
561  unsigned char rsvd19[2];
562 
565  DWORD dwTC;
566 
569  unsigned char rsvd20[64];
570 
576 #include <usb.h>
577 #include <pthread.h>
578 #include <semaphore.h>
579 #include <termios.h>
580 
582 typedef struct ft_handle_devices {
586  struct usb_device *dev;
588  usb_dev_handle *device;
590  long int sdev;
592  long int type;
594  pthread_t t;
596  sem_t lock;
598  struct termios saveioset;
600  struct termios newioset;
604  unsigned int query_time;
606  unsigned char interface_connected;
607 } *FT_HANDLE;
614 FT_HANDLE OpenFtCommDevice(char *sDevice, long int dwTyp, long int dwZyklus);
615 int GetFtStatus(FT_HANDLE hFt, int *num);
616 long int GetFtDeviceTypeString(FT_HANDLE hft, char *dest, int len);
617 char *GetLibVersionStrg();
618 long int SetRFMode(FT_HANDLE hFt, long int frequency, long int callSign);
619 long int GetRFMode(FT_HANDLE hFt, long int *frequency, long int *callSign);
620 long int SetRealSerial(FT_HANDLE hFt, unsigned char bOn);
622 
623  // Numbers from GetFtDeviceTyp()
624 #define NO_FT_DEVICE 0 // No ft Device connected
625 #define FT_AUTO_TYPE 1 // Search for Device
626 #define FT_INTELLIGENT_IF 10 // FT-Intelligent Interface connect (serial)
627 #define FT_INTELLIGENT_IF_SLAVE 20 // FT-Intelligent Interface with Extension connect (serial)
628 #define FT_ROBO_IF_IIM 50 // FT-Robo Interface with Intelligent-Interface-Modus connect (serial)
629 #define FT_ROBO_IF_USB 60 // FT-Robo Interface connect with USB-Port
630 #define FT_ROBO_IF_COM 70 // FT-Robo Interface connect with COM- (serial-) Port
631 #define FT_ROBO_IF_OVER_RF 80 // FT-Robo Interface connect over RF-Data-Link
632 #define FT_ROBO_IO_EXTENSION 90 // FT-Robo I/O-Extension
633 #define FT_ROBO_RF_DATA_LINK 110 // FT-Robo RF Data Link
634 #define FT_MAX_TYP_NUMBER 999 // Max Typ Number
635 
636 
637 #define FT_ANALOG_CYCLE 5 // Standard: 5*Read Digital Inputs, then EX, EY
638  // Only for old Intelligent Interface { for OpenFtCommDevice() }
639 
640 
641 #define PORT_NONE 0
642 #define PORT_COM 1 // Standard: COM1
643 #define PORT_COM1 1
644 #define PORT_COM2 2
645 #define PORT_COM3 3
646 #define PORT_COM4 4
647 #define PORT_USB 50
648 
649  // Moduletypes for Robo Interface
650 #define MODULE_NOT_INSTALLED 0 // Not installed
651 #define MODULE_RF1 1 // RF Data Link Module is installed
652 
653 
654 #define LEN_STRG1 30 // Length of SN / FW Strings
655 #define LEN_STRG2 255 // Length of Name-Strigs
656 #define ANZ_DISTANCE_TYPES 2 // Number of supported Distance-Modes
657 #define LEN_DIST_TYPE_NAMES 30 // Lenght of Mode-Names
658 #define LEN_DIST_VAR_NAMES 20 // Lenght of Variable-Names
659 #define NAME_LEN 85 // Lenght of Prog-Names
660 
661 
662 #define MEM_FLASH1 0 // Use Memory FLASH-1 Block
663 #define MEM_FLASH2 1 // Use Memory FLASH-2 Block
664 #define MEM_RAM 2 // Use Memory RAM Block
665 #define MEM_NO_ACCESS -1 // No Memory Select (for SetFtProgramActiv() )
666 #define DOWNLOAD_PROG_NAMELEN 80 // Max. 80 characters/bytes for the programname
667 
668  // Values for "dwParameter" from DownloadFtProgram()
669 #define PROG_TYP_NORMAL 1 // Program can bei Start with Software and Switch
670 #define PROG_TYP_AUTOSTART 2 // Program is startable at Power-On
671 
672 
673  // COM-Modes for SetFtDeviceCommMode()
674 #define IF_COM_ONLINE 1 // Online Mode
675 #define IF_COM_MESSAGE 3 // Messagemode
676 #define IF_COM_DATA 4 // Datatransfer
677 #define IF_COM_PARAMETER 5 // Get Mode
678 
679 
680  // Message-System
681 #define MSG_HWID_SELF 0 // Message for himself
682 #define MSG_HWID_SER 1 // Message for the Robo-Interface serial port
683 #define MSG_HWID_RF 2 // Message for other Interfaces (over RF)
684 #define MSG_HWID_RF_SELF 3 // Message for other Interfaces (over RF) and for himself (back over RF)
685 
686 #define MSG_BUFF_SER 1 // SER-Messagebuffer (for ClearRfMessage() )
687 #define MSG_BUFF_RF 2 // RF-Messagebuffer (for ClearRfMessage() )
688 #define MSG_BUFF_SELF 4 // SELF-Messagebuffer (for ClearRfMessage() )
689 
690 #define MSG_SEND_NORMAL 0 // Message send "normal"
691 #define MSG_SEND_OTHER_THAN_LAST 1 // Message send "if not the same as the last message"
692 #define MSG_SEND_IF_NOT_PRESENT 2 // Message send "if not present in the send buffer"
693 
694 
695 
696  // Interface Distancesensor-Inputs Type
697 #define IF_DS_INPUT_VOLTAGE 0 // Voltage
698 #define IF_DS_INPUT_DISTANCE 1 // Distance
699 #define IF_DS_INPUT_TOL_STD 20 // Toleranz (Standard)
700 #define IF_DS_INPUT_REP_STD 3 // Repeat (Standard)
701 
702 
703 
704  #pragma pack( push, 1 )
705  typedef union
706  {
707  BYTE aucMsg[6];
708 
709  struct
710  {
711  BYTE ucHwId;
712  BYTE ucSubId;
713  BYTE ucB0;
714  BYTE ucB1;
715  BYTE ucB2;
716  BYTE ucB3;
717  } B;
718 
719  struct
720  {
721  BYTE ucHwId;
722  BYTE ucSubId;
723  USHORT uiMsgId;
724  USHORT uiMsg;
725  } W;
726 
727  struct
728  {
729  BYTE ucHwId;
730  BYTE ucSubId;
731  DWORD dw;
732  } L;
733  } SMESSAGE;
734  #pragma pack( pop )
735 
736 
737  //typedef void * FT_HANDLE;
738  typedef void (*DATA_UPDATE_CALLBACK)(void* Context);
739  typedef void (*MSG_UPDATE_CALLBACK)(SMESSAGE *);
740 
741 
742 
743  // Important:
744  // Initialise all unused Variables in this Structure with "NULL"
745  //
746  // Every Time the driver reads new information from the Device
747  // the Library checks this structure
748  typedef struct _NOTIFICATION_EVENTS
749  {
750  // Callback-Procedure
751  DATA_UPDATE_CALLBACK NotificationCallback; // Pointer to the Callback-Procedure
752  void* Context; // Pointer to the Context for the Callback-Procedure
753 
754  // for SetEvent()
755  HANDLE hEvent;
756 
757  // for posting a Message (PostMessage() with wParam & lParam = 0)
758  HWND WindowsHandle; // handle to the destination window
759  DWORD Message; // message ID
760 
761 
762  // Callback-Procedure for Messaging
763  MSG_UPDATE_CALLBACK CallbackMessage; // Pointer to the Callback-Procedure for Receiving Messages
764 
765  }
766  NOTIFICATION_EVENTS;
767 
768 
769 
770 
771  typedef struct _FT_SERIAL_NUMBER
772  {
773  DWORD dwSn; // actually Serial Number at Power On
774  DWORD dwSn1; // Serial Number-1
775  DWORD dwSn2; // Serial Number-2
776  DWORD dwSnAktiv; // Serial Number Activ (1/2) for next Power On
777  } FT_SERIAL_NUMBER;
778 
779 
780 
781  typedef struct _FT_DISTANCE // Robo Interface Distance Sensor
782  {
783  unsigned char aDistModeNames[LEN_DIST_TYPE_NAMES]; // RO Names for the Modes
784 
785  DWORD dwEnableDisVal1; // RO 1=Ask for Distance Value 1
786  unsigned char aDisVal1Name[LEN_DIST_VAR_NAMES]; // RO Value 1 Name
787  DWORD dwDisVal1; // RW Value 1
788 
789  DWORD dwEnableDisVal2; // RO 1=Ask for Distance Value 2
790  unsigned char aDisVal2Name[LEN_DIST_VAR_NAMES]; // RO Value 2 Name
791  DWORD dwDisVal2; // RW Value 2
792 
793  DWORD dwEnableDisVal3; // RO 1=Ask for Distance Value 3
794  unsigned char aDisVal3Name[LEN_DIST_VAR_NAMES]; // RO Value 3 Name
795  DWORD dwDisVal3; // RW Value 3
796 
797  DWORD dwEnableDisVal4; // RO 1=Ask for Distance Value 4
798  unsigned char aDisVal4Name[LEN_DIST_VAR_NAMES]; // RO Value 4 Name
799  DWORD dwDisVal4; // RW Value 4
800 
801  DWORD dwEnableDisVal5; // RO 1=Ask for Distance Value 5
802  unsigned char aDisVal5Name[LEN_DIST_VAR_NAMES]; // RO Value 5 Name
803  DWORD dwDisVal5; // RW Value 5
804 
805  DWORD dwEnableDisVal6; // RO 1=Ask for Distance Value 6
806  unsigned char aDisVal6Name[LEN_DIST_VAR_NAMES]; // RO Value 6 Name
807  DWORD dwDisVal6; // RW Value 6
808 
809  DWORD dwEnableDisVal7; // RO 1=Ask for Distance Value 7
810  unsigned char aDisVal7Name[LEN_DIST_VAR_NAMES]; // RO Value 7 Name
811  DWORD dwDisVal7; // RW Value 7
812 
813  DWORD dwEnableDisVal8; // RO 1=Ask for Distance Value 8
814  unsigned char aDisVal8Name[LEN_DIST_VAR_NAMES]; // RO Value 8 Name
815  DWORD dwDisVal8; // RW Value 8
816  } FT_DISTANCE;
817 
818 
819 
820  typedef union _FT_SETTING
821  {
822  struct // RO = Read Only, RW = Read / Write
823  {
824  DWORD dwIfTyp; // RO Type of connected Device
825  // possible Values:
826  // NO_FT_DEVICE no answer from the Device - is it gone ?
827  // FT_INTELLIGENT_IF FT-Intelligent Interface connect (serial)
828  // FT_ROBO_IF_IIM FT-Robo Interface with Intelligent-Interface-Modus connect (serial)
829  // FT_ROBO_IF_USB FT-Robo Interface connect with USB-Port
830  // FT_ROBO_IF_COM FT-Robo Interface connect with COM- (serial-) Port
831  // FT_ROBO_IO_EXTENSION FT-Robo I/O-Extension
832  // FT_ROBO_RF_DATA_LINK FT-Robo RF Data Link
833  // FT_ROBO_IF_OVER_RF FT-Robo Interface connect over RF-Data-Link
834 
835  // Serial numbers section
836  DWORD dwSn; // RO actually Serial Number at Power On
837  DWORD dwSn1; // RW Serial Number-1 (only FT-Robo Products)
838  DWORD dwSn2; // RO Serial Number-2 (only FT-Robo Products)
839  DWORD dwSnAktiv; // RW Set Serial Number Activ (1/2) for next Power On
840 
841  DWORD dwFw; // RO Is Firmware Version for this product (only FT-Robo Products)
842 
843  unsigned char aSnStrg[LEN_STRG1]; // RO String with Serialnumber (only FT-Robo Products)
844  unsigned char aSn1Strg[LEN_STRG1]; // RO String with Serialnumber1 (only FT-Robo Products)
845  unsigned char aSn2Strg[LEN_STRG1]; // RO String with Serialnumber2 (only FT-Robo Products)
846  unsigned char aFwStrg[LEN_STRG1]; // RO String with Firmware (only FT-Robo Products)
847  unsigned char aSNaStrg[LEN_STRG2]; // RO String with Short-Name (only FT-Robo Products)
848  unsigned char aLNaStrg[LEN_STRG2]; // RO String with Long-Name (only FT-Robo Products)
849 
850  DWORD dwFwRoboIfVerAtLibIsMade; // RO Robo-If Firmware Version as this Lib is made
851  DWORD dwFwIoExtVerAtLibIsMade; // RO IO-Extension Firmware Version as this Lib is made
852  DWORD dwFwRfDataVerAtLibIsMade; // RO RF-DataLink Firmware Version as this Lib is made
853  unsigned char aFwRoboIfVerAtLibIsMadeStrg[LEN_STRG1]; // RO String with Robo-If Firmware Version as this Lib is made
854  unsigned char aFwIoExtVerAtLibIsMadeStrg[LEN_STRG1]; // RO String with IO-Extension Firmware Version as this Lib is made
855  unsigned char aFwRfDataVerAtLibIsMadeStrg[LEN_STRG1]; // RO String with Rf-Data-Link Firmware Version as this Lib is made
856 
857  DWORD dwReserved; // Reserved for later use
858 
859 
860  // Output Section
861  DWORD dwOutputAutoOff[4]; // RW M1=[0]...M4=[3] Energy saver:
862  // "1" = "Power Off" motor driver when both outputs logical "0" (reduces Energy)
863  // "0" = do not automatically disable the motor driver
864  DWORD dwOutputPwmType; // RW PWM-Type (Today only "0" supported)
865 
866 
867  // Robo Interface Distance Sensor
868  DWORD dwAnzDistanceModes; // RO Number of supported Distance Modes (Array Entries)
869  DWORD dwDistanceMode; // RW Type and Mode for Distance-Sensor (Index-Number in the range 0...ANZ_DISTANCE_TYPES)
870  FT_DISTANCE sDistance[ANZ_DISTANCE_TYPES]; // RW Values for setting
871 
872 
873  // Robo Interface Memory Section
874  DWORD dwProg[3]; // RO 1=Program is saved in the Memory block; [0]=Flash-1 [1]=Flash-2 [2]=Ram
875  unsigned char aProgNames[3][NAME_LEN]; // RO [0]=Flash-1 Prog Name; [1]=Flash-2 Prog Name; [2]=Ram Prog-Name
876  DWORD dwF1AutoStart; // RO 1=Autostart Flash-1 programm, 0=no autostart
877 
878 
879  // Robo Interface Module Section
880  DWORD dwMod1Typ; // RO Type of left Module (only Robo-If)
881  DWORD dwMod2Typ; // RO Type of right Module (only Robo-If)
882  // possible Values:
883  // MODULE_NOT_INSTALLED No Module is installed
884  // MODULE_RF1 RF Data Link is installed
885 
886  unsigned char aMod1Strg[LEN_STRG1]; // RO String with Module-1 Name (only FT-Robo Products)
887  unsigned char aMod2Strg[LEN_STRG1]; // RO String with Module-2 Name (only FT-Robo Products)
888 
889 
890  // Robo Interface & RF Data Link Section
891  DWORD dwRfOn; // RW 0=disable RF 1=Enable RF
892  DWORD dwRfChannel; // RW Channel-Number (2..80) for RF-Communication
893  DWORD dwRfSubChannel; // RW Sub-Channel of Device for the specified Channel (1..3)
894  DWORD dwRfMessage; // RW 0=Disable Message-Router Function 1=Enable Message-Rounter Function
895  DWORD dwRfWrite; // W 0=write values permanent (FLASH); 1=write values temporary (RAM)
896  DWORD dwRfFw; // RO Firmwareversion of RF-Module
897  unsigned char aRfFwStrg[LEN_STRG1]; // RO String with Firmware of RF-Module
898 
899  // Information for the PC-RF Module
900  DWORD dwRfStopTransferOnError; // RW 1=Stop the RF-Transfer Thread on bad RF Connection
901 
902  // Information for the Interface RF-Module
903  DWORD dwRfMotorOffOnError; // RW 1=Motor Off on bad RF Connection
904  } sIf;
905  } FT_SETTING;
906 
907 
908  // ****** Function Prototypes ******
909  DWORD __stdcall GetLibVersion(void);
910  DWORD __stdcall InitFtLib(void);
911  DWORD __stdcall CloseFtLib(void);
912  DWORD __stdcall IsFtLibInit(void);
913  DWORD __stdcall InitFtUsbDeviceList(void);
914  UINT __stdcall GetNumFtUsbDevice(void);
915  FT_HANDLE __stdcall GetFtUsbDeviceHandle(UCHAR ucDevNr);
916  FT_HANDLE __stdcall GetFtUsbDeviceHandleSerialNr(DWORD dwSN, DWORD dwTyp);
917  DWORD __stdcall OpenFtUsbDevice(FT_HANDLE hFt);
918  //FT_HANDLE __stdcall OpenFtCommDevice(DWORD dwPort, DWORD dwTyp, DWORD dwZyklus, DWORD *pdwError);
919  DWORD __stdcall SetFtDeviceCommMode (FT_HANDLE hFt, DWORD dwMode, DWORD dwParameter, USHORT *puiValue);
920  DWORD __stdcall CloseAllFtDevices(void);
921  DWORD __stdcall CloseFtDevice(FT_HANDLE hFt);
922  DWORD __stdcall GetFtDeviceTyp(FT_HANDLE hFt);
923  LPCSTR __stdcall GetFtSerialNrStrg(FT_HANDLE hFt);
924  DWORD __stdcall GetFtSerialNr(FT_HANDLE hFt);
925  LPCSTR __stdcall GetFtFirmwareStrg(FT_HANDLE hFt);
926  DWORD __stdcall GetFtFirmware(FT_HANDLE hFt);
927  LPCSTR __stdcall GetFtManufacturerStrg(FT_HANDLE hFt);
928  LPCSTR __stdcall GetFtShortNameStrg(FT_HANDLE hFt);
929  LPCSTR __stdcall GetFtLongNameStrg(FT_HANDLE hFt);
930  LPCSTR __stdcall GetFtLibErrorString(DWORD dwErrorCode, DWORD dwTyp);
931  DWORD __stdcall GetFtDeviceSetting(FT_HANDLE hFt, FT_SETTING *pSet);
932  DWORD __stdcall SetFtDeviceSetting(FT_HANDLE hFt, FT_SETTING *pSet);
933  DWORD __stdcall SetFtDistanceSensorMode(FT_HANDLE hFt, DWORD dwMode, DWORD dwTol1, DWORD dwTol2,
934  DWORD dwSchwell1, DWORD dwSchwell2, DWORD dwRepeat1, DWORD dwRepeat2);
935 
936 
937  DWORD __stdcall StartFtTransferArea(FT_HANDLE hFt, NOTIFICATION_EVENTS* sNEvent );
938  DWORD __stdcall StartFtTransferAreaWithCommunication(FT_HANDLE hFt, NOTIFICATION_EVENTS* sNEvent );
939  DWORD __stdcall StopFtTransferArea(FT_HANDLE hFt);
941  DWORD __stdcall IsFtTransferActiv(FT_HANDLE hFt);
942  DWORD __stdcall ResetFtTransfer (FT_HANDLE hFt);
943 
944 
945  DWORD __stdcall GetFtMemoryLayout(FT_HANDLE hFt, BYTE * pbArray, DWORD dwSize);
946  DWORD __stdcall DownloadFtProgram(FT_HANDLE hFt, DWORD dwMemBlock, BYTE* pbArray, DWORD dwSize, DWORD dwParameter, BYTE *pbName, DWORD dwNameLen);
947  DWORD __stdcall StartFtProgram(FT_HANDLE hFt, DWORD dwMemBlock);
948  DWORD __stdcall StopFtProgram(FT_HANDLE hFt);
949  DWORD __stdcall DeleteFtProgram(FT_HANDLE hFt, DWORD dwMemBlock);
950  DWORD __stdcall SetFtProgramActiv(FT_HANDLE hFt, DWORD dwMemBlock);
951  DWORD __stdcall GetFtProgramName(FT_HANDLE hFt, DWORD dwMemBlock, DWORD dwSize, LPVOID pName);
952  DWORD __stdcall WriteFtMemoryData(FT_HANDLE hFt, DWORD dwData, DWORD dwAddress);
953  DWORD __stdcall GetFtMemoryData(FT_HANDLE hFt, BYTE * pbArray, DWORD dwSize, DWORD dwAddress);
954 
955 
956  DWORD __stdcall SendFtMessage(FT_HANDLE hFt, BYTE bHwId, BYTE bSubId, DWORD dwMessage, DWORD dwWaitTime, DWORD dwOption);
957  DWORD __stdcall ClearFtMessageBuffer(FT_HANDLE hFt);
958 
959 
960 
961 
962 //
963 // FTLIB Error Codes
964 //
965  #define FTLIB_ERR_SUCCESS 0x00000000L
966  #define FTLIB_ERR_CRC 0xE0000001L
967  #define FTLIB_ERR_BTSTUFF 0xE0000002L
968  #define FTLIB_ERR_DATA_TOGGLE_MISMATCH 0xE0000003L
969  #define FTLIB_ERR_STALL_PID 0xE0000004L
970  #define FTLIB_ERR_DEV_NOT_RESPONDING 0xE0000005L
971  #define FTLIB_ERR_PID_CHECK_FAILURE 0xE0000006L
972  #define FTLIB_ERR_UNEXPECTED_PID 0xE0000007L
973  #define FTLIB_ERR_DATA_OVERRUN 0xE0000008L
974  #define FTLIB_ERR_DATA_UNDERRUN 0xE0000009L
975  #define FTLIB_ERR_RESERVED1 0xE000000AL
976  #define FTLIB_ERR_RESERVED2 0xE000000BL
977  #define FTLIB_ERR_BUFFER_OVERRUN 0xE000000CL
978  #define FTLIB_ERR_BUFFER_UNDERRUN 0xE000000DL
979  #define FTLIB_ERR_NOT_ACCESSED 0xE000000FL
980  #define FTLIB_ERR_FIFO 0xE0000010L
981  #define FTLIB_ERR_XACT_ERROR 0xE0000011L
982  #define FTLIB_ERR_BABBLE_DETECTED 0xE0000012L
983  #define FTLIB_ERR_DATA_BUFFER_ERROR 0xE0000013L
984 
985  #define FTLIB_ERR_ENDPOINT_HALTED 0xE0000030L
986  #define FTLIB_ERR_NO_MEMORY 0xE0000100L
987  #define FTLIB_ERR_INVALID_URB_FUNCTION 0xE0000200L
988  #define FTLIB_ERR_INVALID_PARAMETER 0xE0000300L
989  #define FTLIB_ERR_ERROR_BUSY 0xE0000400L
990  #define FTLIB_ERR_INVALID_PIPE_HANDLE 0xE0000600L
991  #define FTLIB_ERR_NO_BANDWIDTH 0xE0000700L
992  #define FTLIB_ERR_INTERNAL_HC_ERROR 0xE0000800L
993  #define FTLIB_ERR_ERROR_SHORT_TRANSFER 0xE0000900L
994  #define FTLIB_ERR_BAD_START_FRAME 0xE0000A00L
995  #define FTLIB_ERR_ISOCH_REQUEST_FAILED 0xE0000B00L
996  #define FTLIB_ERR_FRAME_CONTROL_OWNED 0xE0000C00L
997  #define FTLIB_ERR_FRAME_CONTROL_NOT_OWNED 0xE0000D00L
998  #define FTLIB_ERR_NOT_SUPPORTED 0xE0000E00L
999  #define FTLIB_ERR_INVALID_CONFIGURATION_DESCRIPTOR 0xE0000F00L
1000 
1001  #define FTLIB_ERR_INSUFFICIENT_RESOURCES 0xE8001000L
1002  #define FTLIB_ERR_SET_CONFIG_FAILED 0xE0002000L
1003  #define FTLIB_ERR_USBD_BUFFER_TOO_SMALL 0xE0003000L
1004  #define FTLIB_ERR_USBD_INTERFACE_NOT_FOUND 0xE0004000L
1005  #define FTLIB_ERR_INVALID_PIPE_FLAGS 0xE0005000L
1006  #define FTLIB_ERR_USBD_TIMEOUT 0xE0006000L
1007  #define FTLIB_ERR_DEVICE_GONE 0xE0007000L
1008  #define FTLIB_ERR_STATUS_NOT_MAPPED 0xE0008000L
1009 
1010  #define FTLIB_ERR_CANCELED 0xE0010000L
1011  #define FTLIB_ERR_ISO_NOT_ACCESSED_BY_HW 0xE0020000L
1012  #define FTLIB_ERR_ISO_TD_ERROR 0xE0030000L
1013  #define FTLIB_ERR_ISO_NA_LATE_USBPORT 0xE0040000L
1014  #define FTLIB_ERR_ISO_NOT_ACCESSED_LATE 0xE0050000L
1015 
1016  #define FTLIB_ERR_FAILED 0xE0001000L
1017  #define FTLIB_ERR_INVALID_INBUFFER 0xE0001001L
1018  #define FTLIB_ERR_INVALID_OUTBUFFER 0xE0001002L
1019  #define FTLIB_ERR_OUT_OF_MEMORY 0xE0001003L
1020  #define FTLIB_ERR_PENDING_REQUESTS 0xE0001004L
1021  #define FTLIB_ERR_ALREADY_CONFIGURED 0xE0001005L
1022  #define FTLIB_ERR_NOT_CONFIGURED 0xE0001006L
1023  #define FTLIB_ERR_OPEN_PIPES 0xE0001007L
1024  #define FTLIB_ERR_ALREADY_BOUND 0xE0001008L
1025  #define FTLIB_ERR_NOT_BOUND 0xE0001009L
1026  #define FTLIB_ERR_DEVICE_NOT_PRESENT 0xE000100AL
1027  #define FTLIB_ERR_CONTROL_NOT_SUPPORTED 0xE000100BL
1028  #define FTLIB_ERR_TIMEOUT 0xE000100CL
1029  #define FTLIB_ERR_INVALID_RECIPIENT 0xE000100DL
1030  #define FTLIB_ERR_INVALID_TYPE 0xE000100EL
1031  #define FTLIB_ERR_INVALID_IOCTL 0xE000100FL
1032  #define FTLIB_ERR_INVALID_DIRECTION 0xE0001010L
1033  #define FTLIB_ERR_TOO_MUCH_ISO_PACKETS 0xE0001011L
1034  #define FTLIB_ERR_POOL_EMPTY 0xE0001012L
1035  #define FTLIB_ERR_PIPE_NOT_FOUND 0xE0001013L
1036  #define FTLIB_ERR_INVALID_ISO_PACKET 0xE0001014L
1037  #define FTLIB_ERR_OUT_OF_ADDRESS_SPACE 0xE0001015L
1038  #define FTLIB_ERR_INTERFACE_NOT_FOUND 0xE0001016L
1039  #define FTLIB_ERR_INVALID_DEVICE_STATE 0xE0001017L
1040  #define FTLIB_ERR_INVALID_PARAM 0xE0001018L
1041  #define FTLIB_ERR_INVALID_POWER_STATE 0xE000101AL
1042  #define FTLIB_ERR_POWER_DOWN 0xE000101BL
1043  #define FTLIB_ERR_VERSION_MISMATCH 0xE000101CL
1044  #define FTLIB_ERR_SET_CONFIGURATION_FAILED 0xE000101DL
1045 
1046  #define FTLIB_ERR_VID_RESTRICTION 0xE0001080L
1047  #define FTLIB_ERR_ISO_RESTRICTION 0xE0001081L
1048  #define FTLIB_ERR_BULK_RESTRICTION 0xE0001082L
1049  #define FTLIB_ERR_EP0_RESTRICTION 0xE0001083L
1050  #define FTLIB_ERR_PIPE_RESTRICTION 0xE0001084L
1051  #define FTLIB_ERR_PIPE_SIZE_RESTRICTION 0xE0001085L
1052  #define FTLIB_ERR_CONTROL_RESTRICTION 0xE0001086L
1053  #define FTLIB_ERR_INTERRUPT_RESTRICTION 0xE0001087L
1054 
1055  #define FTLIB_ERR_DEVICE_NOT_FOUND 0xE0001100L
1056  #define FTLIB_ERR_SOME_DEVICES_ARE_OPEN 0xE0001101L
1057  #define FTLIB_ERR_DEVICE_IS_OPEN 0xE0001102L
1058  #define FTLIB_ERR_DEVICE_NOT_OPEN 0xE0001103L
1059  #define FTLIB_ERR_NO_SUCH_DEVICE_INSTANCE 0xE0001104L
1060  #define FTLIB_ERR_INVALID_FUNCTION_PARAM 0xE0001105L
1061  #define FTLIB_ERR_DESTROY_DEVICE_LIST 0xE0001106L
1062  #define FTLIB_ERR_USB_NOT_SUPPORTET_FROM_OS 0xE0001107L
1063  #define FTLIB_ERR_CLOSE_DEVICE 0xE0001108L
1064 
1065  #define FTLIB_ERR_DEVICE_NOT_SUPPORTET 0xE0001281L
1066  #define FTLIB_ERR_WRONG_DEVICE_NUMBER 0xE0001282L
1067  #define FTLIB_ERR_UNKNOWN_DEVICE_HANDLE 0xE0001283L
1068  #define FTLIB_ERR_WRONG_USB_HANDLE 0xE0001284L
1069  #define FTLIB_ERR_WRONG_PATHNAME 0xE0001285L
1070  #define FTLIB_ERR_LIB_IS_INITIALIZED 0xE0001286L
1071  #define FTLIB_ERR_LIB_IS_NOT_INITIALIZED 0xE0001287L
1072  #define FTLIB_ERR_SERIAL_NR_UNKNOWN 0xE0001288L
1073  #define FTLIB_ERR_POWER_TOO_LOW 0xE0001289L
1074  #define FTLIB_ERR_WRONG_RETURN_VALUE 0xE000128AL
1075  #define FTLIB_ERR_USB_SUPPORT_IS_NOT_INITIALIZED 0xE000128BL
1076 
1077  #define FTLIB_ERR_USB_MUT0 0xE0001290L
1078  #define FTLIB_ERR_USB_MUT1 0xE0001291L
1079  #define FTLIB_ERR_USB_MUT2 0xE0001292L
1080  #define FTLIB_ERR_USB_MUT3 0xE0001293L
1081  #define FTLIB_ERR_USB_DEVICE_IS_IN_USE 0xE0001295L
1082 
1083  #define FTLIB_ERR_THREAD_NOT_STARTABLE 0xE00012A0L
1084  #define FTLIB_ERR_THREAD_NOT_STARTABLE_X1 0xE00012A1L
1085  #define FTLIB_ERR_THREAD_NOT_STARTABLE_X2 0xE00012A2L
1086  #define FTLIB_ERR_THREAD_NOT_STARTABLE_X3 0xE00012A3L
1087  #define FTLIB_ERR_OTHER_THREAD_FOR_SAME_DEVICE_IS_RUN 0xE00012A4L
1088  #define FTLIB_ERR_THREAD_IS_RUNNING 0xE00012A5L
1089  #define FTLIB_ERR_THREAD_NOT_RUNNING 0xE00012A6L
1090  #define FTLIB_ERR_THREAD_X1 0xE00012A7L
1091  #define FTLIB_ERR_THREAD_X2 0xE00012A8L
1092  #define FTLIB_ERR_THREAD_WRITE_USB 0xE00012A9L
1093  #define FTLIB_ERR_THREAD_READ_USB 0xE00012AAL
1094  #define FTLIB_ERR_THREAD_IS_NORMAL_STOPPED 0xE00012ABL
1095  #define FTLIB_ERR_THREAD_WAIT_TIMEOUT 0xE00012ACL
1096  #define FTLIB_ERR_THREAD_WRITE_COM 0xE00012ADL
1097  #define FTLIB_ERR_THREAD_READ_COM 0xE00012AEL
1098 
1099  #define FTLIB_ERR_DOWNLOAD 0xE00012C0L
1100  #define FTLIB_ERR_DOWNLOAD_WRONG_PARAMETER 0xE00012C1L
1101  #define FTLIB_ERR_DOWNLOAD_WRONG_MEM_BLOCK 0xE00012C2L
1102  #define FTLIB_ERR_DOWNLOAD_DATA_SIZE_IS_NULL 0xE00012C3L
1103  #define FTLIB_ERR_DOWNLOAD_DATA_SIZE_TOO_BIG 0xE00012C4L
1104  #define FTLIB_ERR_DOWNLOAD_DATA_SIZE 0xE00012C5L
1105  #define FTLIB_ERR_DOWNLOAD_ERASE 0xE00012C6L
1106  #define FTLIB_ERR_DOWNLOAD_F5 0xE00012C7L
1107  #define FTLIB_ERR_DOWNLOAD_PROG_SNF1 0xE00012C8L
1108  #define FTLIB_ERR_DOWNLOAD_PROG_SNF2 0xE00012C9L
1109  #define FTLIB_ERR_DOWNLOAD_BLOCK 0xE00012CAL
1110  #define FTLIB_ERR_DOWNLOAD_BLOCK_NR 0xE00012CBL
1111  #define FTLIB_ERR_DOWNLOAD_CRC 0xE00012CDL
1112 
1113  #define FTLIB_ERR_IF_NO_PROGRAM 0xE00012E0L
1114  #define FTLIB_ERR_IF_PROGRAM_IS_RUNNING 0xE00012E1L
1115  #define FTLIB_ERR_IF_NO_PROGRAM_IS_RUNNING 0xE00012E2L
1116  #define FTLIB_ERR_IF_WRONG_PROG_NUMBER 0xE00012E3L
1117  #define FTLIB_ERR_IF_BUFFER_TOO_SMALL 0xE00012E4L
1118  #define FTLIB_ERR_IF_MEM_ADDRESS 0xE00012E5L
1119  #define FTLIB_ERR_IF_MEM_VERIFY 0xE00012E6L
1120  #define FTLIB_ERR_IF_NOT_SUPPORTET_MODUS 0xE00012E7L
1121  #define FTLIB_ERR_IF_FUNCTION_NOT_SUPPORT 0xE00012E8L
1122  #define FTLIB_ERR_FUNCTION_OVER_RF_NOT_ALLOWED 0xE00012E9L
1123 
1124 
1125  #define FTLIB_INFO_PROGRAM_0_IS_RUNNING 0xE0001600L
1126  #define FTLIB_INFO_PROGRAM_1_IS_RUNNING 0xE0001601L
1127  #define FTLIB_INFO_PROGRAM_2_IS_RUNNING 0xE0001602L
1128  #define FTLIB_INFO_ONLINE_MODUS 0xE0001620L
1129 
1130  #define FTLIB_FIRMWARE_UPDATE_FILE_WRONG_0 0xE0001800L
1131  #define FTLIB_FIRMWARE_UPDATE_CRC 0xE0001801L
1132  #define FTLIB_FIRMWARE_UPDATE_FILE_OLD 0xE0001802L
1133  #define FTLIB_FIRMWARE_UPDATE_FILE_WRONG_1 0xE0001803L
1134 
1135 
1136  #define FTLIB_ERR_PORT_NUMBER 0xE0001900L
1137  #define FTLIB_ERR_WRONG_PORT 0xE0001901L
1138  #define FTLIB_ERR_PORT_NUMBER_IS_NULL 0xE0001902L
1139  #define FTLIB_ERR_TYP 0xE0001903L
1140  #define FTLIB_ERR_PORT_NOT_FOUND 0xE0001904L
1141  #define FTLIB_ERR_ACCESS_DENIED 0xE0001905L
1142  #define FTLIB_ERR_OPEN_COM 0xE0001906L
1143  #define FTLIB_ERR_CLOSE_COM 0xE0001907L
1144  #define FTLIB_ERR_INIT_COM 0xE0001908L
1145  #define FTLIB_ERR_INIT_COM_TIMEOUT 0xE0001909L
1146  #define FTLIB_ERR_WRITE_COM 0xE000190AL
1147  #define FTLIB_ERR_READ_COM 0xE000190BL
1148  #define FTLIB_ERR_READ_COM_NUMBER 0xE000190CL
1149  #define FTLIB_ERR_READ_COM_NOTHING 0xE000190DL
1150 
1151  #define FTLIB_ERR_RF_NOT_INSTALLED 0xE0001A00L
1152  #define FTLIB_ERR_RF_WRONG_CHANNEL 0xE0001A01L
1153  #define FTLIB_ERR_RF_WRONG_SUB_CHANNEL 0xE0001A02L
1154  #define FTLIB_ERR_RF_NO_CONNECTION 0xE0001A03L
1155  #define FTLIB_ERR_RF_NO_CONNECTION_A 0xE0001A04L
1156  #define FTLIB_ERR_RF_NO_CONNECTION_B 0xE0001A05L
1157  #define FTLIB_ERR_RF_NO_CONNECTION_C 0xE0001A06L
1158  #define FTLIB_ERR_RF_TIMEOUT_1 0xE0001A08L
1159  #define FTLIB_ERR_RF_TIMEOUT_2 0xE0001A09L
1160  #define FTLIB_ERR_RF_FW_OLD1 0xE0001A0AL
1161  #define FTLIB_ERR_RF_INTERNAL_1 0xE0001A0DL
1162  #define FTLIB_ERR_RF_NO_INTERFACE_MODULE_FOUND 0xE0001A0EL
1163 
1164  #define FTLIB_ERR_DLL_NOT_LOADABLE 0xE0001B00L
1165  #define FTLIB_ERR_DLL_FUNCTION_ERROR 0xE0001B01L
1166 
1167  #define FTLIB_ERR_MSG_HWID_WRONG 0xE0001C00L
1168  #define FTLIB_ERR_MSG_BUFFER_FULL_TIMEOUT 0xE0001C01L
1169 
1170  #define FTLIB_ERR_UNKNOWN_OPTION_VALUE 0xE0001D00L
1171 
1172  #define FTLIB_ERR_INTERFACE_00 0xE0001F00L
1173  #define FTLIB_ERR_INTERFACE_01 0xE0001F01L
1174  #define FTLIB_ERR_INTERFACE_02 0xE0001F02L
1175  #define FTLIB_ERR_INTERFACE_03 0xE0001F03L
1176  #define FTLIB_ERR_INTERFACE_04 0xE0001F04L
1177  #define FTLIB_ERR_INTERFACE_05 0xE0001F05L
1178  #define FTLIB_ERR_INTERFACE_06 0xE0001F06L
1179  #define FTLIB_ERR_INTERFACE_07 0xE0001F07L
1180  #define FTLIB_ERR_INTERFACE_08 0xE0001F08L
1181  #define FTLIB_ERR_INTERFACE_09 0xE0001F09L
1182  #define FTLIB_ERR_INTERFACE_0A 0xE0001F0AL
1183  #define FTLIB_ERR_INTERFACE_0B 0xE0001F0BL
1184  #define FTLIB_ERR_INTERFACE_0C 0xE0001F0CL
1185  #define FTLIB_ERR_INTERFACE_0D 0xE0001F0DL
1186  #define FTLIB_ERR_INTERFACE_0E 0xE0001F0EL
1187  #define FTLIB_ERR_INTERFACE_0F 0xE0001F0FL
1188 
1189  #define FTLIB_ERR_INTERFACE_D0 0xE0001FD0L
1190  #define FTLIB_ERR_INTERFACE_D1 0xE0001FD1L
1191  #define FTLIB_ERR_INTERFACE_D2 0xE0001FD2L
1192  #define FTLIB_ERR_INTERFACE_D3 0xE0001FD3L
1193  #define FTLIB_ERR_INTERFACE_D4 0xE0001FD4L
1194  #define FTLIB_ERR_INTERFACE_D5 0xE0001FD5L
1195  #define FTLIB_ERR_INTERFACE_D6 0xE0001FD6L
1196  #define FTLIB_ERR_INTERFACE_D7 0xE0001FD7L
1197  #define FTLIB_ERR_INTERFACE_D8 0xE0001FD8L
1198  #define FTLIB_ERR_INTERFACE_D9 0xE0001FD9L
1199  #define FTLIB_ERR_INTERFACE_DA 0xE0001FDAL
1200  #define FTLIB_ERR_INTERFACE_DB 0xE0001FDBL
1201  #define FTLIB_ERR_INTERFACE_DC 0xE0001FDCL
1202  #define FTLIB_ERR_INTERFACE_DD 0xE0001FDDL
1203  #define FTLIB_ERR_INTERFACE_DE 0xE0001FDEL
1204  #define FTLIB_ERR_INTERFACE_DF 0xE0001FDFL
1205 
1206  #define FTLIB_ERR_INTERFACE_E0 0xE0001FE0L
1207  #define FTLIB_ERR_INTERFACE_E1 0xE0001FE1L
1208  #define FTLIB_ERR_INTERFACE_E2 0xE0001FE2L
1209  #define FTLIB_ERR_INTERFACE_E3 0xE0001FE3L
1210  #define FTLIB_ERR_INTERFACE_E4 0xE0001FE4L
1211  #define FTLIB_ERR_INTERFACE_E5 0xE0001FE5L
1212  #define FTLIB_ERR_INTERFACE_E6 0xE0001FE6L
1213  #define FTLIB_ERR_INTERFACE_E7 0xE0001FE7L
1214  #define FTLIB_ERR_INTERFACE_E8 0xE0001FE8L
1215  #define FTLIB_ERR_INTERFACE_E9 0xE0001FE9L
1216  #define FTLIB_ERR_INTERFACE_EA 0xE0001FEAL
1217  #define FTLIB_ERR_INTERFACE_EB 0xE0001FEBL
1218  #define FTLIB_ERR_INTERFACE_EC 0xE0001FECL
1219  #define FTLIB_ERR_INTERFACE_ED 0xE0001FEDL
1220  #define FTLIB_ERR_INTERFACE_EE 0xE0001FEEL
1221  #define FTLIB_ERR_INTERFACE_EF 0xE0001FEFL
1222 
1223  #define FTLIB_ERR_INTERFACE_F0 0xE0001FF0L
1224  #define FTLIB_ERR_INTERFACE_F1 0xE0001FF1L
1225  #define FTLIB_ERR_INTERFACE_F2 0xE0001FF2L
1226  #define FTLIB_ERR_INTERFACE_F3 0xE0001FF3L
1227  #define FTLIB_ERR_INTERFACE_F4 0xE0001FF4L
1228  #define FTLIB_ERR_INTERFACE_F5 0xE0001FF5L
1229  #define FTLIB_ERR_INTERFACE_F6 0xE0001FF6L
1230  #define FTLIB_ERR_INTERFACE_F7 0xE0001FF7L
1231  #define FTLIB_ERR_INTERFACE_F8 0xE0001FF8L
1232  #define FTLIB_ERR_INTERFACE_F9 0xE0001FF9L
1233  #define FTLIB_ERR_INTERFACE_FA 0xE0001FFAL
1234  #define FTLIB_ERR_INTERFACE_FB 0xE0001FFBL
1235  #define FTLIB_ERR_INTERFACE_FC 0xE0001FFCL
1236  #define FTLIB_ERR_INTERFACE_FD 0xE0001FFDL
1237  #define FTLIB_ERR_INTERFACE_FE 0xE0001FFEL
1238  #define FTLIB_ERR_INTERFACE_FF 0xE0001FFFL
1239 
1242 #ifdef __cplusplus
1243 }
1244 #endif
1245 
1246 #endif
1247 
1248 
1249