[SLG ROS] Code cleanup, Erika switch
diff --git a/load_generator/docu/SLG_ROS_guide.docx b/load_generator/docu/SLG_ROS_guide.docx
index 48bef3a..41e6dbf 100644
--- a/load_generator/docu/SLG_ROS_guide.docx
+++ b/load_generator/docu/SLG_ROS_guide.docx
Binary files differ
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosChannelSendUtilsGenerator.xtend b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosChannelSendUtilsGenerator.xtend
index 7a04981..3d1ed4d 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosChannelSendUtilsGenerator.xtend
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosChannelSendUtilsGenerator.xtend
@@ -15,6 +15,7 @@
 
 import org.eclipse.app4mc.amalthea.model.ChannelSend
 import org.eclipse.app4mc.amalthea.model.Tag
+import org.eclipse.app4mc.slg.ros2.transformers.utils.Code
 import org.eclipse.app4mc.slg.ros2.transformers.utils.RosModelUtils
 
 class MicroRosChannelSendUtilsGenerator {
@@ -36,10 +37,7 @@
 //		// void «rosNodeName»_publish_to_«param»(rcl_publisher_t *  «rosNodeName»Node_«param»_publisher,  std_msgs__msg__String * «rosNodeName»Node_«param»_msg){
 //
 //		'''
-//		#ifdef __cplusplus
-//		extern "C"
-//		{
-//		#endif
+//		«Code.IFDEF_EXTERN_C_BEGIN»
 //		extern rcl_publisher_t «rosNodeName»Node_«param»_publisher;
 //
 //		void «rosNodeName»_publish_to_«param»(std_msgs__msg__String «rosNodeName»Node_«param»_msg){
@@ -47,11 +45,7 @@
 //			snprintf(«tag.getName()»Node_«param»_msg.data.data, «rosNodeName»Node_«param»_msg.data.capacity, "AAAAAAAAAAAAAAAAAAA");
 //			«rosNodeName»Node_«param»_msg.data.size = strlen(«rosNodeName»Node_«param»_msg.data.data);
 //		}
-//
-//		#ifdef __cplusplus
-//		}
-//		#endif
-//
+//		«Code.IFDEF_EXTERN_C_END»
 //		'''
 //	}
 
@@ -60,13 +54,10 @@
 		val String rosNodeName = RosModelUtils.getROSNodeName(tag)
 
 		'''
-		#ifdef __cplusplus
-		extern "C"
-		{
-		#endif
+		«Code.IFDEF_EXTERN_C_BEGIN»
 		extern rcl_publisher_t «rosNodeName.toLowerCase»Node_«param»_publisher;
 		
-		void «tag.name»_publish_to_«param»(std_msgs__msg__String «rosNodeName»Node_«param»_msg){
+		void «rosNodeName»_publish_to_«param»(std_msgs__msg__String «rosNodeName»Node_«param»_msg){
 			rcl_ret_t rc;
 			snprintf(«rosNodeName»Node_«param»_msg.data.data, «rosNodeName»Node_«param»_msg.data.capacity, "AAAAAAAAAAAAAAAAAAA");
 			«rosNodeName»Node_«param»_msg.data.size = strlen(«rosNodeName»Node_«param»_msg.data.data);
@@ -76,10 +67,7 @@
 			debug_printf("  Published message on '«param»' topic\n");
 			debug_printf("  Published message '%s'\n", «rosNodeName»Node_«param»_msg.data.data);
 		}
-		
-		#ifdef __cplusplus
-		}
-		#endif
+		«Code.IFDEF_EXTERN_C_END»
 		'''
 	}
 
@@ -99,16 +87,9 @@
 		// void «rosNodeName»_publish_to_«param»(rcl_publisher_t *  «rosNodeName»Node_«param»_publisher,  std_msgs__msg__String * «rosNodeName»Node_«param»_msg);
 
 		'''
-		#ifdef __cplusplus
-		extern "C"
-		{
-		#endif
-
+		«Code.IFDEF_EXTERN_C_BEGIN»
 		void «rosNodeName»_publish_to_«param»(std_msgs__msg__String «rosNodeName»Node_«param»_msg);
-
-		#ifdef __cplusplus
-		}
-		#endif		
+		«Code.IFDEF_EXTERN_C_END»
 		'''
 	}
 
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosNodeGenerator.xtend b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosNodeGenerator.xtend
index 9f6d08b..b2d703a 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosNodeGenerator.xtend
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosNodeGenerator.xtend
@@ -36,16 +36,11 @@
 		val nodeName = RosModelUtils.getROSNodeName(tag).toLowerCase
 		val subscriberChannelNames = RosModelUtils.getSubscribers(tag).map[name.toLowerCase]
 		val publisherChannelNames = RosModelUtils.getPublishers(tag).map[name.toLowerCase]
+
+		val isErika = RosModelUtils.getROSTypeName(tag).startsWith("Erika")
 		
 		'''
-		«IF Code.ERIKA»
-			#ifdef __cplusplus
-			extern "C"
-			{
-			#endif
-			
-		«ENDIF»
-		
+		«Code.IFDEF_EXTERN_C_BEGIN»
 		#include <stdio.h>
 		#include <std_msgs/msg/string.h>
 		#include <rclc/executor.h>
@@ -54,15 +49,15 @@
 			«header»
 		«ENDFOR»
 		
-		«IF Code.ERIKA»
+		«IF isErika»
 			/* ERIKA include */
 			#include "ee.h"
 			#include "erika_board_cfg.h"
-			
+
 			/* Console output */
 			#include "output_console.h"
-			
-		«ENDIF»
+		«ENDIF»			
+		
 		/******************************************************************************
 		 *  PERIODIC Tasks
 		 *****************************************************************************/
@@ -224,9 +219,11 @@
 		int uros_init_done = 0;
 		
 		/* uROS Initialization task (one-shot) */
-		DeclareTask(uROSInitTask);
-		TASK(uROSInitTask)
-		{
+		«IF isErika»		
+			DeclareTask(uROSInitTask);
+			TASK(uROSInitTask)
+			{
+		«ENDIF»
 		    printf("Activate MicroROS Init Task\n");
 		    /* Setup microros transport functions */
 		    uros_communication_setup();
@@ -236,50 +233,53 @@
 		    if (ret == 0) {
 		    	uros_init_done = 1;
 		    }
-		
-		    TerminateTask();
-		}
+
+		«IF isErika»		
+			    TerminateTask();
+			}
+		«ENDIF»
 		
 		/* uROS Ping Pong task (periodic = 10000usec) */
-		DeclareTask(uROSPeriodicTask);
-		TASK(uROSPeriodicTask)
-		{
+		«IF isErika»
+			DeclareTask(uROSPeriodicTask);
+			TASK(uROSPeriodicTask)
+			{
+		«ENDIF»
 			if(uros_init_done == 1) {
 			    	rclc_executor_spin_some(&executor, RCL_MS_TO_NS(10));
 			}
-		}
+		«IF isErika»
+			}
+		«ENDIF»
 		
 		
 		/******************************************************************************
 		 *  MAIN
 		 *****************************************************************************/
-		 void idle_hook(void);
-		 void idle_hook(void)
-		 {
-		     printf("Starting communication over UART\n");
-		 
-		     /* Activate task performing MicroROS app */
-		     ActivateTask(uROSInitTask);
-		 
-		     /* endless loop*/
-		     while (1) {
-		         asm volatile("wfi": : : "memory");
-		     }
-		 }
+		void idle_hook(void);
+		void idle_hook(void)
+		{
+			printf("Starting communication over UART\n");
+		«IF isErika»
+			«""»	/* Activate task performing MicroROS app */
+				ActivateTask(uROSInitTask);
+		«ENDIF»
+			/* endless loop*/
+			while (1) {
+				asm volatile("wfi": : : "memory");
+			}
+		}
 		 
 		 int main(void)
 		 {
+		«IF isErika»
 		     erika_console_init();
 		     printf("Starting «nodeName.toUpperCase» (MicroROS node)\n");
 		     StartOS(OSDEFAULTAPPMODE);
 		     return 0;
-		 }
-		
-		«IF Code.ERIKA»
-			#ifdef __cplusplus
-			}
-			#endif
 		«ENDIF»
+		 }
+		«Code.IFDEF_EXTERN_C_END»
 		'''
 	}
 
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosTicksUtilsGenerator.xtend b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosTicksUtilsGenerator.xtend
index 906c955..80465a1 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosTicksUtilsGenerator.xtend
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/generators/MicroRosTicksUtilsGenerator.xtend
@@ -35,13 +35,13 @@
 			# «LIB_NAME» ################################################################
 			####
 			add_library(«LIB_NAME»  STATIC
-		«FOR srcFile : srcFiles»
-			${CMAKE_CURRENT_LIST_DIR}/_src/«srcFile»
+			«FOR srcFile : srcFiles»
+				${CMAKE_CURRENT_LIST_DIR}/_src/«srcFile»
 			«ENDFOR»
 		)
 		
 			target_include_directories(«LIB_NAME»
-			    PUBLIC ${CMAKE_CURRENT_LIST_DIR}/_inc/
+				PUBLIC ${CMAKE_CURRENT_LIST_DIR}/_inc/
 			)	
 	'''
 
@@ -135,23 +135,23 @@
 			// default implementation of tick burning
 			int numLoops = ticks / 400; 
 		#	if defined (__x86_64__)
-		 	for (int i = 0; i < numLoops; i++) {
-		 		«FOR i : 1..400»
-		 			__asm volatile("nop");
-		 		«ENDFOR»
-		 		}
-		#	elif defined (__x86_32__) 		
-		 		for (int i = 0; i < numLoops; i++) {
-		 			 	«FOR i : 1..400»
-		 			 		__asm volatile("mov r0, r0");
-		 			 	«ENDFOR» 
-		 				}
+				for (int i = 0; i < numLoops; i++) {
+					«FOR i : 1..400»
+						__asm volatile("nop");
+					«ENDFOR»
+				}
+		#	elif defined (__x86_32__)
+				for (int i = 0; i < numLoops; i++) {
+					«FOR i : 1..400»
+						__asm volatile("mov r0, r0");
+					«ENDFOR»
+				}
 		#	elif defined (__aarch64__) 		
-		 	for (int i = 0; i < numLoops; i++) {
-		 	«FOR i : 1..400»
-		 		__asm volatile("mov x0, x0");
-		 	«ENDFOR» 
-			}
+				for (int i = 0; i < numLoops; i++) {
+					«FOR i : 1..400»
+						__asm volatile("mov x0, x0");
+					«ENDFOR» 
+				}
 		#	endif
 	'''
 
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/transformers/MicroRosChannelSendUtilsTransformer.java b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/transformers/MicroRosChannelSendUtilsTransformer.java
index 3cec60c..7b3dcdd 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/transformers/MicroRosChannelSendUtilsTransformer.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/transformers/MicroRosChannelSendUtilsTransformer.java
@@ -36,8 +36,6 @@
 	public static final String LIB_NAME = "CHANNELSEND_UTIL";
 	public static final String BASE_PATH = "synthetic_gen";
 	public static final String MODULE_NAME = "channelSendUtils";
-//	public static final String MODULE_PATH = BASE_PATH + "/" + MODULE_NAME;
-//	public static final String MAKEFILE_PATH = MODULE_PATH + "/CMakeLists.txt";
 
 	private List<String> topicList = new ArrayList<>();
 
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/transformers/MicroRosLabelTransformer.java b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/transformers/MicroRosLabelTransformer.java
index 1e58b41..3e821d3 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/transformers/MicroRosLabelTransformer.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/microros/transformers/MicroRosLabelTransformer.java
@@ -90,7 +90,9 @@
 	}
 
 	protected void genFiles(SLGTranslationUnit tu, Label label) {
-		incAppend(tu, "#pragma once \n\n");
+		if (isIncFileEmpty(tu)) {
+			incAppend(tu, "#pragma once \n\n");
+		}
 		incAppend(tu, MicroRosLabelGenerator.toH(label));
 
 		if (isSrcFileEmpty(tu)) {
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/common/RosNodeTransformer.java b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/common/RosNodeTransformer.java
index 1fc3733..0ee43cd 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/common/RosNodeTransformer.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/common/RosNodeTransformer.java
@@ -119,7 +119,6 @@
 
 		String rosTypeName = RosModelUtils.getROSTypeName(tag);
 		boolean isMicroRos = MICRO_ROS_TYPES.contains(rosTypeName);
-		boolean isErika = rosTypeName.startsWith("Erika");
 
 		HashSet<String> codehookHeaders = new HashSet<>();
 
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/Code.java b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/Code.java
index 66d2323..b8d59b3 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/Code.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/src/org/eclipse/app4mc/slg/ros2/transformers/utils/Code.java
@@ -20,8 +20,8 @@
 		throw new IllegalStateException("Utility class");
 	}
 
-	public static final String IFDEF_EXTERN_C_BEGIN = "\n#ifdef __cplusplus \n extern \"C\" \n {\n#endif\n";
-	public static final String IFDEF_EXTERN_C_END = "#ifdef __cplusplus \n }\n#endif\n\n";
+	public static final String IFDEF_EXTERN_C_BEGIN = "\n#ifdef __cplusplus \n extern \"C\" \n {\n#endif\n\n";
+	public static final String IFDEF_EXTERN_C_END = "\n#ifdef __cplusplus \n }\n#endif\n\n";
 
 	public static final boolean ERIKA = true; // temporary: just an attempt to mark the ERIKA parts of the code
 
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosChannelSendUtilsGenerator.java b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosChannelSendUtilsGenerator.java
index d7d128e..cce7981 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosChannelSendUtilsGenerator.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosChannelSendUtilsGenerator.java
@@ -15,6 +15,7 @@
 import org.eclipse.app4mc.amalthea.model.Channel;
 import org.eclipse.app4mc.amalthea.model.ChannelSend;
 import org.eclipse.app4mc.amalthea.model.Tag;
+import org.eclipse.app4mc.slg.ros2.transformers.utils.Code;
 import org.eclipse.app4mc.slg.ros2.transformers.utils.RosModelUtils;
 import org.eclipse.xtend2.lib.StringConcatenation;
 
@@ -44,14 +45,8 @@
       final String param = _name;
       final String rosNodeName = RosModelUtils.getROSNodeName(tag);
       StringConcatenation _builder = new StringConcatenation();
-      _builder.append("#ifdef __cplusplus");
-      _builder.newLine();
-      _builder.append("extern \"C\"");
-      _builder.newLine();
-      _builder.append("{");
-      _builder.newLine();
-      _builder.append("#endif");
-      _builder.newLine();
+      _builder.append(Code.IFDEF_EXTERN_C_BEGIN);
+      _builder.newLineIfNotEmpty();
       _builder.append("extern rcl_publisher_t ");
       String _lowerCase = rosNodeName.toLowerCase();
       _builder.append(_lowerCase);
@@ -61,8 +56,7 @@
       _builder.newLineIfNotEmpty();
       _builder.newLine();
       _builder.append("void ");
-      String _name_1 = tag.getName();
-      _builder.append(_name_1);
+      _builder.append(rosNodeName);
       _builder.append("_publish_to_");
       _builder.append(param);
       _builder.append("(std_msgs__msg__String ");
@@ -123,13 +117,8 @@
       _builder.newLineIfNotEmpty();
       _builder.append("}");
       _builder.newLine();
-      _builder.newLine();
-      _builder.append("#ifdef __cplusplus");
-      _builder.newLine();
-      _builder.append("}");
-      _builder.newLine();
-      _builder.append("#endif");
-      _builder.newLine();
+      _builder.append(Code.IFDEF_EXTERN_C_END);
+      _builder.newLineIfNotEmpty();
       _xblockexpression = _builder.toString();
     }
     return _xblockexpression;
@@ -160,15 +149,8 @@
       final String param = _name;
       final String rosNodeName = RosModelUtils.getROSNodeName(tag);
       StringConcatenation _builder = new StringConcatenation();
-      _builder.append("#ifdef __cplusplus");
-      _builder.newLine();
-      _builder.append("extern \"C\"");
-      _builder.newLine();
-      _builder.append("{");
-      _builder.newLine();
-      _builder.append("#endif");
-      _builder.newLine();
-      _builder.newLine();
+      _builder.append(Code.IFDEF_EXTERN_C_BEGIN);
+      _builder.newLineIfNotEmpty();
       _builder.append("void ");
       _builder.append(rosNodeName);
       _builder.append("_publish_to_");
@@ -179,13 +161,8 @@
       _builder.append(param);
       _builder.append("_msg);");
       _builder.newLineIfNotEmpty();
-      _builder.newLine();
-      _builder.append("#ifdef __cplusplus");
-      _builder.newLine();
-      _builder.append("}");
-      _builder.newLine();
-      _builder.append("#endif\t\t");
-      _builder.newLine();
+      _builder.append(Code.IFDEF_EXTERN_C_END);
+      _builder.newLineIfNotEmpty();
       _xblockexpression = _builder.toString();
     }
     return _xblockexpression;
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosNodeGenerator.java b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosNodeGenerator.java
index 9335b66..863170a 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosNodeGenerator.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosNodeGenerator.java
@@ -43,21 +43,10 @@
         return it.getName().toLowerCase();
       };
       final Iterable<String> publisherChannelNames = IterableExtensions.<Channel, String>map(RosModelUtils.getPublishers(tag), _function_1);
+      final boolean isErika = RosModelUtils.getROSTypeName(tag).startsWith("Erika");
       StringConcatenation _builder = new StringConcatenation();
-      {
-        if (Code.ERIKA) {
-          _builder.append("#ifdef __cplusplus");
-          _builder.newLine();
-          _builder.append("extern \"C\"");
-          _builder.newLine();
-          _builder.append("{");
-          _builder.newLine();
-          _builder.append("#endif");
-          _builder.newLine();
-          _builder.newLine();
-        }
-      }
-      _builder.newLine();
+      _builder.append(Code.IFDEF_EXTERN_C_BEGIN);
+      _builder.newLineIfNotEmpty();
       _builder.append("#include <stdio.h>");
       _builder.newLine();
       _builder.append("#include <std_msgs/msg/string.h>");
@@ -74,7 +63,7 @@
       }
       _builder.newLine();
       {
-        if (Code.ERIKA) {
+        if (isErika) {
           _builder.append("/* ERIKA include */");
           _builder.newLine();
           _builder.append("#include \"ee.h\"");
@@ -86,9 +75,9 @@
           _builder.newLine();
           _builder.append("#include \"output_console.h\"");
           _builder.newLine();
-          _builder.newLine();
         }
       }
+      _builder.newLine();
       _builder.append("/******************************************************************************");
       _builder.newLine();
       _builder.append(" ");
@@ -545,12 +534,16 @@
       _builder.newLine();
       _builder.append("/* uROS Initialization task (one-shot) */");
       _builder.newLine();
-      _builder.append("DeclareTask(uROSInitTask);");
-      _builder.newLine();
-      _builder.append("TASK(uROSInitTask)");
-      _builder.newLine();
-      _builder.append("{");
-      _builder.newLine();
+      {
+        if (isErika) {
+          _builder.append("DeclareTask(uROSInitTask);");
+          _builder.newLine();
+          _builder.append("TASK(uROSInitTask)");
+          _builder.newLine();
+          _builder.append("{");
+          _builder.newLine();
+        }
+      }
       _builder.append("    ");
       _builder.append("printf(\"Activate MicroROS Init Task\\n\");");
       _builder.newLine();
@@ -579,20 +572,28 @@
       _builder.append("}");
       _builder.newLine();
       _builder.newLine();
-      _builder.append("    ");
-      _builder.append("TerminateTask();");
-      _builder.newLine();
-      _builder.append("}");
-      _builder.newLine();
+      {
+        if (isErika) {
+          _builder.append("    ");
+          _builder.append("TerminateTask();");
+          _builder.newLine();
+          _builder.append("}");
+          _builder.newLine();
+        }
+      }
       _builder.newLine();
       _builder.append("/* uROS Ping Pong task (periodic = 10000usec) */");
       _builder.newLine();
-      _builder.append("DeclareTask(uROSPeriodicTask);");
-      _builder.newLine();
-      _builder.append("TASK(uROSPeriodicTask)");
-      _builder.newLine();
-      _builder.append("{");
-      _builder.newLine();
+      {
+        if (isErika) {
+          _builder.append("DeclareTask(uROSPeriodicTask);");
+          _builder.newLine();
+          _builder.append("TASK(uROSPeriodicTask)");
+          _builder.newLine();
+          _builder.append("{");
+          _builder.newLine();
+        }
+      }
       _builder.append("\t");
       _builder.append("if(uros_init_done == 1) {");
       _builder.newLine();
@@ -602,8 +603,12 @@
       _builder.append("\t");
       _builder.append("}");
       _builder.newLine();
-      _builder.append("}");
-      _builder.newLine();
+      {
+        if (isErika) {
+          _builder.append("}");
+          _builder.newLine();
+        }
+      }
       _builder.newLine();
       _builder.newLine();
       _builder.append("/******************************************************************************");
@@ -614,41 +619,36 @@
       _builder.append(" ");
       _builder.append("*****************************************************************************/");
       _builder.newLine();
-      _builder.append(" ");
       _builder.append("void idle_hook(void);");
       _builder.newLine();
-      _builder.append(" ");
       _builder.append("void idle_hook(void)");
       _builder.newLine();
-      _builder.append(" ");
       _builder.append("{");
       _builder.newLine();
-      _builder.append("     ");
+      _builder.append("\t");
       _builder.append("printf(\"Starting communication over UART\\n\");");
       _builder.newLine();
-      _builder.append(" ");
-      _builder.newLine();
-      _builder.append("     ");
-      _builder.append("/* Activate task performing MicroROS app */");
-      _builder.newLine();
-      _builder.append("     ");
-      _builder.append("ActivateTask(uROSInitTask);");
-      _builder.newLine();
-      _builder.append(" ");
-      _builder.newLine();
-      _builder.append("     ");
+      {
+        if (isErika) {
+          _builder.append("\t/* Activate task performing MicroROS app */");
+          _builder.newLineIfNotEmpty();
+          _builder.append("\t");
+          _builder.append("ActivateTask(uROSInitTask);");
+          _builder.newLine();
+        }
+      }
+      _builder.append("\t");
       _builder.append("/* endless loop*/");
       _builder.newLine();
-      _builder.append("     ");
+      _builder.append("\t");
       _builder.append("while (1) {");
       _builder.newLine();
-      _builder.append("         ");
+      _builder.append("\t\t");
       _builder.append("asm volatile(\"wfi\": : : \"memory\");");
       _builder.newLine();
-      _builder.append("     ");
+      _builder.append("\t");
       _builder.append("}");
       _builder.newLine();
-      _builder.append(" ");
       _builder.append("}");
       _builder.newLine();
       _builder.append(" ");
@@ -659,35 +659,26 @@
       _builder.append(" ");
       _builder.append("{");
       _builder.newLine();
-      _builder.append("     ");
-      _builder.append("erika_console_init();");
-      _builder.newLine();
-      _builder.append("     ");
-      _builder.append("printf(\"Starting ");
-      String _upperCase = nodeName.toUpperCase();
-      _builder.append(_upperCase, "     ");
-      _builder.append(" (MicroROS node)\\n\");");
-      _builder.newLineIfNotEmpty();
-      _builder.append("     ");
-      _builder.append("StartOS(OSDEFAULTAPPMODE);");
-      _builder.newLine();
-      _builder.append("     ");
-      _builder.append("return 0;");
-      _builder.newLine();
-      _builder.append(" ");
-      _builder.append("}");
-      _builder.newLine();
-      _builder.newLine();
       {
-        if (Code.ERIKA) {
-          _builder.append("#ifdef __cplusplus");
+        if (isErika) {
+          _builder.append("erika_console_init();");
           _builder.newLine();
-          _builder.append("}");
+          _builder.append("printf(\"Starting ");
+          String _upperCase = nodeName.toUpperCase();
+          _builder.append(_upperCase);
+          _builder.append(" (MicroROS node)\\n\");");
+          _builder.newLineIfNotEmpty();
+          _builder.append("StartOS(OSDEFAULTAPPMODE);");
           _builder.newLine();
-          _builder.append("#endif");
+          _builder.append("return 0;");
           _builder.newLine();
         }
       }
+      _builder.append(" ");
+      _builder.append("}");
+      _builder.newLine();
+      _builder.append(Code.IFDEF_EXTERN_C_END);
+      _builder.newLineIfNotEmpty();
       _xblockexpression = _builder.toString();
     }
     return _xblockexpression;
diff --git a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosTicksUtilsGenerator.java b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosTicksUtilsGenerator.java
index d94f23e..8bf5e8a 100644
--- a/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosTicksUtilsGenerator.java
+++ b/load_generator/plugins/org.eclipse.app4mc.slg.ros2/xtend-gen/org/eclipse/app4mc/slg/microros/generators/MicroRosTicksUtilsGenerator.java
@@ -46,8 +46,9 @@
     _builder.newLineIfNotEmpty();
     {
       for(final String srcFile : srcFiles) {
+        _builder.append("\t");
         _builder.append("${CMAKE_CURRENT_LIST_DIR}/_src/");
-        _builder.append(srcFile);
+        _builder.append(srcFile, "\t");
         _builder.newLineIfNotEmpty();
       }
     }
@@ -58,7 +59,7 @@
     _builder.append("target_include_directories(");
     _builder.append(MicroRosTicksUtilsGenerator.LIB_NAME, "\t");
     _builder.newLineIfNotEmpty();
-    _builder.append("\t    ");
+    _builder.append("\t\t");
     _builder.append("PUBLIC ${CMAKE_CURRENT_LIST_DIR}/_inc/");
     _builder.newLine();
     _builder.append("\t");
@@ -243,50 +244,50 @@
     _builder.newLine();
     _builder.append("#\tif defined (__x86_64__)");
     _builder.newLine();
-    _builder.append(" \t");
+    _builder.append("\t\t");
     _builder.append("for (int i = 0; i < numLoops; i++) {");
     _builder.newLine();
     {
       IntegerRange _upTo = new IntegerRange(1, 400);
       for(final Integer i : _upTo) {
-        _builder.append(" \t\t");
+        _builder.append("\t\t\t");
         _builder.append("__asm volatile(\"nop\");");
         _builder.newLine();
       }
     }
-    _builder.append(" \t\t");
+    _builder.append("\t\t");
     _builder.append("}");
     _builder.newLine();
-    _builder.append("#\telif defined (__x86_32__) \t\t");
+    _builder.append("#\telif defined (__x86_32__)");
     _builder.newLine();
-    _builder.append(" \t\t");
+    _builder.append("\t\t");
     _builder.append("for (int i = 0; i < numLoops; i++) {");
     _builder.newLine();
     {
       IntegerRange _upTo_1 = new IntegerRange(1, 400);
       for(final Integer i_1 : _upTo_1) {
-        _builder.append(" \t\t\t \t");
+        _builder.append("\t\t\t");
         _builder.append("__asm volatile(\"mov r0, r0\");");
         _builder.newLine();
       }
     }
-    _builder.append(" \t\t\t\t");
+    _builder.append("\t\t");
     _builder.append("}");
     _builder.newLine();
     _builder.append("#\telif defined (__aarch64__) \t\t");
     _builder.newLine();
-    _builder.append(" \t");
+    _builder.append("\t\t");
     _builder.append("for (int i = 0; i < numLoops; i++) {");
     _builder.newLine();
     {
       IntegerRange _upTo_2 = new IntegerRange(1, 400);
       for(final Integer i_2 : _upTo_2) {
-        _builder.append(" \t");
+        _builder.append("\t\t\t");
         _builder.append("__asm volatile(\"mov x0, x0\");");
         _builder.newLine();
       }
     }
-    _builder.append("\t");
+    _builder.append("\t\t");
     _builder.append("}");
     _builder.newLine();
     _builder.append("#\tendif");