File tree Expand file tree Collapse file tree 3 files changed +47
-0
lines changed Expand file tree Collapse file tree 3 files changed +47
-0
lines changed Original file line number Diff line number Diff line change
1
+ # Queue Example
2
+
3
+ This example shows Queue and MemoryPool managing measurements.
4
+
Original file line number Diff line number Diff line change
1
+ #include " mbed.h"
2
+
3
+ typedef struct {
4
+ float voltage; /* AD result of measured voltage */
5
+ float current; /* AD result of measured current */
6
+ uint32_t counter; /* A counter value */
7
+ } message_t ;
8
+
9
+ MemoryPool<message_t , 16 > mpool;
10
+ Queue<message_t , 16 > queue;
11
+ Thread thread;
12
+
13
+ /* Send Thread */
14
+ void send_thread (void ) {
15
+ uint32_t i = 0 ;
16
+ while (true ) {
17
+ i++; // fake data update
18
+ message_t *message = mpool.alloc ();
19
+ message->voltage = (i * 0.1 ) * 33 ;
20
+ message->current = (i * 0.1 ) * 11 ;
21
+ message->counter = i;
22
+ queue.put (message);
23
+ wait (1 );
24
+ }
25
+ }
26
+
27
+ int main (void ) {
28
+ thread.start (callback (send_thread));
29
+
30
+ while (true ) {
31
+ osEvent evt = queue.get ();
32
+ if (evt.status == osEventMessage) {
33
+ message_t *message = (message_t *)evt.value .p ;
34
+ printf (" \r\n " );
35
+ printf (" Voltage: %.2f V\r\n " , message->voltage );
36
+ printf (" Current: %.2f A\r\n " , message->current );
37
+ printf (" Number of cycles: %u\r\n " , message->counter );
38
+
39
+ mpool.free (message);
40
+ }
41
+ }
42
+ }
Original file line number Diff line number Diff line change
1
+ https://github.com/ARMmbed/mbed-os/#c53d51fe9220728bf8ed27afe7afc1ecc3f6f5d7
You can’t perform that action at this time.
0 commit comments