Simple example of the use of mail_driven_task library
Dependencies: mail-driven-task mbed-rtos mbed-src
Diff: kick_task/kick_task.cpp
- Revision:
- 0:7e8dc6570c55
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/kick_task/kick_task.cpp Mon Dec 22 04:02:35 2014 +0000 @@ -0,0 +1,47 @@ +#include "Task.h" +#include "taskdef.h" +#include "adc_task.h" + +void kickTaskMain(void const *argument) +{ + MailPacket *mail; + Task *self = (Task *)argument; + + while (true) { + mail = self->waitMail(); + switch(mail->messageId) { + case TMSG_ADC_DATA_NOTIFY: + case TMSG_ADC_AVEDATA_NOTIFY: + { + AdcData *data = (AdcData *)mail->packet; + if (mail->messageId == TMSG_ADC_DATA_NOTIFY) { + self->log(LOG_INFO, + "recieve ADC_DATA_NOTIFY <a0=%.2f, a1=%.2f>", + data->a0, data->a1); + } else { + self->log(LOG_INFO, + "recieve ADC_AVEDATA_NOTIFY <a0=%.2f, a1=%.2f>", + data->a0, data->a1); + Task::sendMail(TID_LED, TMSG_LED_STOP_BLINK, NULL); + } + delete data; + break; + } + case TMSG_KICK_TEST1: + self->log(LOG_INFO, "recieve KICK_TEST1"); + Task::sendMail(TID_ADC, TMSG_ADC_DATA_REQ, NULL); + break; + case TMSG_KICK_TEST2: { + self->log(LOG_INFO, "recieve KICK_TEST2"); + int *i = new int; + *i = 10; + Task::sendMail(TID_LED, TMSG_LED_START_BLINK, NULL); + Task::sendMail(TID_ADC, TMSG_ADC_AVEDATA_REQ, i); + break; + } + default: + break; + } + self->deleteMail(mail); + } +} \ No newline at end of file