Note! This project has moved to github.com/armmbed/mbed-events

Dependents:   SimpleHTTPExample

This repository has been superceded

This project has moved to mbed-events

Composable event loops combine the cheap synchronicity of event loops with the composability of preempted threads.

Two modular event queue classes are provided:

  • EventLoop - for loops coupled with a c++ managed thread
  • EventQueue - for manually managed event queues

The Event class takes advantage of the extensibility of FuncPtr to allow an event to be passed through APIs as a normal function.

More information on composable event loops.

Revision:
20:2f9d9c53a5af
Parent:
16:ff5d48fcce1b
--- a/EventLoop.h	Mon Apr 18 12:59:37 2016 -0500
+++ b/EventLoop.h	Mon Apr 18 13:22:21 2016 -0500
@@ -16,7 +16,11 @@
      *  @param priority         Initial priority of the thread
      *                          (default: osPriorityNormal)
      *  @param event_count      Number of events to allow enqueueing at once
+     *                          (default: 32)
      *  @param event_context    Max size of arguments passed with an event
+     *                          (default: 0)
+     *  @param event_pointer    Pointer to memory area to be used for events
+     *                          (default: NULL)
      *  @param stack_size       Stack size (in bytes) requirements for the thread
      *                          (default: DEFAULT_STACK_SIZE)
      *  @param stack_pointer    Pointer to stack area to be used by the thread
@@ -25,6 +29,7 @@
     EventLoop(osPriority priority=osPriorityNormal,
               unsigned event_count=32,
               unsigned event_context=0,
+              unsigned char *event_pointer=NULL,
               uint32_t stack_size=DEFAULT_STACK_SIZE,
               unsigned char *stack_pointer=NULL);
 
@@ -33,7 +38,11 @@
      *  @param priority         Initial priority of the thread
      *                          (default: osPriorityNormal)
      *  @param event_count      Number of events to allow enqueueing at once
+     *                          (default: 32)
      *  @param event_context    Max size of arguments passed with an event
+     *                          (default: 0)
+     *  @param event_pointer    Pointer to memory area to be used for events
+     *                          (default: NULL)
      *  @param stack_size       Stack size (in bytes) requirements for the thread
      *                          (default: DEFAULT_STACK_SIZE)
      *  @param stack_pointer    Pointer to stack area to be used by the thread
@@ -43,6 +52,7 @@
               osPriority priority=osPriorityNormal,
               unsigned event_count=32,
               unsigned event_context=0,
+              unsigned char *event_pointer=NULL,
               uint32_t stack_size=DEFAULT_STACK_SIZE,
               unsigned char *stack_pointer=NULL);