Revision 37cd5dc2 src/urt_core.c
src/urt_core.c | ||
---|---|---|
73 | 73 |
core._status = URT_STATUS_OK; |
74 | 74 |
urtEventSourceInit(&core._evtSource); |
75 | 75 |
urtMutexInit(&core._lock); |
76 |
#if (URT_CFG_PUBSUB_ENABLED)
|
|
76 |
# if (URT_CFG_PUBSUB_ENABLED)
|
|
77 | 77 |
core._topics = NULL; |
78 |
#endif /* URT_CFG_PUBSUB_ENABLED */
|
|
79 |
#if (URT_CFG_RPC_ENABLED)
|
|
78 |
# endif /* URT_CFG_PUBSUB_ENABLED */
|
|
79 |
# if (URT_CFG_RPC_ENABLED)
|
|
80 | 80 |
core.urt_service_t = NULL; |
81 |
#endif /* URT_CFG_RPC_ENABLED */
|
|
81 |
# endif /* URT_CFG_RPC_ENABLED */
|
|
82 | 82 |
return; |
83 | 83 |
} |
84 | 84 |
|
... | ... | |
117 | 117 |
return &core._evtSource; |
118 | 118 |
} |
119 | 119 |
|
120 |
|
|
121 |
/** |
|
122 |
* @brief Get Core nodes. |
|
123 |
* |
|
124 |
* @return Nodes registered to the core. |
|
125 |
*/ |
|
126 |
urt_node_t* urtCoreGetNodes(void) |
|
127 |
{ |
|
128 |
return core._nodes; |
|
129 |
} |
|
130 |
|
|
131 |
void urtCoreSetNodes(urt_node_t* node) |
|
132 |
{ |
|
133 |
core._nodes = node; |
|
134 |
return; |
|
135 |
} |
|
136 |
|
|
137 | 120 |
/** |
138 | 121 |
* @brief Start threads of all nodes of the Core. |
139 | 122 |
*/ |
... | ... | |
237 | 220 |
} |
238 | 221 |
|
239 | 222 |
/** |
223 |
* @brief Get Core nodes. |
|
224 |
* |
|
225 |
* @return Nodes registered to the core. |
|
226 |
*/ |
|
227 |
urt_node_t* urtCoreGetNodes(void) |
|
228 |
{ |
|
229 |
return core._nodes; |
|
230 |
} |
|
231 |
|
|
232 |
|
|
233 |
/** |
|
234 |
* @brief Prepend node to core's list of nodes. |
|
235 |
* |
|
236 |
* @param[in] node The node to prepend. Must not be NULL. |
|
237 |
*/ |
|
238 |
void urtCoreAddNode(urt_node_t* node) |
|
239 |
{ |
|
240 |
urtDebugAssert(node); |
|
241 |
|
|
242 |
node->next = core._nodes; |
|
243 |
core._nodes = node; |
|
244 |
return; |
|
245 |
} |
|
246 |
|
|
247 |
|
|
248 |
/** |
|
240 | 249 |
* @brief Get the topic of the Core. |
241 | 250 |
* |
242 | 251 |
* @param[in] id Identifier of the topic to retrieve. |
243 | 252 |
* |
244 | 253 |
* @return Returns a pointer to the requested service. Returns NULL if no service matches the given ID. |
245 | 254 |
*/ |
246 |
#if (URT_CFG_PUBSUB_ENABLED) |
|
247 |
urt_topic_t* urtCoreGetTopic(urt_topicid_t id) |
|
255 |
# if (URT_CFG_PUBSUB_ENABLED) |
|
256 |
|
|
257 |
/** |
|
258 |
* @brief Append topic to core's list of topics. |
|
259 |
* |
|
260 |
* @param[in] node The topic to append. |
|
261 |
*/ |
|
262 |
void urtCoreAddTopic(urt_topic_t* topic) |
|
263 |
{ |
|
264 |
urt_topic_t* lastTopic = core._topics; |
|
265 |
while (lastTopic->next != NULL) |
|
248 | 266 |
{ |
249 |
urtMutexLock(&core._lock); |
|
250 |
urt_topic_t* topic = core._topics; |
|
251 |
while (topic != NULL && topic->id < id) |
|
252 |
topic = topic->next; |
|
253 |
urtMutexUnlock(&core._lock); |
|
254 |
if (topic != NULL && topic->id == id) |
|
255 |
return topic; |
|
256 |
else |
|
257 |
return NULL; |
|
267 |
lastTopic = lastTopic->next; |
|
258 | 268 |
} |
259 |
#endif /* URT_CFG_PUBSUB_ENABLED */ |
|
269 |
lastTopic->next = topic; |
|
270 |
return; |
|
271 |
} |
|
272 |
|
|
273 |
/** |
|
274 |
* @brief Get core's list of topics. |
|
275 |
* |
|
276 |
* @return The first topic of the core. |
|
277 |
*/ |
|
278 |
urt_topic_t* urtCoreGetTopic(urt_topicid_t id) |
|
279 |
{ |
|
280 |
urtMutexLock(&core._lock); |
|
281 |
urt_topic_t* topic = core._topics; |
|
282 |
while (topic != NULL && topic->id < id) |
|
283 |
topic = topic->next; |
|
284 |
urtMutexUnlock(&core._lock); |
|
285 |
if (topic != NULL && topic->id == id) |
|
286 |
return topic; |
|
287 |
else |
|
288 |
return NULL; |
|
289 |
} |
|
290 |
# endif /* URT_CFG_PUBSUB_ENABLED */ |
|
260 | 291 |
|
261 | 292 |
|
293 |
# if (URT_CFG_RPC_ENABLED) |
|
262 | 294 |
/** |
263 | 295 |
* @brief Get the service of the Core. |
264 | 296 |
* |
265 | 297 |
* @param[in] id Identifier of the service to retrieve. |
266 | 298 |
* |
267 | 299 |
* @return Returns a pointer to the requested service. Returns NULL if no service matches the given ID. |
268 |
*/ |
|
269 |
#if (URT_CFG_RPC_ENABLED) |
|
270 |
urt_service_t urtCoreGetService(urt_serviceid_t id) {return urt_service_t;} |
|
271 |
#endif /* URT_CFG_RPC_ENABLED */ |
|
300 |
*/ |
|
301 |
urt_service_t urtCoreGetService(urt_serviceid_t id) {return urt_service_t;} |
|
302 |
# endif /* URT_CFG_RPC_ENABLED */ |
|
272 | 303 |
|
273 | 304 |
|
Also available in: Unified diff