From a6ad0137a4706ed2c51c57d4601bdbf9cb19925c Mon Sep 17 00:00:00 2001
From: Andrea Enrici <andrea.enrici@nokia.com>
Date: Mon, 27 Apr 2015 15:40:10 +0000
Subject: [PATCH]

---
 bin/config.xml                                |  2 +-
 src/tmltranslator/TMLTask.java                | 10 +--
 src/tmltranslator/ctranslator/AdaifMEC.java   |  1 -
 .../ctranslator/AdaifOperationMEC.java        |  2 +-
 .../ctranslator/ArchUnitMEC.java              |  1 +
 src/tmltranslator/ctranslator/Buffer.java     |  4 +-
 src/tmltranslator/ctranslator/CPMEC.java      | 22 +-----
 .../ctranslator/CpuMemoryCopyMEC.java         |  8 --
 .../ctranslator/DoubleDmaMEC.java             | 35 ---------
 .../ctranslator/FepOperationMEC.java          |  6 ++
 .../ctranslator/InterleaverBuffer.java        |  2 +-
 .../ctranslator/InterleaverMEC.java           |  1 -
 .../ctranslator/MapperBuffer.java             |  2 +-
 src/tmltranslator/ctranslator/MapperMEC.java  |  1 -
 src/tmltranslator/ctranslator/Operation.java  | 12 +--
 .../ctranslator/OperationMEC.java             |  9 +++
 .../ctranslator/SingleDmaMEC.java             | 23 ------
 .../ctranslator/TMLCCodeGeneration.java       | 74 +++++++++----------
 src/ui/GTMLModeling.java                      | 11 +--
 src/ui/window/JDialogPortArtifact.java        |  1 +
 20 files changed, 70 insertions(+), 157 deletions(-)

diff --git a/bin/config.xml b/bin/config.xml
index 49faf2bec0..af009a518c 100755
--- a/bin/config.xml
+++ b/bin/config.xml
@@ -61,7 +61,7 @@
 <ExternalCommand2Host data="localhost"/>
 <ExternalCommand2 data="/packages/uppaal(4.0.11/uppaal /home/enrici/TURTLE/uppaal/spec.xml"/>
 
-<LastOpenFile data="/home/enrici/TURTLE/modeling/SmartCardProtocol.xml"/>
+<LastOpenFile data="/home/enrici/TURTLE/modeling/droneATRASC01Vierge.xml"/>
 
 
 
diff --git a/src/tmltranslator/TMLTask.java b/src/tmltranslator/TMLTask.java
index d0bac2c0f8..9d423c87b1 100755
--- a/src/tmltranslator/TMLTask.java
+++ b/src/tmltranslator/TMLTask.java
@@ -61,7 +61,7 @@ public class TMLTask extends TMLElement {
     private HashSet<TMLChannel> readTMLChannelsList;
     private HashSet<TMLChannel> writeTMLChannelsList;
     private HashSet<TMLEvent> eventsList;
-    private OperationMEC operationMEC;
+    private int operationType;
 
 
     public TMLTask(String name, Object referenceToClass, Object referenceToActivityDiagram) {
@@ -352,12 +352,12 @@ public class TMLTask extends TMLElement {
         return new ArrayList<TMLEvent>( eventsList );
     }
 
-    public void addOperationMEC( OperationMEC _operationMEC )   {
-        operationMEC = _operationMEC;
+    public void addOperationType( int _operationType )   {
+        operationType = _operationType;
     }
 
-    public OperationMEC getOperationMEC()       {
-        return operationMEC;
+    public int getOperationType()       {
+        return operationType;
     }
 
     public void removeEmptyInfiniteLoop() {
diff --git a/src/tmltranslator/ctranslator/AdaifMEC.java b/src/tmltranslator/ctranslator/AdaifMEC.java
index c6e48a3775..28ce717aa5 100644
--- a/src/tmltranslator/ctranslator/AdaifMEC.java
+++ b/src/tmltranslator/ctranslator/AdaifMEC.java
@@ -51,7 +51,6 @@ import java.util.*;
 
 public class AdaifMEC extends ArchUnitMEC	{
 
-	public static final String Context = "ADAIF_CONTEXT";
 	public static final String Ctx_cleanup = "adaif_ctx_cleanup";
 	public static final String Operation = "Adaif operation";
 
diff --git a/src/tmltranslator/ctranslator/AdaifOperationMEC.java b/src/tmltranslator/ctranslator/AdaifOperationMEC.java
index de3433c2e3..f9c55cb747 100644
--- a/src/tmltranslator/ctranslator/AdaifOperationMEC.java
+++ b/src/tmltranslator/ctranslator/AdaifOperationMEC.java
@@ -52,7 +52,7 @@ import java.util.*;
 public class AdaifOperationMEC extends OperationMEC	{
 
 
-	public AdaifOperationMEC( String ctxName, String ID0, String OD0 )	{
+	public AdaifOperationMEC( String ctxName )	{
 		name = "AdaifOperationMEC";
 		exec_code = TAB + "int status;" + CR + TAB +
 								"adaif_wait(&" + ctxName + ");" + CR + TAB +
diff --git a/src/tmltranslator/ctranslator/ArchUnitMEC.java b/src/tmltranslator/ctranslator/ArchUnitMEC.java
index de0d78afa8..ee323034d5 100755
--- a/src/tmltranslator/ctranslator/ArchUnitMEC.java
+++ b/src/tmltranslator/ctranslator/ArchUnitMEC.java
@@ -62,6 +62,7 @@ public abstract class ArchUnitMEC	{
 
 	public String CR = "\n";
 	public String TAB = "\t";
+
 	protected int index;
 	protected String initCtxRoutine;
 	protected String ctxCleanupRoutine;
diff --git a/src/tmltranslator/ctranslator/Buffer.java b/src/tmltranslator/ctranslator/Buffer.java
index 5943449e98..1e9346264b 100755
--- a/src/tmltranslator/ctranslator/Buffer.java
+++ b/src/tmltranslator/ctranslator/Buffer.java
@@ -88,10 +88,10 @@ public class Buffer	{
 		code = "struct" + SP + name + TAB + "{" + CR + "}" + SC;
 	}
 
-	public Buffer( TMLPort _port )	{
+	/*public Buffer( TMLPort _port )	{
 		port = _port;
 		name = "buff__" + port.getName();
-	}
+	}*/
 	
 	public String toString()	{
 		if( port != null )	{
diff --git a/src/tmltranslator/ctranslator/CPMEC.java b/src/tmltranslator/ctranslator/CPMEC.java
index 87e5cecca8..f7912662e4 100755
--- a/src/tmltranslator/ctranslator/CPMEC.java
+++ b/src/tmltranslator/ctranslator/CPMEC.java
@@ -55,15 +55,9 @@ public abstract class CPMEC	{
 	
 	public String CR = "\n";
 	public String TAB = "\t";
-	public String node_type = new String();
-	public String inst_type = new String();
-	public String inst_decl = new String();
-	public String buff_type = new String();
-	public String buff_init = new String();
+
 	public String init_code = new String();
 	public String exec_code = new String();
-	public String messages_code = new String();
-	public String attributes_code = new String();
 	public String cleanup_code = new String();
 
 	public static final String[] cpTypes = { "Memory Copy", "Single DMA", "Double DMA" };
@@ -84,10 +78,6 @@ public abstract class CPMEC	{
 	public static final String sourceStorage = "Src_Storage_Instance";
 	public static final String destinationStorage = "Dst_Storage_Instance";
 
-	public CPMEC()	{
-		node_type = "1";
-	}
-
 	public String getExecCode()	{
 		return exec_code;
 	}
@@ -100,14 +90,4 @@ public abstract class CPMEC	{
 		return cleanup_code;
 	}
 
-	public String toString()	{
-		return node_type;
-	}
-
-	public void saveFile( String path, String filename ) throws FileException {
-		
-		TraceManager.addUser( "Saving C CP file in " + path + filename );
-		FileUtils.saveFile( path + filename, this.toString() );
-	}
-
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java b/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java
index 063215f0ab..b9d86be582 100644
--- a/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java
+++ b/src/tmltranslator/ctranslator/CpuMemoryCopyMEC.java
@@ -51,9 +51,6 @@ import java.util.*;
 
 public class CpuMemoryCopyMEC extends CPMEC	{
 
-	public static final String Context = "EMBB_CONTEXT";
-	public static final String Ctx_cleanup = "embb_ctx_cleanup";
-
 	public static final int MaxParameters = 3;
 	public static final int destinationAddressIndex = 0;
 	public static final int sourceAddressIndex = 1;
@@ -62,11 +59,6 @@ public class CpuMemoryCopyMEC extends CPMEC	{
 	private String memoryBaseAddress = "0";
 
 	public CpuMemoryCopyMEC( String ctxName, ArchUnitMEC archMEC, String sizeString )	{
-		node_type = "CpuMemoryCopy";
-		inst_type = "MEMORY_COPY";
-		inst_decl = "VOID";
-		buff_type = "MM_BUFFER_TYPE";
-		buff_init = "VOID";
 
 		exec_code = TAB + "embb_mem2ip((EMBB_CONTEXT *)&" + ctxName + ", (uintptr_t) " + memoryBaseAddress + ", /*USER TODO: *SRC */, " + sizeString + " );" + CR;
 		init_code = TAB + archMEC.getCtxInitCode() + "((EMBB_CONTEXT *)&" + ctxName + ", " + "(uintptr_t) " + archMEC.getLocalMemoryPointer() + " );" + CR;
diff --git a/src/tmltranslator/ctranslator/DoubleDmaMEC.java b/src/tmltranslator/ctranslator/DoubleDmaMEC.java
index 831c1df04f..7de817aaaa 100755
--- a/src/tmltranslator/ctranslator/DoubleDmaMEC.java
+++ b/src/tmltranslator/ctranslator/DoubleDmaMEC.java
@@ -50,9 +50,6 @@ import java.util.*;
 
 public class DoubleDmaMEC extends CPMEC	{
 
-	public static final String Context = "EMBB_CONTEXT";
-	public static final String Ctx_cleanup = "dma_ctx_cleanup";
-
 	public static final int MaxParameters = 6;
 	public static final int destinationAddress1Index = 0;
 	public static final int sourceAddress1Index = 1;
@@ -70,26 +67,8 @@ public class DoubleDmaMEC extends CPMEC	{
 
 	private String memoryBaseAddress = "0";
 
-	public DoubleDmaMEC( String ctxName )	{
-
-		node_type = "DoubleDmaMEC";
-		inst_type = "VOID";
-		inst_decl = "EMBB_DMA_CONTEXT";
-		buff_type = "MM_BUFFER_TYPE";
-		buff_init = "VOID";
-		exec_code = TAB + "embb_dma_start(&" + ctxName + ", /*USER TO DO: SRC_ADDRESS*/, /*USER TO DO: DST_ADDRESS*/, /*USER TO DO: NUM_SAMPLES */ );" + CR;	
-		init_code = TAB + "embb_dma_ctx_init(&" + ctxName + ", /*USER TO DO: DMA_DEVICE*/, /*USER TO DO: DST_DEV*/, NULL );" + CR;
-		cleanup_code = TAB + "embb_dma_ctx_cleanup(&" + ctxName + ");";
-	}
-
 	public DoubleDmaMEC( String ctxName, ArchUnitMEC archMEC, int srcMemoryType, int dstMemoryType, int transferType, String sizeString )	{
 
-		node_type = "DoubleDmaMEC";
-		inst_type = "VOID";
-		inst_decl = "EMBB_DMA_CONTEXT";
-		buff_type = "MM_BUFFER_TYPE";
-		buff_init = "VOID";
-
 		switch( srcMemoryType )	{
 			case Buffer.FepBuffer:
 				memoryBaseAddress = "fep_mss";
@@ -132,18 +111,4 @@ public class DoubleDmaMEC extends CPMEC	{
 		}
 	}
 
-//	public DoubleDmaMEC( String ctxName, String destinationAddress1, String sourceAddress1, String size1, String destinationAddress2, String sourceAddress2, String size2 )	{
-//
-//		node_type = "DoubleDmaMEC";
-//		inst_type = "VOID";
-//		inst_decl = "EMBB_DMA_CONTEXT";
-//		buff_type = "MM_BUFFER_TYPE";
-//		buff_init = "VOID";
-//		exec_code = TAB + "embb_dma_start(&" + ctxName + ", (uintptr_t) " + sourceAddress1 + ", (uintptr_t) " + destinationAddress1 + ", (size_t) " + size1 + " );" + CR;	
-//		exec_code += TAB + "embb_dma_start(&" + ctxName + ", (uintptr_t) " + sourceAddress2 + ", (uintptr_t) " + destinationAddress2 + ", (size_t) " + size2 + " );" + CR;	
-//		init_code = TAB + "embb_dma_ctx_init(&" + ctxName + ", /*USER TO DO: DMA_DEVICE*/, /*USER TO DO: DST_DEV*/, NULL );" + CR;
-//		init_code += TAB + "embb_dma_ctx_init(&" + ctxName + ", /*USER TO DO: DMA_DEVICE*/, /*USER TO DO: DST_DEV*/, NULL );" + CR;
-//		cleanup_code = TAB + "embb_dma_ctx_cleanup(&" + ctxName + ");";
-//	}
-
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/FepOperationMEC.java b/src/tmltranslator/ctranslator/FepOperationMEC.java
index 9c0d850d9f..ef11ace2a8 100755
--- a/src/tmltranslator/ctranslator/FepOperationMEC.java
+++ b/src/tmltranslator/ctranslator/FepOperationMEC.java
@@ -52,6 +52,12 @@ import myutil.*;
 
 public abstract class FepOperationMEC extends OperationMEC	{
 
+	public static final int CwmMEC = 0;
+	public static final int CwlMEC = 1;
+	public static final int CwaMEC = 2;
+	public static final int CwpMEC = 3;
+	public static final int FftMEC = 4;
+	public static final int SumMEC = 5;
 
 	public FepOperationMEC()	{
 		name = "FepOperationMEC";
diff --git a/src/tmltranslator/ctranslator/InterleaverBuffer.java b/src/tmltranslator/ctranslator/InterleaverBuffer.java
index 827af280d8..6d65878f31 100644
--- a/src/tmltranslator/ctranslator/InterleaverBuffer.java
+++ b/src/tmltranslator/ctranslator/InterleaverBuffer.java
@@ -37,7 +37,7 @@
    knowledge of the CeCILL license and that you accept its terms.
 
    /**
-   * Class FEPBuffer
+   * Class InterleaverBuffer
    * Creation: 11/02/2014
    * @version 1.0 11/02/2014
    * @author Andrea ENRICI
diff --git a/src/tmltranslator/ctranslator/InterleaverMEC.java b/src/tmltranslator/ctranslator/InterleaverMEC.java
index e01853ca74..5be9a7bfb3 100644
--- a/src/tmltranslator/ctranslator/InterleaverMEC.java
+++ b/src/tmltranslator/ctranslator/InterleaverMEC.java
@@ -51,7 +51,6 @@ import java.util.*;
 
 public class InterleaverMEC extends ArchUnitMEC	{
 
-	public static final String Context = "INTL_CONTEXT";
 	public static final String Ctx_cleanup = "intl_ctx_cleanup";
 	public static final String Operation = "Interleaver operation";
 
diff --git a/src/tmltranslator/ctranslator/MapperBuffer.java b/src/tmltranslator/ctranslator/MapperBuffer.java
index 83e2678222..d4b331b90b 100644
--- a/src/tmltranslator/ctranslator/MapperBuffer.java
+++ b/src/tmltranslator/ctranslator/MapperBuffer.java
@@ -37,7 +37,7 @@
    knowledge of the CeCILL license and that you accept its terms.
 
    /**
-   * Class FEPBuffer
+   * Class MapperBuffer
    * Creation: 11/02/2014
    * @version 1.0 11/02/2014
    * @author Andrea ENRICI
diff --git a/src/tmltranslator/ctranslator/MapperMEC.java b/src/tmltranslator/ctranslator/MapperMEC.java
index 8c3575078c..a4c9fd082c 100644
--- a/src/tmltranslator/ctranslator/MapperMEC.java
+++ b/src/tmltranslator/ctranslator/MapperMEC.java
@@ -51,7 +51,6 @@ import java.util.*;
 
 public class MapperMEC extends ArchUnitMEC	{
 
-	public static final String Context = "MAPPER_CONTEXT";
 	public static final String Ctx_cleanup = "mapper_ctx_cleanup";
 	public static final String Operation = "Mapper operation";
 
diff --git a/src/tmltranslator/ctranslator/Operation.java b/src/tmltranslator/ctranslator/Operation.java
index 3d88045e99..21eed56904 100755
--- a/src/tmltranslator/ctranslator/Operation.java
+++ b/src/tmltranslator/ctranslator/Operation.java
@@ -73,14 +73,6 @@ public class Operation	{
 	private boolean isPrex;
 	private boolean isPostex;
 
-	//Constructor for SDR operations, before the introduction of signals
-	/*public Operation( TMLTask _task1, TMLTask _task2 )	{	//First pass the F task
-		name = _task1.getName().split( "__" )[1].split( "F_" )[1];
-		fTask = _task1;
-		xTask = _task2;
-		type = 1;	//SDR
-	}*/
-
 	//Constructor for SDR operations with input (READ channels and events) and output (WRITE channels and events) signals
 	public Operation( TMLTask _xTask, TMLTask _fTask, HwNode _xHwNode, HwNode _fHwNode, ArrayList<Signal> _inSignals, Signal _outSignal, Buffer _inBuffer, Buffer _outBuffer, boolean _isPrex, boolean _isPostex )	{	//First pass the F task
 		name = _xTask.getName().split( "__" )[1].split( "F_" )[1];
@@ -220,8 +212,7 @@ public class Operation	{
 							"outBuffer: " + outBuffer.toString();
 		}
 		else if( inSignals.size() == 0 )	{
-			s +=			//"OPERATION " + name + "\n\t" +
-							"outSignal: " + outSignal.getName() + "\n\t" +
+			s +=		"outSignal: " + outSignal.getName() + "\n\t" +
 							"X task HwExecutionNode: " + xHwNode.getName() + "\n\t" +
 							"X task MEC: " + xHwNode.getArchUnitMEC().toString() + "\n\t" +
 							"F task HwExecutionNode: " + fHwNode.getName() + "\n\t" +
@@ -229,7 +220,6 @@ public class Operation	{
 							"outBuffer: " + outBuffer.toString();
 		}
 		else if( outSignal == null )	{
-			//s = "OPERATION " + name + "\n\t";
 			for( Signal sig: inSignals )	{
 				s += "inSignal: " + sig.getName() + "\n\t";
 			}
diff --git a/src/tmltranslator/ctranslator/OperationMEC.java b/src/tmltranslator/ctranslator/OperationMEC.java
index 96105df7c1..4045db0ae0 100755
--- a/src/tmltranslator/ctranslator/OperationMEC.java
+++ b/src/tmltranslator/ctranslator/OperationMEC.java
@@ -52,6 +52,15 @@ import myutil.*;
 
 public abstract class OperationMEC	{
 
+	public static final int MappOperationMEC = 0;
+	public static final int IntlOperationMEC = 1;
+	public static final int AdaifOperationMEC = 2;
+	public static final int CpuOperationMEC = 3;
+	public static final int FepOperationMEC = 4;
+
+	private static final String[] contextArray = { "MAPPER_CONTEXT", "INTL_CONTEXT", "ADAIF_CONTEXT", "EMBB_CONTEXT", "FEP_CONTEXT" };
+	public static final ArrayList<String> ContextList = new ArrayList( Arrays.asList( contextArray ) );
+
 	protected String CR = "\n";
 	protected String TAB = "\t";
 	protected String name = new String();
diff --git a/src/tmltranslator/ctranslator/SingleDmaMEC.java b/src/tmltranslator/ctranslator/SingleDmaMEC.java
index b5b28cdc35..ae48bc5055 100755
--- a/src/tmltranslator/ctranslator/SingleDmaMEC.java
+++ b/src/tmltranslator/ctranslator/SingleDmaMEC.java
@@ -62,23 +62,8 @@ public class SingleDmaMEC extends CPMEC	{
 
 	private String memoryBaseAddress = "0";
 
-	public SingleDmaMEC( String ctxName )	{
-
-		node_type = "SingleDmaMEC";
-		inst_type = "VOID";
-		inst_decl = "EMBB_DMA_CONTEXT";
-		buff_type = "MM_BUFFER_TYPE";
-		buff_init = "VOID";
-	}
-
 	public SingleDmaMEC( String ctxName, ArchUnitMEC archMEC, int srcMemoryType, int dstMemoryType, int transferType, String sizeString )	{
 
-		node_type = "SingleDmaMEC";
-		inst_type = "VOID";
-		inst_decl = "EMBB_DMA_CONTEXT";
-		buff_type = "MM_BUFFER_TYPE";
-		buff_init = "VOID";
-
 		switch( srcMemoryType )	{
 			case Buffer.FepBuffer:
 				memoryBaseAddress = "fep_mss";
@@ -124,13 +109,5 @@ public class SingleDmaMEC extends CPMEC	{
 		}
 
 	}
-	
-	public String getInitCode()	{
-		return init_code;
-	}
-
-	public String getCleanupCode()	{
-		return cleanup_code;
-	}
 
 }	//End of class
diff --git a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java b/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
index f82352c461..ffdf1eeffd 100755
--- a/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
+++ b/src/tmltranslator/ctranslator/TMLCCodeGeneration.java
@@ -148,23 +148,23 @@ public class TMLCCodeGeneration	{
 		makeSignalsList();	//make the signals associated to operations, based on the tasks of operations
 
 		for( Signal sig: signalsList )	{
-			TraceManager.addDev( sig.toString() + CR );
+			//TraceManager.addDev( sig.toString() + CR );
 			appendToDebugFile( sig.toString() + CR2 );
 		}
 		makeOperationsList( mappedTasks );	//make the list of operations based on the tasks in the app model
 		setMappingParametersToBuffers();
 		for( Buffer buff: buffersList )	{
-			TraceManager.addDev( buff.toString() + CR );
+			//TraceManager.addDev( buff.toString() + CR );
 			appendToDebugFile( buff.toString() + CR );
 		}
 		makeDataTransfersList();
 		for( DataTransfer dt: dataTransfersList )	{
-		 		TraceManager.addDev( dt.toString() );
+		 		//TraceManager.addDev( dt.toString() );
 				appendToDebugFile( dt.toString() );
 		}
 		appendToDebugFile( "\n" );
 		for( Operation op: operationsList )	{
-			TraceManager.addDev( op.toString() );
+			//TraceManager.addDev( op.toString() );
 			appendToDebugFile( op.toString() + CR );
 		}
 		closeDebugFile();
@@ -732,38 +732,38 @@ public class TMLCCodeGeneration	{
 				inBuff = op.getInBuffer();
 				outBuff = op.getOutBuffer();
 				ctxName = op.getContextName();
-				OperationMEC xTaskOperation = xTask.getOperationMEC();
+				int xTaskOperationType = xTask.getOperationType();
 				if( declaration )	{
 					if( inBuff == null )	{	//for source operation
 						buffersString.append( "extern" + SP + outBuff.getType() + SP + outBuff.getName() + SC + CR );
-						instructionsString.append( "extern" + SP + xTask.getOperationMEC().getContext() + SP + ctxName + SC + CR );
+						instructionsString.append( "extern" + SP + OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR );
 					}
 					else	{
 						if( outBuff == null )	{	//for sink operation
 							buffersString.append( "extern" + SP + inBuff.getType() + SP + inBuff.getName() + SC + CR );
-							instructionsString.append( "extern" + SP + xTask.getOperationMEC().getContext() + SP + ctxName + SC + CR );
+							instructionsString.append( "extern" + SP + OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR );
 						}
 						else	{	//for all the remaining operations
 							buffersString.append( "extern" + SP + inBuff.getType() + SP + inBuff.getName() + SC + CR );
 							buffersString.append( "extern" + SP + outBuff.getType() + SP + outBuff.getName() + SC + CR );
-							instructionsString.append( "extern" + SP + xTask.getOperationMEC().getContext() + SP + ctxName + SC + CR );
+							instructionsString.append( "extern" + SP + OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR );
 						}
 					}
 				}
 				else	{
 					if( inBuff == null )	{	//for source operation
 						buffersString.append( outBuff.getType() + SP + outBuff.getName() + SC + CR );
-						instructionsString.append( xTask.getOperationMEC().getContext() + SP + ctxName + SC + CR );
+						instructionsString.append( OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR );
 					}
 					else	{
 						if( outBuff == null )	{	//for sink operation
 							buffersString.append( inBuff.getType() + SP + inBuff.getName() + SC + CR );
-							instructionsString.append( xTask.getOperationMEC().getContext() + SP + ctxName + SC + CR );
+							instructionsString.append( OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR );
 						}
 						else	{	//for all the remaining operations
 							buffersString.append( inBuff.getType() + SP + inBuff.getName() + SC + CR );
 							buffersString.append( outBuff.getType() + SP + outBuff.getName() + SC + CR );
-							instructionsString.append( xTask.getOperationMEC().getContext() + SP + ctxName + SC + CR );
+							instructionsString.append( OperationMEC.ContextList.get( xTaskOperationType ) + SP + ctxName + SC + CR );
 						}
 					}
 				}
@@ -961,7 +961,7 @@ public class TMLCCodeGeneration	{
 		TMLTask xTask = op.getSDRTasks().get( Operation.X_TASK );	
 		TMLTask fTask =	op.getSDRTasks().get( Operation.F_TASK );
 
-		OperationMEC xTaskOperation = xTask.getOperationMEC();
+		int xTaskOperationType = xTask.getOperationType();
 
 		if( op.getOutSignal() != null )	{
 			signalOutName = op.getOutSignal().getName();
@@ -980,40 +980,40 @@ public class TMLCCodeGeneration	{
 			code.append( TAB + "sig[" + sig.getName() + "].f = false;" + CR );
 		}
 		
-		if( xTaskOperation instanceof CwpMEC )	{
+		if( xTaskOperationType == FepOperationMEC.CwpMEC )	{
 			CwpMEC cwp = new CwpMEC( ctxName, signalInName, signalOutName );
 			code.append( cwp.getExecCode() );
 		}
-		else if( xTaskOperation instanceof CwmMEC )	{
+		else if( xTaskOperationType == FepOperationMEC.CwmMEC )	{
 			CwmMEC cwm = new CwmMEC( ctxName, signalInName, signalOutName );
 			code.append( cwm.getExecCode() );
 		}
-		else if( xTaskOperation instanceof CwaMEC )	{
+		else if( xTaskOperationType == FepOperationMEC.CwaMEC )	{
 			CwaMEC cwa = new CwaMEC( ctxName, signalInName, "", signalOutName );
 			code.append( cwa.getExecCode() );
 		}
-		else if( xTaskOperation instanceof CwlMEC )	{
+		else if( xTaskOperationType == FepOperationMEC.CwlMEC )	{
 			CwlMEC cwl = new CwlMEC( ctxName, signalInName, signalOutName );
 			code.append( cwl.getExecCode() );
 		}
-		else if( xTaskOperation instanceof SumMEC )	{
+		else if( xTaskOperationType == FepOperationMEC.SumMEC )	{
 			SumMEC sum = new SumMEC( ctxName, signalInName, signalOutName );
 			code.append( sum.getExecCode() );
 		}
-		else if( xTaskOperation instanceof FftMEC )	{
+		else if( xTaskOperationType == FepOperationMEC.FftMEC )	{
 			FftMEC fft = new FftMEC( ctxName, signalInName, signalOutName );
 			code.append( fft.getExecCode() );
 		}
-		else if( xTaskOperation instanceof MappOperationMEC )	{
+		else if( xTaskOperationType == OperationMEC.MappOperationMEC )	{
 			MappOperationMEC mapp = new MappOperationMEC( ctxName, signalInName, signalOutName );
 			code.append( mapp.getExecCode() );
 		}
-		else if( xTaskOperation instanceof IntlOperationMEC )	{
+		else if( xTaskOperationType == OperationMEC.IntlOperationMEC )	{
 			IntlOperationMEC intl = new IntlOperationMEC( ctxName, signalInName, signalOutName );
 			code.append( intl.getExecCode() );
 		}
-		else if( xTaskOperation instanceof AdaifOperationMEC )	{
-			AdaifOperationMEC adaif = new AdaifOperationMEC( ctxName, signalInName, signalOutName );
+		else if( xTaskOperationType == OperationMEC.AdaifOperationMEC )	{
+			AdaifOperationMEC adaif = new AdaifOperationMEC( ctxName );
 			code.append( adaif.getExecCode() );
 		}
 
@@ -1250,8 +1250,8 @@ public class TMLCCodeGeneration	{
 		initFileString.append( "/**** variables ****/" + CR2 );		
 		initFileString.append( "char fep_mss[0x10000];" + CR );
 		initFileString.append( "char adaif_mss[0x10000];" + CR );
-		initFileString.append( "char intl_mss[0x10000];" + CR );
-		initFileString.append( "char mapper_mss[0x10000];" + CR );
+		initFileString.append( "char intl_mss[0x41000];" + CR );
+		initFileString.append( "char mapper_mss[0x8000];" + CR );
 		initFileString.append( buffersAndInstructionsDeclaration( false ) + CR2 );
 		generateCodeToInitializeBuffers();
 		generateCodeToInitializeSignals();
@@ -1262,8 +1262,8 @@ public class TMLCCodeGeneration	{
 			if( op.getType() == Operation.SDR )	{
 				TMLTask xTask = op.getSDRTasks().get( Operation.X_TASK );
 				TMLTask fTask = op.getSDRTasks().get( Operation.X_TASK );
-				OperationMEC xTaskOperation = xTask.getOperationMEC();
-				OperationMEC fTaskOperation = fTask.getOperationMEC();
+				int xTaskOperationType = xTask.getOperationType();
+				int fTaskOperationType = fTask.getOperationType();
 				ctxName = op.getContextName();
 				if( op.getInSignals().size() > 0 )	{
 					inSignalName = op.getInSignals().get(0).getName();
@@ -1277,43 +1277,43 @@ public class TMLCCodeGeneration	{
 				else	{
 					outSignalName = "noOutSignal";
 				}
-				if( xTaskOperation instanceof CwpMEC )	{
+				if( xTaskOperationType == FepOperationMEC.CwpMEC )	{
 					CwpMEC cwp = new CwpMEC( ctxName, inSignalName, outSignalName );
 					init_code = cwp.getInitCode();
 				}
-				else if( xTaskOperation instanceof CwmMEC )	{
+				else if( xTaskOperationType == FepOperationMEC.CwmMEC )	{
 					CwmMEC cwm = new CwmMEC( ctxName, inSignalName, outSignalName );
 					init_code = cwm.getInitCode();
 				}
-				else if( xTaskOperation instanceof CwaMEC )	{
+				else if( xTaskOperationType == FepOperationMEC.CwaMEC )	{
 					CwaMEC cwa = new CwaMEC( ctxName, inSignalName, "", outSignalName );
 					init_code = cwa.getInitCode();
 				}
-				else if( xTaskOperation instanceof CwlMEC )	{
+				else if( xTaskOperationType == FepOperationMEC.CwlMEC )	{
 					CwlMEC cwl = new CwlMEC( ctxName, inSignalName, outSignalName );
 					init_code = cwl.getInitCode();
 				}
-				else if( xTaskOperation instanceof SumMEC )	{
+				else if( xTaskOperationType == FepOperationMEC.SumMEC )	{
 					SumMEC sum = new SumMEC( ctxName, inSignalName, outSignalName );
 					init_code = sum.getInitCode();
 				}
-				else if( xTaskOperation instanceof FftMEC )	{
+				else if( xTaskOperationType == FepOperationMEC.FftMEC )	{
 					FftMEC fft = new FftMEC( ctxName, inSignalName, outSignalName );
 					init_code = fft.getInitCode();
 				}
-				else if( xTaskOperation instanceof IntlOperationMEC )	{
+				else if( xTaskOperationType == OperationMEC.IntlOperationMEC )	{
 					IntlOperationMEC intl = new IntlOperationMEC( ctxName, inSignalName, outSignalName );
 					initFileString.append( intl.getInitCode() + CR );
 				}
-				else if( xTaskOperation instanceof MappOperationMEC )	{
+				else if( xTaskOperationType == OperationMEC.MappOperationMEC )	{
 					MappOperationMEC mapp = new MappOperationMEC( ctxName, inSignalName, outSignalName );
 					initFileString.append( mapp.getInitCode() + CR );
 				}
-				else if( xTaskOperation instanceof AdaifOperationMEC )	{
-					AdaifOperationMEC adaif = new AdaifOperationMEC( ctxName, inSignalName, outSignalName );
+				else if( xTaskOperationType == OperationMEC.AdaifOperationMEC )	{
+					AdaifOperationMEC adaif = new AdaifOperationMEC( ctxName );
 					initFileString.append( adaif.getInitCode() + CR );
 				}
-				else if( xTaskOperation instanceof CpuOperationMEC )	{
+				else if( xTaskOperationType == OperationMEC.CpuOperationMEC )	{
 					CpuOperationMEC cpu = new CpuOperationMEC( ctxName, inSignalName, outSignalName );
 					initFileString.append( cpu.getInitCode() + CR );
 				}
diff --git a/src/ui/GTMLModeling.java b/src/ui/GTMLModeling.java
index b7a62a8ddf..1f3b47d2d7 100755
--- a/src/ui/GTMLModeling.java
+++ b/src/ui/GTMLModeling.java
@@ -2831,13 +2831,9 @@ public class GTMLModeling  {
                 for(TMLArchiArtifact artifact:artifacts) {
                     s = artifact.getReferenceTaskName() + "__" + artifact.getTaskName();
 										TraceManager.addDev( "Exploring " + s );
-										/*ArchUnitMEC p = artifact.getMECofTask();
-										String op = artifact.getOperation();*/
                     s = s.replaceAll("\\s", "");
-                    //TraceManager.addDev("name=" + s);
                     ttask = tmlm.getTMLTaskByName(s);
                     if (ttask != null) {
-                        //TraceManager.addDev("not null prio=" + artifact.getPriority());
                         ttask.setPriority(artifact.getPriority());
                     }
                 }
@@ -2975,8 +2971,7 @@ public class GTMLModeling  {
                     //TraceManager.addDev("Exploring artifact " + artifact.getValue());
                     s = artifact.getReferenceTaskName();
 										ArchUnitMEC mec = artifact.getArchUnitMEC();
-										OperationMEC op = artifact.getOperationMECOfTask();
-										//TraceManager.addDev( "Creating mapping DS: " + op );
+										int operationType = artifact.getOperationType();
                     TraceManager.addDev("1) Trying to get task named:" + s);
                     s = s.replaceAll("\\s", "");
                     TraceManager.addDev("2) Trying to get task named:" + s);
@@ -2984,8 +2979,8 @@ public class GTMLModeling  {
                     TraceManager.addDev("3) Trying to get task named:" + s);
                     task = tmlm.getTMLTaskByName(s);
                     if (task != null) {
-											if( op != null )	{
-												task.addOperationMEC( op );
+											if( operationType != -1 )	{
+												task.addOperationType( operationType );
 											}
 											((HwExecutionNode)node).addMECToHwExecutionNode( mec );
 											map.addTaskToHwExecutionNode(task, (HwExecutionNode)node);
diff --git a/src/ui/window/JDialogPortArtifact.java b/src/ui/window/JDialogPortArtifact.java
index 3663f100c7..5e5ac98561 100755
--- a/src/ui/window/JDialogPortArtifact.java
+++ b/src/ui/window/JDialogPortArtifact.java
@@ -183,6 +183,7 @@ public class JDialogPortArtifact extends javax.swing.JDialog implements ActionLi
 			index = 0;//indexOf(list, artifact.getFullValue());
 			//parse each entry of list. Entry is in format AppName::chIn__chOut
 			for( String s: list )	{
+				TraceManager.addDev( "Parsing: " + s );
 				String[] temp1 = s.split("__");
 				String[] temp2 = temp1[0].split( "::" );
 				String chOut = temp2[0] + "::" + temp1[1];
-- 
GitLab