Simple example of the use of mail_driven_task library
Dependencies: mail-driven-task mbed-rtos mbed-src
led_task/led_task.cpp
- Committer:
- mzta
- Date:
- 2014-12-22
- Revision:
- 0:7e8dc6570c55
File content as of revision 0:7e8dc6570c55:
#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); } }