RTFParallella initial commit

Signed-off-by: Mahmoud Bazzal <mahmood1994ha@gmail.com>
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_ */