Simple example of the use of mail_driven_task library
Dependencies: mail-driven-task mbed-rtos mbed-src
kick_task/kick_task.cpp@0:7e8dc6570c55, 2014-12-22 (annotated)
- Committer:
- mzta
- Date:
- Mon Dec 22 04:02:35 2014 +0000
- Revision:
- 0:7e8dc6570c55
Initial commit.
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
mzta | 0:7e8dc6570c55 | 1 | #include "Task.h" |
mzta | 0:7e8dc6570c55 | 2 | #include "taskdef.h" |
mzta | 0:7e8dc6570c55 | 3 | #include "adc_task.h" |
mzta | 0:7e8dc6570c55 | 4 | |
mzta | 0:7e8dc6570c55 | 5 | void kickTaskMain(void const *argument) |
mzta | 0:7e8dc6570c55 | 6 | { |
mzta | 0:7e8dc6570c55 | 7 | MailPacket *mail; |
mzta | 0:7e8dc6570c55 | 8 | Task *self = (Task *)argument; |
mzta | 0:7e8dc6570c55 | 9 | |
mzta | 0:7e8dc6570c55 | 10 | while (true) { |
mzta | 0:7e8dc6570c55 | 11 | mail = self->waitMail(); |
mzta | 0:7e8dc6570c55 | 12 | switch(mail->messageId) { |
mzta | 0:7e8dc6570c55 | 13 | case TMSG_ADC_DATA_NOTIFY: |
mzta | 0:7e8dc6570c55 | 14 | case TMSG_ADC_AVEDATA_NOTIFY: |
mzta | 0:7e8dc6570c55 | 15 | { |
mzta | 0:7e8dc6570c55 | 16 | AdcData *data = (AdcData *)mail->packet; |
mzta | 0:7e8dc6570c55 | 17 | if (mail->messageId == TMSG_ADC_DATA_NOTIFY) { |
mzta | 0:7e8dc6570c55 | 18 | self->log(LOG_INFO, |
mzta | 0:7e8dc6570c55 | 19 | "recieve ADC_DATA_NOTIFY <a0=%.2f, a1=%.2f>", |
mzta | 0:7e8dc6570c55 | 20 | data->a0, data->a1); |
mzta | 0:7e8dc6570c55 | 21 | } else { |
mzta | 0:7e8dc6570c55 | 22 | self->log(LOG_INFO, |
mzta | 0:7e8dc6570c55 | 23 | "recieve ADC_AVEDATA_NOTIFY <a0=%.2f, a1=%.2f>", |
mzta | 0:7e8dc6570c55 | 24 | data->a0, data->a1); |
mzta | 0:7e8dc6570c55 | 25 | Task::sendMail(TID_LED, TMSG_LED_STOP_BLINK, NULL); |
mzta | 0:7e8dc6570c55 | 26 | } |
mzta | 0:7e8dc6570c55 | 27 | delete data; |
mzta | 0:7e8dc6570c55 | 28 | break; |
mzta | 0:7e8dc6570c55 | 29 | } |
mzta | 0:7e8dc6570c55 | 30 | case TMSG_KICK_TEST1: |
mzta | 0:7e8dc6570c55 | 31 | self->log(LOG_INFO, "recieve KICK_TEST1"); |
mzta | 0:7e8dc6570c55 | 32 | Task::sendMail(TID_ADC, TMSG_ADC_DATA_REQ, NULL); |
mzta | 0:7e8dc6570c55 | 33 | break; |
mzta | 0:7e8dc6570c55 | 34 | case TMSG_KICK_TEST2: { |
mzta | 0:7e8dc6570c55 | 35 | self->log(LOG_INFO, "recieve KICK_TEST2"); |
mzta | 0:7e8dc6570c55 | 36 | int *i = new int; |
mzta | 0:7e8dc6570c55 | 37 | *i = 10; |
mzta | 0:7e8dc6570c55 | 38 | Task::sendMail(TID_LED, TMSG_LED_START_BLINK, NULL); |
mzta | 0:7e8dc6570c55 | 39 | Task::sendMail(TID_ADC, TMSG_ADC_AVEDATA_REQ, i); |
mzta | 0:7e8dc6570c55 | 40 | break; |
mzta | 0:7e8dc6570c55 | 41 | } |
mzta | 0:7e8dc6570c55 | 42 | default: |
mzta | 0:7e8dc6570c55 | 43 | break; |
mzta | 0:7e8dc6570c55 | 44 | } |
mzta | 0:7e8dc6570c55 | 45 | self->deleteMail(mail); |
mzta | 0:7e8dc6570c55 | 46 | } |
mzta | 0:7e8dc6570c55 | 47 | } |