/* -------------------------------------------------------------------- *
*                                                                      *
*   3333   CCCC      CCCC  OOOO  N     N  CCCC  EEEEE  PPPP  TTTTTTT   *
*       3 C         C     O    O NN    N C      E      P   P    T      *
*       3 C         C     O    O N N   N C      E      P   P    T      *
*   3333  C         C     O    O N  N  N C      EEEE   PPPP     T      *
*       3 C         C     O    O N   N N C      E      P        T      *
*       3 C         C     O    O N    NN C      E      P        T      *
*   3333   CCCC      CCCC  OOOO  N     N  CCCC  EEEEE  P        T      *
*                                                                      *
*                                                                      *
*	     TCUSB16IO Dynamically Loaded Library For Linux                *
*                 (xx Inputs xx Outputs xx Counters)                   *
*                                                                      *
*                                                                      *
* (c)2008 3C CONCEPT S.A.                		 23/10/2008        *
*  Damien Bray                                                         *        
*  V1.0 : Cr�tion                                                     *
*  V1.1 : Ajout fonction OpenN,Version.
*  V1.2 : 03/11/15 : DB: Modif num version Dll
                                                                       *
* -------------------------------------------------------------------- *
*/

// Begin Header File
#ifndef _TCUSB16IO_H
#define _TCUSB16IO_H

#ifdef	__cplusplus
extern	"C"	{
#endif

#include "ftd2xx.h"      //header des fonctions FTDI     
/*----------------------------------------------------------------------------
**  Constants definition.
**--------------------------------------------------------------------------*/

#define maxmodule     8   /* N de carte de 1 �4 */
#define DLLVersion    5
			 
			 
			 
			 
/* Codes d'erreur g��� par les fonctions de base ci-dessous */
// arevoir
#define  erNoError    0   // OK 
#define  erNumSerie   1   // Incorrect Serial Number
#define  erModule     2   // Incorrect Module Number
#define  erNoModule   3   // No TC/USB-16IO Module detected
#define  erConfig     4   // No TC/USB-16IO Configuration file
#define  erOpen       5   // Open Error
#define  erNoInit     6   // No initialized Module
#define  erWrite      7	  // Write Error
#define  erRead       8	  // Read Error
#define  erRxBytes    9	  // Read Bytes Error 
#define  erPurge      10  // Purge Buffer Error
#define  erClose      11  // Close Error

// FTDI IO Buffer Sizes
//

#define FT_In_Buffer_Size   0x8000
#define FT_Out_Buffer_Size  0x8000


/*----------------------------------------------------------------------------
** Multi-language support
**--------------------------------------------------------------------------*/

                                                 

//prototypes des fonctions publiques
//operation de base:
 int  CheckConfigFile(DWORD * iVID, DWORD * iPID);
 void TCUSB16IO_DeviceList();						// Create the connected device list
 int  TCUSB16IO_Refresh(int NModule);                       /* Actualise les donn�s */
 
 int  TCUSB16IO_Open_N(int NModule,DWORD* NumSerie);          /* Initialise le driver*/
 int  TCUSB16IO_Open(int NModule,char ** NumSerie);          /* Initialise le driver*/
 int  TCUSB16IO_Close(int NModule);                         /* ferme le driver */
 int  TCUSB16IO_Input(int NModule, DWORD * Data);           /* Lecture des entr�s du module*/
 int  TCUSB16IO_Output(int NModule, BYTE Data);             /* Envoi sur les sorties du module */

/*************************************************************************************}
{********************** OPERATIONS SUR BITS ******************************************}
{*************************************************************************************/

 int  TCUSB16IO_BitInput(int NModule,int Entree);                /* Lecture d'une entr� du module  */
 void TCUSB16IO_BitOutput(int NModule,int Sortie,int etat);     /* commande une sortie du module */
 int  TCUSB16IO_BitReadBack(int NModule,int Sortie);             /* Relecture d'une sortie (1 �6) du module */
 int  TCUSB16IO_Counter(int NModule,int Entree,BYTE * Data);     /* Lecture du compteur de l'entr� du module indiqu�*/
 int  TCUSB16IO_Config(int NModule, BYTE Data);                   /* configure le module */
 int TCUSB16IO_Pos(int NModule,long int * Data);                /* Lecture du codeur du module */
 int  TCUSB16IO_ResetPos(int NModule);                            /* RAZ du codeur du module */
 
///////////////////////FONCTION DU WATCH DOG/////////////////////////////////////////

 void  TCUSB16IO_WdgRun(int NModule);              /* active le chien de garde*/
 void  TCUSB16IO_WdgStop(int NModule);             /* D�active le chien de garde  */
 void  TCUSB16IO_WdgRearm(int NModule);            /* Rearmement du chien de garde  */
 
 int TCUSB16IO_Version(int NModule,BYTE *Data1,  BYTE * Data2);

//////////////////////FONTION DE RE-INITIALISATION////////////////////////////////////
//non implantés dans pilotes FTDI Linux
 //void  TCUSB16IO_ResetPort(int NModule);                /* Reinitialise le port USB du module */
// void  TCUSB16IO_CyclePort(int NModule);                /* Deconnecte et reconnecte le port USB du module */


#ifdef __cplusplus
}
#endif


#endif	// End Header File
