Pol Rodoreda Valeri
/
RTOS_colas
jk
Fork of rtos_basic by
Embed:
(wiki syntax)
Show/hide line numbers
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
Generated on Mon Jul 18 2022 01:28:43 by 1.7.2