#ifndef H_ED_ALARME_20040531173914
#define H_ED_ALARME_20040531173914

/* ---------------------------------------------------------------------
   (c) Emmanuel Delahaye 2004
   Project      :
   Function     : interface
   Module       : alarme
   File         : alarme.h
   Created      : 31-05-2004
   Modified     : 31-05-2004
   --------------------------------------------------------------------- */

/* ---------------------------------------------------------------------
   Log

   0.0 31-05-2004 Created
   1.0 31-05-2004 Initial version

   --------------------------------------------------------------------- */
#ifdef __cplusplus
extern  "C"
{
#endif

/* macros ============================================================== */

#define ALARME_VALUE_MIN -32767
#define ALARME_VALUE_MAX 32766

/* constants =========================================================== */
/* types =============================================================== */

/* ---------------------------------------------------------------------
   alarme_out_f
   ---------------------------------------------------------------------
   type de la fonction de sortie. 
   ---------------------------------------------------------------------
   I: on : 0 = OFF (alarme inactive) 1 = ON (alarme active)
   O: pas de retour                                        
   --------------------------------------------------------------------- */
   typedef void alarme_out_f (int on);

/* structures ========================================================== */

/* donnees internes */
   typedef struct
   {
      /*
         configuration 
       */
      int     seuil_declenchement;
      int     seuil_retour;
      alarme_out_f *pf_out;

      /*
         etat 
       */
      unsigned active:1;
   }
   alarme_s;

/* internal public functions =========================================== */
/* entry points ======================================================== */

/* ---------------------------------------------------------------------
   alarme_install_out()
   ---------------------------------------------------------------------
   Enregistrement de la fonction de sortie 'alarme'
   ---------------------------------------------------------------------
   I: contexte                  
   I: adresse de la fonction    
   O: retour : 0 = OK 1 = erreur
   --------------------------------------------------------------------- */
   int     alarme_install_out (alarme_s * this,
                               alarme_out_f * pf);

/* ---------------------------------------------------------------------
   alarme_trigger_level()
   ---------------------------------------------------------------------
   Reglage du seuil de declenchement
   ---------------------------------------------------------------------
   I: contexte                   
   I: valeur du seuil           
   O: retour : 0 = OK 1 = erreur 
   --------------------------------------------------------------------- */
   int     alarme_trigger_level (alarme_s * this,
                                 int level);

/* ---------------------------------------------------------------------
   alarme_return_level()
   ---------------------------------------------------------------------
   Reglage du seuil de retour
   ---------------------------------------------------------------------
   I: contexte                  
   I: valeur du seuil           
   O: retour : 0 = OK 1 = erreur
   --------------------------------------------------------------------- */
   int     alarme_return_level (alarme_s * this,
                                int level);

/* ---------------------------------------------------------------------
   alarme_eval()
   ---------------------------------------------------------------------
   Evaluation de la mesure. Detection des reactions eventuelles.
   ---------------------------------------------------------------------
   I: contexte                  
   I: valeur a evaluer
   O: retour : 0 = OK 1 = erreur
   --------------------------------------------------------------------- */
   int     alarme_eval (alarme_s * this,
                        int value);

/* public variables ==================================================== */

#ifdef __cplusplus
}
#endif

#endif                          /* guard */

/* Guards added by GUARD (c) ED 2000-2003 May 09 2004 Ver. 1.6 */
