   static bool echoState(FSM* fsm, uint8_t type)
   {
     Echo* echo = (Echo*) fsm;
-    if (events--) echo->_port->send(Event::USER_TYPE);
+    echo->_port->send(Event::USER_TYPE);
     return (1);
   }
 };

{
  // Initiate the counters and reset the watchdog ticks for measurement.
  // Note the resolution is only 16 ms ticks by default.
  uint32_t count = events = EVENTS_MAX;
  Watchdog::reset();

  // Send a first event to start the benchmark and dispatch events.
  ping.send(Event::USER_TYPE);
  while (count--) {
    Event event;
    Event::queue.await(&event);
    event.dispatch();


  // Capture the tick count and calculate the time per event and nr of cycles.
  uint16_t ticks = Watchdog::get_ticks();
  uint16_t ms_per_tick = Watchdog::ms_per_tick();
  uint32_t ms = ticks * ms_per_tick;
  uint32_t us_per_event = (ms * 1000L) / EVENTS_MAX;
  INFO("%l us per event (%l cycles)", us_per_event, us_per_event * IPUS);
}
