13#define WAIT_COMMENT xQueueReceive
24#define DECLARE_TOPIC(topic) \
26 extern const SubInbox_t __##topic##_subscriptions_start[]; \
27 extern const SubInbox_t __##topic##_subscriptions_end[];
42#define INIT_TOPIC(topic, commentInboxSize, messageSize) \
43 topic.public.commentInbox = xQueueCreate(commentInboxSize, messageSize); \
44 if (topic.public.commentInbox == NULL) \
46 topic.subscriptions = __##topic##_subscriptions_start; \
47 topic.numSubscriptions = __##topic##_subscriptions_end - __##topic##_subscriptions_start;
60#define CREATE_TOPIC(topic, commentInboxSize, messageSize) \
61 DECLARE_TOPIC(topic) \
62 __attribute__((constructor)) static void startTopic() { \
63 INIT_TOPIC(topic, commentInboxSize, messageSize) \
bool Topic_publish(PrivateTopic *topic, uint8_t *article)
Publish an "article" to all discovered subscribers of a topic.
const SubInbox_t * subscriptions
Subscription inbox array pointer.
size_t numSubscriptions
Number of subscriptions to the topic.
Internal representation of a Topic instance.
Public representation of a Topic.