-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathDemo.c
More file actions
85 lines (65 loc) · 1.64 KB
/
Demo.c
File metadata and controls
85 lines (65 loc) · 1.64 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
#include <stdint.h>
#include <stddef.h>
#include <stdlib.h>
typedef struct message_t {
struct message_t* next;
int id;
size_t len;
uint8_t* data;
} message_t;
#define TEMPLATE_PREFIX message
#define TEMPLATE_STRUCT message_t
#define TEMPLATE_NEXT next
#include "LinkedList.h"
message_t * messages;
void receive_message(int id, size_t len, uint8_t* data)
{
static message_t** last_m = NULL;
message_t* m = malloc(sizeof(message_t));
if (m) {
*m = (message_t){
.id = id,
.len = len,
.data = data,
};
if (!last_m) last_m = &messages;
message_push(last_m, m);
last_m = &m->next;
}
}
void print_messages(void)
{
LL_ITERATOR it;
message_t* m;
for_each(message, &messages, m, it)
{
printf("%d, len:%d:, %s\n", m->id, m->len, m->data);
}
}
void receive_message2(int id, size_t len, uint8_t* data)
{
static message_t** last_m = NULL;
message_t* m = malloc(sizeof(message_t));
if (m) {
*m = (message_t){
.id = id,
.len = len,
.data = data,
};
if (!last_m) last_m = &messages;
message_push(last_m, m);
last_m = &m->next;
}
}
void run_demo(void)
{
receive_message(1, 25, "this is the 1st message");
receive_message(2, 25, "this is the 2nd message");
receive_message(3, 25, "this is the 3rd message");
print_messages();
messages = NULL;
receive_message2(1, 25, "this is the 1st message");
receive_message2(2, 25, "this is the 2nd message");
receive_message2(3, 25, "this is the 3rd message");
print_messages();
}