Skip to content

Commit 75747df

Browse files
author
Cruz Monrreal
authored
Merge pull request #9 from scartmell-arm/add-example-queue
Add Queue example code used in documentation to repository
2 parents 1663909 + 91b66fe commit 75747df

File tree

3 files changed

+47
-0
lines changed

3 files changed

+47
-0
lines changed

Queue/README.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
# Queue Example
2+
3+
This example shows Queue and MemoryPool managing measurements.
4+

Queue/main.cpp

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
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+
}

Queue/mbed-os.lib

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
https://github.com/ARMmbed/mbed-os/#c53d51fe9220728bf8ed27afe7afc1ecc3f6f5d7

0 commit comments

Comments
 (0)