/*                                                                     *
*   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 TCUSB16IO               *
*                                                                      *
* (c)2006-2017 3C CONCEPT S.A.S                                        *
*  V1.00 : DB : 08/11/2006 :creation				                   *
*  V1.01 : JT : 05/05/2017 :ajout fonctions latch					   *
*                                                                      *
* -------------------------------------------------------------------- *
* Fichier a inclure dans le programme principal 
* 
*/
/*----------------------------------------------------------------------------
**  Multi-inclusion support.
**--------------------------------------------------------------------------*/

#ifndef	__TCUSB16IO__
#define	__TCUSB16IO__
  
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-16IO 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	TCUSB16IODLL	__declspec (dllimport) 
#define APPEL			__stdcall

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

TCUSB16IODLL long APPEL TCUSB16IO_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  */

TCUSB16IODLL long APPEL TCUSB16IO_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 TCUSB16IO_xxx
  Fermer la session par TCUSB16IO_Close */

TCUSB16IODLL long APPEL TCUSB16IO_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 TCUSB16IO_xxx
  Fermer la session par TCUSB16IO_Close */

TCUSB16IODLL long APPEL TCUSB16IO_OpenN_InitOutput(long NModule,DWORD * NumSerie,BYTE Data);
/* Initialise le driver, affecte le numéro de série du module au numéro de module
  spécifié (1 à 8) et met les sorties à Data. si numéro de série = 0 alors ouvre le premier module détecté.
  A utiliser avant tout autre appel a une fonction TCUSB16IO_xxx
  Fermer la session par TCUSB16IO_Close */
  
TCUSB16IODLL long APPEL TCUSB16IO_Close(long NModule);
/* Termine la session et ferme le driver (indispensable à la fin du programme) */

TCUSB16IODLL long APPEL TCUSB16IO_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 */

TCUSB16IODLL long APPEL TCUSB16IO_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 */

TCUSB16IODLL long APPEL TCUSB16IO_BitInput(long NModule,long Entree);
/* Lecture de l'état d'une entrée (1 à 11) du module spécifié */

TCUSB16IODLL void APPEL TCUSB16IO_BitOutput(long NModule,long Sortie,long etat);
/* Place la sortie (1 à 6) du module spécifiée dans l'état indiqué (0 ou 1) */

TCUSB16IODLL long APPEL  TCUSB16IO_BitReadBack(long NModule,long Sortie);
/* Relecture de l'état d'une sortie (1 à 6) du module spécifié */

TCUSB16IODLL long APPEL TCUSB16IO_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 */

TCUSB16IODLL long APPEL TCUSB16IO_Config(long NModule, BYTE Data);
/* Regle  sur le module spécifié:
  1) sur les bits 1 à 3, la valeur du filtre numérique sur les entrées Codeurs A,B,Z (0 à 6)
  0:24Mhz , 1:12Mhz, 2:6Mhz, 3:1.5Mhz, 4:750Khz, 5:375Khz, 6:187.5Khz
  2) La validité du TOPZ bit 4 à 1 ou 0
  un code erreur correspond a la valeur retournee par la fonction */

TCUSB16IODLL long APPEL TCUSB16IO_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 */

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

TCUSB16IODLL long APPEL TCUSB16IO_ConfigLatch(long NModule, BYTE Data);
/* Configure sur le module spécifié :
	1)	sur les bits 1 à 3 de data, le mode de latch 1 du codeur possible sur l’entrée 7 
	(de 0 à 3 avec 0:Pas de latch, 1 : Latch sur front montant de l’entrée 7, 
	2 : Latch sur front descendant de l’entrée 7, 3 : Latch sur changement d’état de l’entrée 7)
	2)	sur les bits 5 à 7 de data, le mode de latch 2 du codeur possible sur l’entrée 8 
	(de 0 à 3 avec 0:Pas de latch, 1 : Latch sur front montant de l’entrée 8, 
	2 : Latch sur front descendant de l’entrée 8, 3 : Latch sur changement d’état de l’entrée 8)
  Un code erreur correspond à la valeur retournée par la fonction
*/

TCUSB16IODLL long APPEL TCUSB16IO_Latch(long NModule, BYTE Latch, long * Data);
/* Lecture de la valeur du latch spécifié (de 1 à 2) du codeur du module spécifié. Le retour se fait par paramètre 
  dans la variable Data (32 bits signé).
  Un code erreur correspond à la valeur retournée par la fonction
*/

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

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

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

TCUSB16IODLL void APPEL TCUSB16IO_ResetPort(long NModule);
/* Reinitialise le port USB du module */

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

TCUSB16IODLL long APPEL TCUSB16IO_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 TCUSB16IO.INC }
#ifdef __cplusplus
}
#endif

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