commit 4cce70a84c566c1722a2fb2d55fa4feb61e1fafb
Author: Thomas Schöpping <tschoepp@cit-ec.uni-bielefeld.de>
Date:   Thu Apr 20 16:15:11 2017 +0200

    README.txt overhauled.
    A setup script is now available.
    Overhault of the QuCreator IDE setup scrip.
    SerialBoot startup prompt was updated and enhanced.

diff --git a/ide/QtCreator/QtCreatorSetup.sh b/ide/QtCreator/QtCreatorSetup.sh
index b86be15..787cdc3 100755
--- a/ide/QtCreator/QtCreatorSetup.sh
+++ b/ide/QtCreator/QtCreatorSetup.sh
@@ -1,10 +1,33 @@
+################################################################################
+# AMiRo-OS is an operating system designed for the Autonomous Mini Robot       #
+# (AMiRo) platform.                                                            #
+# Copyright (C) 2016..2017  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).                              #
+################################################################################
+
 #!/bin/bash
 
-###############################################################################
-###   HELPER FUNCTIONS                                                      ###
-###############################################################################
+################################################################################
+###   HELPER FUNCTIONS                                                       ###
+################################################################################
 
-#------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 # toAbsolutePath $1 [$2]
 #
 # Makes a given path absolute and either echos the result or stores it in the
@@ -46,9 +69,9 @@ function toAbsolutePath {
   unset ORIGIN_PATH
   unset ABSOLUTE_PATH
 }
-#------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 
-#------------------------------------------------------------------------------
+#-------------------------------------------------------------------------------
 # getRelativePath $1 $2 [$3]
 #
 # Computes the relative path from one to another location.
@@ -106,257 +129,330 @@ function getRelativePath {
   unset RELATIVE_PATH
   unset UNIQUE_POSTFIX
 }
-#------------------------------------------------------------------------------
-
-#------------------------------------------------------------------------------
-# printHelp
-#
-# Prnts a help text, how to use this script
-function printHelp {
-  echo -e "The following commands are available:"
-  echo -e ""
-  echo -e "  help  - Prints this help text."
-  echo -e "  all   - Creates a project for each of the AMiRo base modules."
-  echo -e "  clean - Deletes all files created by this script."
-  echo -e "  wipe  - In addittion to 'clean', the .user files created by QtCreator are deleted as well."
-  echo -e ""
-  echo -e "Note: This script does not create a project for the host application."
-  echo -e "      Since the host application uses CMAKE, QtCreator can import it directly."
-}
+#-------------------------------------------------------------------------------
 
-#------------------------------------------------------------------------------
 
 
-
-###############################################################################
-###   INTRO                                                                 ###
-###############################################################################
-
-echo "-------------------------------------------------------------------------------"
-echo ""
-echo "Setup to create QtCreator projects"
-echo "=================================="
-echo ""
-
 ###############################################################################
 ###   INITIALIZATION                                                        ###
 ###############################################################################
 
-# the current user dir
-USER_DIR="${PWD}/"
-
-# the directory containing this script file
-toAbsolutePath $(dirname ${BASH_SOURCE[0]}) SCRIPT_DIR
-
-# the root directory of the project
-toAbsolutePath ${SCRIPT_DIR}../../ PROJECT_ROOT_DIR
-
-# the location where to create the QtCreator files
-QTCREATOR_FILES_PATH=${PROJECT_ROOT_DIR}
+# ignore case when comparing strings
+shopt -s nocasematch
 
-# the include path for GCC specific headers
-ARM_NONE_EABI_GCC_BIN=$(which arm-none-eabi-gcc)
-while [ -L $ARM_NONE_EABI_GCC_BIN ]; do
-  ARM_NONE_EABI_GCC_BIN=$(readlink $ARM_NONE_EABI_GCC_BIN)
+# detect what exactly should be done
+NOINFO_FLAG="NOINFO"
+HELP_FLAG="HELP"
+CLEAN_FLAG="CLEAN"
+WIPE_FLAG="WIPE"
+LIGHTRING_FLAG="LR"
+POWERMANAGEMENT_FLAG="PM"
+DIWHEELDRIVE_FLAG="DWD"
+
+# start with an empty array
+ARG_LIST=()
+# try to interpret all given arguments
+for ARG in "$@"; do
+  case $ARG in
+    "no_info")
+      ARG_LIST+=( "$NOINFO_FLAG" )
+      ;;
+    "help")
+      ARG_LIST+=( "$HELP_FLAG" )
+      ;;
+    "clean")
+      ARG_LIST+=( "$CLEAN_FLAG" )
+      ;;
+    "wipe")
+      ARG_LIST+=( "$WIPE_FLAG" )
+      ;;
+    "all")
+      ARG_LIST+=( "$LIGHTRING_FLAG" "$POWERMANAGEMENT_FLAG" "$DIWHEELDRIVE_FLAG" )
+      ;;
+    "LightRing"|"LR")
+      ARG_LIST+=( "$LIGHTRING_FLAG" )
+      ;;
+    "PowerManagement"|"PM")
+      ARG_LIST+=( "$POWERMANAGEMENT_FLAG" )
+      ;;
+    "DiWheelDrive"|"DWD")
+      ARG_LIST+=( "$DIWHEELDRIVE_FLAG" )
+      ;;
+  esac
 done
-toAbsolutePath "$(dirname $ARM_NONE_EABI_GCC_BIN)/../arm-none-eabi/include/" ARM_NONE_EABI_GCC_INCLUDE_PATH
-
-# a common path for all projects
-COMMON_SOURCE_INCLUDE_PATH=${PROJECT_ROOT_DIR}Target/Source
 
-# the paths to the individual projects
-POWERMANAGEMENT_PROJECT_ROOT_PATH=${PROJECT_ROOT_DIR}Target/Demo/ARMCM4_STM32F405_Power_Management_GCC/Boot
-DIWHEELDRIVE_PROJECT_ROOT_PATH=${PROJECT_ROOT_DIR}Target/Demo/ARMCM3_STM32F103_DiWheelDrive_GCC/Boot
-LIGHTRING_PROJECT_ROOT_PATH=${PROJECT_ROOT_DIR}Target/Demo/ARMCM3_STM32F103_LightRing_GCC/Boot
-
-# some prefixes for the project files
-POWERMANAGEMENT_PROJECT_PREFIX="PowerManagement"
-DIWHEELDRIVE_PROJECT_PREFIX="DiWheelDrive"
-LIGHTRING_PROJECT_PREFIX="LightRing"
-
-# evaluate user arguments
-COMMAND=""
-shopt -s nocasematch
-if [ $# == 0 ]; then
-  COMMAND="help"
-else
-  case $1 in
-    "help"|"h")
-      COMMAND="help"
+# evaluate if a help text shall be printed and which further actions to take
+PRINT_INFO=true
+PRINT_HELP=false
+ACTION_REQUESTED=false
+for ARG in ${ARG_LIST[@]}; do
+  case $ARG in
+    $NOINFO_FLAG)
+      PRINT_INFO=false
       ;;
-    "all"|"a")
-      COMMAND="all"
+    $HELP_FLAG)
+      PRINT_HELP=true
       ;;
-    "clean"|"c")
-      COMMAND="clean"
-      ;;
-    "wipe"|"w")
-      COMMAND="wipe"
+    $CLEAN_FLAG|$WIPE_FLAG|$LIGHTRING_FLAG|$POWERMANAGEMENT_FLAG|$DIWHEELDRIVE_FLAG)
+      ACTION_REQUESTED=true
       ;;
     *)
-      COMMAND="unknown"
+      PRINT_HELP=true
       ;;
-   esac
-fi
-
-###############################################################################
-###   SETUP                                                                 ###
-###############################################################################
-
-cd $QTCREATOR_FILES_PATH
-
-case $COMMAND in
-
-  #############################################################################
-  ###   HELP CASE                                                           ###
-  #############################################################################
-  "help")
-    printHelp
-    ;;
-
-  #############################################################################
-  ###   CLEAN / WIPE CASE                                                   ###
-  #############################################################################
-  "clean"|"wipe")
-    echo -n "removing project files..."
-
-    rm ${POWERMANAGEMENT_PROJECT_PREFIX}.includes
-    rm ${POWERMANAGEMENT_PROJECT_PREFIX}.files
-    rm ${POWERMANAGEMENT_PROJECT_PREFIX}.config
-    rm ${POWERMANAGEMENT_PROJECT_PREFIX}.creator
-
-    rm ${DIWHEELDRIVE_PROJECT_PREFIX}.includes
-    rm ${DIWHEELDRIVE_PROJECT_PREFIX}.files
-    rm ${DIWHEELDRIVE_PROJECT_PREFIX}.config
-    rm ${DIWHEELDRIVE_PROJECT_PREFIX}.creator
-
-    rm ${LIGHTRING_PROJECT_PREFIX}.includes
-    rm ${LIGHTRING_PROJECT_PREFIX}.files
-    rm ${LIGHTRING_PROJECT_PREFIX}.config
-    rm ${LIGHTRING_PROJECT_PREFIX}.creator
-
-    echo -e "\tdone"
-
-    if [ $COMMAND == "wipe" ]; then
-      echo -n "removing .user project files..."
-      if [ -f ${POWERMANAGEMENT_PROJECT_PREFIX}.creator.user ]; then
-        rm ${POWERMANAGEMENT_PROJECT_PREFIX}.creator.user
-      fi
-      if [ -f ${DIWHEELDRIVE_PROJECT_PREFIX}.creator.user ]; then
-        rm ${DIWHEELDRIVE_PROJECT_PREFIX}.creator.user
-      fi
-      if [ -f ${LIGHTRING_PROJECT_PREFIX}.creator.user ]; then
-        rm ${LIGHTRING_PROJECT_PREFIX}.creator.user
-      fi
-      echo -e "\tdone"
-    fi
-    ;;
-
-  #############################################################################
-  ###   CREATE CASE                                                         ###
-  #############################################################################
-  "all")
-    ###########################################################################
-    ###   Create PowerManagement Project                                    ###
-    ###########################################################################
-    echo -n "creating project files for ${POWERMANAGEMENT_PROJECT_PREFIX} (STM32F405RGT6)..."
-
-    # generate a file that contains all subdirectories as includes (but ignore hidden and documentation directories)
-    find $ARM_NONE_EABI_GCC_INCLUDE_PATH -type d > ${POWERMANAGEMENT_PROJECT_PREFIX}.includes
-    find $COMMON_SOURCE_INCLUDE_PATH -type d | grep -v "ARMCM3_STM32" >> ${POWERMANAGEMENT_PROJECT_PREFIX}.includes
-    find $POWERMANAGEMENT_PROJECT_ROOT_PATH -type d | grep -v "uip\|fatfs\|ethernetlib\|cmd\|ide" >> ${POWERMANAGEMENT_PROJECT_PREFIX}.includes
-
-    # generate a file that specifies all files
-    echo -n "" > ${POWERMANAGEMENT_PROJECT_PREFIX}.files
-    for path in `cat ${POWERMANAGEMENT_PROJECT_PREFIX}.includes`; do
-       find $path -maxdepth 1 -type f \( ! -iname ".*" \) | grep -v "/arm-none-eabi/" | grep -E ".*(\.h|\.c|\.x)$" >> ${POWERMANAGEMENT_PROJECT_PREFIX}.files
-    done
-
-    # generate a default project configuration file if none exists so far
-    if [ ! -f ${POWERMANAGEMENT_PROJECT_PREFIX}.config ]; then
-      echo -e "// Add predefined macros for your project here. For example:\n// #define YOUR_CONFIGURATION belongs here\n" > ${POWERMANAGEMENT_PROJECT_PREFIX}.config
-    fi
+  esac
+done
 
-    # generate a default .creator file if none exists so far
-    if [ ! -f ${POWERMANAGEMENT_PROJECT_PREFIX}.creator ]; then
-      echo -e "[general]\n" > ${POWERMANAGEMENT_PROJECT_PREFIX}.creator
-    fi
+# print the info prompt
+if [[ $PRINT_INFO = true ]]; then
+
+  ##############################################################################
+  ###   PRINT INFO                                                           ###
+  ##############################################################################
+
+  printf "######################################################################\n"
+  printf "#                                                                    #\n"
+  printf "#            Welcome to the AMiRo-BLT QtCreator IDE setup            #\n"
+  printf "#                                                                    #\n"
+  printf "######################################################################\n"
+  printf "#                                                                    #\n"
+  printf "# Copyright (c) 2016..2017  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"
+  printf "# A PARTICULAR PURPOSE. The development of this software was         #\n"
+  printf "# supported by the Excellence Cluster EXC 227 Cognitive Interaction  #\n"
+  printf "# Technology. The Excellence Cluster EXC 227 is a grant of the       #\n"
+  printf "# Deutsche Forschungsgemeinschaft (DFG) in the context of the German #\n"
+  printf "# Excellence Initiative.                                             #\n"
+  printf "#                                                                    #\n"
+  printf "######################################################################\n"
+  printf "\n"
+fi
 
-    echo -e "\tdone"
+# print setup header
+printf "QtCreator projects setup\n"
+printf "========================\n"
+printf "\n"
+
+# print the help text
+if [[ ${#ARG_LIST[@]} == 0 ||
+      (${#ARG_LIST[@]} == 1 && ${ARG_LIST[0]} == "$NOINFO_FLAG") ||
+      $PRINT_HELP = true ]]; then
+
+  ##############################################################################
+  ###   PRINT HELP                                                           ###
+  ##############################################################################
+
+  printf "The following commands are available:                                 \n"
+  printf "                                                                      \n"
+  printf "  help            - Prints this help text.                            \n"
+  printf "  clean           - Deletes all files created by this script.         \n"
+  printf "  wipe            - Deletes the .user files, created by QtCreator.    \n"
+  printf "  LightRing       - Creates a project for the LightRing module.       \n"
+  printf "  PowerManagement - Creates a project for the PowerManagement module. \n"
+  printf "  DiWheelDrive    - Creates a project for the DiWheelDrive module.    \n"
+  printf "  all             - Creates all three projects.                       \n"
+  printf "                                                                      \n"
+  printf "Any of these commands can be combined, e.g.                           \n"
+  printf "  $> ./setup.sh PowerManagement DiWheelDrive                          \n"
+  printf "will create two projects.                                             \n"
+  printf "\n"
+  printf "Note that this script does not create a project for the SerialBoot    \n"
+  printf "application. Since it uses CMAKE, QtCreator can import it directly.   \n"
 
-    ###########################################################################
-    ###   Create DiWheelDrive Project                                       ###
-    ###########################################################################
-    echo -n "creating project files for ${DIWHEELDRIVE_PROJECT_PREFIX} (STM32F103RET6)..."
+fi
 
-    # generate a file that contains all subdirectories as includes (but ignore hidden and documentation directories)
-    find $ARM_NONE_EABI_GCC_INCLUDE_PATH -type d > ${DIWHEELDRIVE_PROJECT_PREFIX}.includes
-    find $COMMON_SOURCE_INCLUDE_PATH -type d | grep -v "ARMCM4_STM32" >> ${DIWHEELDRIVE_PROJECT_PREFIX}.includes
-    find $DIWHEELDRIVE_PROJECT_ROOT_PATH -type d | grep -v "uip\|fatfs\|ethernetlib\|cmd\|ide" >> ${DIWHEELDRIVE_PROJECT_PREFIX}.includes
+# execute action
+if [ $ACTION_REQUESTED = true ]; then
 
-    # generate a file that specifies all files
-    echo -n "" > ${DIWHEELDRIVE_PROJECT_PREFIX}.files
-    for path in `cat ${DIWHEELDRIVE_PROJECT_PREFIX}.includes`; do
-       find $path -maxdepth 1 -type f \( ! -iname ".*" \) | grep -v "/arm-none-eabi/" | grep -E ".*(\.h|\.c|\.x)$" >> ${DIWHEELDRIVE_PROJECT_PREFIX}.files
-    done
+  ##############################################################################
+  ###   CONFIGURATION                                                        ###
+  ##############################################################################
 
-    # generate a default project configuration file if none exists so far
-    if [ ! -f ${DIWHEELDRIVE_PROJECT_PREFIX}.config ]; then
-      echo -e "// Add predefined macros for your project here. For example:\n// #define YOUR_CONFIGURATION belongs here\n" > ${DIWHEELDRIVE_PROJECT_PREFIX}.config
-    fi
+  # the current user dir
+  USER_DIR="${PWD}/"
 
-    # generate a default .creator file if none exists so far
-    if [ ! -f ${DIWHEELDRIVE_PROJECT_PREFIX}.creator ]; then
-      echo -e "[general]\n" > ${DIWHEELDRIVE_PROJECT_PREFIX}.creator
-    fi
+  # the directory containing this script file
+  toAbsolutePath $(dirname ${BASH_SOURCE[0]}) SCRIPT_DIR
 
-    echo -e "\tdone"
+  # the root directory of the project
+  toAbsolutePath ${SCRIPT_DIR}../.. PROJECT_ROOT_PATH
 
-    ###########################################################################
-    ###   Create LightRing Project                                          ###
-    ###########################################################################
-    echo -n "creating project files for ${LIGHTRING_PROJECT_PREFIX} (STM32F103RET6)..."
+  # the relative path where all project files shall be generated
+  read -p "path where to create/delete the project files: " -i "$PROJECT_ROOT_PATH" -e QTCREATOR_FILES_PATH
+  toAbsolutePath $QTCREATOR_FILES_PATH QTCREATOR_FILES_PATH
 
-    # generate a file that contains all subdirectories as includes (but ignore hidden and documentation directories)
-    find $ARM_NONE_EABI_GCC_INCLUDE_PATH -type d > ${LIGHTRING_PROJECT_PREFIX}.includes
-    find $COMMON_SOURCE_INCLUDE_PATH -type d | grep -v "ARMCM4_STM32" >> ${LIGHTRING_PROJECT_PREFIX}.includes
-    find $LIGHTRING_PROJECT_ROOT_PATH -type d | grep -v "uip\|fatfs\|ethernetlib\|cmd\|ide" >> ${LIGHTRING_PROJECT_PREFIX}.includes
+  # the include path for GCC specific headers
+  ARM_NONE_EABI_GCC_BIN=$(which arm-none-eabi-gcc)
+  while [ -L $ARM_NONE_EABI_GCC_BIN ]; do
+    ARM_NONE_EABI_GCC_BIN=$(readlink $ARM_NONE_EABI_GCC_BIN)
+  done
+  toAbsolutePath "$(dirname $ARM_NONE_EABI_GCC_BIN)/../arm-none-eabi/include/" ARM_NONE_EABI_GCC_INCLUDE_PATH
 
-    # generate a file that specifies all files
-    echo -n "" > ${LIGHTRING_PROJECT_PREFIX}.files
-    for path in `cat ${LIGHTRING_PROJECT_PREFIX}.includes`; do
-       find $path -maxdepth 1 -type f \( ! -iname ".*" \) | grep -v "/arm-none-eabi/" | grep -E ".*(\.h|\.c|\.x)$" >> ${LIGHTRING_PROJECT_PREFIX}.files
-    done
+  # a common path for all projects
+  COMMON_SOURCE_INCLUDE_PATH=${PROJECT_ROOT_PATH}Target/Source
 
-    # generate a default project configuration file if none exists so far
-    if [ ! -f ${LIGHTRING_PROJECT_PREFIX}.config ]; then
-      echo -e "// Add predefined macros for your project here. For example:\n// #define YOUR_CONFIGURATION belongs here\n" > ${LIGHTRING_PROJECT_PREFIX}.config
-    fi
+  # the paths to the individual projects
+  POWERMANAGEMENT_PROJECT_ROOT_PATH=${PROJECT_ROOT_PATH}Target/Demo/ARMCM4_STM32F405_Power_Management_GCC/Boot
+  DIWHEELDRIVE_PROJECT_ROOT_PATH=${PROJECT_ROOT_PATH}Target/Demo/ARMCM3_STM32F103_DiWheelDrive_GCC/Boot
+  LIGHTRING_PROJECT_ROOT_PATH=${PROJECT_ROOT_PATH}Target/Demo/ARMCM3_STM32F103_LightRing_GCC/Boot
 
-    # generate a default .creator file if none exists so far
-    if [ ! -f ${LIGHTRING_PROJECT_PREFIX}.creator ]; then
-      echo -e "[general]\n" > ${LIGHTRING_PROJECT_PREFIX}.creator
-    fi
+  # the prefix names for the projects to be generated
+  LIGHTRING_PROJECT_PREFIX="LightRing"
+  POWERMANAGEMENT_PROJECT_PREFIX="PowerManagement"
+  DIWHEELDRIVE_PROJECT_PREFIX="DiWheelDrive"
 
-    echo -e "\tdone"
+  printf "\n"
 
-    ;;
+  ##############################################################################
+  ###   SETUP                                                                ###
+  ##############################################################################
+
+  # move to the project root directory
+  cd $QTCREATOR_FILES_PATH
+
+  for ARG in ${ARG_LIST[@]}; do
+    case $ARG in
 
-  #############################################################################
-  ###   ERROR CASE                                                          ###
-  #############################################################################
-  *)
-    echo "ERROR: invalid argument!"
-    echo ""
-    printHelp
-    ;;
+      ##########################################################################
+      ###   CLEAN STEP                                                       ###
+      ##########################################################################
 
-esac
+      $CLEAN_FLAG)
+        printf "removing project files..."
 
-###############################################################################
-###   OUTRO                                                                 ###
-###############################################################################
+        # remove all files
+        rm ${LIGHTRING_PROJECT_PREFIX}.includes 2> /dev/null
+        rm ${LIGHTRING_PROJECT_PREFIX}.files 2> /dev/null
+        rm ${LIGHTRING_PROJECT_PREFIX}.config 2> /dev/null
+        rm ${LIGHTRING_PROJECT_PREFIX}.creator 2> /dev/null
+
+        rm ${POWERMANAGEMENT_PROJECT_PREFIX}.includes 2> /dev/null
+        rm ${POWERMANAGEMENT_PROJECT_PREFIX}.files 2> /dev/null
+        rm ${POWERMANAGEMENT_PROJECT_PREFIX}.config 2> /dev/null
+        rm ${POWERMANAGEMENT_PROJECT_PREFIX}.creator 2> /dev/null
+
+        rm ${DIWHEELDRIVE_PROJECT_PREFIX}.includes 2> /dev/null
+        rm ${DIWHEELDRIVE_PROJECT_PREFIX}.files 2> /dev/null
+        rm ${DIWHEELDRIVE_PROJECT_PREFIX}.config 2> /dev/null
+        rm ${DIWHEELDRIVE_PROJECT_PREFIX}.creator 2> /dev/null
+
+        printf "\tdone\n"
+        ;;
+
+      ##########################################################################
+      ###   WIPE STEP                                                        ###
+      ##########################################################################
+
+      $WIPE_FLAG)
+        printf "removing .user project files..."
+
+        # remove all user files
+        rm ${POWERMANAGEMENT_PROJECT_PREFIX}.creator.user 2> /dev/null
+        rm ${DIWHEELDRIVE_PROJECT_PREFIX}.creator.user 2> /dev/null
+        rm ${LIGHTRING_PROJECT_PREFIX}.creator.user 2> /dev/null
+
+        printf "\tdone\n"
+        ;;
+
+      ##########################################################################
+      ###   LIGHTRING SETUP                                                  ###
+      ##########################################################################
+
+      $LIGHTRING_FLAG)
+        printf "creating project files for ${LIGHTRING_PROJECT_PREFIX} (STM32F103RET6)..."
+
+        # generate a file that contains all subdirectories as includes (but ignore hidden and documentation directories)
+        find $ARM_NONE_EABI_GCC_INCLUDE_PATH -type d > ${LIGHTRING_PROJECT_PREFIX}.includes
+        find $COMMON_SOURCE_INCLUDE_PATH -type d | grep -v "ARMCM4_STM32" >> ${LIGHTRING_PROJECT_PREFIX}.includes
+        find $LIGHTRING_PROJECT_ROOT_PATH -type d | grep -v "uip\|fatfs\|ethernetlib\|cmd\|ide" >> ${LIGHTRING_PROJECT_PREFIX}.includes
+
+        # generate a file that specifies all files
+        echo -n "" > ${LIGHTRING_PROJECT_PREFIX}.files
+        for path in `cat ${LIGHTRING_PROJECT_PREFIX}.includes`; do
+          find $path -maxdepth 1 -type f \( ! -iname ".*" \) | grep -v "/arm-none-eabi/" | grep -E ".*(\.h|\.c|\.x)$" >> ${LIGHTRING_PROJECT_PREFIX}.files
+        done
+
+        # generate a default project configuration file if none exists so far
+        if [ ! -f ${LIGHTRING_PROJECT_PREFIX}.config ]; then
+          echo -e "// Add predefined macros for your project here. For example:\n// #define YOUR_CONFIGURATION belongs here\n" > ${LIGHTRING_PROJECT_PREFIX}.config
+        fi
+
+        # generate a default .creator file if none exists so far
+        if [ ! -f ${LIGHTRING_PROJECT_PREFIX}.creator ]; then
+          echo -e "[general]\n" > ${LIGHTRING_PROJECT_PREFIX}.creator
+        fi
+
+        printf "\tdone\n"
+        ;;
+
+      ##########################################################################
+      ###   POWERMANAGEMENT SETUP                                            ###
+      ##########################################################################
+
+      $POWERMANAGEMENT_FLAG)
+        printf "creating project files for ${POWERMANAGEMENT_PROJECT_PREFIX} (STM32F405RGT6)..."
+
+        # generate a file that contains all subdirectories as includes (but ignore hidden and documentation directories)
+        find $ARM_NONE_EABI_GCC_INCLUDE_PATH -type d > ${POWERMANAGEMENT_PROJECT_PREFIX}.includes
+        find $COMMON_SOURCE_INCLUDE_PATH -type d | grep -v "ARMCM3_STM32" >> ${POWERMANAGEMENT_PROJECT_PREFIX}.includes
+        find $POWERMANAGEMENT_PROJECT_ROOT_PATH -type d | grep -v "uip\|fatfs\|ethernetlib\|cmd\|ide" >> ${POWERMANAGEMENT_PROJECT_PREFIX}.includes
+
+        # generate a file that specifies all files
+        echo -n "" > ${POWERMANAGEMENT_PROJECT_PREFIX}.files
+        for path in `cat ${POWERMANAGEMENT_PROJECT_PREFIX}.includes`; do
+          find $path -maxdepth 1 -type f \( ! -iname ".*" \) | grep -v "/arm-none-eabi/" | grep -E ".*(\.h|\.c|\.x)$" >> ${POWERMANAGEMENT_PROJECT_PREFIX}.files
+        done
+
+        # generate a default project configuration file if none exists so far
+        if [ ! -f ${POWERMANAGEMENT_PROJECT_PREFIX}.config ]; then
+          echo -e "// Add predefined macros for your project here. For example:\n// #define YOUR_CONFIGURATION belongs here\n" > ${POWERMANAGEMENT_PROJECT_PREFIX}.config
+        fi
+
+        # generate a default .creator file if none exists so far
+        if [ ! -f ${POWERMANAGEMENT_PROJECT_PREFIX}.creator ]; then
+          echo -e "[general]\n" > ${POWERMANAGEMENT_PROJECT_PREFIX}.creator
+        fi
+
+        printf "\tdone\n"
+        ;;
+
+      ##########################################################################
+      ###   DIWHEELDRIVE SETUP                                               ###
+      ##########################################################################
+
+      $DIWHEELDRIVE_FLAG)
+        printf "creating project files for ${DIWHEELDRIVE_PROJECT_PREFIX} (STM32F103RET6)..."
+
+        # generate a file that contains all subdirectories as includes (but ignore hidden and documentation directories)
+        find $ARM_NONE_EABI_GCC_INCLUDE_PATH -type d > ${DIWHEELDRIVE_PROJECT_PREFIX}.includes
+        find $COMMON_SOURCE_INCLUDE_PATH -type d | grep -v "ARMCM4_STM32" >> ${DIWHEELDRIVE_PROJECT_PREFIX}.includes
+        find $DIWHEELDRIVE_PROJECT_ROOT_PATH -type d | grep -v "uip\|fatfs\|ethernetlib\|cmd\|ide" >> ${DIWHEELDRIVE_PROJECT_PREFIX}.includes
+
+        # generate a file that specifies all files
+        echo -n "" > ${DIWHEELDRIVE_PROJECT_PREFIX}.files
+        for path in `cat ${DIWHEELDRIVE_PROJECT_PREFIX}.includes`; do
+          find $path -maxdepth 1 -type f \( ! -iname ".*" \) | grep -v "/arm-none-eabi/" | grep -E ".*(\.h|\.c|\.x)$" >> ${DIWHEELDRIVE_PROJECT_PREFIX}.files
+        done
+
+        # generate a default project configuration file if none exists so far
+        if [ ! -f ${DIWHEELDRIVE_PROJECT_PREFIX}.config ]; then
+          echo -e "// Add predefined macros for your project here. For example:\n// #define YOUR_CONFIGURATION belongs here\n" > ${DIWHEELDRIVE_PROJECT_PREFIX}.config
+        fi
+
+        # generate a default .creator file if none exists so far
+        if [ ! -f ${DIWHEELDRIVE_PROJECT_PREFIX}.creator ]; then
+          echo -e "[general]\n" > ${DIWHEELDRIVE_PROJECT_PREFIX}.creator
+        fi
+
+        printf "\tdone\n"
+        ;;
+
+    esac
+  done
+fi
 
-echo ""
-echo "-------------------------------------------------------------------------------"
+################################################################################
+###   OUTRO                                                                  ###
+################################################################################
 
