Purpose: Simple application example with 2 threads communicating 32-bit integers through a Queue event-object.

Dependencies:   IHM_V2

Fork of mbed-os-example-mbed5-blinky by mbed-os-examples

/media/uploads/jacquesolivierklein/mbed-os-q-32-bits-tx-rx-2.png

Title : mbed-os-q-32-bits-tx-rx

Purpose: Simple application example with 2 threads communicating 32-bit integers through a Queue event-object. Target: L432KC / Nboard (from IUT-Cachan) Tested: YES (2019-01-09) Author: Jacques-Olivier Klein - IUT de CACHAN Date: 2018-02-10 rev. 2019-01-09 OS_STACK_SIZE=4096 Libraries: mbed-os rev5345:c966348(03jan2019) + IHMV2 (from IUT-Cachan) rev6:ad91067

Committer:
jacquesolivierklein
Date:
Wed Jan 09 12:26:40 2019 +0000
Revision:
28:5ac42b4bb038
Parent:
27:1fa50737793f
update for mbed-os-5.11 (and IHM-V2)

Who changed what in which revision?

UserRevisionLine numberNew contents of line
jacquesolivierklein 27:1fa50737793f 1 // Title : mbed-os-q-32-bits-tx-rx
jacquesolivierklein 27:1fa50737793f 2 // Author: Jacques-Olivier Klein - IUT de CACHAN
jacquesolivierklein 28:5ac42b4bb038 3 // Date: 2018-02-10 rev. 2019-01-06
jacquesolivierklein 27:1fa50737793f 4
Jonathan Austin 0:2757d7abb7d9 5 #include "mbed.h"
jacquesolivierklein 27:1fa50737793f 6 #include "IHM.h"
jacquesolivierklein 27:1fa50737793f 7
jacquesolivierklein 27:1fa50737793f 8 #define THE_Q_SIZE 4
Jonathan Austin 0:2757d7abb7d9 9
jacquesolivierklein 27:1fa50737793f 10 IHM ihm;
jacquesolivierklein 27:1fa50737793f 11
jacquesolivierklein 27:1fa50737793f 12 DigitalOut L0 (PB_3) ; // led L0
jacquesolivierklein 27:1fa50737793f 13 DigitalOut L1 (PA_7) ; // led L1
jacquesolivierklein 27:1fa50737793f 14 DigitalOut L2 (PA_6) ; // led L2
jacquesolivierklein 27:1fa50737793f 15
jacquesolivierklein 27:1fa50737793f 16 void tx_q();
jacquesolivierklein 27:1fa50737793f 17 void rx_q();
Jonathan Austin 0:2757d7abb7d9 18
jacquesolivierklein 27:1fa50737793f 19 Thread thread_tx_q;
jacquesolivierklein 27:1fa50737793f 20 Thread thread_rx_q;
jacquesolivierklein 27:1fa50737793f 21
jacquesolivierklein 27:1fa50737793f 22 Queue<int, THE_Q_SIZE> the_queue;
jacquesolivierklein 27:1fa50737793f 23
jacquesolivierklein 27:1fa50737793f 24 int main(void)
jacquesolivierklein 27:1fa50737793f 25 { ihm.LCD_clear();
jacquesolivierklein 27:1fa50737793f 26 ihm.LCD_printf("q-32b-tx-rx-%s %s",__DATE__,__TIME__);
jacquesolivierklein 27:1fa50737793f 27 printf("mbed-os-q-32-bits-tx-rx-%s %s\n\r",__DATE__,__TIME__);
jacquesolivierklein 28:5ac42b4bb038 28 printf("OS_STACK_SIZE:%d\n\r", OS_STACK_SIZE);
jacquesolivierklein 27:1fa50737793f 29
jacquesolivierklein 27:1fa50737793f 30 thread_tx_q.start(tx_q);
jacquesolivierklein 27:1fa50737793f 31 thread_rx_q.start(rx_q);
jacquesolivierklein 27:1fa50737793f 32
jacquesolivierklein 27:1fa50737793f 33 while(1){
jacquesolivierklein 28:5ac42b4bb038 34 wait(3.000);
jacquesolivierklein 27:1fa50737793f 35 L0=!L0;
jacquesolivierklein 28:5ac42b4bb038 36 printf("* [pid-%d]Main \n\r",osThreadGetId());
Jonathan Austin 0:2757d7abb7d9 37 }
Jonathan Austin 0:2757d7abb7d9 38 }
jacquesolivierklein 27:1fa50737793f 39
jacquesolivierklein 27:1fa50737793f 40 void tx_q (){
jacquesolivierklein 27:1fa50737793f 41 static int j=0;
jacquesolivierklein 27:1fa50737793f 42 while (1){
jacquesolivierklein 27:1fa50737793f 43 L1 = ! L1;
jacquesolivierklein 27:1fa50737793f 44 printf(" * Tx_q data:%d\n\r", j);
jacquesolivierklein 27:1fa50737793f 45 the_queue.put((int*)j++);
jacquesolivierklein 28:5ac42b4bb038 46 wait(1.000);
jacquesolivierklein 27:1fa50737793f 47 }
jacquesolivierklein 27:1fa50737793f 48 }
jacquesolivierklein 27:1fa50737793f 49
jacquesolivierklein 27:1fa50737793f 50 void rx_q (){
jacquesolivierklein 27:1fa50737793f 51 osEvent evt;
jacquesolivierklein 27:1fa50737793f 52 while (true) {
jacquesolivierklein 27:1fa50737793f 53 evt = the_queue.get();
jacquesolivierklein 27:1fa50737793f 54 L2 = ! L2;
jacquesolivierklein 27:1fa50737793f 55 if (evt.status == osEventMessage) {
jacquesolivierklein 27:1fa50737793f 56 printf(" *Rx_q data:%d\n\r", evt.value.v);
jacquesolivierklein 27:1fa50737793f 57 }
jacquesolivierklein 27:1fa50737793f 58 }
jacquesolivierklein 27:1fa50737793f 59 }