commit 7d9678db98f665be3874b8a71510eb9dfa7c1e9f
Author: skenneweg <skenneweg@techfak.uni-bielefeld.de>
Date:   Mon May 4 15:32:52 2020 +0200

    Finished header, added empty functions in c classes, added comments

diff --git a/inc/urt_core.h b/inc/urt_core.h
index 03a180b..2b77fd2 100644
--- a/inc/urt_core.h
+++ b/inc/urt_core.h
@@ -22,6 +22,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef URTWARE_CORE_H
 #define URTWARE_CORE_H
 
+#include <urt_types.h>
+#include <urtware.h>
+
 /******************************************************************************/
 /* CONSTANTS                                                                  */
 /******************************************************************************/
@@ -38,6 +41,23 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* DATA STRUCTURES AND TYPES                                                  */
 /******************************************************************************/
 
+/**
+ * @brief  core
+ */
+typedef struct urt_core
+{
+    urt_node_t* _nodes;
+    urt_osEventSource_t* _evtSource;
+    urt_osMutex_t _lock;
+    urt_status_t _status;
+    #if (URT_CFG_PUBSUB_ENABLED)
+        urt_topic_t* _topics;
+    #endif /* URT_CFG_PUBSUB_ENABLED */
+    #if (URT_CFG_RPC_ENABLED)
+        urt_service_t* _services;
+    #endif /* URT_CFG_RPC_ENABLED */
+}urt_core_t;
+
 /******************************************************************************/
 /* MACROS                                                                     */
 /******************************************************************************/
@@ -46,6 +66,28 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* EXTERN DECLARATIONS                                                        */
 /******************************************************************************/
 
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+    void urtCoreInit(void);
+    urt_status_t urtCoreGetStatus(void);
+    void urtCoreStartNodes(void);
+    urt_status_t urtCoreSynchronize(urt_node_t* node);
+    urt_status_t urtCoreStopNodes(urt_status_t reason);
+
+#if (URT_CFG_PUBSUB_ENABLED)
+    urt_topic_t* urtCoreGetTopic(urt_topicid_t id);
+#endif /* URT_CFG_PUBSUB_ENABLED */
+
+#if (URT_CFG_RPC_ENABLED)
+    urt_service_t urtCoreGetService(urt_serviceid_t id);
+#endif /* URT_CFG_RPC_ENABLED */
+
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
+
 /******************************************************************************/
 /* INLINE FUNCTIONS                                                           */
 /******************************************************************************/
diff --git a/inc/urt_message.h b/inc/urt_message.h
index d0ab053..253c8fc 100644
--- a/inc/urt_message.h
+++ b/inc/urt_message.h
@@ -22,6 +22,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef URTWARE_MESSAGE_H
 #define URTWARE_MESSAGE_H
 
+#include <urtware.h>
+
 /******************************************************************************/
 /* CONSTANTS                                                                  */
 /******************************************************************************/
@@ -38,6 +40,20 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* DATA STRUCTURES AND TYPES                                                  */
 /******************************************************************************/
 
+/**
+ * @brief  message
+ */
+typedef struct urt_message
+{
+    urt_message_t* next;
+    void* payload;
+    urt_osTime_t originTime;
+    unsigned int numHrtConsumersLeft;
+    #if (URT_CFG_PUBSUB_PROFILING)
+        unsigned int numConsumersLeft;
+    #endif /* URT_CFG_PUBSUB_PROFILING */
+}urt_message_t;
+
 /******************************************************************************/
 /* MACROS                                                                     */
 /******************************************************************************/
@@ -46,6 +62,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* EXTERN DECLARATIONS                                                        */
 /******************************************************************************/
 
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+    void urtMessageInit(urt_message_t* message, void* payload);
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
+
 /******************************************************************************/
 /* INLINE FUNCTIONS                                                           */
 /******************************************************************************/
diff --git a/inc/urt_node.h b/inc/urt_node.h
index b6efc65..871e510 100644
--- a/inc/urt_node.h
+++ b/inc/urt_node.h
@@ -22,6 +22,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef URTWARE_NODE_H
 #define URTWARE_NODE_H
 
+#include <urt_types.h>
+#include <urtware.h>
+
 /******************************************************************************/
 /* CONSTANTS                                                                  */
 /******************************************************************************/
@@ -38,6 +41,26 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* DATA STRUCTURES AND TYPES                                                  */
 /******************************************************************************/
 
+/**
+ * @brief  node
+ */
+typedef struct urt_node
+{
+    urt_node_t* next;
+    urt_osThread_t* thread;
+    urt_nodeSetupCallback_t* setupcallback;
+    void* setupparams;
+    urt_nodeLoopCallback_t* loopcallback;
+    void* loopparams;
+    urt_nodeShutdownCallback_t* shutdowncallback;
+    void* shutdownparams;
+    urt_nodestage_t stage;
+    urt_osEventListener_t listener;
+    #if (URT_CFG_PUBSUB_PROFILING || URT_CFG_RPC_PROFILING)
+        uint64_t loops;
+    #endif /* URT_CFG_PUBSUB_PROFILING || URT_CFG_RPC_PROFILING */
+}urt_node_t;
+
 /******************************************************************************/
 /* MACROS                                                                     */
 /******************************************************************************/
@@ -46,6 +69,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* EXTERN DECLARATIONS                                                        */
 /******************************************************************************/
 
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+    void urtNodeInit(urt_node_t* node, urt_osThread_t* thread, urt_nodeSetupCallback_t* setupcallback, void* setupparams, urt_nodeLoopCallback_t* loopcallback, void* loopparams, urt_nodeShutdownCallback_t* shutdowncallback, void* shutodwnparams);
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
+
 /******************************************************************************/
 /* INLINE FUNCTIONS                                                           */
 /******************************************************************************/
diff --git a/inc/urt_publisher.h b/inc/urt_publisher.h
index 606a9b7..5c271f4 100644
--- a/inc/urt_publisher.h
+++ b/inc/urt_publisher.h
@@ -22,6 +22,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef URTWARE_PUBLISHER_H
 #define URTWARE_PUBLISHER_H
 
+#include <urt_types.h>
+#include <urtware.h>
+
 /******************************************************************************/
 /* CONSTANTS                                                                  */
 /******************************************************************************/
@@ -38,6 +41,18 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* DATA STRUCTURES AND TYPES                                                  */
 /******************************************************************************/
 
+/**
+ * @brief  publisher
+ */
+typedef struct urt_publisher
+{
+    urt_topic_t* topic;
+    #if (URT_CFG_PUBSUB_PROFILING)
+        uint64_t publishAttempts;
+        uint64_t publishFails;
+    #endif /* URT_CFG_PUBSUB_PROFILING */
+}urt_publisher_t;
+
 /******************************************************************************/
 /* MACROS                                                                     */
 /******************************************************************************/
@@ -46,6 +61,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* EXTERN DECLARATIONS                                                        */
 /******************************************************************************/
 
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+    void urtPublisherInit(urt_publisher_t* publisher, urt_topic_t* topic, urt_message_t* message);
+    urt_status_t urtPublisherPublish(urt_publisher_t* publisher, void* payload, size_t bytes, urt_osTime_t t, urt_delay_t timeout);
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
+
 /******************************************************************************/
 /* INLINE FUNCTIONS                                                           */
 /******************************************************************************/
diff --git a/inc/urt_service.h b/inc/urt_service.h
index 9efb824..6b314e3 100644
--- a/inc/urt_service.h
+++ b/inc/urt_service.h
@@ -22,6 +22,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef URTWARE_SERVICE_H
 #define URTWARE_SERVICE_H
 
+#include <urt_types.h>
+#include <urtware.h>
+
 /******************************************************************************/
 /* CONSTANTS                                                                  */
 /******************************************************************************/
@@ -38,6 +41,24 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* DATA STRUCTURES AND TYPES                                                  */
 /******************************************************************************/
 
+/**
+ * @brief  service
+ */
+typedef struct urt_service
+{
+    urt_service_t* next;
+    urt_serviceid_t id;
+    urt_osMutex_t lock;
+    urt_servicefunc_t* callback;
+    #if (URT_CFG_RPC_PROFILING)
+        uint64_t sumDurations;
+        uint64_t numCalls;
+        uint64_t numTimeouts;
+        urt_delay_t minDuration;
+        urt_delay_t maxDuration;
+    #endif /* URT_CFG_RPC_PROFILING */
+}urt_service_t;
+
 /******************************************************************************/
 /* MACROS                                                                     */
 /******************************************************************************/
@@ -46,6 +67,16 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* EXTERN DECLARATIONS                                                        */
 /******************************************************************************/
 
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+    urt_status_t urtServiceInit(urt_service_t* service, urt_serviceid_t id, urt_servicefunc_t* callback);
+    urt_status_t urtServiceCall(urt_service_t* service, void* arg, void* ret, urt_delay_t timeout);
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
+
 /******************************************************************************/
 /* INLINE FUNCTIONS                                                           */
 /******************************************************************************/
diff --git a/inc/urt_subscriber.h b/inc/urt_subscriber.h
index 5e3659a..dc22b35 100644
--- a/inc/urt_subscriber.h
+++ b/inc/urt_subscriber.h
@@ -23,6 +23,7 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #define URTWARE_SUBSCRIBER_H
 
 #include <urt_types.h>
+#include <urtware.h>
 
 /******************************************************************************/
 /* CONSTANTS                                                                  */
@@ -134,33 +135,31 @@ typedef struct urt_hrtsubscriber
 extern "C" {
 #endif /* defined(__cplusplus) */
 
-    void urtNrtSubscriberInit();
-    urt_status_t urtNrtSubscriberSubscribe();
-    urt_status_t urtNrtSubscriberFetchNextMessage();
-    urt_status_t urtNrtSubscriberFetchLatestMessage();
-    urt_status_t urtNrtSubscriberUnsubscribe();
-
-    void urtSrtSubscriberInit();
-    urt_status_t urtSrtSubscriberSubscribe();
-    urt_status_t urtSrtSubscriberFetchNextMessage();
-    urt_status_t urtSrtSubscriberFetchLatestMessage();
-    urt_status_t urtSrtSubscriberCalculateUsefulness();
-    urt_status_t urtSrtSubscriberUnsubscribe();
-
-    void urtFrtSubscriberInit();
-    urt_status_t urtFrtSubscriberSubscribe();
-    urt_status_t urtFrtSubscriberFetchNextMessage();
-    urt_status_t urtFrtSubscriberFetchLatestMessage();
-    bool urtFrtSubscriberCalculateValidity();
-    urt_status_t urtFrtSubscriberUnsubscribe();
-
-    void urtHrtSubscriberInit();
-    urt_status_t urtHrtSubscriberSubscribe();
-    urt_status_t urtHrtSubscriberFetchNextMessage();
-    urt_status_t urtHrtSubscriberFetchLatestMessage();
-    urt_status_t urtHrtSubscriberUnsubscribe();
-
-    float urt_srtusefulnessfunc_t();
+    void urtNrtSubscriberInit(urt_nrtsubscriber_t* subscriber);
+    urt_status_t urtNrtSubscriberSubscribe(urt_nrtsubscriber_t* subscriber, urt_topic_t* topic, urt_message_t* messages);
+    urt_status_t urtNrtSubscriberFetchNextMessage(urt_nrtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency);
+    urt_status_t urtNrtSubscriberFetchLatestMessage(urt_nrtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency);
+    urt_status_t urtNrtSubscriberUnsubscribe(urt_nrtsubscriber_t* subscriber);
+
+    void urtSrtSubscriberInit(urt_srtsubscriber_t* subscriber);
+    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);
+    urt_status_t urtSrtSubscriberUnsubscribe(urt_srtsubscriber_t* subscriber);
+
+    void urtFrtSubscriberInit(urt_frtsubscriber_t* subscriber);
+    urt_status_t urtFrtSubscriberSubscribe(urt_frtsubscriber_t* subscriber, urt_topic_t* topic, urt_message_t* messages, urt_delay_t deadline, urt_delay_t jitter);
+    urt_status_t urtFrtSubscriberFetchNextMessage(urt_frtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency);
+    urt_status_t urtFrtSubscriberFetchLatestMessage(urt_frtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency);
+    bool urtFrtSubscriberCalculateValidity(urt_frtsubscriber_t* subscriber, urt_delay_t latency);
+    urt_status_t urtFrtSubscriberUnsubscribe(urt_frtsubscriber_t* subscriber);
+
+    void urtHrtSubscriberInit(urt_hrtsubscriber_t* subscriber);
+    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);
+    urt_status_t urtHrtSubscriberFetchNextMessage(urt_hrtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency);
+    urt_status_t urtHrtSubscriberFetchLatestMessage(urt_hrtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency);
+    urt_status_t urtHrtSubscriberUnsubscribe(urt_hrtsubscriber_t* subscriber);
 #if defined(__cplusplus)
 }
 #endif /* defined(__cplusplus) */
diff --git a/inc/urt_topic.h b/inc/urt_topic.h
index 03fa64f..06f2aee 100644
--- a/inc/urt_topic.h
+++ b/inc/urt_topic.h
@@ -22,6 +22,9 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #ifndef URTWARE_TOPIC_H
 #define URTWARE_TOPIC_H
 
+#include <urt_types.h>
+#include <urtware.h>
+
 /******************************************************************************/
 /* CONSTANTS                                                                  */
 /******************************************************************************/
@@ -38,6 +41,30 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* DATA STRUCTURES AND TYPES                                                  */
 /******************************************************************************/
 
+/**
+ * @brief  topic
+ */
+typedef struct urt_topic
+{
+    urt_topic_t* next;
+    urt_topicid_t id;
+    urt_osMutex_t lock;
+    urt_osEventSource_t evtSource;
+    unsigned int numHrtSubscribers;
+    urt_osCondvar_t hrtReleased;
+    urt_message_t mandatoryMessage;
+    urt_message_t* latestMessage;
+    #if (URT_CFG_PUBSUB_QOS_RATECHECKS)
+        urt_hrtsubscriber_t* hrtSubscribers;
+        urt_osTimer_t qosRateTimer;
+    #endif /* URT_CFG_PUBSUB_QOS_RATECHECKS */
+    #if (URT_CFG_PUBSUB_PROFILING)
+        uint64_t numMessagesPublished;
+        uint64_t numMessagesDiscarded;
+        unsigned int numSubscribers;
+    #endif /* URT_CFG_PUBSUB_PROFILING */
+}urt_topic_t;
+
 /******************************************************************************/
 /* MACROS                                                                     */
 /******************************************************************************/
@@ -46,6 +73,15 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /* EXTERN DECLARATIONS                                                        */
 /******************************************************************************/
 
+#if defined(__cplusplus)
+extern "C" {
+#endif /* defined(__cplusplus) */
+
+    urt_status_t urtTopicInit(urt_topic_t* topic, urt_topicid_t id);
+#if defined(__cplusplus)
+}
+#endif /* defined(__cplusplus) */
+
 /******************************************************************************/
 /* INLINE FUNCTIONS                                                           */
 /******************************************************************************/
diff --git a/src/urt_core.c b/src/urt_core.c
index c38d477..5c98c2a 100644
--- a/src/urt_core.c
+++ b/src/urt_core.c
@@ -19,6 +19,8 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <urtware.h>
+
 /******************************************************************************/
 /* LOCAL DEFINITIONS                                                          */
 /******************************************************************************/
@@ -42,3 +44,57 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /******************************************************************************/
 /* EXPORTED FUNCTIONS                                                         */
 /******************************************************************************/
+
+/**
+ * @brief   Initialize the Core.
+ */
+void urtCoreInit(void) {return;}
+
+/**
+ * @brief   Get Core status.
+ *
+ * @return  A status value.
+ */
+urt_status_t urtCoreGetStatus(void) {return URT_STATUS_OK;}
+
+/**
+ * @brief   Start Nodes... .
+ */
+void urtCoreStartNodes(void) {return;}
+
+/**
+ * @brief   Synchronize ...
+ *
+ * @param[in] node  The node to... .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtCoreSynchronize(urt_node_t* node) {return URT_STATUS_OK;}
+
+/**
+ * @brief   Stop nodes... .
+ *
+ * @param[in] reason  Reason why nodes should be stopped.
+ *
+ * @return  A status value.
+ */
+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.
+ *
+ * @return  .
+ */
+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.
+ *
+ * @return .
+ */
+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 c38d477..d14bc36 100644
--- a/src/urt_message.c
+++ b/src/urt_message.c
@@ -19,6 +19,8 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <urtware.h>
+
 /******************************************************************************/
 /* LOCAL DEFINITIONS                                                          */
 /******************************************************************************/
@@ -42,3 +44,11 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /******************************************************************************/
 /* EXPORTED FUNCTIONS                                                         */
 /******************************************************************************/
+
+/**
+ * @brief   Initalize the messages.
+ *
+ * @param[in] message  Message to initalize.
+ * @param[in] payload   .
+ */
+void urtMessageInit(urt_message_t* message, void* payload) {return;}
diff --git a/src/urt_node.c b/src/urt_node.c
index c38d477..20e881f 100644
--- a/src/urt_node.c
+++ b/src/urt_node.c
@@ -19,6 +19,8 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <urtware.h>
+
 /******************************************************************************/
 /* LOCAL DEFINITIONS                                                          */
 /******************************************************************************/
@@ -42,3 +44,19 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /******************************************************************************/
 /* EXPORTED FUNCTIONS                                                         */
 /******************************************************************************/
+
+/**
+ * @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   .
+ */
+void urtNodeInit(urt_node_t* node, urt_osThread_t* thread, urt_nodeSetupCallback_t* setupcallback,
+                 void* setupparams, urt_nodeLoopCallback_t* loopcallback, void* loopparams,
+                 urt_nodeShutdownCallback_t* shutdowncallback, void* shutdownparams) {return;}
diff --git a/src/urt_publisher.c b/src/urt_publisher.c
index c38d477..843fc94 100644
--- a/src/urt_publisher.c
+++ b/src/urt_publisher.c
@@ -19,6 +19,8 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <urtware.h>
+
 /******************************************************************************/
 /* LOCAL DEFINITIONS                                                          */
 /******************************************************************************/
@@ -42,3 +44,26 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /******************************************************************************/
 /* EXPORTED FUNCTIONS                                                         */
 /******************************************************************************/
+
+/**
+ * @brief   Initalize the publisher.
+ *
+ * @param[in] publisher  Publisher to initalize.
+ * @param[in] topic   .
+ * @param[in] message   .
+ */
+void urtPublisherInit(urt_publisher_t* publisher, urt_topic_t* topic, urt_message_t* message) {return;}
+
+
+/**
+ * @brief   Initalize the node.
+ *
+ * @param[in] publisher  Publisher to  .
+ * @param[in] payload   .
+ * @param[in] bytes   .
+ * @param[in] t   .
+ * @param[in] timeout   .
+ *
+ * @return  A status value.
+ */
+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 c38d477..ec96318 100644
--- a/src/urt_service.c
+++ b/src/urt_service.c
@@ -19,6 +19,8 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <urtware.h>
+
 /******************************************************************************/
 /* LOCAL DEFINITIONS                                                          */
 /******************************************************************************/
@@ -42,3 +44,26 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /******************************************************************************/
 /* EXPORTED FUNCTIONS                                                         */
 /******************************************************************************/
+
+/**
+ * @brief   Initalize the service.
+ *
+ * @param[in] service  Service to intialize.
+ * @param[in] id   .
+ * @param[in] callback   .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtServiceInit(urt_service_t* service, urt_serviceid_t id, urt_servicefunc_t* callback) {return URT_STATUS_OK;}
+
+/**
+ * @brief   Call the Service .
+ *
+ * @param[in] service  Service to  .
+ * @param[in] arg   .
+ * @param[in] ret   .
+ * @param[in] timeout   .
+ *
+ * @return  A status value.
+ */
+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 c2992d9..3d38acb 100644
--- a/src/urt_subscriber.c
+++ b/src/urt_subscriber.c
@@ -19,6 +19,8 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <urtware.h>
+
 /******************************************************************************/
 /* LOCAL DEFINITIONS                                                          */
 /******************************************************************************/
@@ -42,26 +44,257 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /******************************************************************************/
 /* EXPORTED FUNCTIONS                                                         */
 /******************************************************************************/
-#include "subscriber.h"
 
-void urtNrtSubscriberInit (urt_nrtsubscriber_t* subscriber) {}
+/**
+ * @brief   Initialize the nrt Subscriber.
+ *
+ * @param[in] subscriber  Subscriber to initalize.
+ */
+void urtNrtSubscriberInit (urt_nrtsubscriber_t* subscriber) {return;}
 
+/**
+ * @brief    .
+ *
+ * @param[in] subscriber  Subscriber to  .
+ * @param[in] topic   .
+ * @param[in] messages   .
+ *
+ * @return  A status value.
+ */
 urt_status_t urtNrtSubscriberSubscribe (urt_nrtsubscriber_t* subscriber, urt_topic_t* topic, urt_message_t* messages) {
-  return 1;
+  return URT_STATUS_OK;
 }
 
+/**
+ * @brief    .
+ *
+ * @param[in] subscriber   .
+ * @param[in] payload   .
+ * @param[in] bytes   .
+ * @param[in] latency   .
+ *
+ * @return  A status value.
+ */
 urt_status_t urtNrtSubscriberFetchNextMessage (urt_nrtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency) {
-  return 0;
+  return URT_STATUS_OK;
 }
 
+/**
+ * @brief    .
+ *
+ * @param[in] subscriber   .
+ * @param[in] payload   .
+ * @param[in] bytes   .
+ * @param[in] latency   .
+ *
+ * @return  A status value.
+ */
 urt_status_t urtNrtSubscriberFetchLatestMessage (urt_nrtsubscriber_t* subscriber, void* payload, size_t bytes, urt_delay_t* latency) {
-  return 0;
+  return URT_STATUS_OK;
 }
 
+/**
+ * @brief    .
+ *
+ * @param[in] subscriber
+ *
+ * @return  A status value.
+ */
 urt_status_t urtNrtSubscriberUnsubscribe (urt_nrtsubscriber_t* subscriber) {
-  return 0;
+  return URT_STATUS_OK;
 }
 
-int main () {
- return 0;
-}
+
+/**
+ * @brief    .
+ *
+ * @param[in] subscriber  .
+ */
+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.
+ */
+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    .
+ *
+ * @param[in] subscriber  .
+ * @param[in] payload  .
+ * @param[in] latency  .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtSrtSubscriberFetchNextMessage(urt_srtsubscriber_t* subscriber, void* payload,
+                                              size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
+
+/**
+ * @brief    .
+ *
+ * @param[in] subscriber  .
+ * @param[in] payload  .
+ * @param[in] bytes  .
+ * @param[in] latency  .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtSrtSubscriberFetchLatestMessage(urt_srtsubscriber_t* subscriber, void* payload,
+                                                size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ * @param[in] latency .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtSrtSubscriberCalculateUsefulness(urt_srtsubscriber_t* subscriber, urt_delay_t latency){return URT_STATUS_OK;}
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtSrtSubscriberUnsubscribe(urt_srtsubscriber_t* subscriber){return URT_STATUS_OK;}
+
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ *
+ * @return  A status value.
+ */
+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.
+ */
+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   .
+ *
+ * @param[in] subscriber .
+ * @param[in] payload .
+ * @param[in] bytes .
+ * @param[in] latency .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtFrtSubscriberFetchNextMessage(urt_frtsubscriber_t* subscriber, void* payload,
+                                              size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ * @param[in] payload .
+ * @param[in] bytes .
+ * @param[in] latency .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtFrtSubscriberFetchLatestMessage(urt_frtsubscriber_t* subscriber, void* payload,
+                                                size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ * @param[in] latency .
+ *
+ * @return  A status value.
+ */
+bool urtFrtSubscriberCalculateValidity(urt_frtsubscriber_t* subscriber, urt_delay_t latency){return true;}
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtFrtSubscriberUnsubscribe(urt_frtsubscriber_t* subscriber){return URT_STATUS_OK;}
+
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ */
+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.
+ */
+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   .
+ *
+ * @param[in] subscriber .
+ * @param[in] payload .
+ * @param[in] bytes .
+ * @param[in] latency .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtHrtSubscriberFetchNextMessage(urt_hrtsubscriber_t* subscriber, void* payload,
+                                              size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
+
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ * @param[in] payload .
+ * @param[in] bytes .
+ * @param[in] latency .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtHrtSubscriberFetchLatestMessage(urt_hrtsubscriber_t* subscriber, void* payload,
+                                                size_t bytes, urt_delay_t* latency){return URT_STATUS_OK;}
+
+/**
+ * @brief   .
+ *
+ * @param[in] subscriber .
+ *
+ * @return  A status value.
+ */
+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 c38d477..cb6a6f7 100644
--- a/src/urt_topic.c
+++ b/src/urt_topic.c
@@ -19,6 +19,8 @@ You should have received a copy of the GNU General Public License
 along with this program.  If not, see <http://www.gnu.org/licenses/>.
 */
 
+#include <urtware.h>
+
 /******************************************************************************/
 /* LOCAL DEFINITIONS                                                          */
 /******************************************************************************/
@@ -42,3 +44,13 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 /******************************************************************************/
 /* EXPORTED FUNCTIONS                                                         */
 /******************************************************************************/
+
+/**
+ * @brief   Initialize the topic.
+ *
+ * @param[in] topic  Topic to initialize.
+ * @param[in] id   .
+ *
+ * @return  A status value.
+ */
+urt_status_t urtTopicInit(urt_topic_t* topic, urt_topicid_t id) {return URT_STATUS_OK;}
diff --git a/urt_types.h b/urt_types.h
index 70510a3..dce52c3 100644
--- a/urt_types.h
+++ b/urt_types.h
@@ -3,7 +3,7 @@
 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..2019  Thomas Schöpping et al.
+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
diff --git a/urtware.h b/urtware.h
index fddfb4e..0ae4033 100644
--- a/urtware.h
+++ b/urtware.h
@@ -3,7 +3,7 @@
 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..2019  Thomas Schöpping et al.
+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
@@ -69,6 +69,10 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 /** @} */
 
+/******************************************************************************/
+/* CONFIGURATION                                                              */
+/******************************************************************************/
+
 #include <urtwareconf.h>
 #if !defined(_URTWARE_CFG_)
 #error "invalid µRtWare configuration file"
@@ -86,4 +90,19 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
 #error "incompatible µRt-OSAL implementation"
 #endif
 
+/******************************************************************************/
+/* AMiRo-OS.URTWARE INC                                                       */
+/******************************************************************************/
+
+#include "inc/urt_confcheck.h"
+
+#include "inc/urt_core.h"
+#include "inc/urt_message.h"
+#include "inc/urt_node.h"
+#include "inc/urt_publisher.h"
+#include "inc/urt_service.h"
+#include "inc/urt_subscriber.h"
+#include "inc/urt_topic.h"
+
+
 #endif /* _URTWARE_H_ */
