Listing 7 (update.c) Update Task

#include <synrtx.h>

#define OBSERVE 0
#define REPORT 1

static word eventCount;

static handler Observe(msg_t *msg_p) {
   io_putf("Update.Observe: eventCount = %w\n", ++eventCount);
}

static handler Report(msg_t *msg_p) {
   io_putf("Update.Report: eventCount = %w\n", eventCount);
   eventCount = 0;
}

task Update(void) {
   task_setHandler(2, Observe, Report);

   eventCount = 0;
   loop {
      /* give a fair access by rotating interrupt priorities */
      task_enableWait(NO_TIMEOUT, 2, OBSERVE, REPORT);
      task_enableWait(NO_TIMEOUT, 2, REPORT, OBSERVE);
   }
}