commit 5198dfae2aaef3e7f38cb4e1898e6d197013a15f
Author: skenneweg <skenneweg@techfak.uni-bielefeld.de>
Date:   Mon May 11 15:25:14 2020 +0200

    Started to fill the doxygen

diff --git a/inc/urt_debug.h b/inc/urt_debug.h
new file mode 100644
index 0000000..d5a406e
--- /dev/null
+++ b/inc/urt_debug.h
@@ -0,0 +1,63 @@
+/*
+µRtWare is a lightweight publish/subscribe middleware for real-time
+applications. It was developed as part of the software habitat for the
+Autonomous Mini Robot [1] (AMiRo) but can be used for other purposes as well.
+
+Copyright (C) 2018..2020  Thomas Schöpping et al.
+
+This program is free software: you can redistribute it and/or modify
+it under the terms of the GNU General Public License as published by
+the Free Software Foundation, either version 3 of the License, or
+(at your option) any later version.
+
+This program is distributed in the hope that it will be useful,
+but WITHOUT ANY WARRANTY; without even the implied warranty of
+MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+GNU General Public License for more details.
+
+You should have received a copy of the GNU General Public License
+along with this program.  If not, see <http://www.gnu.org/licenses/>.
+*/
+
+#ifndef URT_DEBUG_H
+#define URT_DEBUG_H
+
+/******************************************************************************/
+/* CONSTANTS                                                                  */
+/******************************************************************************/
+
+/******************************************************************************/
+/* SETTINGS                                                                   */
+/******************************************************************************/
+
+/******************************************************************************/
+/* CHECKS                                                                     */
+/******************************************************************************/
+
+/******************************************************************************/
+/* DATA STRUCTURES AND TYPES                                                  */
+/******************************************************************************/
+
+/******************************************************************************/
+/* MACROS                                                                     */
+/******************************************************************************/
+
+/******************************************************************************/
+/* EXTERN DECLARATIONS                                                        */
+/******************************************************************************/
+
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+  void urtDebugAssert (bool condition);
+
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
+
+/******************************************************************************/
+/* INLINE FUNCTIONS                                                           */
+/******************************************************************************/
+
+#endif /* URT_DEBUG_H */
diff --git a/inc/urt_subscriber.h b/inc/urt_subscriber.h
index 5b723bc..b78095e 100644
--- a/inc/urt_subscriber.h
+++ b/inc/urt_subscriber.h
@@ -145,7 +145,7 @@ extern "C" {
   urt_status_t urtSrtSubscriberSubscribe(urt_srtsubscriber_t* subscriber, urt_topic_t* topic, urt_message_t* message, urt_srtusefulnessfunc_t* usefulnesscb, void* cbparams);
   urt_status_t urtSrtSubscriberFetchNextMessage(urt_srtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency);
   urt_status_t urtSrtSubscriberFetchLatestMessage(urt_srtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency);
-  urt_status_t urtSrtSubscriberCalculateUsefulness(urt_srtsubscriber_t* subscriber, urt_delay_t latency);
+  float urtSrtSubscriberCalculateUsefulness(urt_srtsubscriber_t* subscriber, urt_delay_t latency);
   urt_status_t urtSrtSubscriberUnsubscribe(urt_srtsubscriber_t* subscriber);
 
   void urtFrtSubscriberInit(urt_frtsubscriber_t* subscriber);
diff --git a/src/urt_core.c b/src/urt_core.c
index 5c98c2a..8fd0c64 100644
--- a/src/urt_core.c
+++ b/src/urt_core.c
@@ -53,48 +53,52 @@ void urtCoreInit(void) {return;}
 /**
  * @brief   Get Core status.
  *
- * @return  A status value.
+ * @return  Current system status.
  */
 urt_status_t urtCoreGetStatus(void) {return URT_STATUS_OK;}
 
 /**
- * @brief   Start Nodes... .
+ * @brief   Start threads of all nodes of the Core.
  */
 void urtCoreStartNodes(void) {return;}
 
 /**
- * @brief   Synchronize ...
+ * @brief   Synchronize all nodes of the core.
  *
- * @param[in] node  The node to... .
+ * @param[in] node  Pointer to a node to synchronize. Must not be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK if all nodes are synchronized and proceed.
+ *          Returns URT_STATUS_SYNC_ERROR if an exception occurred (faulty stage value detected).
+ *          Returns URT_STATUS_SYNC_PENDING if there are nodes left to synchronize.
+ *          In the latter case, the node thread must still wait for the control event (proceed) to synchronize.
  */
 urt_status_t urtCoreSynchronize(urt_node_t* node) {return URT_STATUS_OK;}
 
 /**
- * @brief   Stop nodes... .
+ * @brief   Stop threads of all nodes of the Core.
  *
- * @param[in] reason  Reason why nodes should be stopped.
+ * @param[in] reason  The reason why the function was called. For normal shutdown URT_STATUS_OK should be used.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK if there was no call with another reason than URT_STATUS_OK before.
+ *          If the function has been called before with a different reason, that reason is returned.
  */
 urt_status_t urtCoreStopNodes(urt_status_t reason) {return URT_STATUS_OK;}
 
 /**
  * @brief   Get the topic of the Core.
  *
- * @param[in] id  The id of the topic.
+ * @param[in] id  Identifier of the topic to retrieve.
  *
- * @return  .
+ * @return  Returns a pointer to the requested service. Returns NULL if no service matches the given ID.
  */
 urt_topic_t* urtCoreGetTopic(urt_topicid_t id) {return urt_topic_t;}
 
 /**
  * @brief   Get the service of the Core.
  *
- * @param[in] id  The id of the service.
+ * @param[in] id  Identifier of the service to retrieve.
  *
- * @return .
+ * @return Returns a pointer to the requested service. Returns NULL if no service matches the given ID.
  */
 urt_service_t urtCoreGetService(urt_serviceid_t id) {return urt_service_t;}
 
diff --git a/src/urt_message.c b/src/urt_message.c
index d14bc36..8096782 100644
--- a/src/urt_message.c
+++ b/src/urt_message.c
@@ -48,7 +48,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /**
  * @brief   Initalize the messages.
  *
- * @param[in] message  Message to initalize.
- * @param[in] payload   .
+ * @param[in] message  Message to initalize. Must not be NULL.
+ * @param[in] payload  May be NULL for messages without payload.
  */
 void urtMessageInit(urt_message_t* message, void* payload) {return;}
diff --git a/src/urt_node.c b/src/urt_node.c
index 20e881f..b83b80b 100644
--- a/src/urt_node.c
+++ b/src/urt_node.c
@@ -48,14 +48,22 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /**
  * @brief   Initalize the node.
  *
- * @param[in] node  Node to initalize.
- * @param[in] thread   .
- * @param[in] setupcallback   .
- * @param[in] setupparams   .
- * @param[in] loopcallback   .
- * @param[in] loopparams   .
- * @param[in] shutdowncallback   .
- * @param[in] shutdownparams   .
+ * @param[in] node  The node to initialize. Must not be NULL.
+ * @param[in] thread  The already initialized, exclusive thread for the node. Must not be NULL.
+ * @param[in] setupcallback  Callback function to be executed during setup.
+ *                           May be NULL if no custom setup is required.
+ * @param[in] setupparams  Parameters for the setup callback function.
+ *                         Must be NULLif no setup callback is specified.
+ *                         May be NULLif the specified setup callback does not expect parameters.
+ * @param[in] loopcallback  Callback function to be executed in a loop.
+ *                          Must not be NULL.
+ * @param[in] loopparams  Parameters for the loop callback function.
+ *                        May be NULL if the specified loop callback does not expect parameters.
+ * @param[in] shutdowncallback  Callback function to be executed during shutdown.
+ *                              May be NULL if no custom shutdown is required.
+ * @param[in] shutdownparams  Parameters for the loop callback function.
+ *                            Must be NULL if no shutdown callback is specified.
+ *                            May be NULL if the specified shutdown callback does not expect parameters.
  */
 void urtNodeInit(urt_node_t* node, urt_osThread_t* thread, urt_nodeSetupCallback_t* setupcallback,
                  void* setupparams, urt_nodeLoopCallback_t* loopcallback, void* loopparams,
diff --git a/src/urt_publisher.c b/src/urt_publisher.c
index 843fc94..0aa81a5 100644
--- a/src/urt_publisher.c
+++ b/src/urt_publisher.c
@@ -48,22 +48,25 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /**
  * @brief   Initalize the publisher.
  *
- * @param[in] publisher  Publisher to initalize.
- * @param[in] topic   .
- * @param[in] message   .
+ * @param[in] publisher  The publisher to initialize. Must not be NULL.
+ * @param[in] topic  The topic, this publisher is associated to. Must not be NULL.
+ * @param[in] message  NULL terminated list of messages to contribute to the topic.
+ *                     Messages must not be associated to another topic.
+ *                     Once a message has been contributed, it cannot be removed later.
+ *                     May be NULL (no messages to contribute).
  */
 void urtPublisherInit(urt_publisher_t* publisher, urt_topic_t* topic, urt_message_t* message) {return;}
 
 
 /**
- * @brief   Initalize the node.
+ * @brief   Publish data.
  *
- * @param[in] publisher  Publisher to  .
- * @param[in] payload   .
- * @param[in] bytes   .
- * @param[in] t   .
- * @param[in] timeout   .
+ * @param[in] publisher  Pointer to the publisher to use. Must not be NULL.
+ * @param[in] payload  Pointer to the data to be published. May be NULL for messages without payload.
+ * @param[in] bytes  Size of the payload in bytes.
+ * @param[in] t  Timestamp to be set for the message.
+ * @param[in] timeout  Timeout delay in case the message cannot be published.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success. Returns URT_STATUS_PUBLISH_TIMEOUT on timeout.
  */
 urt_status_t urtPublisherPublish(urt_publisher_t* publisher, void* payload, size_t bytes, urt_osTime_t t, urt_delay_t timeout) {return URT_STATUS_OK;}
diff --git a/src/urt_service.c b/src/urt_service.c
index ec96318..7065745 100644
--- a/src/urt_service.c
+++ b/src/urt_service.c
@@ -48,22 +48,24 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /**
  * @brief   Initalize the service.
  *
- * @param[in] service  Service to intialize.
- * @param[in] id   .
- * @param[in] callback   .
+ * @param[in] service  The service to initialize. Must not be NULL.
+ * @param[in] id  Unique, numeric identifier of the service.
+ * @param[in] callback  Callback function to be executed by this service. Must not be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_SERVICE_DUPLICATE if another service with the same identifier already exists.
  */
 urt_status_t urtServiceInit(urt_service_t* service, urt_serviceid_t id, urt_servicefunc_t* callback) {return URT_STATUS_OK;}
 
 /**
- * @brief   Call the Service .
+ * @brief   Calls a service.
  *
- * @param[in] service  Service to  .
- * @param[in] arg   .
- * @param[in] ret   .
- * @param[in] timeout   .
+ * @param[in] service  The service to call. Must not be NULL.
+ * @param[in] arg  Optional argument for the service call. May be NULL if the service expects no arguments.
+ * @param[in] ret  Pointer to an optional output value. May be NULL.
+ * @param[in] timeout  Timeout delay to be propagated to the callback function.
+ *                     Whether timeout is considered depends on the callback function.
  *
- * @return  A status value.
+ * @return  Returns the exact output status of the service call.
  */
 urt_status_t urtServiceCall(urt_service_t* service, void* arg, void* ret, urt_delay_t timeout) {return URT_STATUS_OK;}
diff --git a/src/urt_subscriber.c b/src/urt_subscriber.c
index 3d38acb..1fdd4ee 100644
--- a/src/urt_subscriber.c
+++ b/src/urt_subscriber.c
@@ -48,57 +48,66 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /**
  * @brief   Initialize the nrt Subscriber.
  *
- * @param[in] subscriber  Subscriber to initalize.
+ * @param[in] subscriber  The NRT subscriber to initialize. Must not be NULL.
  */
 void urtNrtSubscriberInit (urt_nrtsubscriber_t* subscriber) {return;}
 
 /**
- * @brief    .
+ * @brief  Subscribes the subscriber to a topic.
  *
- * @param[in] subscriber  Subscriber to  .
- * @param[in] topic   .
- * @param[in] messages   .
+ * @param[in] subscriber  The NRT subscriber which shall subscribe to a topic. Must not be NULL.
+ * @param[in] topic  The topic to subscribe to. Must not be NULL.
+ * @param[in] messages  NULL terminated list of messages to contribute to the topic.
+ *                      Messages must not be associated to another topic.
+ *                      Once a message has been contributed, it cannot be removed later.
+ *                      May be NULL(no messages to contribute).
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_SUBSCRIBE_TOPICSET if the subscriber is already associated to a topic.
  */
 urt_status_t urtNrtSubscriberSubscribe (urt_nrtsubscriber_t* subscriber, urt_topic_t* topic, urt_message_t* messages) {
   return URT_STATUS_OK;
 }
 
 /**
- * @brief    .
+ * @brief  Fetches the next message.
  *
- * @param[in] subscriber   .
- * @param[in] payload   .
- * @param[in] bytes   .
- * @param[in] latency   .
+ * @param[in] subscriber  The NRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] payload  Pointer where to copy the payload to. May be NULL for messages without payload.
+ * @param[in] bytes  Payload size in bytes.
+ * @param[in] latency  The latency can be returned by reference. May be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_FETCH_NOTOPIC if the subscriber is not associated to a topic.
+ *          Retruns URT_STATUS_FETCH_NOMESSAGE if there is no new message to fetch.
  */
 urt_status_t urtNrtSubscriberFetchNextMessage (urt_nrtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency) {
   return URT_STATUS_OK;
 }
 
 /**
- * @brief    .
+ * @brief Fetches the lates message.
  *
- * @param[in] subscriber   .
- * @param[in] payload   .
- * @param[in] bytes   .
- * @param[in] latency   .
+ * @param[in] subscriber  The NRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] payload  Pointer where to copy the payload to. May be NULL for messages without payload.
+ * @param[in] bytes  Payload size in bytes.
+ * @param[in] latency  The latency can be returned by reference. May be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_FETCH_NOTOPIC if the subscriber is not associated to a topic.
+ *          Returns URT_STATUS_FETCH_NOMESSAGE if there is no new message to fetch.
  */
 urt_status_t urtNrtSubscriberFetchLatestMessage (urt_nrtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency) {
   return URT_STATUS_OK;
 }
 
 /**
- * @brief    .
+ * @brief  Unsubscribes from a subscriber.
  *
- * @param[in] subscriber
+ * @param[in] subscriber  The NRT subscriber to be unsubscribed. Must not be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on sucess.
+ *          Returns URT_STATUS_UNSUBSCRIBE_NOTOPIC if the subscriber is not associated to a topic.
  */
 urt_status_t urtNrtSubscriberUnsubscribe (urt_nrtsubscriber_t* subscriber) {
   return URT_STATUS_OK;
@@ -106,195 +115,225 @@ urt_status_t urtNrtSubscriberUnsubscribe (urt_nrtsubscriber_t* subscriber) {
 
 
 /**
- * @brief    .
+ * @brief  Initialize the srt Subscriber.
  *
- * @param[in] subscriber  .
+ * @param[in] subscriber  The SRT subscriber to initialize. Must not be NULL.
  */
 void urtSrtSubscriberInit(urt_srtsubscriber_t* subscriber) {return;}
 
 /**
- * @brief    .
- *
- * @param[in] subscriber  .
- * @param[in] topic  .
- * @param[in] message  .
- * @param[in] usefulnesscb  .
- * @param[in] cbparams  .
- *
- * @return  A status value.
+ * @brief  Subscribes the subscriber to a topic.
+ *
+ * @param[in] subscriber  The SRT subscriber which shall subscribe to a topic. Must not be NULL.
+ * @param[in] topic  The topic to subscribe to. Must not be NULL.
+ * @param[in] message  NULL terminated list of messages to contribute to the topic.
+ *                     Messages must not be associated to another topic.
+ *                     Once a message has been contributed, it cannot be removed later.
+ *                     May be NULL (no messages to contribute)
+ * @param[in] usefulnesscb  Pointer to a function to calculate usefulness of a message. Must not be NULL.
+ * @param[in] cbparams  Optional parameters for the usefulness callback.
+ *                      May be NULL if the callback expects no parameters.
+ *
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_SUBSCRIBE_TOPICSET if the subscriber is already associated to a topic.
  */
 urt_status_t urtSrtSubscriberSubscribe(urt_srtsubscriber_t* subscriber, urt_topic_t* topic,
                                        urt_message_t* message, urt_srtusefulnessfunc_t* usefulnesscb, void* cbparams) {return URT_STATUS_OK;}
 
 /**
- * @brief    .
+ * @brief  Fetches the next message.
  *
- * @param[in] subscriber  .
- * @param[in] payload  .
- * @param[in] latency  .
+ * @param[in] subscriber  The SRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] payload  Pointer where to copy the payload to. May be NULL for messages without payload.
+ * @param[in] bytes  Payload size in bytes.
+ * @param[in] latency  The latency can be returned by reference. May be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_FETCH_NOTOPIC if the subscriber is not associated to a topic.
+ *          Returns URT_STATUS_FETCH_NOMESSAGE if there is no new message to fetch.
  */
 urt_status_t urtSrtSubscriberFetchNextMessage(urt_srtsubscriber_t* subscriber, void* payload,
                                               size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
 
 /**
- * @brief    .
+ * @brief  Fetches the latest message.
  *
- * @param[in] subscriber  .
- * @param[in] payload  .
- * @param[in] bytes  .
- * @param[in] latency  .
+ * @param[in] subscriber  The SRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] payload  Pointer where to copy the payload to. May be NULL for messages without payload.
+ * @param[in] bytes  Payload size in bytes.
+ * @param[in] latency  The latency can be returned by reference. May be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_FETCH_NOTOPIC if the subscriber is not associated to a topic.
+ *          Returns URT_STATUS_FETCH_NOMESSAGE if there is no new message to fetch.
  */
 urt_status_t urtSrtSubscriberFetchLatestMessage(urt_srtsubscriber_t* subscriber, void* payload,
                                                 size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
 
 /**
- * @brief   .
+ * @brief  Calculates the usefulness of the subscriber.
  *
- * @param[in] subscriber .
- * @param[in] latency .
+ * @param[in] subscriber  The SRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] latency  Latency (of a message) as argument to calculate usefulness.
  *
- * @return  A status value.
+ * @return  Returns the usefulness as a value within [0,1].
  */
-urt_status_t urtSrtSubscriberCalculateUsefulness(urt_srtsubscriber_t* subscriber, urt_delay_t latency){return URT_STATUS_OK;}
+float urtSrtSubscriberCalculateUsefulness(urt_srtsubscriber_t* subscriber, urt_delay_t latency){return 0;}
 
 /**
- * @brief   .
+ * @brief  Unsubscribes from a subscriber.
  *
- * @param[in] subscriber .
+ * @param[in] subscriber  The NRT subscriber to be unsubscribed. Must not be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on sucess.
+ *          Returns URT_STATUS_UNSUBSCRIBE_NOTOPIC if the subscriber is not associated to a topic.
  */
 urt_status_t urtSrtSubscriberUnsubscribe(urt_srtsubscriber_t* subscriber){return URT_STATUS_OK;}
 
 
 /**
- * @brief   .
+ * @brief  Initialize the FRT Subscriber.
  *
- * @param[in] subscriber .
- *
- * @return  A status value.
+ * @param[in] subscriber  The SRT subscriber to initialize. Must not be NULL.
  */
 void urtFrtSubscriberInit(urt_frtsubscriber_t* subscriber){return URT_STATUS_OK;}
 
 /**
- * @brief   .
- *
- * @param[in] subscriber .
- * @param[in] topic .
- * @param[in] messages .
- * @param[in] deadline .
- * @param[in] jitter .
- *
- * @return  A status value.
+ * @brief  Subscribes the subscriber to a topic.
+ *
+ * @param[in] subscriber  The NRT subscriber which shall subscribe to a topic. Must not be NULL.
+ * @param[in] topic  The topic to subscribe to. Must not be NULL.
+ * @param[in] messages  NULL terminated list of messages to contribute to the topic.
+ *                      Messages must not be associated to another topic.
+ *                      Once a message has been contributed, it cannot be removed later.
+ *                      May be NULL(no messages to contribute).
+ * @param[in] deadline  Maximum latency to consume messages. A value of 0 indicates that latency is of no concern.
+ * @param[in] jitter  Maximum allowed jitter (difference between maximum and minimum latency) when consuming messages.
+ *                    A value of 0 indicates that jitter is of no concern.
+ *
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_SUBSCRIBE_TOPICSET if the subscriber is already associated to a topic.
  */
 urt_status_t urtFrtSubscriberSubscribe(urt_frtsubscriber_t* subscriber, urt_topic_t* topic,
                                        urt_message_t* messages, urt_delay_t deadline, urt_delay_t jitter){return URT_STATUS_OK;}
 
 /**
- * @brief   .
+ * @brief  Fetches the next message.
  *
- * @param[in] subscriber .
- * @param[in] payload .
- * @param[in] bytes .
- * @param[in] latency .
+ * @param[in] subscriber  The SRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] payload  Pointer where to copy the payload to. May be NULL for messages without payload.
+ * @param[in] bytes  Payload size in bytes.
+ * @param[in] latency  The latency can be returned by reference. May be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_FETCH_NOTOPIC if the subscriber is not associated to a topic.
+ *          Returns URT_STATUS_FETCH_NOMESSAGE if there is no new message to fetch.
  */
 urt_status_t urtFrtSubscriberFetchNextMessage(urt_frtsubscriber_t* subscriber, void* payload,
                                               size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
 
 /**
- * @brief   .
+ * @brief  Fetches the latest message.
  *
- * @param[in] subscriber .
- * @param[in] payload .
- * @param[in] bytes .
- * @param[in] latency .
+ * @param[in] subscriber  The SRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] payload  Pointer where to copy the payload to. May be NULL for messages without payload.
+ * @param[in] bytes  Payload size in bytes.
+ * @param[in] latency  The latency can be returned by reference. May be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_FETCH_NOTOPIC if the subscriber is not associated to a topic.
+ *          Returns URT_STATUS_FETCH_NOMESSAGE if there is no new message to fetch.
  */
 urt_status_t urtFrtSubscriberFetchLatestMessage(urt_frtsubscriber_t* subscriber, void* payload,
                                                 size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
 
 /**
- * @brief   .
+ * @brief  Calculates the validity from the subscriber.
  *
- * @param[in] subscriber .
- * @param[in] latency .
+ * @param[in] subscriber  The FRT subscriber to calculate a validity for. Must not be NULL.
+ * @param[in] latency  Latency (of a message) as argument to calculate validity.
  *
- * @return  A status value.
+ * @return  Returns a boolean indicator whether the latency is fine.
  */
 bool urtFrtSubscriberCalculateValidity(urt_frtsubscriber_t* subscriber, urt_delay_t latency){return true;}
 
 /**
- * @brief   .
+ * @brief  Unsubscribes from a subscriber.
  *
- * @param[in] subscriber .
+ * @param[in] subscriber  The NRT subscriber to be unsubscribed. Must not be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on sucess.
+ *          Returns URT_STATUS_UNSUBSCRIBE_NOTOPIC if the subscriber is not associated to a topic.
  */
 urt_status_t urtFrtSubscriberUnsubscribe(urt_frtsubscriber_t* subscriber){return URT_STATUS_OK;}
 
 
 /**
- * @brief   .
+ * @brief  Initialize the HRT Subscriber.
  *
- * @param[in] subscriber .
+ * @param[in] subscriber  The HRT subscriber to initialize. Must not be NULL.
  */
 void urtHrtSubscriberInit(urt_hrtsubscriber_t* subscriber){return;}
 
 /**
- * @brief   .
- *
- * @param[in] subscriber .
- * @param[in] topic .
- * @param[in] message .
- * @param[in] deadline .
- * @param[in] rate .
- * @param[in] jitter .
- *
- * @return  A status value.
+ * @brief  Subscribes the subscriber to a topic.
+ *
+ * @param[in] subscriber  The NRT subscriber which shall subscribe to a topic. Must not be NULL.
+ * @param[in] topic  The topic to subscribe to. Must not be NULL.
+ * @param[in] messages  NULL terminated list of messages to contribute to the topic.
+ *                      Messages must not be associated to another topic.
+ *                      Once a message has been contributed, it cannot be removed later.
+ *                      May be NULL(no messages to contribute).
+ * @param[in] deadline  Maximum latency to consume messages. A value of 0 indicates that latency is of no concern.
+ * @param[in] rate  Expected minimum rate of new messages (= maximum time between consecutive messages).
+ *                  A value of 0 indicates, that rate is of no concern.
+ * @param[in] jitter  Maximum allowed jitter (difference between maximum and minimum latency) when consuming messages.
+ *                    A value of 0 indicates that jitter is of no concern.
+ *
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_SUBSCRIBE_TOPICSET if the subscriber is already associated to a topic.
  */
 urt_status_t urtHrtSubscriberSubscribe(urt_hrtsubscriber_t* subscriber, urt_topic_t* topic,
                                        urt_message_t* message, urt_delay_t deadline, urt_delay_t rate, urt_delay_t jitter){return URT_STATUS_OK;}
 
 
 /**
- * @brief   .
+ * @brief  Fetches the next message.
  *
- * @param[in] subscriber .
- * @param[in] payload .
- * @param[in] bytes .
- * @param[in] latency .
+ * @param[in] subscriber  The SRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] payload  Pointer where to copy the payload to. May be NULL for messages without payload.
+ * @param[in] bytes  Payload size in bytes.
+ * @param[in] latency  The latency can be returned by reference. May be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_FETCH_NOTOPIC if the subscriber is not associated to a topic.
+ *          Returns URT_STATUS_FETCH_NOMESSAGE if there is no new message to fetch.
  */
 urt_status_t urtHrtSubscriberFetchNextMessage(urt_hrtsubscriber_t* subscriber, void* payload,
                                               size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
 
 
 /**
- * @brief   .
+ * @brief  Fetches the latest message.
  *
- * @param[in] subscriber .
- * @param[in] payload .
- * @param[in] bytes .
- * @param[in] latency .
+ * @param[in] subscriber  The SRT subscriber that shall fetch the message. Must not be NULL.
+ * @param[in] payload  Pointer where to copy the payload to. May be NULL for messages without payload.
+ * @param[in] bytes  Payload size in bytes.
+ * @param[in] latency  The latency can be returned by reference. May be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_FETCH_NOTOPIC if the subscriber is not associated to a topic.
+ *          Returns URT_STATUS_FETCH_NOMESSAGE if there is no new message to fetch.
  */
 urt_status_t urtHrtSubscriberFetchLatestMessage(urt_hrtsubscriber_t* subscriber, void* payload,
                                                 size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
 
 /**
- * @brief   .
+ * @brief  Unsubscribes from a subscriber.
  *
- * @param[in] subscriber .
+ * @param[in] subscriber  The HRT subscriber to be unsubscribed. Must not be NULL.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on sucess.
+ *          Returns URT_STATUS_UNSUBSCRIBE_NOTOPIC if the subscriber is not associated to a topic.
  */
 urt_status_t urtHrtSubscriberUnsubscribe(urt_hrtsubscriber_t* subscriber){return URT_STATUS_OK;}
diff --git a/src/urt_topic.c b/src/urt_topic.c
index cb6a6f7..bf68acf 100644
--- a/src/urt_topic.c
+++ b/src/urt_topic.c
@@ -48,9 +48,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /**
  * @brief   Initialize the topic.
  *
- * @param[in] topic  Topic to initialize.
- * @param[in] id   .
+ * @param[in] topic  The topic to initialize. Must not be NULL.
+ * @param[in] id  Unique, numeric identifier of the topic.
  *
- * @return  A status value.
+ * @return  Returns URT_STATUS_OK on success.
+ *          Returns URT_STATUS_TOPIC_DUPLICATE if another topic with the same identifier already exists.
  */
 urt_status_t urtTopicInit(urt_topic_t* topic, urt_topicid_t id) {return URT_STATUS_OK;}
