/*                                                                     *
*   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 TCUSB48IO                *
*                                                                      *
* (c)2006 3C CONCEPT S.A.                Version 1.00 du 09/11/2006    *
*                                                                      *
* -------------------------------------------------------------------- *
* Fichier a inclure dans le programme principal 
* 
*/
/*----------------------------------------------------------------------------
**  Multi-inclusion support.
**--------------------------------------------------------------------------*/

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


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

#define maxcartes     8   /* N° de carte de 1 à 4 */

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

#define erNoError     0   /* OK */
#define erAdresse     1   /* Numero de serie incorrect*/
#define erCarte       2   /* N° de module incorrect  */
#define erNoInit      3   /* Pas de module TC/USB-48IO détecté */
#define erPort        4   /* Module non initialisé */
#define erRelecture   6   /* erreur */
#define erDriver      7   /* erreur */
#define erFonction    8   /* Erreur à la fermeture */



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

#ifdef	__cplusplus
extern	"C"	{
#endif

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

#define	TCUSB48IODLL	__declspec (dllimport) 
#define APPEL			__stdcall

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

TCUSB48IODLL long APPEL TCUSB48IO_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  */



TCUSB48IODLL long APPEL TCUSB48IO_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 TCUSB48IO_xxx
  Fermer la session par TCUSB48IO_Close */

TCUSB48IODLL long APPEL TCUSB48IO_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 est vide alors ouvre le premier module détecté.
  A utiliser avant tout autre appel a une fonction TCUSB48IO_xxx
  Fermer la session par TCUSB48IO_Close */


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

TCUSB48IODLL long APPEL TCUSB48IO_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 */

TCUSB48IODLL long APPEL TCUSB48IO_Output(long NModule, WORD Data);

/* Envoi sur les sorties du module indiqué la valeur
  contenue dans la variable Data (16 bits), un code erreur correspond a la valeur
  retournee par la fonction */

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

TCUSB48IODLL long APPEL TCUSB48IO_BitInput(long NModule,long Entree);

/* Lecture de l'état d'une entrée (1 à 32) du module spécifié */



TCUSB48IODLL void APPEL TCUSB48IO_BitOutput(long NModule,long Sortie,long etat);

/* Place la sortie (1 à 16) du module spécifiée dans l'état indiqué (0 ou 1) */



TCUSB48IODLL long APPEL  TCUSB48IO_BitReadBack(long NModule,long Sortie);

/* Relecture de l'état d'une sortie (1 à 15) du module spécifié */



TCUSB48IODLL long APPEL TCUSB48IO_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 (32 bits), un code erreur correspond a la valeur
  retournee par la fonction */



TCUSB48IODLL void APPEL TCUSB48IO_WdgRun(long NModule);
/* Arme la surveillance du chien de garde sur le module spécifié */

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

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

TCUSB48IODLL void APPEL TCUSB48IO_ResetPort(long NModule);
/* Reinitialise le port USB du module */


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

TCUSB48IODLL BYTE APPEL TCUSB48IO_Version();

/* Lecture de la version de la DLL, le retour se fait par la valeur retournee par la fonction */

// Fin TCUSB48IO.INC }
#ifdef __cplusplus
}
#endif

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