ICARUS OS (Intelligent Cooperative Architecture for Real-time Unified Systems) 0.1.0
Preemptive Real-Time Operating System for ARM Cortex-M7
Loading...
Searching...
No Matches
sb.h
Go to the documentation of this file.
1
37#ifndef ICARUS_SB_H
38#define ICARUS_SB_H
39
40#ifdef __cplusplus
41extern "C" {
42#endif
43
44#include <stdint.h>
45#include <stdbool.h>
46
47/* ============================================================================
48 * CONFIGURATION
49 * ========================================================================= */
50
61#ifndef SB_MAX_ROUTES
62#define SB_MAX_ROUTES 32
63#endif
64
69#ifndef SB_MAX_SUBS_PER_MSG
70#define SB_MAX_SUBS_PER_MSG 4
71#endif
72
75/* ============================================================================
76 * TYPES
77 * ========================================================================= */
78
86typedef uint16_t sb_msg_id_t;
87
88/* ============================================================================
89 * PUBLIC API
90 * ========================================================================= */
91
98void sb_init(void);
99
112bool sb_subscribe(sb_msg_id_t msg_id, uint8_t pipe_idx);
113
123bool sb_unsubscribe(sb_msg_id_t msg_id, uint8_t pipe_idx);
124
138uint8_t sb_publish(sb_msg_id_t msg_id, const uint8_t *data, uint8_t len);
139
146uint8_t sb_subscriber_count(sb_msg_id_t msg_id);
147
152uint8_t sb_route_count(void);
153
154/* ============================================================================
155 * PRIVILEGED IMPLEMENTATIONS (Internal — Do Not Call Directly)
156 * ========================================================================= */
157
158void __sb_init(void);
159bool __sb_subscribe(sb_msg_id_t msg_id, uint8_t pipe_idx);
160bool __sb_unsubscribe(sb_msg_id_t msg_id, uint8_t pipe_idx);
161uint8_t __sb_publish(sb_msg_id_t msg_id, const uint8_t *data, uint8_t len);
162uint8_t __sb_subscriber_count(sb_msg_id_t msg_id);
163uint8_t __sb_route_count(void);
164
165#ifdef __cplusplus
166}
167#endif
168
169#endif /* ICARUS_SB_H */
uint16_t sb_msg_id_t
Software Bus message identifier.
Definition sb.h:86
bool sb_subscribe(sb_msg_id_t msg_id, uint8_t pipe_idx)
Subscribe a pipe to a message ID.
Definition sb.c:236
void sb_init(void)
Initialize the software bus.
Definition sb.c:221
bool sb_unsubscribe(sb_msg_id_t msg_id, uint8_t pipe_idx)
Remove a subscription.
Definition sb.c:262
uint8_t __sb_subscriber_count(sb_msg_id_t msg_id)
Privileged implementation of sb_subscriber_count().
Definition sb.c:200
uint8_t sb_route_count(void)
Return the total number of route entries in use.
Definition sb.c:334
bool __sb_subscribe(sb_msg_id_t msg_id, uint8_t pipe_idx)
Privileged implementation of sb_subscribe().
Definition sb.c:110
void __sb_init(void)
Privileged implementation of sb_init().
Definition sb.c:93
uint8_t __sb_route_count(void)
Privileged implementation of sb_route_count().
Definition sb.c:209
uint8_t sb_publish(sb_msg_id_t msg_id, const uint8_t *data, uint8_t len)
Publish a message to all subscribers of msg_id.
Definition sb.c:288
uint8_t __sb_publish(sb_msg_id_t msg_id, const uint8_t *data, uint8_t len)
Privileged implementation of sb_publish().
Definition sb.c:173
bool __sb_unsubscribe(sb_msg_id_t msg_id, uint8_t pipe_idx)
Privileged implementation of sb_unsubscribe().
Definition sb.c:144
uint8_t sb_subscriber_count(sb_msg_id_t msg_id)
Return the number of active subscriptions for a message ID.
Definition sb.c:313