jk

Dependencies:   mbed-rtos mbed

Fork of rtos_basic by mbed official

Revision:
7:4fa2695e0d63
Parent:
3:c92e21f305d8
--- a/main.cpp	Tue Jun 04 16:01:32 2013 +0100
+++ b/main.cpp	Thu Nov 03 15:40:17 2016 +0000
@@ -1,21 +1,42 @@
 #include "mbed.h"
 #include "rtos.h"
+
+typedef struct {
+    char *mensaje;
+    int  msg_number;
+} msg_type;
  
-DigitalOut led1(LED1);
-DigitalOut led2(LED2);
+MemoryPool<msg_type, 16> mpool;
+Queue<msg_type, 16> queue;
  
-void led2_thread(void const *args) {
+/* Send Thread */
+void producer_thread (void const *args) {
+    uint32_t i = 0;
+    int status;
     while (true) {
-        led2 = !led2;
-        Thread::wait(1000);
+        i++; // fake data update
+        msg_type *message = mpool.alloc();
+        message->mensaje="Hola";
+        message->msg_number=i;
+        status = queue.put(message,1);
+        printf("%d",status);
+        printf("Message into queue: %d,%s\n\r", message->msg_number, message->mensaje);
+        Thread::wait(500);
     }
 }
  
-int main() {
-    Thread thread(led2_thread);
-    
+int main (void) {
+    Thread thread(producer_thread);
+    int msg_count=0;
     while (true) {
-        led1 = !led1;
-        Thread::wait(500);
+        osEvent evt = queue.get();
+        if (evt.status == osEventMessage) {
+            msg_count++;
+            msg_type *message = (msg_type*)evt.value.p;
+            printf("Message out of queue : %d,%s\n\r", message->msg_number, message->mensaje);
+            mpool.free(message);
+            Thread::wait(1100);
+        }
     }
 }
+