Loading...
Searching...
No Matches
_topic.h
Go to the documentation of this file.
1
4
5// ALLOW FORMATTING
6#ifndef PRIVATETOPIC_H
7#define PRIVATETOPIC_H
8
9#include "topic.h"
10
11#include "stdbool.h"
12
13#define WAIT_COMMENT xQueueReceive
14
24#define DECLARE_TOPIC(topic) \
25 PrivateTopic topic; \
26 extern const SubInbox_t __##topic##_subscriptions_start[]; \
27 extern const SubInbox_t __##topic##_subscriptions_end[];
28
42#define INIT_TOPIC(topic, commentInboxSize, messageSize) \
43 topic.public.commentInbox = xQueueCreate(commentInboxSize, messageSize); \
44 if (topic.public.commentInbox == NULL) \
45 while (1); \
46 topic.subscriptions = __##topic##_subscriptions_start; \
47 topic.numSubscriptions = __##topic##_subscriptions_end - __##topic##_subscriptions_start;
48
60#define CREATE_TOPIC(topic, commentInboxSize, messageSize) \
61 DECLARE_TOPIC(topic) \
62 __attribute__((constructor)) static void startTopic() { \
63 INIT_TOPIC(topic, commentInboxSize, messageSize) \
64 }
65
73typedef struct PrivateTopic {
74 Topic public;
75 const SubInbox_t *subscriptions;
78
79bool Topic_publish(PrivateTopic *topic, uint8_t *article);
80
81#endif
bool Topic_publish(PrivateTopic *topic, uint8_t *article)
Publish an "article" to all discovered subscribers of a topic.
Definition topic.c:74
const SubInbox_t * subscriptions
Subscription inbox array pointer.
Definition _topic.h:75
size_t numSubscriptions
Number of subscriptions to the topic.
Definition _topic.h:76
Internal representation of a Topic instance.
Definition _topic.h:73
Public representation of a Topic.
Definition topic.h:71