diff options
| author | Jun Wako <wakojun@gmail.com> | 2015-04-24 16:26:14 +0900 | 
|---|---|---|
| committer | Jun Wako <wakojun@gmail.com> | 2015-04-24 16:26:14 +0900 | 
| commit | 1fe4406f374291ab2e86e95a97341fd9c475fcb8 (patch) | |
| tree | 1be0e16b4b07b5a31ea97ec50a9eb13a288c3d27 /tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail | |
| parent | a20ef7052c6e937d2f7672dd59456e55a5c08296 (diff) | |
Squashed 'tmk_core/' changes from 7967731..b9e0ea0
b9e0ea0 Merge commit '7fa9d8bdea3773d1195b04d98fcf27cf48ddd81d' as 'tool/mbed/mbed-sdk'
7fa9d8b Squashed 'tool/mbed/mbed-sdk/' content from commit 7c21ce5
git-subtree-dir: tmk_core
git-subtree-split: b9e0ea08cb940de20b3610ecdda18e9d8cd7c552
Diffstat (limited to 'tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail')
| -rw-r--r-- | tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp | 43 | 
1 files changed, 43 insertions, 0 deletions
| diff --git a/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp new file mode 100644 index 0000000000..545fca34c7 --- /dev/null +++ b/tool/mbed/mbed-sdk/libraries/tests/rtos/cmsis/mail/main.cpp @@ -0,0 +1,43 @@ +#include "mbed.h" +#include "cmsis_os.h" + +typedef struct { +  float    voltage; /* AD result of measured voltage */ +  float    current; /* AD result of measured current */ +  uint32_t counter; /* A counter value               */ +} mail_t; + +osMailQDef(mail_box, 16, mail_t); +osMailQId  mail_box; + +void send_thread (void const *argument) { +    uint32_t i = 0; +    while (true) { +        i++; // fake data update +        mail_t *mail = (mail_t*)osMailAlloc(mail_box, osWaitForever); +        mail->voltage = (i * 0.1) * 33; +        mail->current = (i * 0.1) * 11; +        mail->counter = i; +        osMailPut(mail_box, mail); +        osDelay(1000); +    } +} + +osThreadDef(send_thread, osPriorityNormal, DEFAULT_STACK_SIZE); + +int main (void) { +    mail_box = osMailCreate(osMailQ(mail_box), NULL); +    osThreadCreate(osThread(send_thread), NULL); + +    while (true) { +        osEvent evt = osMailGet(mail_box, osWaitForever); +        if (evt.status == osEventMail) { +            mail_t *mail = (mail_t*)evt.value.p; +            printf("\nVoltage: %.2f V\n\r"   , mail->voltage); +            printf("Current: %.2f A\n\r"     , mail->current); +            printf("Number of cycles: %u\n\r", mail->counter); + +            osMailFree(mail_box, mail); +        } +    } +} | 
