Synchronize two tasks by the help of an event signal. Thread2 changes the state of LED1 when an event flag arrives. Thread1 (the main thread) sends event flags at reguar intervals.

Dependencies:   mbed-rtos mbed

Committer:
icserny
Date:
Tue Feb 23 13:25:29 2016 +0000
Revision:
0:e2662deac7e9
First version

Who changed what in which revision?

UserRevisionLine numberNew contents of line
icserny 0:e2662deac7e9 1 /** 10_rtos_signals_ledblink
icserny 0:e2662deac7e9 2 *
icserny 0:e2662deac7e9 3 * Synchronize two tasks by the help of an event signal.
icserny 0:e2662deac7e9 4 * Thread2 changes the state of LED1 when an event flag arrives.
icserny 0:e2662deac7e9 5 * Thread1 (the main thread) sends event flags at reguar intervals.
icserny 0:e2662deac7e9 6 */
icserny 0:e2662deac7e9 7
icserny 0:e2662deac7e9 8 #include "mbed.h"
icserny 0:e2662deac7e9 9 #include "rtos.h"
icserny 0:e2662deac7e9 10
icserny 0:e2662deac7e9 11 DigitalOut led(LED1);
icserny 0:e2662deac7e9 12
icserny 0:e2662deac7e9 13 void led_thread(void const *argument)
icserny 0:e2662deac7e9 14 {
icserny 0:e2662deac7e9 15 while (true) {
icserny 0:e2662deac7e9 16 // Signal flags that are reported as event are automatically cleared.
icserny 0:e2662deac7e9 17 osEvent evt = Thread::signal_wait(0x1); //Wait for a signal
icserny 0:e2662deac7e9 18 led = !led;
icserny 0:e2662deac7e9 19 }
icserny 0:e2662deac7e9 20 }
icserny 0:e2662deac7e9 21
icserny 0:e2662deac7e9 22 int main (void)
icserny 0:e2662deac7e9 23 {
icserny 0:e2662deac7e9 24 Thread thread2(led_thread);
icserny 0:e2662deac7e9 25
icserny 0:e2662deac7e9 26 while (true) {
icserny 0:e2662deac7e9 27 Thread::wait(1000);
icserny 0:e2662deac7e9 28 thread2.signal_set(0x1);
icserny 0:e2662deac7e9 29 }
icserny 0:e2662deac7e9 30 }