diff --git a/RTFParallella/.cproject b/RTFParallella/.cproject
new file mode 100755
index 0000000..d09a4a3
--- /dev/null
+++ b/RTFParallella/.cproject
@@ -0,0 +1,63 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
+	<storageModule moduleId="org.eclipse.cdt.core.settings">
+		<cconfiguration id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264">
+			<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264" moduleId="org.eclipse.cdt.core.settings" name="Default">
+				<externalSettings/>
+				<extensions>
+					<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
+					<extension id="org.eclipse.cdt.core.GASErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GmakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.CWDLocator" point="org.eclipse.cdt.core.ErrorParser"/>
+					<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
+				</extensions>
+			</storageModule>
+			<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+				<configuration buildProperties="" description="" id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264" name="Default" optionalBuildProperties="" parent="org.eclipse.cdt.build.core.emptycfg">
+					<folderInfo id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264.813184079" name="/" resourcePath="">
+						<toolChain id="cdt.managedbuild.toolchain.gnu.cross.base.1547314808" name="Cross GCC" superClass="cdt.managedbuild.toolchain.gnu.cross.base">
+							<option id="cdt.managedbuild.option.gnu.cross.prefix.429924673" name="Prefix" superClass="cdt.managedbuild.option.gnu.cross.prefix"/>
+							<option id="cdt.managedbuild.option.gnu.cross.path.1993404401" name="Path" superClass="cdt.managedbuild.option.gnu.cross.path"/>
+							<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="cdt.managedbuild.targetPlatform.gnu.cross.1813206941" isAbstract="false" osList="all" superClass="cdt.managedbuild.targetPlatform.gnu.cross"/>
+							<builder buildPath="${workspace_loc:/org.eclipse.app4mc.examples.rtfp/src/parallella}" enabledIncrementalBuild="true" id="cdt.managedbuild.builder.gnu.cross.65220641" incrementalBuildTarget="example1" keepEnvironmentInBuildfile="false" managedBuildOn="false" name="Gnu Make Builder" superClass="cdt.managedbuild.builder.gnu.cross"/>
+							<tool id="cdt.managedbuild.tool.gnu.cross.c.compiler.175109054" name="Cross GCC Compiler" superClass="cdt.managedbuild.tool.gnu.cross.c.compiler">
+								<inputType id="cdt.managedbuild.tool.gnu.c.compiler.input.1925296426" superClass="cdt.managedbuild.tool.gnu.c.compiler.input"/>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.cross.cpp.compiler.2040290889" name="Cross G++ Compiler" superClass="cdt.managedbuild.tool.gnu.cross.cpp.compiler"/>
+							<tool id="cdt.managedbuild.tool.gnu.cross.c.linker.1912907076" name="Cross GCC Linker" superClass="cdt.managedbuild.tool.gnu.cross.c.linker">
+								<inputType id="cdt.managedbuild.tool.gnu.c.linker.input.774684393" superClass="cdt.managedbuild.tool.gnu.c.linker.input">
+									<additionalInput kind="additionalinputdependency" paths="$(USER_OBJS)"/>
+									<additionalInput kind="additionalinput" paths="$(LIBS)"/>
+								</inputType>
+							</tool>
+							<tool id="cdt.managedbuild.tool.gnu.cross.cpp.linker.1355407963" name="Cross G++ Linker" superClass="cdt.managedbuild.tool.gnu.cross.cpp.linker"/>
+							<tool id="cdt.managedbuild.tool.gnu.cross.archiver.416866046" name="Cross GCC Archiver" superClass="cdt.managedbuild.tool.gnu.cross.archiver"/>
+							<tool id="cdt.managedbuild.tool.gnu.cross.assembler.1563842933" name="Cross GCC Assembler" superClass="cdt.managedbuild.tool.gnu.cross.assembler">
+								<inputType id="cdt.managedbuild.tool.gnu.assembler.input.403113861" superClass="cdt.managedbuild.tool.gnu.assembler.input"/>
+							</tool>
+						</toolChain>
+					</folderInfo>
+				</configuration>
+			</storageModule>
+			<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
+		</cconfiguration>
+	</storageModule>
+	<storageModule moduleId="cdtBuildSystem" version="4.0.0">
+		<project id="org.eclipse.rtfp.null.1987513852" name="org.eclipse.rtfp"/>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
+	<storageModule moduleId="refreshScope" versionNumber="2">
+		<configuration configurationName="Default">
+			<resource resourceType="PROJECT" workspacePath="/org.eclipse.rtfp"/>
+		</configuration>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets"/>
+	<storageModule moduleId="scannerConfiguration">
+		<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		<scannerConfigBuildInfo instanceId="cdt.managedbuild.toolchain.gnu.cross.base.1605716264;cdt.managedbuild.toolchain.gnu.cross.base.1605716264.813184079;cdt.managedbuild.tool.gnu.cross.c.compiler.175109054;cdt.managedbuild.tool.gnu.c.compiler.input.1925296426">
+			<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
+		</scannerConfigBuildInfo>
+	</storageModule>
+	<storageModule moduleId="org.eclipse.cdt.internal.ui.text.commentOwnerProjectMappings"/>
+</cproject>
diff --git a/RTFParallella/.project b/RTFParallella/.project
new file mode 100755
index 0000000..5570539
--- /dev/null
+++ b/RTFParallella/.project
@@ -0,0 +1,26 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<projectDescription>
+	<name>org.eclipse.app4mc.examples.rtfp</name>
+	<comment></comment>
+	<projects>
+	</projects>
+	<buildSpec>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
+			<triggers>clean,full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+		<buildCommand>
+			<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
+			<triggers>full,incremental,</triggers>
+			<arguments>
+			</arguments>
+		</buildCommand>
+	</buildSpec>
+	<natures>
+		<nature>org.eclipse.cdt.core.cnature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
+		<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
+	</natures>
+</projectDescription>
diff --git a/RTFParallella/.settings/language.settings.xml b/RTFParallella/.settings/language.settings.xml
new file mode 100755
index 0000000..73ec64b
--- /dev/null
+++ b/RTFParallella/.settings/language.settings.xml
@@ -0,0 +1,15 @@
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<project>
+	<configuration id="cdt.managedbuild.toolchain.gnu.cross.base.1605716264" name="Default">
+		<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
+			<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
+			<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
+			<provider class="org.eclipse.cdt.managedbuilder.language.settings.providers.GCCBuildCommandParser" id="org.eclipse.cdt.managedbuilder.core.GCCBuildCommandParser" keep-relative-paths="false" name="CDT GCC Build Output Parser" parameter="(g?cc)|([gc]\+\+)|(clang)" prefer-non-shared="true"/>
+			<provider class="org.eclipse.cdt.internal.build.crossgcc.CrossGCCBuiltinSpecsDetector" console="false" env-hash="-1378115495018860532" id="org.eclipse.cdt.build.crossgcc.CrossGCCBuiltinSpecsDetector" keep-relative-paths="false" name="CDT Cross GCC Built-in Compiler Settings" parameter="${COMMAND} ${FLAGS} -E -P -v -dD &quot;${INPUTS}&quot;" prefer-non-shared="true">
+				<language-scope id="org.eclipse.cdt.core.gcc"/>
+				<language-scope id="org.eclipse.cdt.core.g++"/>
+			</provider>
+			<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
+		</extension>
+	</configuration>
+</project>
diff --git a/RTFParallella/.settings/org.eclipse.cdt.codan.core.prefs b/RTFParallella/.settings/org.eclipse.cdt.codan.core.prefs
new file mode 100644
index 0000000..9a577d2
--- /dev/null
+++ b/RTFParallella/.settings/org.eclipse.cdt.codan.core.prefs
@@ -0,0 +1,89 @@
+eclipse.preferences.version=1
+org.eclipse.cdt.codan.checkers.errnoreturn=Warning
+org.eclipse.cdt.codan.checkers.errnoreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return\\")",implicit\=>false}
+org.eclipse.cdt.codan.checkers.errreturnvalue=Error
+org.eclipse.cdt.codan.checkers.errreturnvalue.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused return value\\")"}
+org.eclipse.cdt.codan.checkers.nocommentinside=-Error
+org.eclipse.cdt.codan.checkers.nocommentinside.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Nesting comments\\")"}
+org.eclipse.cdt.codan.checkers.nolinecomment=-Error
+org.eclipse.cdt.codan.checkers.nolinecomment.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Line comments\\")"}
+org.eclipse.cdt.codan.checkers.noreturn=Error
+org.eclipse.cdt.codan.checkers.noreturn.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No return value\\")",implicit\=>false}
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation=Error
+org.eclipse.cdt.codan.internal.checkers.AbstractClassCreation.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Abstract class cannot be instantiated\\")"}
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AmbiguousProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Ambiguous problem\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.AssignmentInConditionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment in condition\\")"}
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem=Error
+org.eclipse.cdt.codan.internal.checkers.AssignmentToItselfProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Assignment to itself\\")"}
+org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.CStyleCastProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"C-Style cast instead of C++ cast\\")"}
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.CaseBreakProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"No break at end of case\\")",no_break_comment\=>"no break",last_case_param\=>false,empty_case_param\=>false,enable_fallthrough_quickfix_param\=>false}
+org.eclipse.cdt.codan.internal.checkers.CatchByReference=Warning
+org.eclipse.cdt.codan.internal.checkers.CatchByReference.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Catching by reference is recommended\\")",unknown\=>false,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem=Error
+org.eclipse.cdt.codan.internal.checkers.CircularReferenceProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Circular inheritance\\")"}
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization=Warning
+org.eclipse.cdt.codan.internal.checkers.ClassMembersInitialization.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class members should be properly initialized\\")",skip\=>true}
+org.eclipse.cdt.codan.internal.checkers.CopyrightProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.CopyrightProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Lack of copyright information\\")",regex\=>".*Copyright.*"}
+org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem=Error
+org.eclipse.cdt.codan.internal.checkers.DecltypeAutoProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid 'decltype(auto)' specifier\\")"}
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FieldResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Field cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.FunctionResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Function cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.GotoStatementProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Goto statement used\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidArguments.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid arguments\\")"}
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem=Error
+org.eclipse.cdt.codan.internal.checkers.InvalidTemplateArgumentsProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid template argument\\")"}
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.LabelStatementNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Label statement not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MemberDeclarationNotFoundProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Member declaration not found\\")"}
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.MethodResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Method cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.MissCaseProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.MissCaseProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing cases in switch\\")"}
+org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.MissDefaultProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Missing default in switch\\")",defaultWithAllEnums\=>false}
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker=-Info
+org.eclipse.cdt.codan.internal.checkers.NamingConventionFunctionChecker.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Name convention for function\\")",pattern\=>"^[a-z]",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.NonVirtualDestructorProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Class has a virtual method and non-virtual destructor\\")"}
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem=Error
+org.eclipse.cdt.codan.internal.checkers.OverloadProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid overload\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redeclaration\\")"}
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.RedefinitionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Invalid redefinition\\")"}
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ReturnStyleProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Return with parenthesis\\")"}
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.ScanfFormatStringSecurityProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Format String Vulnerability\\")"}
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.StatementHasNoEffectProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Statement has no effect\\")",macro\=>true,exceptions\=>()}
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuggestedParenthesisProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suggested parenthesis around expression\\")",paramNot\=>false}
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.SuspiciousSemicolonProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Suspicious semicolon\\")",else\=>false,afterelse\=>false}
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.TypeResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Type cannot be resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedFunctionDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused function declaration\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedStaticFunctionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused static function\\")",macro\=>true}
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem=Warning
+org.eclipse.cdt.codan.internal.checkers.UnusedVariableDeclarationProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Unused variable declaration in file scope\\")",macro\=>true,exceptions\=>("@(\#)","$Id")}
+org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem=-Warning
+org.eclipse.cdt.codan.internal.checkers.UsingInHeaderProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Using directive in header\\")"}
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem=Error
+org.eclipse.cdt.codan.internal.checkers.VariableResolutionProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Symbol is not resolved\\")"}
+org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem=-Error
+org.eclipse.cdt.codan.internal.checkers.VirtualMethodCallProblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>true,RUN_ON_INC_BUILD\=>true,RUN_ON_FILE_OPEN\=>false,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>"@suppress(\\"Virtual method call in constructor/destructor\\")"}
+org.eclipse.cdt.qt.core.qtproblem=Warning
+org.eclipse.cdt.qt.core.qtproblem.params={launchModes\=>{RUN_ON_FULL_BUILD\=>false,RUN_ON_INC_BUILD\=>false,RUN_ON_FILE_OPEN\=>true,RUN_ON_FILE_SAVE\=>false,RUN_AS_YOU_TYPE\=>true,RUN_ON_DEMAND\=>true},suppression_comment\=>null}
diff --git a/RTFParallella/.settings/org.eclipse.cdt.core.prefs b/RTFParallella/.settings/org.eclipse.cdt.core.prefs
new file mode 100644
index 0000000..9b32d95
--- /dev/null
+++ b/RTFParallella/.settings/org.eclipse.cdt.core.prefs
@@ -0,0 +1,171 @@
+eclipse.preferences.version=1
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CINNAMON_VERSION/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CINNAMON_VERSION/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CINNAMON_VERSION/value=3.6.7
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CLUTTER_IM_MODULE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CLUTTER_IM_MODULE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/CLUTTER_IM_MODULE/value=xim
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DBUS_SESSION_BUS_ADDRESS/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DBUS_SESSION_BUS_ADDRESS/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DBUS_SESSION_BUS_ADDRESS/value=unix\:path\=/run/user/1000/bus
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DESKTOP_SESSION/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DESKTOP_SESSION/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DESKTOP_SESSION/value=cinnamon
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DISPLAY/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DISPLAY/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/DISPLAY/value=\:0
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDK_CORE_DEVICE_EVENTS/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDK_CORE_DEVICE_EVENTS/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDK_CORE_DEVICE_EVENTS/value=1
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDMSESSION/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDMSESSION/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GDMSESSION/value=cinnamon
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE/value=/usr/share/applications/nemo.desktop
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE_PID/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE_PID/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GIO_LAUNCHED_DESKTOP_FILE_PID/value=2854
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_OUTPUT/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_OUTPUT/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_OUTPUT/value=stderr
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_TOPICS/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_TOPICS/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GJS_DEBUG_TOPICS/value=JS ERROR;JS LOG
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GNOME_DESKTOP_SESSION_ID/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GNOME_DESKTOP_SESSION_ID/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GNOME_DESKTOP_SESSION_ID/value=this-is-deprecated
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GPG_AGENT_INFO/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GPG_AGENT_INFO/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GPG_AGENT_INFO/value=/run/user/1000/gnupg/S.gpg-agent\:0\:1
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_IM_MODULE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_IM_MODULE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_IM_MODULE/value=ibus
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_MODULES/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_MODULES/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_MODULES/value=gail\:atk-bridge
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_OVERLAY_SCROLLING/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_OVERLAY_SCROLLING/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/GTK_OVERLAY_SCROLLING/value=0
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/HOME/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/HOME/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/HOME/value=/home/mahmoud
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LANG/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LANG/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LANG/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_ADDRESS/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_ADDRESS/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_ADDRESS/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_IDENTIFICATION/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_IDENTIFICATION/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_IDENTIFICATION/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MEASUREMENT/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MEASUREMENT/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MEASUREMENT/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MONETARY/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MONETARY/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_MONETARY/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NAME/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NAME/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NAME/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NUMERIC/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NUMERIC/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_NUMERIC/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_PAPER/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_PAPER/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_PAPER/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TELEPHONE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TELEPHONE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TELEPHONE/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TIME/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TIME/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LC_TIME/value=en_US.UTF-8
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LIBOVERLAY_SCROLLBAR/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LIBOVERLAY_SCROLLBAR/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LIBOVERLAY_SCROLLBAR/value=0
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LOGNAME/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LOGNAME/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/LOGNAME/value=mahmoud
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/OXYGEN_DISABLE_INNER_SHADOWS_HACK/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/OXYGEN_DISABLE_INNER_SHADOWS_HACK/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/OXYGEN_DISABLE_INNER_SHADOWS_HACK/value=1
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PAPERSIZE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PAPERSIZE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PAPERSIZE/value=letter
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PATH/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PATH/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PATH/value=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/usr/games\:/usr/local/games\:/snap/bin
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PWD/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PWD/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/PWD/value=/home/mahmoud
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT4_IM_MODULE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT4_IM_MODULE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT4_IM_MODULE/value=xim
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_ACCESSIBILITY/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_ACCESSIBILITY/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_ACCESSIBILITY/value=1
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_IM_MODULE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_IM_MODULE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_IM_MODULE/value=ibus
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_QPA_PLATFORMTHEME/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_QPA_PLATFORMTHEME/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/QT_QPA_PLATFORMTHEME/value=gtk2
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SESSION_MANAGER/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SESSION_MANAGER/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SESSION_MANAGER/value=local/mahmoud-ThinkPad-E480\:@/tmp/.ICE-unix/1427,unix/mahmoud-ThinkPad-E480\:/tmp/.ICE-unix/1427
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHELL/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHELL/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHELL/value=/bin/bash
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHLVL/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHLVL/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SHLVL/value=0
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AGENT_PID/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AGENT_PID/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AGENT_PID/value=1495
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AUTH_SOCK/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AUTH_SOCK/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/SSH_AUTH_SOCK/value=/run/user/1000/keyring/ssh
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USER/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USER/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USER/value=mahmoud
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USERNAME/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USERNAME/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/USERNAME/value=mahmoud
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/WINDOWPATH/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/WINDOWPATH/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/WINDOWPATH/value=2
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XAUTHORITY/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XAUTHORITY/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XAUTHORITY/value=/run/user/1000/gdm/Xauthority
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CONFIG_DIRS/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CONFIG_DIRS/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CONFIG_DIRS/value=/etc/xdg/xdg-cinnamon\:/etc/xdg
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CURRENT_DESKTOP/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CURRENT_DESKTOP/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_CURRENT_DESKTOP/value=X-Cinnamon
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_DATA_DIRS/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_DATA_DIRS/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_DATA_DIRS/value=/usr/share/gnome\:/usr/share/cinnamon\:/usr/local/share\:/usr/share\:/var/lib/snapd/desktop
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_RUNTIME_DIR/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_RUNTIME_DIR/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_RUNTIME_DIR/value=/run/user/1000
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SEAT/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SEAT/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SEAT/value=seat0
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_DESKTOP/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_DESKTOP/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_DESKTOP/value=cinnamon
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_ID/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_ID/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_ID/value=2
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_TYPE/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_TYPE/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_SESSION_TYPE/value=x11
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_VTNR/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_VTNR/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XDG_VTNR/value=2
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XMODIFIERS/delimiter=\:
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XMODIFIERS/operation=append
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/XMODIFIERS/value=@im\=ibus
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/append=true
+environment/project/cdt.managedbuild.toolchain.gnu.cross.base.1605716264/appendContributed=true
diff --git a/RTFParallella/README.md b/RTFParallella/README.md
new file mode 100644
index 0000000..33b40f9
--- /dev/null
+++ b/RTFParallella/README.md
@@ -0,0 +1,39 @@
+# RTFParallella
+> RTFP is a framework to implement multi core real time embedded applications on the Adapteva Parallella platform.
+RTFParallella uses FreeRTOS to implement amalthea models for verification.
+
+## Installation
+
+```sh
+sh patch_init.sh
+```
+
+## Usage example
+
+RTFParallella can be used with code generation tools to implement Amalthea tasks. 
+RTFParallella can be used as a quik start tool to test the viability of a multi-core real-time system
+
+_For more examples and usage, please refer to the [documentation][documentation]._
+
+
+## Release History
+
+* 1.0
+    * Initial release of RTFParallella and examples.
+
+## Contributers
+
+* Mahmoud Bazzal – [@mahmood1994has](https://twitter.com/mahmood1994has) – mahmood1994ha@gmail.com
+
+Distributed under EPL license.
+
+## Contributing
+
+1. Fork it 
+2. Create your feature branch
+3. Commit your changes
+4. Push to the branch 
+5. Create a new Pull Request
+
+<!-- Markdown link & img dfn's -->
+[documentation]: https://rtfparallella.readthedocs.io/en/latest/
diff --git a/RTFParallella/parallellaDeploy.sh b/RTFParallella/parallellaDeploy.sh
new file mode 100755
index 0000000..e0c84da
--- /dev/null
+++ b/RTFParallella/parallellaDeploy.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+#*******************************************************************************
+#   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+#  
+#   This program and the accompanying materials are made
+#   available under the terms of the Eclipse Public License 2.0
+#   which is available at https://www.eclipse.org/legal/epl-2.0/
+#  
+#   SPDX-License-Identifier: EPL-2.0
+#  
+#   Contributors:
+#        Dortmund University of Applied Sciences and Arts - initial API and implementation
+#*******************************************************************************
+echo "Parallella Deployment Script version 1.0"
+echo "welcome to the world of tomorrow"
+
+#Board connection parameters
+HOST_NAME=172.22.167.10
+HOST_USER=parallella
+PORT=22
+HOST_OFFLOAD_PATH="~/boardExec"
+
+#SSH key file
+KEY=~/.ssh/id_rsa
+#path and file name inputs
+DEPOLYMENT_BINARY=${1?Error: no host binary given}
+
+#proper ssh, use this to open an ssh connection to parallella for execution
+#sudo ssh parallella@idial.institute -p 32767 -i ~/.ssh/key
+
+#clear hostOfflad path before copying new files
+#ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "cd $HOST_OFFLOAD_PATH "
+
+#transfer host and device binaries to parallella board
+echo "---------------------------------------"
+echo "copying binaries to remote board..."
+scp -4 -C -P $PORT -i $KEY $DEPOLYMENT_BINARY $HOST_USER@$HOST_NAME:$HOST_OFFLOAD_PATH
+if [[ $? != 0 ]]; then
+  echo "Transfer failed!"
+  exit 1
+else
+  echo "Transfer complete."
+fi
+echo "---------------------------------------"
+echo "Running program $HOST_BINARY"
+echo "***************************************"
+#run the binaries remotely on parallella
+#ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "EPIPHANY_HOME=/opt/adapteva/esdk && . $EPIPHANY_HOME/setup.sh && cd $HOST_OFFLOAD_PATH && ./$DEPOLYMENT_BINARY"
+echo "***************************************"
+echo "done"
diff --git a/RTFParallella/parallellaRun.sh b/RTFParallella/parallellaRun.sh
new file mode 100755
index 0000000..16989b9
--- /dev/null
+++ b/RTFParallella/parallellaRun.sh
@@ -0,0 +1,34 @@
+#!/usr/bin/env bash
+#*******************************************************************************
+#   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+#  
+#   This program and the accompanying materials are made
+#   available under the terms of the Eclipse Public License 2.0
+#   which is available at https://www.eclipse.org/legal/epl-2.0/
+#  
+#   SPDX-License-Identifier: EPL-2.0
+#  
+#   Contributors:
+#        Dortmund University of Applied Sciences and Arts - initial API and implementation
+#*******************************************************************************
+echo "Parallella remote Script version 1.0"
+echo "welcome to the world of tomorrow"
+
+#Board connection parameters
+HOST_NAME=172.22.167.10
+HOST_USER=parallella
+PORT=22
+HOST_OFFLOAD_PATH="~/boardExec"
+
+#SSH key file
+KEY=~/.ssh/key
+#path and file name inputs
+DEPOLYMENT_BINARY=${1?Error: no host binary given}
+
+echo "---------------------------------------"
+echo "Running program $HOST_BINARY"
+echo "***************************************"
+#run the binaries remotely on parallella
+ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "EPIPHANY_HOME=/opt/adapteva/esdk && . $EPIPHANY_HOME/setup.sh && cd $HOST_OFFLOAD_PATH && ./$DEPOLYMENT_BINARY"
+echo "***************************************"
+echo "done"
diff --git a/RTFParallella/patch_init.sh b/RTFParallella/patch_init.sh
new file mode 100644
index 0000000..1d2113e
--- /dev/null
+++ b/RTFParallella/patch_init.sh
@@ -0,0 +1,50 @@
+#!/usr/bin/env bash
+#*******************************************************************************
+#   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+#  
+#   This program and the accompanying materials are made
+#   available under the terms of the Eclipse Public License 2.0
+#   which is available at https://www.eclipse.org/legal/epl-2.0/
+#  
+#   SPDX-License-Identifier: EPL-2.0
+#  
+#   Contributors:
+#        Dortmund University of Applied Sciences and Arts - initial API and implementation
+#*******************************************************************************
+echo "Parallella Deployment Script version 1.0"
+echo "welcome to the world of tomorrow"
+
+#Board connection parameters
+HOST_NAME=172.22.167.10
+HOST_USER=parallella
+PORT=22
+HOST_OFFLOAD_PATH="~/boardExec"
+
+#SSH key file
+KEY=~/.ssh/id_rsa
+#path and file name inputs
+DEPOLYMENT_BINARY=${1?Error: no host binary given}
+
+#proper ssh, use this to open an ssh connection to parallella for execution
+#sudo ssh parallella@idial.institute -p 32767 -i ~/.ssh/key
+
+#clear hostOfflad path before copying new files
+#ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "cd $HOST_OFFLOAD_PATH "
+
+#transfer host and device binaries to parallella board
+echo "---------------------------------------"
+echo "copying binaries to remote board..."
+scp -4 -C -P $PORT -i $KEY $DEPOLYMENT_BINARY $HOST_USER@$HOST_NAME:$HOST_OFFLOAD_PATH
+if [[ $? != 0 ]]; then
+  echo "Transfer failed!"
+  exit 1
+else
+  echo "Transfer complete."
+fi
+echo "---------------------------------------"
+echo "Running program $HOST_BINARY"
+echo "***************************************"
+#run the binaries remotely on parallella
+#ssh $HOST_NAME -p$PORT -l$HOST_USER -i$KEY "EPIPHANY_HOME=/opt/adapteva/esdk && . $EPIPHANY_HOME/setup.sh && cd $HOST_OFFLOAD_PATH && ./$DEPOLYMENT_BINARY"
+echo "***************************************"
+echo "done"
\ No newline at end of file
diff --git a/RTFParallella/port_patch.patch b/RTFParallella/port_patch.patch
new file mode 100644
index 0000000..95e1b4b
--- /dev/null
+++ b/RTFParallella/port_patch.patch
@@ -0,0 +1,375 @@
+3a4
+> #include <stdlib.h>
+5c6
+< #define CyclesForTick (configCPU_CLOCK_HZ/configTICK_RATE_HZ - 50)
+---
+> #include "debugFlags.h"
+6a8,10
+> #define CyclesForTick (configCPU_CLOCK_HZ/configTICK_RATE_HZ - 50)
+> //debugging
+> //TODO core to core comms will use this
+8,10c12,14
+< 
+< /*-----------------------------------------------------------*/
+< 
+---
+> //---------------------------------------------------
+> int globalDelta;
+> //---------------------------------------------------
+16d19
+< 
+18d20
+< 
+32c34,35
+<     StackType_t *pxStackStart;
+---
+> 	StackType_t *pxStackStart;
+> 
+34,38c37,40
+<     
+<     //align to double-word boundary
+<     pxStackStart = (StackType_t *)(( StackType_t ) pxTopOfStack & ~(0x4));
+<     
+<     /* To ensure asserts in tasks.c don't fail, although in this case the assert
+---
+> 	//align to double-word boundary
+> 	pxStackStart = (StackType_t *)(( StackType_t ) pxTopOfStack & ~(0x4));
+> 
+> 	/* To ensure asserts in tasks.c don't fail, although in this case the assert
+40c42
+<     pxTopOfStack--;
+---
+> 	pxTopOfStack--;
+42,43c44,45
+<     /* for alignment */
+<     pxTopOfStack--;
+---
+> 	/* for alignment */
+> 	pxTopOfStack--;
+45c47
+<     /* Setup the initial stack of the task.  The stack is set exactly as 
+---
+> 	/* Setup the initial stack of the task.  The stack is set exactly as
+48c50
+<     /* First on the stack is the return address - which in this case is the
+---
+> 	/* First on the stack is the return address - which in this case is the
+51,94c53,96
+<     *pxTopOfStack = ( StackType_t ) 0xdeadaffe;      
+<     pxTopOfStack--;
+<     pxTopOfStack--;
+<     pxTopOfStack--;
+< 
+<     
+<     int i;
+<     
+<     for(i=63;i>14;i--) {
+<       *pxTopOfStack = ( StackType_t ) i<<8; /* higher registers */
+<        pxTopOfStack--; 
+<     }
+<     
+<     
+<     *pxTopOfStack = ( StackType_t ) 0xaaaaaaaa; /* R14 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x51aac4de; /* Stack used when task starts goes in R13. */
+<     pxStackStart = pxTopOfStack;
+<     pxTopOfStack--;
+<     *pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x11111111; /* R11 */
+<     //*pxTopOfStack = ( StackType_t ) pxOriginalTOS; /* frame pointer to stack address. */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x10101010; /* R10 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x09090909; /* R9 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x08080808; /* R8 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x07070707; /* R7 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x06060606; /* R6 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x05050505; /* R5 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x04040404; /* R4 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x03030303; /* R3 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x02020202; /* R2 */
+<     pxTopOfStack--; 
+<     *pxTopOfStack = ( StackType_t ) 0x01010101; /* R1 */
+<     pxTopOfStack--; 
+---
+> 	*pxTopOfStack = ( StackType_t ) 0xdeadaffe;
+> 	pxTopOfStack--;
+> 	pxTopOfStack--;
+> 	pxTopOfStack--;
+> 
+> 
+> 	int i;
+> 
+> 	for(i=63;i>14;i--) {
+> 		*pxTopOfStack = ( StackType_t ) i<<8; /* higher registers */
+> 		pxTopOfStack--;
+> 	}
+> 
+> 
+> 	*pxTopOfStack = ( StackType_t ) 0xaaaaaaaa; /* R14 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x51aac4de; /* Stack used when task starts goes in R13. */
+> 	pxStackStart = pxTopOfStack;
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x12121212; /* R12 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x11111111; /* R11 */
+> 	//*pxTopOfStack = ( StackType_t ) pxOriginalTOS; /* frame pointer to stack address. */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x10101010; /* R10 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x09090909; /* R9 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x08080808; /* R8 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x07070707; /* R7 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x06060606; /* R6 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x05050505; /* R5 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x04040404; /* R4 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x03030303; /* R3 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x02020202; /* R2 */
+> 	pxTopOfStack--;
+> 	*pxTopOfStack = ( StackType_t ) 0x01010101; /* R1 */
+> 	pxTopOfStack--;
+96c98
+<     /* When the task starts is will expect to find the function parameter in
+---
+> 	/* When the task starts is will expect to find the function parameter in
+98,103c100,103
+<     *pxTopOfStack-- = ( StackType_t ) pvParameters; /* R0 */
+<     
+<     // second last thing: program counter, no normal register on epiphany!
+<     *pxTopOfStack-- = ( StackType_t ) pxCode; /* Stack used when task starts goes in R13. */
+<     
+<     
+---
+> 	*pxTopOfStack-- = ( StackType_t ) pvParameters; /* R0 */
+> 
+> 	// second last thing: program counter, no normal register on epiphany!
+> 	*pxTopOfStack-- = ( StackType_t ) pxCode; /* Stack used when task starts goes in R13. */
+105c105,107
+<     /* The last thing onto the stack is the status register, which is set for
+---
+> 
+> 
+> 	/* The last thing onto the stack is the status register, which is set for
+107c109,110
+<     *pxTopOfStack = ( StackType_t ) 0x03;
+---
+> 	*pxTopOfStack = ( StackType_t ) 0x03;
+> 
+109d111
+<     
+111c113
+<     /* Some optimisation levels use the stack differently to others.  This 
+---
+> 	/* Some optimisation levels use the stack differently to others.  This
+115,117c117,119
+<     //*pxTopOfStack = 0;
+<     //return pxOriginalTOS;
+<     return pxTopOfStack;
+---
+> 	//*pxTopOfStack = 0;
+> 	//return pxOriginalTOS;
+> 	return pxTopOfStack;
+120c122
+< 
+---
+> /*-----THE PROBLEM FUNCTION---------------*/
+122c124
+<     unsigned memprotectregister = e_reg_read(E_REG_MEMPROTECT);
+---
+> 	unsigned memprotectregister = e_reg_read(E_REG_MEMPROTECT);
+124,127c126,129
+<     //clear last 8 bits
+<     memprotectregister &= 0xffffff00;
+<     //sets it to the specified value
+<     memprotectregister |= mask;
+---
+> 	//clear last 8 bits
+> 	memprotectregister &= 0xffffff00;
+> 	//sets it to the specified value
+> 	memprotectregister |= mask;
+129c131
+<     e_reg_write(E_REG_MEMPROTECT, memprotectregister);
+---
+> 	e_reg_write(E_REG_MEMPROTECT, memprotectregister);
+131c133
+< 
+---
+> /*-----------------------------------------------------------*/
+140,141c142,143
+<     e_irq_attach(E_USER_INT, handlers[E_USER_INT]);
+<     e_irq_mask(E_USER_INT, E_FALSE);
+---
+> 	e_irq_attach(E_USER_INT, handlers[E_USER_INT]);
+> 	e_irq_mask(E_USER_INT, E_FALSE);
+143,144c145,146
+<     e_irq_attach(E_TIMER0_INT, handlers[E_TIMER0_INT]);
+<     e_irq_mask(E_TIMER0_INT, E_FALSE);
+---
+> 	e_irq_attach(E_TIMER0_INT, handlers[E_TIMER0_INT]);
+> 	e_irq_mask(E_TIMER0_INT, E_FALSE);
+146,147c148,149
+<     e_irq_attach(E_MEM_FAULT, handlers[E_MEM_FAULT]);
+<     e_irq_mask(E_MEM_FAULT, E_FALSE);
+---
+> 	e_irq_attach(E_MEM_FAULT, handlers[E_MEM_FAULT]);
+> 	e_irq_mask(E_MEM_FAULT, E_FALSE);
+149,150c151,152
+<     e_irq_attach(E_SW_EXCEPTION, handlers[E_SW_EXCEPTION]);
+<     e_irq_mask(E_SW_EXCEPTION, E_FALSE);
+---
+> 	e_irq_attach(E_SW_EXCEPTION, handlers[E_SW_EXCEPTION]);
+> 	e_irq_mask(E_SW_EXCEPTION, E_FALSE);
+152,153c154,155
+<     e_irq_attach(E_MESSAGE_INT, handlers[E_MESSAGE_INT]);
+<     e_irq_mask(E_MESSAGE_INT, E_FALSE);
+---
+> 	e_irq_attach(E_MESSAGE_INT, handlers[E_MESSAGE_INT]);
+> 	e_irq_mask(E_MESSAGE_INT, E_FALSE);
+155c157,159
+<     setMemprotectMask(0x0f);
+---
+> 	vSetupTimer();
+> 	//condition left for debugging
+> 	if(globalDelta == 0){
+157c161
+<     vSetupTimer();
+---
+> 	}else{
+158a163
+> 	}
+161d165
+< 
+170c174
+<     e_irq_mask(E_TIMER1_INT, E_TRUE);
+---
+> 	e_irq_mask(E_TIMER1_INT, E_TRUE);
+180,184c184,188
+<     // There seems to be no working software interrupt, so we send a user-interrupt to ourself
+<     e_coreid_t thiscore = e_get_coreid();
+<     unsigned row, col;
+<     e_coords_from_coreid(thiscore, &row, &col);
+<     e_irq_set(row,col,E_USER_INT);
+---
+> 	// There seems to be no working software interrupt, so we send a user-interrupt to ourself
+> 	e_coreid_t thiscore = e_get_coreid();
+> 	unsigned row, col;
+> 	e_coords_from_coreid(thiscore, &row, &col);
+> 	e_irq_set(row,col,E_USER_INT);
+193,199c197,208
+<     unsigned int cyclesForTick = CyclesForTick;
+<     int delta = E_CTIMER_MAX - e_ctimer_get(E_CTIMER_1) - cyclesForTick;  //How much off are we this time?
+<     e_ctimer_set(E_CTIMER_1, E_CTIMER_MAX);
+< 
+<     //We are never to early, case is taken on startup
+<     if(delta < 0)
+<         delta=0;
+---
+> 	unsigned int cyclesForTick = CyclesForTick;
+> 	int delta = E_CTIMER_MAX - e_ctimer_get(E_CTIMER_1) - cyclesForTick;  //How much off are we this time?
+> 	e_ctimer_set(E_CTIMER_1, E_CTIMER_MAX);
+> 
+> 	//We are never to early, case is taken on startup
+> 
+> 	//debugging
+> 	if(delta < 0){
+> 
+> 		delta=0;
+> 	}
+> 	globalDelta = delta;
+201,202c210,211
+<     e_ctimer_set(E_CTIMER_0, cyclesForTick-delta);
+<     e_ctimer_start(E_CTIMER_0, E_CTIMER_CLK);
+---
+> 	e_ctimer_set(E_CTIMER_0, cyclesForTick-delta);
+> 	e_ctimer_start(E_CTIMER_0, E_CTIMER_CLK);
+208,210c217,219
+<     volatile int status;
+<     volatile int pc;
+<     volatile int no[64]; //collection of all the registers as stored onto the stack
+---
+> 	volatile int status;
+> 	volatile int pc;
+> 	volatile int no[64]; //collection of all the registers as stored onto the stack
+217,224c226,233
+<     TaskHandle_t runningTask = xTaskGetCurrentTaskHandle();
+<     TCB_t **tcb = runningTask;
+<     struct layout* reg = *tcb;
+< 
+<     int bitmask = 1 << (rand()%32);
+<     int failreg = rand()%64;
+<     reg->no[failreg] ^= bitmask;
+<     M[4]++;
+---
+> 	TaskHandle_t runningTask = xTaskGetCurrentTaskHandle();
+> 	TCB_t **tcb = runningTask;
+> 	struct layout* reg = *tcb;
+> 
+> 	int bitmask = 1 << (rand()%32);
+> 	int failreg = rand()%64;
+> 	reg->no[failreg] ^= bitmask;
+> 	M[4]++;
+230,251c239,263
+<     switch (interrupt_mode) {
+<         case E_TIMER0_INT:
+<             vSetupTimer();
+<             if( xTaskIncrementTick() != pdFALSE ) {
+<                 vTaskSwitchContext();
+<             }
+<             break;
+<         case E_SW_EXCEPTION: //triggered extrenally for error injection. Must be that high prority
+<             injectErrors();
+<             break;
+<         case E_USER_INT:
+<             vTaskSwitchContext();
+<             break;
+<         case E_MESSAGE_INT: //message, triggered externally for message transmission
+<             irqMsg();
+<             break;
+<         case E_MEM_FAULT: // written to read-only memory
+<             while(1);
+<             break;
+<         default:
+<             break;
+<     }
+---
+> 	switch (interrupt_mode) {
+> 	case E_TIMER0_INT:
+> 		vSetupTimer();
+> 		updateTick();
+> 		xTaskIncrementTick();
+> 		vTaskSwitchContext();
+> 		break;
+> 	case E_SW_EXCEPTION: //triggered extrenally for error injection. Must be that high prority
+> 		injectErrors();
+> 		break;
+> 	case E_USER_INT:
+> 		vTaskSwitchContext();
+> 		break;
+> 	case E_MESSAGE_INT: //message, triggered externally for message transmission
+> 		//a message received
+> 		updateDebugFlag(404);
+> 		//irqMsg();
+> 		break;
+> 	case E_MEM_FAULT: // written to read-only memory
+> 		updateDebugFlag(2222);
+> 		//while(1);
+> 		break;
+> 	default:
+> 		break;
+> 	}
diff --git a/RTFParallella/portasm.patch b/RTFParallella/portasm.patch
new file mode 100644
index 0000000..9850b51
--- /dev/null
+++ b/RTFParallella/portasm.patch
@@ -0,0 +1,45 @@
+7,8c7,8
+<   mov  r0,%low(_interrupt_mode)
+<   movt r0,%high(_interrupt_mode)
+---
+>   mov  r0,%low(interrupt_mode)
+>   movt r0,%high(interrupt_mode)
+13c13
+<   b _common_interrupt_handler
+---
+>   b common_interrupt_handler
+26,27c26,27
+< _handlers:
+<   .global _handlers
+---
+> .global handlers
+>   handlers:
+30,31c30,31
+< _common_interrupt_handler:
+<   .global _common_interrupt_handler
+---
+> .global common_interrupt_handler
+>   common_interrupt_handler:
+111,112c111,112
+<   mov  fp,%low(_pxCurrentTCB)
+<   movt fp,%high(_pxCurrentTCB)
+---
+>   mov  fp,%low(pxCurrentTCB)
+>   movt fp,%high(pxCurrentTCB)
+121,122c121,122
+<   mov  r0,%low(_vInterruptCentral)
+<   movt r0,%high(_vInterruptCentral)
+---
+>   mov  r0,%low(vInterruptCentral)
+>   movt r0,%high(vInterruptCentral)
+128,132c128,131
+< 
+< _portRESTORE_CONTEXT:
+<   .global _portRESTORE_CONTEXT
+<   mov  fp,%low(_pxCurrentTCB)
+<   movt fp,%high(_pxCurrentTCB)
+---
+> .global portRESTORE_CONTEXT
+>   portRESTORE_CONTEXT:
+>   mov  fp,%low(pxCurrentTCB)
+>   movt fp,%high(pxCurrentTCB)
diff --git a/RTFParallella/src/parallella/.gitignore b/RTFParallella/src/parallella/.gitignore
new file mode 100755
index 0000000..baace69
--- /dev/null
+++ b/RTFParallella/src/parallella/.gitignore
@@ -0,0 +1,6 @@
+*.o
+*.srec
+*.elf
+armcode
+.gdbinit
+/host_main_example1
diff --git a/RTFParallella/src/parallella/AmaltheaConverter.c b/RTFParallella/src/parallella/AmaltheaConverter.c
new file mode 100755
index 0000000..fa880e2
--- /dev/null
+++ b/RTFParallella/src/parallella/AmaltheaConverter.c
@@ -0,0 +1,87 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+#include "AmaltheaConverter.h"
+
+#include "FreeRTOS.h"
+#include "task.h"
+#include <stdarg.h>
+#include "debugFlags.h"
+
+
+
+
+AmaltheaTask createAmaltheaTask(void *taskHandler,void *cInHandler,void *cOutHandler,unsigned int period,unsigned int deadline, unsigned int WCET){
+	if (WCET >= period){
+		AmaltheaTask retValNull = {0,0,NULL,0,0,0,NULL,NULL};
+		return retValNull;
+	}else{
+		AmaltheaTask retVal = {0,0,taskHandler,WCET,deadline,period,cInHandler,cOutHandler};
+		return retVal;
+	}
+}
+
+unsigned int calculateStackSize(int labelBitCount, int labelCount){
+	return ((labelBitCount*labelCount)/PLATFORM_WORD_LENGTH);
+}
+
+void createRTOSTask(AmaltheaTask* task, int priority, int argCount, ...){
+	//cycle through the stack arguments and add the needed numbers to the stack
+	int stack_size = 0;
+	for (int i=3;i<=argCount+2;i+=2){
+		stack_size = calculateStackSize(i,i+1);
+	}
+	//make sure the stack size is at least big enough to run the task.
+	stack_size += configMINIMAL_STACK_SIZE;
+	//create the RTOS task with the generalized form
+	xTaskCreate(generalizedRTOSTask	,"Task"	,stack_size,	&(*task)	,priority,NULL);
+}
+
+
+#ifdef use_LET_COMM_SEMANTICS
+void generalizedRTOSTask(AmaltheaTask task){
+	TickType_t xLastWakeTime = xTaskGetTickCount();
+	//task.cInHandler();
+	for (;;){
+		//execute cIn
+		task.cInHandler();
+		task.taskHandler();
+		vTaskDelayUntil( &xLastWakeTime, task.period);
+		task.cOutHandler();
+	}
+}
+#else
+
+void generalizedRTOSTask(AmaltheaTask task){
+	TickType_t xLastWakeTime = xTaskGetTickCount();
+	//task.cInHandler();
+	for (;;){
+		//execute cIn
+		task.cInHandler();
+		task.taskHandler();
+		task.cOutHandler();
+		vTaskDelayUntil( &xLastWakeTime, task.period);
+	}
+}
+
+#endif
+
+
+
+
+
+
+
+
+
+
+
diff --git a/RTFParallella/src/parallella/AmaltheaConverter.h b/RTFParallella/src/parallella/AmaltheaConverter.h
new file mode 100755
index 0000000..1f41f05
--- /dev/null
+++ b/RTFParallella/src/parallella/AmaltheaConverter.h
@@ -0,0 +1,81 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#ifndef SRC_PARALLELLA_AMALTHEACONVERTER_H_
+#define SRC_PARALLELLA_AMALTHEACONVERTER_H_
+
+#define PLATFORM_WORD_LENGTH 32
+
+#define numTasks 3
+
+/**
+ * Structure to hold tasks according to amalthea model
+ */
+typedef struct{
+	unsigned isDone;
+	unsigned isReady;
+	void(* taskHandler)();
+	unsigned executionTime;//in ticks
+	unsigned deadline;		//in ticks
+	unsigned period;		//in ticks
+	void(* cInHandler)();
+	void(* cOutHandler)();
+}AmaltheaTask;
+
+
+/**
+ * communication semantics of tasks
+ * if use_LET_COMM_SEMANTICS is defined, the tasks will behave in LET semantics else it will use implicit by default
+ */
+//#define use_LET_COMM_SEMANTICS
+
+AmaltheaTask createAmaltheaTask(void *taskHandler,void *cInHandler,void *cOutHandler,unsigned int period,unsigned int deadline, unsigned int WCET);
+
+/**
+ *	Create the RTOS task that represents a given Amalthea task.
+ *	This function can have multiple arguments for all label types used by the task and the number of labels of each type.
+ *
+ *	Arguments:
+ *	task			:	pointer to the AmaltheaTask struct
+ *	priority		:	priority of the task (according to RMS, lowesrt perio has highest priority)
+ *	argCount		:	number of different types of labels used by this task
+ *	label_type_size :	size (in bits) of label type.
+ *	label_type_count:	number of labels associated with that type.
+ *
+ *
+ */
+void createRTOSTask(AmaltheaTask* task, int priority, int argCount, ...);
+
+/**
+ * This function returns the additional stack size (in words) needed for the task to andle its labels
+ *
+ * Arguments:
+ * labelBitCount	:	label size in bits
+ * labelCount		:	number of labels
+ *
+ */
+unsigned int calculateStackSize(int labelBitCount, int labelCount);
+
+/**
+ *
+ *This RTOS task invokes the task handlers and realizes periodic task execution according to
+ * Amalthea model
+ *
+ * Arguments:
+ * task		:	instance of AmaltheaTask structure to be invoked
+ *
+ */
+void generalizedRTOSTask(AmaltheaTask task);
+
+
+#endif /* SRC_PARALLELLA_AMALTHEACONVERTER_H_ */
diff --git a/RTFParallella/src/parallella/FreeRTOSConfig.h b/RTFParallella/src/parallella/FreeRTOSConfig.h
new file mode 100755
index 0000000..d8514d6
--- /dev/null
+++ b/RTFParallella/src/parallella/FreeRTOSConfig.h
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+#ifndef FREERTOS_CONFIG_H
+#define FREERTOS_CONFIG_H
+
+
+#define configCALL_STACK_SIZE	0x50
+
+#define configUSE_PREEMPTION		1
+#define configUSE_TIME_SLICING  	0
+
+#define configUSE_IDLE_HOOK			0
+#define configUSE_TICK_HOOK			0
+#define configCPU_CLOCK_HZ			( ( unsigned long ) 700000000 )
+#define configTICK_RATE_HZ			( ( TickType_t ) 1000 )
+#define configMAX_PRIORITIES		( 5 )
+#define configMINIMAL_STACK_SIZE	( ( unsigned short ) 0x200) //512 words
+#define configTOTAL_HEAP_SIZE		( (size_t ) ( 10450 ) )
+#define configMAX_TASK_NAME_LEN		( 128 )
+#define configUSE_TRACE_FACILITY	0
+#define configUSE_16_BIT_TICKS		1
+#define configIDLE_SHOULD_YIELD		0
+
+
+
+#define configUSE_ALTERNATIVE_API  0
+
+/* Co-routine definitions. */
+#define configUSE_CO_ROUTINES 		0
+#define configMAX_CO_ROUTINE_PRIORITIES ( 2 )
+
+/* Set the following definitions to 1 to include the API function, or zero
+to exclude the API function. */
+
+#define INCLUDE_vTaskPrioritySet		0
+#define INCLUDE_uxTaskPriorityGet		0
+#define INCLUDE_vTaskDelete				0
+#define INCLUDE_vTaskCleanUpResources	0
+#define INCLUDE_vTaskSuspend			1
+#define INCLUDE_vTaskDelayUntil			1
+#define INCLUDE_vTaskDelay              1
+#define INCLUDE_xTaskGetCurrentTaskHandle 1
+#define INCLUDE_pcTaskGetTaskName       1
+
+#define C2C_MSG_TYPE int
+
+
+#endif /* FREERTOS_CONFIG_H */
diff --git a/RTFParallella/src/parallella/Makefile b/RTFParallella/src/parallella/Makefile
new file mode 100755
index 0000000..15c1fba
--- /dev/null
+++ b/RTFParallella/src/parallella/Makefile
@@ -0,0 +1,51 @@
+EPIPHANY_HOME=/opt/adapteva/esdk
+#host compiler path
+LCC=/opt/gcc-linaro-7.2.1-2017.11-x86_64_arm-linux-gnueabihf/bin/arm-linux-gnueabihf-gcc
+#device compiler path
+CC=e-gcc
+#FreeRTOS dependencies
+CFLAGS=-I.
+FREERTOSSRC=../../RTFP_RTOS_KERNEL_PATCHED/FreeRTOS/Source
+INCLUDES= -g -I$(FREERTOSSRC)/include -I$(FREERTOSSRC)/portable/GCC/Epiphany -I.
+DEPS = $(FREERTOSSRC)/portable/GCC/Epiphany/portmacro.h Makefile FreeRTOSConfig.h c2c.h debugFlags.h AmaltheaConverter.h taskCode.h ParallellaUtils.h
+DEPSHOST = c2c.h debugFlags.h AmaltheaConverter.h shared_comms.h model_enumerations.h
+#Epiphany SDK dependencies
+ESDK=${EPIPHANY_HOME}
+ELIBS=${ESDK}/tools/host.armv7l/lib
+EINCS=${ESDK}/tools/host.armv7l/include
+ELDF=${ESDK}/bsps/current/fast.ldf
+EHDF=${EPIPHANY_HDF}
+#search paths for C source code files
+vpath %.c .:$(FREERTOSSRC)/:$(FREERTOSSRC)/portable/MemMang:$(FREERTOSSRC)/portable/GCC/Epiphany:/
+#search path for assembly listings
+vpath %.s $(FREERTOSSRC)/portable/GCC/Epiphany
+#main target
+all: host_main_example1 armcode core0_main.elf core1_main.elf
+	@echo build status : successful
+run: armcode core0_main.elf core1_main.elf
+	@echo build status : successful
+
+example1: host_main_example1 core0_main.elf core1_main.elf
+	@echo build status : successful
+
+#rule for every device target
+%.elf: $(ELDF) tasks.o queue.o list.o portasm.o port.o heap_1.o c2c.o debugFlags.o AmaltheaConverter.o taskCode.o ParallellaUtils.o shared_comms.o %.o
+	$(CC) -g -T$< -Wl,--gc-sections -o $@ $(filter-out $<,$^) -le-lib
+
+#host target
+armcode: armcode.c $(DEPSHOST) 
+	$(LCC) $< -o $@  host_utils.c model_enumerations.c -I ${EINCS} -L ${ELIBS} -lpal -le-hal -le-loader -lpthread 
+host_main_example1: host_main_example1.c $(DEPSHOST) 
+	$(LCC) $< -o $@  host_utils.c model_enumerations.c -I ${EINCS} -L ${ELIBS} -lpal -le-hal -le-loader -lpthread 
+
+#clean target
+clean:
+	rm -f *.o *.srec *.elf armcode host_main_example1
+
+.SECONDARY:
+%.o: %.c $(DEPS)
+	$(CC) -fdata-sections -ffunction-sections  -c -o $@ $< $(INCLUDES)
+
+%.o: %.s $(DEPS)
+	$(CC) -c -o $@ $< $(INCLUDES)
+
diff --git a/RTFParallella/src/parallella/ParallellaUtils.c b/RTFParallella/src/parallella/ParallellaUtils.c
new file mode 100755
index 0000000..ae8f393
--- /dev/null
+++ b/RTFParallella/src/parallella/ParallellaUtils.c
@@ -0,0 +1,26 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include "ParallellaUtils.h"
+
+void sleepTimerMs(int ticks, int taskNum){
+	updateDebugFlag(ticks*10);
+	int i;
+	for (i=0;i<ticks;i++){
+		taskENTER_CRITICAL();
+		traceRunningTask(taskNum);
+		e_wait(E_CTIMER_0,_1MS);
+		taskEXIT_CRITICAL();
+	}
+}
+
diff --git a/RTFParallella/src/parallella/ParallellaUtils.h b/RTFParallella/src/parallella/ParallellaUtils.h
new file mode 100755
index 0000000..5cc2d7f
--- /dev/null
+++ b/RTFParallella/src/parallella/ParallellaUtils.h
@@ -0,0 +1,39 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#ifndef SRC_PARALLELLA_PARALLELLAUTILS_H_
+#define SRC_PARALLELLA_PARALLELLAUTILS_H_
+
+#include "debugFlags.h"
+#include "e_lib.h"
+//freeRTOS imports
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+
+//time units in processor cycles
+#define _1MS 700000
+#define _1US 700
+
+/**
+ * sleep for a multiple of milliseconds
+ *
+ * Arguments:
+ * ticks		:	number of milliseconds to sleep
+ * taskNum		:	index of task invoking this function (used for tracing during sleep)
+ *
+ */
+void sleepTimerMs(int ticks,int taskNum);
+
+
+#endif /* SRC_PARALLELLA_PARALLELLAUTILS_H_ */
diff --git a/RTFParallella/src/parallella/armcode.c b/RTFParallella/src/parallella/armcode.c
new file mode 100755
index 0000000..e7d3b1c
--- /dev/null
+++ b/RTFParallella/src/parallella/armcode.c
@@ -0,0 +1,151 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <e-hal.h> //hardware abstraction library
+#include <time.h>   /* Needed for struct timespec */
+
+#include "c2c.h"
+#include "debugFlags.h"
+#include "shared_comms.h"
+#include "host_utils.h"
+#include "model_enumerations.h"
+
+unsigned int shared_label_to_read[10];
+unsigned int shared_label_core_00[dstr_mem_sec_1_label_count];
+unsigned int shared_label_core_10[dstr_mem_sec_1_label_count];
+
+int main()
+{
+	int label_enable_count_core0 = 0;
+	printf("RTFP demo host code\n");
+	//setup visualization config for the first core
+	unsigned index_array1[dstr_mem_sec_1_label_count];
+	unsigned index_array1_prv_val[dstr_mem_sec_1_label_count];
+	array_init(index_array1,dstr_mem_sec_1_label_count);
+	array_init(index_array1_prv_val,dstr_mem_sec_1_label_count);
+	LabelVisual core1 = get_user_input(index_array1);
+	//setup visualization config for the first core
+	unsigned index_array2[dstr_mem_sec_1_label_count];
+	unsigned index_array2_prv_val[dstr_mem_sec_1_label_count];
+	array_init(index_array2,dstr_mem_sec_1_label_count);
+	array_init(index_array2_prv_val,dstr_mem_sec_1_label_count);
+	LabelVisual core2 = get_user_input(index_array2);
+	//steup visualization for shared memeory
+	unsigned index_array_DRAM[shared_mem_section1_label_count];
+	unsigned index_array_prv_DRAM[shared_mem_section1_label_count];
+	array_init(index_array_DRAM,shared_mem_section1_label_count);
+	array_init(index_array_prv_DRAM,shared_mem_section1_label_count);
+	unsigned dram_indices = get_user_input_DRAM(index_array_DRAM);
+
+	//counters for row and column, cored id and loop counter
+	unsigned   row_loop,col_loop;
+	// this will contain the epiphany platform configuration
+	e_platform_t epiphany;
+	e_epiphany_t dev;
+	e_return_stat_t result;
+	unsigned int message[9];
+	unsigned int message2[9];
+	int loop;
+	int addr;
+	e_mem_t emem;
+	e_init(NULL); // initialise the system establish connection to the Device
+	//initial ecore is set to 0,0
+	/*
+	 * reserve shared mem sections
+	 * one section for each shared label in the model
+	 * shared mem address space starts at 0x0100_0000
+	 * and ends at 0x3FFF_FFFF
+	 *
+	 */
+	e_alloc(&emem, shared_mem_section , sizeof(shared_label_to_read));
+	e_reset_system(); // reset the epiphnay chip
+	e_get_platform_info(&epiphany);//gets the configuration info for the parallella platofrm
+	//debug flag
+	//------------------------------------------------
+	//one core within the parallella work group is 1 x 1 i.e single core
+	e_open(&dev,0,0,2,1); //2 rows one column rectangle size 2*1
+	//reset the group
+	e_reset_group(&dev);
+	e_return_stat_t result1;
+	e_return_stat_t result2;
+	//load the group
+	result1 =  e_load("core0_main.elf",&dev,0,0,E_FALSE);
+	result2 =  e_load("core1_main.elf",&dev,1,0,E_FALSE);
+	if (result1 != E_OK || result2 != E_OK){
+		fprintf(stderr,"Error Loading the Epiphany Application 1 %i\n", result);
+	}
+	e_start_group(&dev);
+	fprintf(stderr,"Legend: \n");
+	fprintf(stderr,"--------\n");
+	fprintf(stderr," Tick				 -> RTOS tick \n");
+	fprintf(stderr," Core 1 -> (0,0) \n");
+	fprintf(stderr," Core 2 -> (1,0) \n");
+	fprintf(stderr," THC 				 -> Task Holding Core(row, column) \n");
+	fprintf(stderr," L 					 -> Local core memory \n");
+	fprintf(stderr," F 					 -> Foreign memory (DRAM) \n");
+	fprintf(stderr,"(L,row,column,indx)  -> Label of index _indx_ on Local core memory(row, column) \n");
+	fprintf(stderr,"----------------------------------------------\n");
+
+	fprintf(stderr,"RFTP demo started \n");
+	addr = cnt_address;
+	int pollLoopCounter = 0;
+	int taskMessage;
+	int prevtaskMessage;
+	int prevpollLoopCounter = 0;
+	unsigned int chainLatencyEndIndicator = 0;
+	unsigned int chainLatencyStartIndicator = 10e6;
+	unsigned int lat1 = 0;
+	int label_to_feed_in = 97;
+	fprintf(stderr,"===========================================================================\n");
+	fprintf(stderr,"     | Tasks being executed| Shared labels' values |\n");
+	fprintf(stderr,"tick | Core 1   | Core 2   |");
+	user_config_print_legend(core1,index_array1);
+	user_config_print_legend(core2,index_array2);
+	user_config_print_legend_auto(dram_indices,index_array_DRAM);
+
+	fprintf(stderr,"\n");
+	fprintf(stderr,"===========================================================================\n");
+
+	int prev1,prev2,prev3;
+	for (pollLoopCounter=0;pollLoopCounter<=40;pollLoopCounter++){
+		message[3] = 0;
+		e_read(&dev,0,0,addr, &message, sizeof(message));
+		e_read(&dev,0,0,dstr_mem_offset_sec_1, &shared_label_core_00, sizeof(shared_label_core_00));
+		e_read(&dev,1,0,addr, &message2, sizeof(message2));
+		e_read(&dev,1,0,dstr_mem_offset_sec_1, &shared_label_core_10, sizeof(shared_label_core_10));
+		e_read(&emem,0,0,0x00, &shared_label_to_read, sizeof(shared_label_to_read));
+		if (message[8]!= message2[8] ){
+			//fprintf(stderr,"NIS->");
+		}
+		fprintf(stderr, "%4d |",message[8]+1);
+		fprintf(stderr,"   %4u   |", message[6]);
+		fprintf(stderr,"   %4u   |", message2[6]);
+		user_config_print_values(core1,index_array1,shared_label_core_00,index_array1_prv_val);
+		user_config_print_values(core2,index_array2,shared_label_core_10,index_array2_prv_val);
+		user_config_print_values_auto(dram_indices,index_array_DRAM,shared_label_to_read,index_array_prv_DRAM);
+		fprintf(stderr,"\n");
+		nsleep(1);
+	}
+	fprintf(stderr,"----------------------------------------------\n");
+	e_close(&dev);
+	e_finalize();
+	//----------------------------------------------------------------------------
+	//----------------------------------------------------------------------------
+	fprintf(stderr,"RFTP demo complete \n ");
+	return 0;
+}
+
diff --git a/RTFParallella/src/parallella/c2c.c b/RTFParallella/src/parallella/c2c.c
new file mode 100755
index 0000000..3045c04
--- /dev/null
+++ b/RTFParallella/src/parallella/c2c.c
@@ -0,0 +1,106 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include "c2c.h"
+
+#include "e-lib.h"
+
+dstr_mem_sec_1_label_type *outbuf_dstr_shared[10];
+//e_mem_t emem_dst[16];
+int core_write_mutex=0;
+
+void shared_labels_init_core(){
+	//shared buffer in core memory
+	outbuf_dstr_shared[0] = (dstr_mem_sec_1_label_type *) dstr_mem_offset_sec_1;
+	/*for (int i=1;i<dstr_mem_sec_1_label_count;i++){
+		outbuf_dstr_shared[i] = outbuf_dstr_shared[i-1] + 1;
+	}
+	outbuf_dstr_shared[1] = outbuf_dstr_shared[0] + 1;
+	outbuf_dstr_shared[2] = outbuf_dstr_shared[1] + 1;
+	outbuf_dstr_shared[3] = outbuf_dstr_shared[2] + 1;
+	outbuf_dstr_shared[4] = outbuf_dstr_shared[3] + 1;
+	outbuf_dstr_shared[5] = outbuf_dstr_shared[4] + 1;
+	outbuf_dstr_shared[6] = outbuf_dstr_shared[5] + 1;
+	outbuf_dstr_shared[7] = outbuf_dstr_shared[6] + 1;
+	outbuf_dstr_shared[8] = outbuf_dstr_shared[7] + 1;*/
+	//initialize buffer
+	int i;
+	for (i=0;i<9;i++){
+		*outbuf_dstr_shared[i] =0;
+	}
+	/*int emem;
+	//define distributed memory section in Epi range
+	e_alloc(&emem[1], dstr_mem_offset_sec_1 , sizeof(outbuf_dstr_shared));*/
+
+}
+
+uint8_t shared_label_write_core	(unsigned row,unsigned col,int label_indx,int payload){
+	unsigned int *addr;
+	unsigned int* addr_base;
+	addr_base = get_base_address_core(row,col);
+	addr = (unsigned int*) ((unsigned ) addr_base | (unsigned)outbuf_dstr_shared[label_indx]);
+	*addr = payload;
+}
+
+unsigned int shared_label_read_core (unsigned row, unsigned col, int label_indx){
+	unsigned int *addr;
+	unsigned int* addr_base;
+	addr_base = get_base_address_core(row,col);
+	addr = (unsigned int*) ((unsigned ) addr_base | (unsigned)outbuf_dstr_shared[label_indx]);
+	return *addr;
+}
+
+
+unsigned int get_base_address_core(int row, int col){
+	if(row ==0 ){
+		if (col == 0){
+			return 0x80800000;
+		} else if (col ==1){
+			return 0x80900000;
+		}else if (col == 2){
+			return 0x80A00000;
+		}else if (col == 3){
+			return 0x80B00000;
+		}
+	} else if(row ==1 ){
+		if (col == 0){
+			return 0x84800000;
+		} else if (col ==1){
+			return 0x84900000;
+		}else if (col == 2){
+			return 0x84A00000;
+		}else if (col == 3){
+			return 0x84B00000;
+		}
+	} else if(row ==2 ){
+		if (col == 0){
+			return 0x88800000;
+		} else if (col ==1){
+			return 0x88900000;
+		}else if (col == 2){
+			return 0x88A00000;
+		}else if (col == 3){
+			return 0x88B00000;
+		}
+	} else if(row ==3 ){
+		if (col == 0){
+			return 0x8C800000;
+		} else if (col ==1){
+			return 0x8C900000;
+		}else if (col == 2){
+			return 0x8CA00000;
+		}else if (col == 3){
+			return 0x8CB00000;
+		}
+	}
+}
diff --git a/RTFParallella/src/parallella/c2c.h b/RTFParallella/src/parallella/c2c.h
new file mode 100755
index 0000000..7b44987
--- /dev/null
+++ b/RTFParallella/src/parallella/c2c.h
@@ -0,0 +1,67 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#ifndef C2C_H
+#define C2C_H
+
+
+#include <stdint.h>
+#define dstr_mem_offset_sec_1 			0x4000
+#define dstr_mem_sec_1_label_count		10
+#define dstr_mem_sec_1_label_type		unsigned int
+
+/**
+ * Initiate the shared label section, this funcion will assign addresses to labels in a section,
+ * and initialize those labels to 0
+ *
+ * Arguments:
+ *
+ */
+void shared_labels_init_core();
+
+/**
+ * write a value to a label in a distributed shared memory section
+ *
+ * Arguments:
+ * row			:	absolute row number of the core
+ * col			:	absolute column number of the core
+ * label_indx	:	index of the target shared label
+ * payload		:	value to write
+ *
+ */
+uint8_t shared_label_write_core	(unsigned row,unsigned col,int label_indx,int payload);
+
+/**
+ * read a value of a label in a distributed shared memory section
+ *
+ * Arguments:
+ * row			:	absolute row number of the core
+ * col			:	absolute column number of the core
+ * label_indx	:	index of the target shared label
+ *
+ */
+unsigned int shared_label_read_core(unsigned row, unsigned col, int label_indx);
+
+/**
+ * get the absolute base memory address of a core
+ *
+ * Arguments:
+ * row			:	absolute row number of the core
+ * col			:	absolute column number of the core
+ *
+ */
+unsigned int get_base_address_core(int row, int col);
+
+
+
+#endif
diff --git a/RTFParallella/src/parallella/core0_main.c b/RTFParallella/src/parallella/core0_main.c
new file mode 100755
index 0000000..8a58f9d
--- /dev/null
+++ b/RTFParallella/src/parallella/core0_main.c
@@ -0,0 +1,48 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+//epiphany imports
+#include <stdlib.h>
+
+#include "AmaltheaConverter.h"
+#include "c2c.h"
+#include "debugFlags.h"
+#include "shared_comms.h"
+#include "taskCode.h"
+#include "e_lib.h"
+//freeRTOS imports
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+//utility imports
+
+//---------------------------------------------
+int main(void) {
+	//initialize output buffer for debug messages
+	outbuf_init();
+	shared_labels_init();
+	shared_labels_init_core();
+	//create Amalthea task objects
+	AmaltheaTask t5ms =  createAmaltheaTask(handler5ms,cIn5ms,cOut5ms,5,5,2);
+	AmaltheaTask t10ms = createAmaltheaTask(handler10ms,cIn10ms,cOut10ms,10,10,3);
+	AmaltheaTask t20ms = createAmaltheaTask(handler20ms,cIn20ms,cOut20ms,20,20,5);
+	//create RTOS task from templates
+	createRTOSTask(&t5ms,3,0);
+	createRTOSTask(&t10ms,2,0);
+	createRTOSTask(&t20ms,1,0);
+	//start RTOS scheduler
+	vTaskStartScheduler();
+	return EXIT_SUCCESS;
+}
+//---------------------------------------------
+//end of file
diff --git a/RTFParallella/src/parallella/core1_main.c b/RTFParallella/src/parallella/core1_main.c
new file mode 100755
index 0000000..82a1009
--- /dev/null
+++ b/RTFParallella/src/parallella/core1_main.c
@@ -0,0 +1,44 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+//epiphany imports
+#include <stdlib.h>
+
+#include "AmaltheaConverter.h"
+#include "c2c.h"
+#include "debugFlags.h"
+#include "shared_comms.h"
+#include "taskCode.h"
+#include "e_lib.h"
+//freeRTOS imports
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+//utility imports
+//---------------------------------------------
+int main(void) {
+	//initialize output buffer for debug messages
+	outbuf_init();
+	shared_labels_init();
+	shared_labels_init_core();
+	//create Amalthea task objects
+	AmaltheaTask t20ms = createAmaltheaTask(handler10msCore2,cIn10msCore2,cOut10msCore2,10,10,7);
+	AmaltheaTask t40ms = createAmaltheaTask(handler20msCore2,cIn20msCore2,cOut20msCore2,20,20,10);
+	//create RTOS task from templates
+	createRTOSTask(&t20ms,2,0);
+	createRTOSTask(&t40ms,1,0);
+	vTaskStartScheduler();
+	return EXIT_SUCCESS;
+}
+//---------------------------------------------
+//end of file
diff --git a/RTFParallella/src/parallella/debugFlags.c b/RTFParallella/src/parallella/debugFlags.c
new file mode 100755
index 0000000..9172a6e
--- /dev/null
+++ b/RTFParallella/src/parallella/debugFlags.c
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include "debugFlags.h"
+
+#include "FreeRTOS.h"
+#include "task.h"
+
+
+unsigned int *outbuf[10];
+
+/*
+ * initialize output buffer with the addresses to array elements
+ */
+void outbuf_init(void ){
+	//This will be the same on each core
+	//debug interface in shared memory
+	outbuf[0] = (unsigned int *) cnt_address;
+	outbuf[1] = outbuf[0] + 1;
+	outbuf[2] = outbuf[1] + 1;
+	outbuf[3] = outbuf[2] + 1;
+	outbuf[4] = outbuf[3] + 1;
+	outbuf[5] = outbuf[4] + 1;
+	outbuf[6] = outbuf[5] + 1;
+	outbuf[7] = outbuf[6] + 1;
+	outbuf[8] = outbuf[7] + 1;
+	*outbuf[1] = 200;
+	//initialize buffer
+	int i;
+	//timer1init();
+	for (i=0;i<9;i++){
+		*outbuf[i] =0;
+	}
+}
+
+void traceRunningTask(unsigned taskNum){
+	*outbuf[RUNNINGTASK_FLAG] = taskNum;
+}
+
+void traceTaskPasses(unsigned taskNum, int currentPasses){
+	if (taskNum == 1){
+		*outbuf[TASK1_FLAG] = currentPasses;
+	}else if (taskNum == 2){
+		*outbuf[TASK2_FLAG] = currentPasses;
+	}else if (taskNum == 3){
+		*outbuf[TASK3_FLAG] = currentPasses;
+	}
+}
+
+void updateTick(void){
+	*outbuf[TICK_FLAG] = xTaskGetTickCount();
+}
+
+void updateDebugFlag(int debugMessage){
+	*outbuf[DEBUG_FLAG] = debugMessage;
+}
+
+
+
+
+
+
diff --git a/RTFParallella/src/parallella/debugFlags.h b/RTFParallella/src/parallella/debugFlags.h
new file mode 100755
index 0000000..9db71ec
--- /dev/null
+++ b/RTFParallella/src/parallella/debugFlags.h
@@ -0,0 +1,72 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#ifndef SRC_PARALLELLA_DEBUGFLAGS_H_
+#define SRC_PARALLELLA_DEBUGFLAGS_H_
+
+#define cnt_address 	0x3000
+
+#define TASK1_FLAG			2
+#define TASK2_FLAG 			0
+#define TASK3_FLAG 			4
+#define TASK4_FLAG			0
+#define TASK5_FLAG			4
+#define RUNNINGTASK_FLAG 	6
+#define DEBUG_FLAG 			7
+#define TICK_FLAG			8
+
+/**
+ * initialize output buffer in core memory
+ *
+ * Arguments:
+ *
+ */
+void outbuf_init(void );
+
+/**
+ * write the index of the running task to output buffer
+ *
+ * Arguments:
+ * taskNum			:	index of the task
+ *
+ */
+void traceRunningTask(unsigned taskNum);
+
+/**
+ * write the task instance (job) to output buffer
+ *
+ * Arguments:
+ * taskNum			:	index of the task
+ * currentPasses	:	instance of task (job number)
+ *
+ */
+void traceTaskPasses(unsigned taskNum, int currentPasses);
+
+/**
+ * update RTOS tick value in output buffer
+ *
+ * Arguments:
+ *
+ */
+void updateTick(void);
+
+/**
+ * Write a custom value to the output buffer for code coverage debugging
+ *
+ * Arguments:
+ * debugMessage			:	message to be written
+ *
+ */
+void updateDebugFlag(int debugMessage);
+
+#endif /* SRC_PARALLELLA_DEBUGFLAGS_H_ */
diff --git a/RTFParallella/src/parallella/host_main_example1.c b/RTFParallella/src/parallella/host_main_example1.c
new file mode 100644
index 0000000..595211b
--- /dev/null
+++ b/RTFParallella/src/parallella/host_main_example1.c
@@ -0,0 +1,135 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+#include <e-hal.h> //hardware abstraction library
+#include <time.h>   /* Needed for struct timespec */
+
+#include "c2c.h"
+#include "debugFlags.h"
+#include "shared_comms.h"
+#include "host_utils.h"
+#include "model_enumerations.h"
+
+unsigned int shared_label_to_read[10];
+unsigned int shared_label_core_00[dstr_mem_sec_1_label_count];
+unsigned int shared_label_core_10[dstr_mem_sec_1_label_count];
+unsigned int shared_label_core[core_count][dstr_mem_sec_1_label_count];
+int main()
+{
+	int label_enable_count_core0 = 0;
+	unsigned labelVisual_perCore[core_count][DSHM_visible_label_count];
+	unsigned int prv_val_preCore[core_count][DSHM_visible_label_count];
+	for (int i=0;i<core_count;i++){
+		get_visible_label_index(labelVisual_perCore[i],MEM_TYPE_DSHM);
+	}
+	unsigned labelVisual_SHM[SHM_visible_label_count];
+	unsigned int prv_val_SHM[SHM_visible_label_count];
+	get_visible_label_index(labelVisual_SHM,MEM_TYPE_SHM);
+	for (int i=0;i<core_count;i++){
+		printf ("@%d : ",i);
+		for (int j=0;j<DSHM_visible_label_count;j++){
+			printf("L%d ",labelVisual_perCore[i][j]);
+		}
+		printf("\n");
+	}
+	fprintf(stderr,"===========================================================================\n");
+	fprintf(stderr,"      |   Tasks being executed  | observed labels values |\n");
+	fprintf(stderr,"%6s|%12s|%12s|"," tick ","   Core 1   ","   Core 2   ");
+	for (int i=0;i<core_count;i++){
+		print_legend_enum(DSHM_visible_label_count,labelVisual_perCore[i],MEM_TYPE_DSHM);
+	}
+	print_legend_enum(SHM_visible_label_count,labelVisual_SHM,MEM_TYPE_SHM);
+	fprintf(stderr,"\n");
+	fprintf(stderr,"===========================================================================\n");
+	//counters for row and column, cored id and loop counter
+	unsigned   row_loop,col_loop;
+	// this will contain the epiphany platform configuration
+	e_platform_t epiphany;
+	e_epiphany_t dev;
+	e_return_stat_t result;
+	unsigned int message[9];
+	unsigned int message2[9];
+	int loop;
+	int addr;
+	e_mem_t emem;
+	e_init(NULL);
+	/*
+	 * reserve shared mem sections
+	 * one section for each shared label in the model
+	 * shared mem address space starts at 0x0100_0000
+	 * and ends at 0x3FFF_FFFF
+	 *
+	 */
+	e_alloc(&emem, shared_mem_section , sizeof(shared_label_to_read));
+	e_reset_system(); // reset the epiphnay chip
+	e_get_platform_info(&epiphany);//gets the configuration info for the parallella platofrm
+	//debug flag
+	//------------------------------------------------
+	//one core within the parallella work group is 1 x 1 i.e single core
+	e_open(&dev,0,0,2,1); //2 rows one column rectangle size 2*1
+	//reset the group
+	e_reset_group(&dev);
+	e_return_stat_t result1;
+	e_return_stat_t result2;
+	//load the group
+	result1 =  e_load("core0_main.elf",&dev,0,0,E_FALSE);
+	result2 =  e_load("core1_main.elf",&dev,1,0,E_FALSE);
+	if (result1 != E_OK || result2 != E_OK){
+		fprintf(stderr,"Error Loading the Epiphany Application 1 %i\n", result);
+	}
+	e_start_group(&dev);
+	addr = cnt_address;
+	int pollLoopCounter = 0;
+	unsigned int chainLatencyEndIndicator = 0;
+	unsigned int chainLatencyStartIndicator = 10e6;
+	unsigned int lat1 = 0;
+	char buffer1[label_str_len];
+	array_init(buffer1,label_str_len);
+	char buffer2[label_str_len];
+	array_init(buffer2,label_str_len);
+
+
+	int prev1,prev2,prev3;
+	for (pollLoopCounter=0;pollLoopCounter<=40;pollLoopCounter++){
+		message[3] = 0;
+		e_read(&dev,0,0,addr, &message, sizeof(message));
+		e_read(&dev,0,0,dstr_mem_offset_sec_1, &shared_label_core[0], sizeof(shared_label_core_00));
+		e_read(&dev,1,0,addr, &message2, sizeof(message2));
+		e_read(&dev,1,0,dstr_mem_offset_sec_1, &shared_label_core[1], sizeof(shared_label_core_10));
+		e_read(&emem,0,0,0x00, &shared_label_to_read, sizeof(shared_label_core_10));
+		if (message[8]!= message2[8] ){
+			//fprintf(stderr,"NIS->");
+		}
+		get_task_name(message[6],buffer1);
+		get_task_name(message2[6],buffer2);
+		fprintf(stderr," %4d | %10s | %10s | ",message[8]+1,buffer1,buffer2);
+		for (int i=0;i<core_count;i++){
+			user_config_print_values_auto(DSHM_visible_label_count,labelVisual_perCore[i],shared_label_core[i],prv_val_preCore[i]);
+		}
+		user_config_print_values_auto(SHM_visible_label_count,labelVisual_SHM,shared_label_to_read,prv_val_SHM);
+		fprintf(stderr,"\n");
+		nsleep(1);
+	}
+	fprintf(stderr,"----------------------------------------------\n");
+	e_close(&dev);
+	e_finalize();
+	//----------------------------------------------------------------------------
+	//----------------------------------------------------------------------------
+	fprintf(stderr,"RFTP demo complete \n ");
+	return 0;
+}
+
diff --git a/RTFParallella/src/parallella/host_utils.c b/RTFParallella/src/parallella/host_utils.c
new file mode 100755
index 0000000..d827db5
--- /dev/null
+++ b/RTFParallella/src/parallella/host_utils.c
@@ -0,0 +1,127 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include "host_utils.h"
+
+void array_init(unsigned array[],unsigned array_size){
+	for (int i=0;i<array_size;i++){
+		array[i] = 0;
+	}
+}
+
+
+void user_config_print_legend(LabelVisual core_config,unsigned array[]){
+	for (int i=0;i<core_config.num_visible_labels;i++){
+		fprintf(stderr,"(L,%u,%u,%u)|",core_config.row,core_config.col,array[i]);
+	}
+}
+
+void user_config_print_values(LabelVisual core_config,unsigned array[],unsigned int values_array[],unsigned int prv_val_array[]){
+	for(int i=0;i<core_config.num_visible_labels;i++){
+		int val_ind = array[i];
+		unsigned int val_to_print = values_array[val_ind];
+		if (val_to_print == prv_val_array[val_ind]){
+			fprintf(stderr,"  ----   |");
+		}else {
+			fprintf(stderr,"  %4d   |",val_to_print);
+			prv_val_array[val_ind] = val_to_print;
+		}
+
+	}
+}
+
+LabelVisual get_user_input(unsigned indices[]){
+	unsigned row_in,col_in,label_num;
+	printf("Enter row and column of core to read ");
+	scanf("%u,%u",&row_in,&col_in);
+	printf("Enter number of visible labels");
+	scanf("%u",&label_num);
+	unsigned visible_label_array[label_num];
+	printf("Enter indices of labels\n");
+	for (int i=0;i<label_num;i++){
+		scanf("%u",&indices[i]);
+	}
+	LabelVisual retVal;
+	retVal.row = row_in;
+	retVal.col = col_in;
+	retVal.num_visible_labels = label_num;
+	return retVal;
+}
+
+
+void user_config_print_legend_auto(unsigned array_length,unsigned array[]){
+	for (int i=0;i<array_length;i++){
+		fprintf(stderr,"(F,%u)|",array[i]);
+	}
+}
+
+void user_config_print_values_auto(unsigned visible_label_count,unsigned array[],unsigned int values_array[],unsigned int prv_val_array[]){
+	for(int i=0;i<visible_label_count;i++){
+		int val_ind = array[i];
+		unsigned int val_to_print = values_array[val_ind];
+		if (val_to_print == prv_val_array[val_ind]){
+			fprintf(stderr,"            |");
+		}else {
+			fprintf(stderr," %10d |",val_to_print);
+			prv_val_array[val_ind] = val_to_print;
+		}
+	}
+}
+
+unsigned get_user_input_DRAM(unsigned indices[]){
+	unsigned label_num;
+	printf("Enter number of visible labels( shared mem)");
+	scanf("%u",&label_num);
+	unsigned visible_label_array[label_num];
+	printf("Enter indices of labels\n");
+	for (int i=0;i<label_num;i++){
+		scanf("%u",&indices[i]);
+	}
+	return label_num;
+}
+
+void print_legend_enum (unsigned label_count,unsigned label_positions[], unsigned memory_type){
+	char buf[label_count*label_str_len];
+	for (int i=0;i<label_str_len;i++){
+		buf[i] = "";
+	}
+	char small_buf[label_str_len];
+	//array_init(buf,label_str_len);
+	if (memory_type==MEM_TYPE_SHM){
+		for (int i=0;i<label_count;i++){
+			get_SHM_label_name(i,small_buf);
+			fprintf(stderr,"| %s ",small_buf);
+			//fflush(stderr);
+		}
+	} else {
+		for (int i=0;i<label_count;i++){
+			get_DSHM_label_name(i,small_buf);
+			fprintf(stderr,"| %s ", small_buf);
+		}
+	}
+	//fprintf(stderr,"%s",buf);
+	//fflush(stderr);
+}
+
+
+int nsleep(long miliseconds){
+   struct timespec req, rem;
+   if(miliseconds > 999){
+        req.tv_sec = (int)(miliseconds / 1000);                            /* Must be Non-Negative */
+        req.tv_nsec = (miliseconds - ((long)req.tv_sec * 1000)) * 1000000; /* Must be in range of 0 to 999999999 */
+   } else {
+        req.tv_sec = 0;                         /* Must be Non-Negative */
+        req.tv_nsec = miliseconds * 1000000;    /* Must be in range of 0 to 999999999 */
+   }
+   return nanosleep(&req , &rem);
+}
diff --git a/RTFParallella/src/parallella/host_utils.h b/RTFParallella/src/parallella/host_utils.h
new file mode 100644
index 0000000..140336d
--- /dev/null
+++ b/RTFParallella/src/parallella/host_utils.h
@@ -0,0 +1,64 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <unistd.h>
+//#include <e-hal.h> //hardware abstraction library
+#include <time.h>   /* Needed for struct timespec */
+//rtfp imports
+#include "c2c.h"
+#include "debugFlags.h"
+#include "shared_comms.h"
+#include "model_enumerations.h"
+
+#define READ_PRECISION_US 1000
+
+#define MEM_TYPE_SHM 	0
+#define MEM_TYPE_DSHM 	1
+
+typedef struct{
+	unsigned row;
+	unsigned col;
+	unsigned num_visible_labels;
+}LabelVisual;
+
+/**
+ * read a value of a label in a distributed shared memory section
+ *
+ * Arguments:
+ * row			:	absolute row number of the core
+ * col			:	absolute column number of the core
+ * label_indx	:	index of the target shared label
+ *
+ */
+void array_init(unsigned array[],unsigned array_size);
+
+void user_config_print_legend(LabelVisual core_config,unsigned array[]);
+
+void user_config_print_values(LabelVisual core_config,unsigned array[],unsigned int values_array[],unsigned int prv_val_array[]);
+
+LabelVisual get_user_input(unsigned indices[]);
+
+void user_config_print_legend_auto(unsigned array_length,unsigned array[]);
+
+void user_config_print_values_auto(unsigned visible_label_count,unsigned array[],unsigned int values_array[],unsigned int prv_val_array[]);
+
+unsigned get_user_input_DRAM(unsigned indices[]);
+
+void print_legend_enum (unsigned label_count,unsigned label_positions[], unsigned memory_type);
+
+int nsleep(long miliseconds);
+
+
diff --git a/RTFParallella/src/parallella/model_enumerations.c b/RTFParallella/src/parallella/model_enumerations.c
new file mode 100644
index 0000000..dce7949
--- /dev/null
+++ b/RTFParallella/src/parallella/model_enumerations.c
@@ -0,0 +1,88 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include "model_enumerations.h"
+
+
+char SHM_sec1_enum [SHM_section1_label_count][label_str_len] =
+{
+  "sh_label_a",
+  "sh_label_b",
+  "sh_label_c",
+  "sh_label_d",
+  "sh_label_e",
+  "sh_label_f",
+  "sh_label_g",
+  "sh_label_h",
+  "sh_label_i",
+  "sh_label_j"
+};
+
+char DSHM_sec1_enum [DSHM_section1_label_count][label_str_len] =
+{
+  "DSH_labelA",
+  "DSH_labelB",
+  "DSH_labelC",
+  "DSH_labelD",
+  "DSH_labelE",
+  "DSH_labelF",
+  "DSH_labelG",
+  "DSH_labelH",
+  "DSH_labelI",
+  "DSH_labelJ"
+};
+
+char task_enum [task_count +1][label_str_len] =
+{
+  "[idle]",
+  "Task5ms0",
+  "Task10ms0",
+  "Task20ms0",
+  "Task10ms1",
+  "Task20ms1"
+};
+
+unsigned DSHM_visible_labels [DSHM_visible_label_count] = {0,1};
+unsigned SHM_visible_labels [SHM_visible_label_count] = {0,1};
+
+
+
+void get_SHM_label_name (int index,char str[]){
+	for (int i=0;i<label_str_len;i++){
+		str[i] = SHM_sec1_enum[index][i];
+	}
+}
+
+void get_DSHM_label_name(int index,char str[]){
+	for (int i=0;i<label_str_len;i++){
+		str[i] = DSHM_sec1_enum[index][i];
+	}
+}
+
+void get_task_name(int index,char *str){
+	for (int i=0;i<label_str_len;i++){
+		str[i] = task_enum[index][i];
+	}
+}
+
+void get_visible_label_index(unsigned array[],unsigned mem_type){
+	if (mem_type==0){
+		for (int i=0; i<SHM_visible_label_count;i++){
+			array[i] = SHM_visible_labels[i];
+		}
+	}
+	for (int i=0; i<DSHM_visible_label_count;i++){
+		array[i] = DSHM_visible_labels[i];
+	}
+}
+
diff --git a/RTFParallella/src/parallella/model_enumerations.h b/RTFParallella/src/parallella/model_enumerations.h
new file mode 100644
index 0000000..5a32d0f
--- /dev/null
+++ b/RTFParallella/src/parallella/model_enumerations.h
@@ -0,0 +1,69 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#ifndef SRC_PARALLELLA_MODEL_ENUMERATIONS_H_
+#define SRC_PARALLELLA_MODEL_ENUMERATIONS_H_
+
+
+#define	SHM_section1_label_count 	10
+
+#define	DSHM_section1_label_count	10
+
+#define label_str_len				10
+
+#define task_count					5
+
+#define core_count					2
+
+#define SHM_visible_label_count		2
+
+#define DSHM_visible_label_count	2
+
+/**
+ * Get the string name of DRAM shared label
+ *
+ * Arguments:
+ * index			:	shared label index in the shared memory section
+ * *str				:	pointer to buffer string that holds the name
+ */
+void get_SHM_label_name (int index,char *str);
+
+/**
+ * Get the string name of distributed shared label (on a core)
+ *
+ * Arguments:
+ * index			:	shared label index in the memory section
+ * *str				:	pointer to buffer string that holds the name
+ */
+void get_DSHM_label_name(int index,char *str);
+
+/**
+ * Get the string name of the task being run
+ *
+ * Arguments:
+ * index			:	task index in the task_enum array
+ * *str				:	pointer to buffer string that holds the name
+ */
+void get_task_name(int index,char *str);
+
+/**
+ * Get the indices of required labels to show in either shared memory or distributed shared memory
+ *
+ * Arguments:
+ * array			:	array buffer that holds the indices
+ * mem_type			:	the memory type of indices requested (MEM_TYPE_SHM or MEM_TYPE_DSHM)
+ */
+void get_visible_label_index(unsigned array[],unsigned mem_type);
+
+
+#endif /* SRC_PARALLELLA_MODEL_ENUMERATIONS_H_ */
diff --git a/RTFParallella/src/parallella/shared_comms.c b/RTFParallella/src/parallella/shared_comms.c
new file mode 100755
index 0000000..b400623
--- /dev/null
+++ b/RTFParallella/src/parallella/shared_comms.c
@@ -0,0 +1,58 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include "shared_comms.h"
+
+unsigned int *outbuf_shared[shared_mem_section1_label_count];
+
+void shared_labels_init(){
+	outbuf_shared[0] = (unsigned int *) shared_mem_section;
+	outbuf_shared[1] = outbuf_shared[0] + 1;
+	outbuf_shared[2] = outbuf_shared[1] + 1;
+	outbuf_shared[3] = outbuf_shared[2] + 1;
+	outbuf_shared[4] = outbuf_shared[3] + 1;
+	outbuf_shared[5] = outbuf_shared[4] + 1;
+	outbuf_shared[6] = outbuf_shared[5] + 1;
+	outbuf_shared[7] = outbuf_shared[6] + 1;
+	outbuf_shared[8] = outbuf_shared[7] + 1;
+	//initialize buffer
+	int i;
+	//timer1init();
+	for (i=0;i<shared_mem_section1_label_count;i++){
+		*outbuf_shared[i] =0;
+	}
+}
+
+/*void shared_labels_init_multi(){
+
+}*/
+
+
+
+uint8_t shared_label_write(int label_indx,int payload){
+	uint8_t retval=NULL;
+	*outbuf_shared[label_indx] = payload;
+	/*if (payload == *outbuf_shared[label_indx]){
+		retval = 1;
+	}*/
+	return retval;
+}
+
+
+unsigned int shared_label_read(int label_indx){
+	return *outbuf_shared[label_indx];
+}
+
+
+
+//-------------------end of file-------------------------//
diff --git a/RTFParallella/src/parallella/shared_comms.h b/RTFParallella/src/parallella/shared_comms.h
new file mode 100755
index 0000000..39eb8d7
--- /dev/null
+++ b/RTFParallella/src/parallella/shared_comms.h
@@ -0,0 +1,57 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#ifndef SRC_PARALLELLA_SHARED_COMMS_H_
+#define SRC_PARALLELLA_SHARED_COMMS_H_
+
+#include <stdlib.h>
+#include <stdint.h>
+
+
+#define shared_mem_section	0x01000000
+
+#define shared_mem_section_2	0x01001000
+
+#define shared_mem_section1_label_count 10
+
+
+/**
+ * Initiate the shared label section, this funcion will assign addresses to labels in a section,
+ * and initialize those labels to 0
+ *
+ * Arguments:
+ *
+ */
+void shared_labels_init();
+
+/**
+ * write a value to a label in a shared memory(DRAM) section
+ *
+ * Arguments:
+ * label_indx	:	index of the target shared label
+ * payload		:	value to write
+ *
+ */
+uint8_t shared_label_write	(int label_indx,int payload);
+
+/**
+ * read a value of a label in a shared memory(DRAM) section
+ *
+ * Arguments:
+ * label_indx	:	index of the target shared label
+ *
+ */
+unsigned int shared_label_read(int label_indx);
+
+
+#endif /* SRC_PARALLELLA_SHARED_COMMS_H_ */
diff --git a/RTFParallella/src/parallella/taskCode.c b/RTFParallella/src/parallella/taskCode.c
new file mode 100755
index 0000000..06c4ae0
--- /dev/null
+++ b/RTFParallella/src/parallella/taskCode.c
@@ -0,0 +1,121 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#include "taskCode.h"
+
+/* define global variables to be
+ * accessed through a specific task (context)
+ */
+//task recurrence counters
+int passes1 = 0;
+int passes2 = 0;
+int passes3 = 0;
+int passes4 = 0;
+int passes5 = 0;
+
+//extern unsigned int shared_label1;
+
+int label5_10_00;
+
+int label5_10_00_copy1;
+
+int shared_label_1;
+int shared_label_2 = 97;
+
+//define tasks and copy operations here
+//-------
+void handler5ms(){
+	int localLabel;
+	updateDebugFlag(700);
+	sleepTimerMs(2,1);
+	passes1++;
+	traceTaskPasses(1,passes1);
+	traceRunningTask(0);
+}
+
+void handler10ms(){
+	updateDebugFlag(800);
+	sleepTimerMs(3,2);
+	passes2++;
+	traceTaskPasses(2,passes2);
+	traceRunningTask(0);
+
+}
+
+void handler20ms(){
+	updateDebugFlag(899);
+	sleepTimerMs(5,3);
+	passes3++;
+	traceRunningTask(0);
+	traceTaskPasses(3,passes3);
+
+}
+
+void handler10msCore2(){
+	updateDebugFlag(899);
+	sleepTimerMs(3,4);
+	passes4++;
+	//shared_label1 = shared_label_to_read;
+	traceRunningTask(0);
+	traceTaskPasses(2,passes4);
+}
+
+void handler20msCore2(){
+	updateDebugFlag(899);
+	sleepTimerMs(7,5);
+	passes5++;
+	traceRunningTask(0);
+	traceTaskPasses(3,passes5);
+}
+
+
+
+
+
+//-------
+void cIn5ms(){
+	label5_10_00_copy1 = label5_10_00;
+	shared_label_2 = 97 + passes1;
+}
+void cIn10ms(){
+
+}
+void cIn20ms(){
+
+}
+
+void cIn10msCore2(){
+	shared_label_1 = shared_label_read_core(1,0,0);
+}
+void cIn20msCore2(){
+
+}
+
+//-------
+void cOut5ms(){
+	label5_10_00 = label5_10_00_copy1;
+	shared_label_write_core(1,0,0,shared_label_2);
+}
+void cOut10ms(){
+	shared_label_write(0,2);
+}
+void cOut20ms(){
+
+}
+void cOut10msCore2(){
+	shared_label_1++;
+	shared_label_write(1,shared_label_1);
+}
+void cOut20msCore2(){
+
+}
diff --git a/RTFParallella/src/parallella/taskCode.h b/RTFParallella/src/parallella/taskCode.h
new file mode 100755
index 0000000..817adff
--- /dev/null
+++ b/RTFParallella/src/parallella/taskCode.h
@@ -0,0 +1,47 @@
+/*******************************************************************************
+ *   Copyright (c) 2019 Dortmund University of Applied Sciences and Arts and others.
+ *  
+ *   This program and the accompanying materials are made
+ *   available under the terms of the Eclipse Public License 2.0
+ *   which is available at https://www.eclipse.org/legal/epl-2.0/
+ *  
+ *   SPDX-License-Identifier: EPL-2.0
+ *  
+ *   Contributors:
+ *        Dortmund University of Applied Sciences and Arts - initial API and implementation
+ *******************************************************************************/
+
+#ifndef SRC_PARALLELLA_TASKCODE_H_
+#define SRC_PARALLELLA_TASKCODE_H_
+#include "c2c.h"
+#include "debugFlags.h"
+#include "ParallellaUtils.h"
+#include "shared_comms.h"
+#include "FreeRTOS.h"
+#include "task.h"
+#include "queue.h"
+
+//declare taskHandler functions
+
+void handler5ms();
+void handler10ms();
+void handler20ms();
+void handler10msCore2();
+void handler20msCore2();
+//-------
+//declare cIn/Out operations
+//to be set up from the amalthea model during
+//code generation
+void cIn5ms();
+void cIn10ms();
+void cIn20ms();
+void cIn10msCore2();
+void cIn20msCore2();
+//-------
+void cOut5ms();
+void cOut10ms();
+void cOut20ms();
+void cOut10msCore2();
+void cOut20msCore2();
+
+#endif /* SRC_PARALLELLA_TASKCODE_H_ */
