Simple example of the use of mail_driven_task library

Dependencies:   mail-driven-task mbed-rtos mbed-src

Revision:
0:7e8dc6570c55
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/led_task/led_task.cpp	Mon Dec 22 04:02:35 2014 +0000
@@ -0,0 +1,50 @@
+#include "Task.h"
+#include "taskdef.h"
+
+DigitalOut led1(LED1);
+RtosTimer *blinkTimer;
+extern void ledToggle(void const *n);
+
+inline void ledTaskInit()
+{
+    led1 = 1;
+    blinkTimer = new RtosTimer(ledToggle, osTimerPeriodic, NULL);
+}
+
+void ledToggle(void const *n)
+{
+    led1 = !led1;
+}
+
+void ledTaskMain(void const *argument)
+{
+    Task *self = (Task *)argument;
+
+    ledTaskInit();
+
+    while (true) {
+        MailPacket *mail = self->waitMail();
+        switch(mail->messageId) {
+        case TMSG_LED_TURNON:
+            self->log(LOG_DEBUG, "TURNON");
+            led1 = 0;
+            break;
+        case TMSG_LED_TURNOFF:
+            self->log(LOG_DEBUG, "TURNOFF");
+            led1 = 1;
+            break;
+        case TMSG_LED_START_BLINK:
+            self->log(LOG_DEBUG, "START_BLINK");
+            blinkTimer->start(1000);
+            break;
+        case TMSG_LED_STOP_BLINK:
+            self->log(LOG_DEBUG, "STOP_BLINK");
+            blinkTimer->stop();
+            Task::sendMail(TID_LED, TMSG_LED_TURNOFF, NULL);
+            break;
+        default:
+            break;
+        }
+        self->deleteMail(mail);
+    }
+}
\ No newline at end of file