avnish aggarwal / Mbed 2 deprecated RTOS_QUEUE

Dependencies:   mbed-rtos mbed

Fork of rtos_queue 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     float    voltage;   /* AD result of measured voltage */
00006     float    current;   /* AD result of measured current */
00007     uint32_t counter;   /* A counter value               */
00008 } message_t;
00009 
00010 MemoryPool<message_t, 16> mpool;
00011 Queue<message_t, 16> queue;
00012 
00013 /* Send Thread */
00014 void send_thread (void const *args) {
00015     uint32_t i = 0;
00016     while (true) {
00017         i++; // fake data update
00018         message_t *message = mpool.alloc();
00019         message->voltage = (i * 0.1) * 33; 
00020         message->current = (i * 0.1) * 11;
00021         message->counter = i;
00022         queue.put(message);
00023         Thread::wait(1000);
00024     }
00025 }
00026 
00027 int main (void) {
00028     Thread thread(send_thread);
00029     
00030     while (true) {
00031         osEvent evt = queue.get();
00032         if (evt.status == osEventMessage) {
00033             message_t *message = (message_t*)evt.value.p;
00034             printf("\nVoltage: %.2f V\n\r"   , message->voltage);
00035             printf("Current: %.2f A\n\r"     , message->current);
00036             printf("Number of cycles: %u\n\r", message->counter);
00037             
00038             mpool.free(message);
00039         }
00040     }
00041 }