/* test.c */

#include "inc/alarme.h"

#include <stdio.h>

/* macros ============================================================== */
/* constants =========================================================== */
/* types =============================================================== */
/* structures ========================================================== */
/* private variables =================================================== */
/* private functions =================================================== */

static void cb_alarme (int on)
{
   printf ("alarme = %s\n", on ? "ON" : "OFF");
}

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

int main (void)
{
   /* definition et initialisation de l'objet */
   alarme_s a = {0};
   int err;

#define TST(e)     \
   do              \
   {               \
      if (e != 0)  \
      {            \
         printf ("ERR at %s:%d\n", __FILE__, __LINE__); \
         goto ERR; \
      }            \
   }               \
   while (0)

   /* configuration */
   err = alarme_install_out (&a, cb_alarme);
   TST(err);

   err = alarme_trigger_level (&a, 10);
   TST(err);

   err = alarme_return_level (&a, 8);
   TST(err);

   /* evaluation */
   err = alarme_eval (&a, 9);
   TST(err);

   err = alarme_eval (&a, 10);
   TST(err);

   err = alarme_eval (&a, 11);
   TST(err);

   err = alarme_eval (&a, 10);
   TST(err);

   err = alarme_eval (&a, 9);
   TST(err);

   err = alarme_eval (&a, 8);
   TST(err);

   err = alarme_eval (&a, 7);
   TST(err);

   ERR:

   return 0;
}

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