jk

Dependencies:   mbed-rtos mbed

Fork of rtos_basic by mbed official

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "rtos.h"
00003 
00004 typedef struct {
00005     char *mensaje;
00006     int  msg_number;
00007 } msg_type;
00008  
00009 MemoryPool<msg_type, 16> mpool;
00010 Queue<msg_type, 16> queue;
00011  
00012 /* Send Thread */
00013 void producer_thread (void const *args) {
00014     uint32_t i = 0;
00015     int status;
00016     while (true) {
00017         i++; // fake data update
00018         msg_type *message = mpool.alloc();
00019         message->mensaje="Hola";
00020         message->msg_number=i;
00021         status = queue.put(message,1);
00022         printf("%d",status);
00023         printf("Message into queue: %d,%s\n\r", message->msg_number, message->mensaje);
00024         Thread::wait(500);
00025     }
00026 }
00027  
00028 int main (void) {
00029     Thread thread(producer_thread);
00030     int msg_count=0;
00031     while (true) {
00032         osEvent evt = queue.get();
00033         if (evt.status == osEventMessage) {
00034             msg_count++;
00035             msg_type *message = (msg_type*)evt.value.p;
00036             printf("Message out of queue : %d,%s\n\r", message->msg_number, message->mensaje);
00037             mpool.free(message);
00038             Thread::wait(1100);
00039         }
00040     }
00041 }
00042