BlinkThreadCallback2LED

Committer:
alessioburatti
Date:
Fri Nov 16 12:00:34 2018 +0000
Revision:
1:e2af1ad1b1bb
Parent:
0:13988e5bca16
Done

Who changed what in which revision?

UserRevisionLine numberNew contents of line
lmottola 0:13988e5bca16 1 #include "mbed.h"
lmottola 0:13988e5bca16 2
lmottola 0:13988e5bca16 3 DigitalOut led1(LED1);
alessioburatti 1:e2af1ad1b1bb 4 DigitalOut led2(LED2);
alessioburatti 1:e2af1ad1b1bb 5
alessioburatti 1:e2af1ad1b1bb 6 Thread thread1;
alessioburatti 1:e2af1ad1b1bb 7 Thread thread2;
alessioburatti 1:e2af1ad1b1bb 8
alessioburatti 1:e2af1ad1b1bb 9 bool is_thread1_done = false;
alessioburatti 1:e2af1ad1b1bb 10 bool is_thread2_done = true;
lmottola 0:13988e5bca16 11
alessioburatti 1:e2af1ad1b1bb 12 void blink(bool * this_is_done, DigitalOut * led) {
alessioburatti 1:e2af1ad1b1bb 13 is_thread1_done = false;
alessioburatti 1:e2af1ad1b1bb 14 is_thread2_done = false;
alessioburatti 1:e2af1ad1b1bb 15 *led = 1;
alessioburatti 1:e2af1ad1b1bb 16 wait(1);
alessioburatti 1:e2af1ad1b1bb 17 *led = 0;
alessioburatti 1:e2af1ad1b1bb 18 *this_is_done = true;
alessioburatti 1:e2af1ad1b1bb 19 }
alessioburatti 1:e2af1ad1b1bb 20
alessioburatti 1:e2af1ad1b1bb 21 void led1_thread(DigitalOut * led) {
alessioburatti 1:e2af1ad1b1bb 22 while (true) {
alessioburatti 1:e2af1ad1b1bb 23 if(is_thread2_done){
alessioburatti 1:e2af1ad1b1bb 24 blink(&is_thread1_done, led);
alessioburatti 1:e2af1ad1b1bb 25 }
lmottola 0:13988e5bca16 26 }
lmottola 0:13988e5bca16 27 }
lmottola 0:13988e5bca16 28
alessioburatti 1:e2af1ad1b1bb 29 void led2_thread(DigitalOut * led) {
alessioburatti 1:e2af1ad1b1bb 30 while (true) {
alessioburatti 1:e2af1ad1b1bb 31 if(is_thread1_done){
alessioburatti 1:e2af1ad1b1bb 32 blink(&is_thread2_done, led);
alessioburatti 1:e2af1ad1b1bb 33 }
alessioburatti 1:e2af1ad1b1bb 34 }
alessioburatti 1:e2af1ad1b1bb 35 }
alessioburatti 1:e2af1ad1b1bb 36
lmottola 0:13988e5bca16 37 int main() {
alessioburatti 1:e2af1ad1b1bb 38 thread1.start(callback(led1_thread, &led1));
alessioburatti 1:e2af1ad1b1bb 39 thread2.start(callback(led2_thread, &led2));
alessioburatti 1:e2af1ad1b1bb 40 thread1.join();
alessioburatti 1:e2af1ad1b1bb 41 thread2.join();
lmottola 0:13988e5bca16 42 }