Very simple cooperative round-robin task scheduler. See examples.

Dependents:   Garage_Control

Revision:
3:95ec5c83c2fe
Parent:
2:974a420997a9
--- a/SimpleScheduler.h	Fri Mar 04 12:40:14 2011 +0000
+++ b/SimpleScheduler.h	Fri Mar 04 13:10:39 2011 +0000
@@ -26,6 +26,8 @@
     @author        Andy Kirkham
 */
 
+#ifndef AJK_SIMPLESCHEDULER_H
+#define AJK_SIMPLESCHEDULER_H
 
 #include "mbed.h"
 #include <list>
@@ -41,6 +43,8 @@
  * @see SimpleScheduler
  * @see example1.h
  * @see example2.h
+ * @see example3.h
+ * @see example4.h
  * @see http://mbed.org/cookbook/SimpleScheduler
  *
  * @code
@@ -48,8 +52,14 @@
  *     task->attach(func);
  * @endcode
  * @code
- *     SimpleTask *task = new SimpleTask(100, func);
+ *     SimpleTask *task = new SimpleTask(100, func); // Every 100ms
+ *     SimpleTask *task = new SimpleTask(1.0, func); // Every 1second
  * @endcode
+ * 
+ * When creating new SimpleTasks you pass the time as a frequency
+ * of how often to call the task function. If the time is an integer
+ * then milliseconds is assumed. If the number you pass is a read (double)
+ * number then the time assumed is seconds.
  */
 class SimpleTask {
 public:
@@ -73,8 +83,6 @@
         return prev;
     }
     
-    SimpleTask() { init(); }
-    
     // Constructor with frequency in miliseconds
     SimpleTask(int f) { init(f); }
     
@@ -147,9 +155,11 @@
  * 
  * DigitalOut led1(LED1);
  * DigitalOut led2(LED2);
+ * DigitalOut led3(LED3);
  * 
  * void f1(SimpleTask *task) { led1 = !led1; }
  * void f2(SimpleTask *task) { led2 = !led2; }
+ * void f3(SimpleTask *task) { led3 = !led3; }
  * 
  * SimpleScheduler *scheduler;
  * 
@@ -158,8 +168,9 @@
  *     scheduler = new SimpleScheduler;
  *     
  *     scheduler
- *         ->addTask( new SimpleTask(0,   f1) )
- *         ->addTask( new SimpleTask(200, f2) )
+ *         ->addTask( new SimpleTask(0,   f1) ) // As often as possible
+ *         ->addTask( new SimpleTask(200, f2) ) // Every 200milliseconds
+ *         ->addTask( new SimpleTask(1.0, f3) ) // Once a second
  *     ;
  *     
  *     scheduler->run();    
@@ -207,3 +218,5 @@
 }; // namespace AjK ends.
 
 using namespace AjK;
+
+#endif
\ No newline at end of file