commit b74d5ee3010442a6253f1ce64a687dabc352f85b
Author: Thomas Schöpping <tschoepp@cit-ec.uni-bielefeld.de>
Date:   Mon Oct 22 16:15:09 2018 +0200

    Minor enhancements to README.txt and several fixed dates.
    Introduced a set of Makefiles to get started.
    Introduced several skeletons to be implemented:
      - a HellowOrld application
      - a HelloWorld configuration
      - a message types folder
      - a urtware_osal.h interface file.
    Submodules have been updated.

diff --git a/README.txt b/README.txt
index 8fab906..2ed0b87 100644
--- a/README.txt
+++ b/README.txt
@@ -55,7 +55,7 @@ the source code, and flash it to the AMiRo modules.
 CONTENTS:
 
   1  Required software
-  3  Building and flashing
+  2  Folder structure
 
 ================================================================================
 
@@ -73,16 +73,38 @@ respectively.
 
 
 
-2 - BUILDING AND FLASHING
--------------------------
-
-For building and flashing a specific setup, you must first define a
-configuration in the ./configurations folder (e.g. ./configurations/MyConf).
-Such a configuration must consist of a Makefile and a C header file with the
-name "osconf.h". Please copy the provided template files from the
-./configurations/template directory and modify them as required in order to
-minimize the risk of errors and for the sake of consistency. As a result you can
-build and flash all software using the Makefile.
+2 - FOLDER STRUCTURE
+--------------------
+
+At its root, the AMiRo-Apps projects has six folders to distiquish between the
+most fundamental parts:
+.
+├── apps
+│     This folder includes individual applications, which can used by
+│     configigurations. Apps will usually be implemented as nodes for the
+│     middleware and provide acording interfaces via some message type(s).
+├── configurations
+│     Each configuration combines multiple apps and distributes them among any
+│     supported modules. Furthermore, configurations may modify parameters for
+│     each module individually. Finally, each configuration should come with a
+│     makefile, so a user can just use this to build and flash the whole setup.
+│     For better understanding, have a look at this example:
+│       - module A: using apps 1, 2 and 3 with parameters X and Y.
+│       - module B: using apps 1 and 4 with parameter X.
+│       - module C: using apps 1, 5, 6 and 7 with parameters X and Z.
+│       - Makefile: set and build everything.
+│     Note that each configuration needs to explicitely support a module and
+│     that there can never be an implicit default configuration.
+├── messagetypes
+│     Apps shoud take advantage of the middleware and thus implement nodes,
+│     which communicate via messages. Such messages may have payloads of
+│     arbitrary types, which can be defined in this folder.
+├── middleware
+│     This folder contains the µRtWare submodule and interface files.
+├── os
+│     This folder contains the AMiRo-OS submodule and interface files.
+└── tools
+      Usable tools can be found in this dirctory.
 
 ================================================================================
 
diff --git a/apps/HelloWorld/HelloWorld.mk b/apps/HelloWorld/HelloWorld.mk
new file mode 100644
index 0000000..b1d9abe
--- /dev/null
+++ b/apps/HelloWorld/HelloWorld.mk
@@ -0,0 +1,36 @@
+################################################################################
+# AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
+# (AMiRo) platform.                                                            #
+# Copyright (C) 2018..2018  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/>.        #
+#                                                                              #
+# This research/work was supported by the Cluster of Excellence Cognitive      #
+# Interaction Technology 'CITEC' (EXC 277) at Bielefeld University, which is   #
+# funded by the German Research Foundation (DFG).                              #
+################################################################################
+
+
+
+# absolue path to this directory
+HelloWorldAPP_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
+
+# include path
+HelloWorldAPP_INC = $(HelloWorldAPP_DIR)
+
+# C source files
+HelloWorldAPP_CSRC =
+
+# C++ source files
+HelloWorldAPP_CPPSRC =
diff --git a/configurations/HelloWorld/Makefile b/configurations/HelloWorld/Makefile
new file mode 100644
index 0000000..c0d7edf
--- /dev/null
+++ b/configurations/HelloWorld/Makefile
@@ -0,0 +1,50 @@
+################################################################################
+# AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
+# (AMiRo) platform.                                                            #
+# Copyright (C) 2018..2018  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/>.        #
+#                                                                              #
+# This research/work was supported by the Cluster of Excellence Cognitive      #
+# Interaction Technology 'CITEC' (EXC 277) at Bielefeld University, which is   #
+# funded by the German Research Foundation (DFG).                              #
+################################################################################
+
+
+
+# absolue path to this directory
+HelloWorldCONF_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
+
+ifneq ($(BUILDDIR),)
+  export BUILDDIR
+endif
+
+# list of available modules
+HelloWorldCONF_MODULES = $(patsubst $(HelloWorldCONF_DIR)/modules/%/,%,$(sort $(dir $(wildcard $(HelloWorldCONF_DIR)/modules/*/*))))
+
+CLEANTRGS = $(HelloWorldCONF_MODULES:%=clean_%)
+FLASHTRGS = $(HelloWorldCONF_MODULES:%=flash_%)
+
+.PHONY: all $(MODULES) $(FLASHTRGS) clean $(CLEANTRGS)
+
+all: $(HelloWorldCONF_MODULES)
+$(HelloWorldCONF_MODULES):
+	$(MAKE) -C $(HelloWorldCONF_DIR)/modules/$@
+
+$(FLASHTRGS):
+	$(MAKE) -C $(HelloWorldCONF_DIR)/modules/$(@:flash_%=%) flash
+
+clean: $(CLEANTRGS)
+$(CLEANTRGS):
+	$(MAKE) -C $(HelloWorldCONF_DIR)/modules/$(@:clean_%=%) clean
diff --git a/configurations/HelloWorld/modules/DiWheelDrive_1-1/Makefile b/configurations/HelloWorld/modules/DiWheelDrive_1-1/Makefile
new file mode 100644
index 0000000..de264fa
--- /dev/null
+++ b/configurations/HelloWorld/modules/DiWheelDrive_1-1/Makefile
@@ -0,0 +1,57 @@
+################################################################################
+# AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
+# (AMiRo) platform.                                                            #
+# Copyright (C) 2018..2018  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/>.        #
+#                                                                              #
+# This research/work was supported by the Cluster of Excellence Cognitive      #
+# Interaction Technology 'CITEC' (EXC 277) at Bielefeld University, which is   #
+# funded by the German Research Foundation (DFG).                              #
+################################################################################
+
+
+
+# absolue path to this directory
+APPCONFIG_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
+
+# AMiRo-Apps root directory
+AMIROAPPS_DIR = $(realpath $(APPCONFIG_DIR)/../../../..)
+
+# path to the middleware
+MIDDLEWARE_DIR = $(AMIROAPPS_DIR)/middleware
+
+# path to the operating system
+OS_DIR = $(AMIROAPPS_DIR)/os
+
+# include environments
+include $(MIDDLEWARE_DIR)/middleware.mk
+include $(OS_DIR)/os.mk
+
+# include directories for configurations
+APPSINC = $(APPCONFIG_DIR)/../ \
+          $(APPCONFIG_DIR)
+
+# call DiWHeelDrive Makefile module from OS
+export
+
+all:
+	$(MAKE) -C $(OS_DIR)/AMiRo-OS/modules/DiWheelDrive_1-1/
+
+clean:
+	$(MAKE) -C $(OS_DIR)/AMiRo-OS/modules/DiWheelDrive_1-1/ clean
+
+flash:
+	$(MAKE) -C $(OS_DIR)/AMiRo-OS/modules/DiWheelDrive_1-1/ flash
+
diff --git a/configurations/HelloWorld/modules/DiWheelDrive_1-1/mainincludes.hpp b/configurations/HelloWorld/modules/DiWheelDrive_1-1/mainincludes.hpp
new file mode 100644
index 0000000..12dcc51
--- /dev/null
+++ b/configurations/HelloWorld/modules/DiWheelDrive_1-1/mainincludes.hpp
@@ -0,0 +1,22 @@
+/*
+AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2018..2018  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 _MAININCLUDES_HPP_
+#define _HAININCLUDES_HPP_
+
+#endif /* _MAININCLUDES_HPP_ */
diff --git a/configurations/HelloWorld/modules/DiWheelDrive_1-1/osconf.h b/configurations/HelloWorld/modules/DiWheelDrive_1-1/osconf.h
new file mode 100644
index 0000000..07540b3
--- /dev/null
+++ b/configurations/HelloWorld/modules/DiWheelDrive_1-1/osconf.h
@@ -0,0 +1,24 @@
+/*
+AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2018..2018  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 _OSCONF_H_
+#define _OSCONF_H_
+
+#include <HelloWorld_osconf.h>
+
+#endif /* _OSCONF_H_ */
diff --git a/configurations/HelloWorld/modules/DiWheelDrive_1-1/urtwareconf.h b/configurations/HelloWorld/modules/DiWheelDrive_1-1/urtwareconf.h
new file mode 100644
index 0000000..dab82a4
--- /dev/null
+++ b/configurations/HelloWorld/modules/DiWheelDrive_1-1/urtwareconf.h
@@ -0,0 +1,24 @@
+/*
+AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2018..2018  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 _URTWARECONF_H_
+#define _URTWARECONF_H_
+
+#include <HelloWorld_urtwareconf.h>
+
+#endif /* _URTWARECONF_H_ */
diff --git a/configurations/HelloWorld/modules/HelloWorld_osconf.h b/configurations/HelloWorld/modules/HelloWorld_osconf.h
new file mode 100644
index 0000000..5c64f74
--- /dev/null
+++ b/configurations/HelloWorld/modules/HelloWorld_osconf.h
@@ -0,0 +1,22 @@
+/*
+AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2018..2018  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 _HELLOWORLD_OSCONF_H_
+#define _HELLOWORLD_OSCONF_H_
+
+#endif /* _HELLOWORLD_OSCONF_H_ */
diff --git a/configurations/HelloWorld/modules/HelloWorld_urtwareconf.h b/configurations/HelloWorld/modules/HelloWorld_urtwareconf.h
new file mode 100644
index 0000000..c873925
--- /dev/null
+++ b/configurations/HelloWorld/modules/HelloWorld_urtwareconf.h
@@ -0,0 +1,22 @@
+/*
+AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2018..2018  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 _HELLOWORLD_URTWARECONF_H_
+#define _HELLOWORLD_URTWARECONF_H_
+
+#endif /* _HELLOWORLD_URTWARECONF_H_ */
diff --git a/messagetypes/todo.txt b/messagetypes/todo.txt
new file mode 100644
index 0000000..1333ed7
--- /dev/null
+++ b/messagetypes/todo.txt
@@ -0,0 +1 @@
+TODO
diff --git a/middleware/middleware.mk b/middleware/middleware.mk
index 00ad635..1356404 100644
--- a/middleware/middleware.mk
+++ b/middleware/middleware.mk
@@ -24,12 +24,13 @@
 
 
 # absolute path to this directory
-MIDDLEWARE_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
+MIDDLEWARE_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
 
-include $(MIDDLEWARE_DIR)uRtWare/Makefile
+include $(MIDDLEWARE_DIR)/uRtWare/Makefile
 
 # include paths
-MIDDLEWAREINC = $(URTWARE_INC)
+MIDDLEWAREINC = $(URTWARE_INC) \
+                $(MIDDLEWARE_DIR)
 
 # C source files
 MIDDLEWARECSRC = $(URTWARE_CSRC)
diff --git a/middleware/uRtWare b/middleware/uRtWare
index 5cf3653..35c9457 160000
--- a/middleware/uRtWare
+++ b/middleware/uRtWare
@@ -1 +1 @@
-Subproject commit 5cf365321c98e5f66cb49f4e38bd5de1d6d3ba3b
+Subproject commit 35c9457fb41618bf9aa02bf2eda7ea355bea78bf
diff --git a/middleware/urtware_osal.h b/middleware/urtware_osal.h
new file mode 100644
index 0000000..e942503
--- /dev/null
+++ b/middleware/urtware_osal.h
@@ -0,0 +1,22 @@
+/*
+AMiRo-Apps is a collection of applications for the Autonomous Mini Robot (AMiRo) platform.
+Copyright (C) 2018..2018  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 _URTWARE_OSAL_H_
+#define _URTWARE_OSAL_H_
+
+#endif /* _URTWARE_OSAL_H_ */
diff --git a/os/AMiRo-OS b/os/AMiRo-OS
index e34c46f..47680f6 160000
--- a/os/AMiRo-OS
+++ b/os/AMiRo-OS
@@ -1 +1 @@
-Subproject commit e34c46f0d4b743db0d93f806a1c8395a16a71414
+Subproject commit 47680f674f68f7631607c72b2b6c004f2cb3a532
diff --git a/os/os.mk b/os/os.mk
index 01282a5..9a6c49d 100644
--- a/os/os.mk
+++ b/os/os.mk
@@ -1,7 +1,7 @@
 ################################################################################
 # AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
 # (AMiRo) platform.                                                            #
-# Copyright (C) 2016..2018  Thomas Schöpping et al.                            #
+# Copyright (C) 2018..2018  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         #
@@ -24,43 +24,14 @@
 
 
 # absolute path to this directory
-OS_DIR := $(dir $(abspath $(lastword $(MAKEFILE_LIST))))
+OS_DIR := $(realpath $(dir $(lastword $(MAKEFILE_LIST))))
 
 # define to signal that this is an application build
 # (no standalone os-only build)
 UDEFS += -DAMIRO_APPS=true
 
-# setup all variables for the LightRing
-include $(LIGHTRING_APPS)
-INCDIR += $(CONFIG_DIR)
-APPSINC_LIGHTRING := $(INCDIR)
-APPSCSRC_LIGHTRING := $(CSRC)
-APPSCPPSRC_LIGHTRING := $(CPPSRC)
-INCDIR :=
-CSRC :=
-CPPSRC :=
-
-# setup all variables for the PowerManagement
-include $(POWERMANAGEMENT_APPS)
-INCDIR += $(CONFIG_DIR)
-APPSINC_POWERMANAGEMENT := $(INCDIR)
-APPSCSRC_POWERMANAGEMENT := $(CSRC)
-APPSCPPSRC_POWERMANAGEMENT := $(CPPSRC)
-INCDIR :=
-CSRC :=
-CPPSRC :=
-
-# setup all variables for the DiWheelDrive
-include $(DIWHEELDRIVE_APPS)
-INCDIR += $(CONFIG_DIR)
-APPSINC_DIWHEELDRIVE := $(INCDIR)
-APPSCSRC_DIWHEELDRIVE := $(CSRC)
-APPSCPPSRC_DIWHEELDRIVE := $(CPPSRC)
-INCDIR :=
-CSRC :=
-CPPSRC :=
-
 # make all variables that have been set so far available to all other makefiles
 export
 
-include $(OS_DIR)AMiRo-OS/Makefile
+OS_MODULES_DIR := $(realpath $(OS_DIR)/AMiRo-OS/modules)
+
diff --git a/os/ossetup.sh b/os/ossetup.sh
index 94cc0f5..76823da 100755
--- a/os/ossetup.sh
+++ b/os/ossetup.sh
@@ -1,7 +1,7 @@
 ################################################################################
 # AMiRo-Apps is a collection of applications for the Autonomous Mini Robot     #
 # (AMiRo) platform.                                                            #
-# Copyright (C) 2016..2018  Thomas Schöpping et al.                            #
+# Copyright (C) 2018..2018  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         #
@@ -281,7 +281,7 @@ function printWelcomeText {
   printf "#                                                                    #\n"
   printf "######################################################################\n"
   printf "#                                                                    #\n"
-  printf "# Copyright (c) 2016..2018  Thomas Schöpping                         #\n"
+  printf "# Copyright (c) 2018..2018  Thomas Schöpping                         #\n"
   printf "#                                                                    #\n"
   printf "# This is free software; see the source for copying conditions.      #\n"
   printf "# There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR  #\n"
