/*                                                                     *
*   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      *
*                                                                      *
*                   HEADER FILE POUR DLL/Win32 TCUSB18A               *
*                                                                      *
* (c)2010 3C CONCEPT S.A.S                Version 1.02 du 05/07/2010    *
*                                                                      *
* 1.01: 16/04/2009
* 1.02:05/07/2010: DB: correction description fonction "bit_input"
* 1.03:04/11/2014: DB: correction byte->BYTE
* -------------------------------------------------------------------- *

* Fichier a inclure dans le programme principal 
* 
*/
/*----------------------------------------------------------------------------
**  Multi-inclusion support.
**--------------------------------------------------------------------------*/

#ifndef	__TCUSB18A__
#define	__TCUSB18A__
  
typedef  unsigned char BYTE;           //1 octet                                                 
typedef  unsigned short int WORD ;     //2 octet
typedef  unsigned long int DWORD ;     //4 octet


/*----------------------------------------------------------------------------
**  Constants definition.
**--------------------------------------------------------------------------*/

#define maxmodule     8   /* N° de carte de 1 à 8 */

/* Codes d'erreur générés par les fonctions de base ci-dessous */

#define erNoError     0   /* OK */
#define erNumSerie    1   /* Numero de serie incorrect*/
#define erModule      2   /* N° de module incorrect  */
#define erNoModule    3   /* Pas de module TC/USB-18A détecté */
#define erNoInit      4   /* Module non initialisé */
#define erWrite       5   /* erreur */
#define erRead   	  6   /* erreur */
#define erClose       7   /* erreur à la fermeture */
#define erAnalogique  8   /* erreur consigne analogique  */
#define erVoie        9	  /* erreur voie analogique */



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

#ifdef	__cplusplus
extern	"C"	{
#endif

//----------------------------------------------------------------------------
// DLL mode support for Visual-C++
//----------------------------------------------------------------------------

#define	TCUSB18ADLL	__declspec (dllimport) 
#define APPEL			__stdcall

//prototypes des fonctions publiques
//operation de base:

TCUSB18ADLL long APPEL TCUSB18A_Refresh(long NModule);
/* Actualise les données (Entrées + Sorties + Compteurs) du module indiqué
  A utiliser apres toute fonction sur les sorties et avant toutes fonction sur les entrées et compteurs  */

TCUSB18ADLL long APPEL TCUSB18A_GetParams(long NModule);
TCUSB18ADLL long APPEL TCUSB18A_SetParams(long NModule);
TCUSB18ADLL long APPEL TCUSB18A_ModifyParams(long NModule, BYTE Voie,float A_Gain,float A_Offset);
TCUSB18ADLL long APPEL TCUSB18A_GetConfig(long NModule, long voie,float *gain ,float *offset );
  

TCUSB18ADLL long APPEL TCUSB18A_Open(long NModule,char * NumSerie);
/* Initialise le driver, affecte le numéro de série du module au numéro de module
  spécifié (1 à 8) et remet à 0 les sorties. si numéro de série est vide alors ouvre le premier module détecté.
  A utiliser avant tout autre appel a une fonction TCUSB18A_xxx
  Fermer la session par TCUSB18A_Close */


TCUSB18ADLL long APPEL TCUSB18A_OpenN(long NModule,DWORD * NumSerie);
/* Initialise le driver, affecte le numéro de série du module au numéro de module
  spécifié (1 à 8) et remet à 0 les sorties. si numéro de série = 0 alors ouvre le premier module détecté.
  A utiliser avant tout autre appel a une fonction TCUSB18A_xxx
  Fermer la session par TCUSB18A_Close */


TCUSB18ADLL long APPEL TCUSB18A_Close(long NModule);
/* Termine la session et ferme le driver (indispensable à la fin du programme) */


TCUSB18ADLL long APPEL TCUSB18A_Input(long NModule, DWORD * Data);
/* Lecture des entrées du module indiqué, le retour se fait par
  parametre dans la variable Data (32 bits), un code erreur correspond a la valeur
  retournee par la fonction */

  
TCUSB18ADLL long APPEL TCUSB18A_Output(long NModule, BYTE Data);
/* Envoi sur les sorties du module indiqué la valeur
  contenue dans la variable Data (8 bits), un code erreur correspond a la valeur
  retournee par la fonction */

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

TCUSB18ADLL long APPEL TCUSB18A_BitInput(long NModule,long entree,BYTE * Donnee);
/* Lecture de l'état d'une entrée (1 à 8) du module spécifié */


TCUSB18ADLL long APPEL TCUSB18A_BitOutput(long NModule,long Sortie,long etat);
/* {Place la sortie (1 à 4) du module spécifiée dans l'état indiqué (0 ou 1) */


TCUSB18ADLL long APPEL  TCUSB18A_BitReadBack(long NModule,long Sortie,BYTE *etat);
/*{ Relecture de l'état d'une sortie (1 à 4) du module spécifié }*/


TCUSB18ADLL long APPEL TCUSB18A_Counter(long NModule,long Entree,BYTE * Data);
/* Lecture du compteur de l'entrée spécifiée du module indiqué, le retour se fait par
  parametre dans la variable Data (8 bits), un code erreur correspond a la valeur
  retournee par la fonction */


TCUSB18ADLL long APPEL TCUSB18A_Config(long NModule, BYTE Data);
/* Regle  sur le module spécifié:
  2) La validité du TOPZ bit 4 à 1 ou 0
  un code erreur correspond a la valeur retournee par la fonction */

  
TCUSB18ADLL long APPEL TCUSB18A_Pos(long NModule,long * Data);
/* Lecture du codeur du module indiqué, le retour se fait par parametre dans la variable Data (32 bits signé),
  un code erreur correspond a la valeur retournee par la fonction }*/
  

TCUSB18ADLL long APPEL TCUSB18A_ResetPos(long NModule);
/* Remise à zéro du codeur du module indiqué,
  un code erreur correspond a la valeur retournee par la fonction */

TCUSB18ADLL long APPEL TCUSB18A_AnaIn(long NModule,BYTE Voie, short int *Data);
/*Lecture d'une voie analogique( de 1 à 4) du module indiqué (NModule). le retour se fait par parametre dans la variable Data (16 bits signé), La variable Data represente le nombre
de points convertisseur (ie sur 12bits).  Un code erreur correspond à la valeur retournée par la fonction */


TCUSB18ADLL long APPEL TCUSB18A_AnaInVolts(long NModule,BYTE Voie,double *Data);
/*Lecture d'une voie analogique( de 1 à 4) du module indiqué (NModule). le retour se fait par parametre dans la variable Data (nombre flottant 64 bits signé), La variable Data represente la tension mesurée en volts.
Un code erreur correspond à la valeur retournée par la fonction */


TCUSB18ADLL long APPEL TCUSB18A_AnaInmA(long NModule,BYTE Voie,double *Data);
/*Lecture d'une voie analogique( de 1 à 4) du module indiqué (NModule). le retour se fait par parametre dans la variable Data (nombre flottant 64 bits signé), La variable Data represente le courant mesurée en milli-ampères.
Un code erreur correspond à la valeur retournée par la fonction */


TCUSB18ADLL long APPEL TCUSB18A_AnaOut(long NModule,BYTE Voie,short int Data);
/*Envoi sur une des sorties analogiques du module indiqué la valeur contenue dans la variable Data (16 bits signé) . Le parametre Data represente le nombre
de points convertisseur (ie sur 12bits).  Un code erreur correspond à la valeur retournée par la fonction */


TCUSB18ADLL long APPEL TCUSB18A_AnaOutVolts(long NModule,BYTE Voie,double data);
/*Envoi sur une des sorties analogiques du module indiqué la valeur contenue dans la variable Data (nombre flottant 64 bits signé) . Le parametre Data represente la tension que l'on souhaite obtenir sur la sortie.
  Un code erreur correspond à la valeur retournée par la fonction */
  
  
  
TCUSB18ADLL void APPEL TCUSB18A_WdgRun(long NModule);
/* Arme la surveillance du chien de garde sur le module spécifié */


TCUSB18ADLL void APPEL TCUSB18A_WdgStop(long NModule);
/* Désactive la surveillance du chien de garde sur le module spécifié */


TCUSB18ADLL void APPEL TCUSB18A_WdgRearm(long NModule);
/* Rearmement du chien de garde sur le module spécifié */


TCUSB18ADLL void APPEL TCUSB18A_ResetPort(long NModule);
/* Reinitialise le port USB du module */


TCUSB18ADLL void APPEL TCUSB18A_CyclePort(long NModule);
/* Deconnecte et reconnecte le port USB du module */


TCUSB18ADLL long APPEL TCUSB18A_Version(long NModule,BYTE * Data1,BYTE * Data2);
/* Lecture de la version du firmware du module indiqué et de la DLL, le retour se fait par parametre dans les variables Data1 (module) et Data2 (DLL) (8 bits non signé),
  un code erreur correspond a la valeur retournee par la fonction */
  
  
  
  
 
  
// Fin TCUSB18A.h }
#ifdef __cplusplus
}
#endif

/*----------------------------------------------------------------------------
**  Multi-inclusion support.
**--------------------------------------------------------------------------*/
#endif
