From d773dfa0088addb47f9332d6e10f4be87e9e741e Mon Sep 17 00:00:00 2001
From: Daniel Knorreck <daniel.knorreck@telecom-paristech.fr>
Date: Wed, 10 Feb 2010 17:29:02 +0000
Subject: [PATCH]

---
 .../TMLActivityElementChannel.java            |  4 +--
 .../tomappingsystemc2/MappedSystemCTask.java  |  9 ++++--
 .../tomappingsystemc2/TML2MappingSystemC.java | 29 +++++++++++++++----
 3 files changed, 31 insertions(+), 11 deletions(-)

diff --git a/src/tmltranslator/TMLActivityElementChannel.java b/src/tmltranslator/TMLActivityElementChannel.java
index ae25641e0e..c1e23d4cfe 100755
--- a/src/tmltranslator/TMLActivityElementChannel.java
+++ b/src/tmltranslator/TMLActivityElementChannel.java
@@ -61,7 +61,7 @@ public class TMLActivityElementChannel extends TMLActivityElement {
 		channels.add(_channel);
     }
 	
-	/* To remove once TTool has been tested */
+	/* To remove once TTool has been tested
 	public void setChannel(TMLChannel _channel) {
 		channels.add(_channel);
     }
@@ -69,7 +69,7 @@ public class TMLActivityElementChannel extends TMLActivityElement {
 	public TMLChannel getChannel() {
         return channels.get(0);
     }
-	/* Remove before */
+	Remove before */
 	
 	public int getNbOfChannels() {
 		return channels.size();
diff --git a/src/tmltranslator/tomappingsystemc2/MappedSystemCTask.java b/src/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
index 4e080cf27e..87cf972827 100755
--- a/src/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
+++ b/src/tmltranslator/tomappingsystemc2/MappedSystemCTask.java
@@ -472,9 +472,12 @@ public class MappedSystemCTask {
 			hcode+="TMLReadCommand " + cmdName + SCCR;
 			TMLReadChannel rCommand=(TMLReadChannel)currElem;
 			if (isIntValue(rCommand.getNbOfSamples()))
-				initCommand+= "," + cmdName + "("+currElem.getID()+",this,0," + rCommand.getChannel(0).getExtendedName() + "," + rCommand.getChannel(0).getSize() + "*" + rCommand.getNbOfSamples() + ")"+CR;
+				//initCommand+= "," + cmdName + "("+currElem.getID()+",this,0," + rCommand.getChannel(0).getExtendedName() + "," + rCommand.getChannel(0).getSize() + "*" + rCommand.getNbOfSamples() + ")"+CR;
+				initCommand+= "," + cmdName + "("+currElem.getID()+",this,0," + rCommand.getChannel(0).getExtendedName() + "," +  rCommand.getNbOfSamples() + ")"+CR;
+
 			else
-				initCommand+= "," + cmdName + "("+currElem.getID()+",this," + makeCommandLenFunc(cmdName, rCommand.getChannel(0).getSize() + "*(" + rCommand.getNbOfSamples()+")",null) + "," + rCommand.getChannel(0).getExtendedName() + ")"+CR;
+				//initCommand+= "," + cmdName + "("+currElem.getID()+",this," + makeCommandLenFunc(cmdName, rCommand.getChannel(0).getSize() + "*(" + rCommand.getNbOfSamples()+")",null) + "," + rCommand.getChannel(0).getExtendedName() + ")"+CR;
+				initCommand+= "," + cmdName + "("+currElem.getID()+",this," + makeCommandLenFunc(cmdName, rCommand.getNbOfSamples(),null) + "," + rCommand.getChannel(0).getExtendedName() + ")"+CR;
 			nextCommand= cmdName + ".setNextCommand(array(1,(TMLCommand*)" + makeCommands(currElem.getNextElement(0),false,retElement,null,null) + "))"+ SCCR;
 		
 		} else if (currElem instanceof TMLWriteChannel){
@@ -747,7 +750,7 @@ public class MappedSystemCTask {
 			nextCommand=cmdName + ".setNextCommand(array(" + nbevt + nextCommand + "))" + SCCR;
 		
 		} else {
-			System.out.println("Operator: " + currElem + " is not managed in the current version of this C++ code generator." + "))" + SCCR);
+			System.out.println("Operator: " + currElem + " of class " + currElem.getClass().getName() +  " is not managed in the current version of this C++ code generator.");
 		}
 		chaining+=nextCommand; 
 		return (cmdName.equals("0") || cmdName.charAt(0)=='&')? cmdName : "&"+cmdName;
diff --git a/src/tmltranslator/tomappingsystemc2/TML2MappingSystemC.java b/src/tmltranslator/tomappingsystemc2/TML2MappingSystemC.java
index 3ccc269202..16bbe2e7fb 100755
--- a/src/tmltranslator/tomappingsystemc2/TML2MappingSystemC.java
+++ b/src/tmltranslator/tomappingsystemc2/TML2MappingSystemC.java
@@ -167,7 +167,7 @@ public class TML2MappingSystemC {
 		declaration += "//Declaration of CPUs" + CR;
 		for(HwNode node: tmlmapping.getTMLArchitecture().getHwNodes()) {
 			if (node instanceof HwCPU) {
-				if (tmlmapping.isAUsedHwNode(node)) {
+				//if (tmlmapping.isAUsedHwNode(node)) {
 					HwCPU exNode = (HwCPU)node;
 					declaration += "CPU* " + exNode.getName() + " = new CPU(" + exNode.getID() + ", \"" + exNode.getName() + "\", ";
 					if (exNode.getType().equals("CPURRPB"))
@@ -177,7 +177,7 @@ public class TML2MappingSystemC {
 					declaration  += exNode.clockRatio + ", " + exNode.execiTime + ", " + exNode.execcTime + ", " + exNode.pipelineSize + ", " + exNode.taskSwitchingTime + ", " + exNode.branchingPredictionPenalty + ", " + exNode.goIdleTime + ", "  + exNode.maxConsecutiveIdleCycles + ", " + exNode.byteDataSize + ")" + SCCR;
 					
 					declaration += "addCPU("+ node.getName() +")"+ SCCR;
-				}
+				//}
 			}
 		}
 		declaration += CR;
@@ -272,13 +272,14 @@ public class TML2MappingSystemC {
 				}
 				declaration += tmp + "* " + channel.getExtendedName() + " = new " + tmp  +"(" + channel.getID() + ",\"" + channel.getName() + "\"," + channel.getSize() + ",";
 				strwrap buses1=new strwrap(), buses2=new strwrap(), slaves1=new strwrap(), slaves2=new strwrap();
-				int hopNum = addRoutingInfoForChannel(elem, ((TMLChannel)elem).getOriginTask(), tmlmapping.getHwNodeByTask(((TMLChannel)elem).getOriginTask()).getName(), buses1, slaves1, true);
+				//int hopNum = addRoutingInfoForChannel(elem, ((TMLChannel)elem).getOriginTask(), tmlmapping.getHwNodeByTask(((TMLChannel)elem).getOriginTask()).getName(), buses1, slaves1, true);
+				int hopNum = addRoutingInfoForChannel(elem, channel.getOriginTask(), tmlmapping.getHwNodeByTask(channel.getOriginTask()).getName(), buses1, slaves1, true);
 				if (hopNum==-1){
 					buses2.str=buses1.str;
 					slaves2.str=slaves1.str;
 					hopNum=2;
 				}else{
-					int tempHop= addRoutingInfoForChannel(elem, ((TMLChannel)elem).getDestinationTask(), tmlmapping.getHwNodeByTask(((TMLChannel)elem).getDestinationTask()).getName(), buses2, slaves2, false);
+					int tempHop= addRoutingInfoForChannel(elem, channel.getDestinationTask(), tmlmapping.getHwNodeByTask(channel.getDestinationTask()).getName(), buses2, slaves2, false);
 					if (tempHop==-1){
 						buses1.str=buses2.str;
 						slaves1.str=slaves2.str;
@@ -308,8 +309,24 @@ public class TML2MappingSystemC {
 					param= "," + evt.getMaxSize() + ",0";
 				}
 			}
-			
-			declaration += tmp + "* " + evt.getExtendedName() + " = new " + tmp + "(" + evt.getID() + ",\"" + evt.getName() + "\",0,0,0" + param +")" + SCCR;
+			strwrap buses1=new strwrap(), buses2=new strwrap(), slaves1=new strwrap(), slaves2=new strwrap();
+			int hopNum = addRoutingInfoForChannel(evt, evt.getOriginTask(), tmlmapping.getHwNodeByTask(evt.getOriginTask()).getName(), buses1, slaves1, true);
+			boolean mapped=false;
+			if(hopNum!=-1){
+				int tempHop= addRoutingInfoForChannel(evt, evt.getDestinationTask(), tmlmapping.getHwNodeByTask(evt.getDestinationTask()).getName(), buses2, slaves2, false);
+				if (tempHop!=-1){
+					hopNum+=tempHop;
+					mapped=true;
+				}
+				
+			}
+			if (mapped){
+				declaration += tmp + "* " + evt.getExtendedName() + " = new " + tmp + "(" + evt.getID() + ",\"" + evt.getName() + "\"," + hopNum + ",array(" + hopNum + buses1.str + buses2.str + "),array(" + hopNum + slaves1.str + slaves2.str + ")" + param +")" + SCCR;
+				
+			}else{
+				declaration += tmp + "* " + evt.getExtendedName() + " = new " + tmp + "(" + evt.getID() + ",\"" + evt.getName() + "\",0,0,0" + param +")" + SCCR;   ///old command
+			}
+
 			declaration += "addEvent("+ evt.getExtendedName() +")"+ SCCR;
 		}
 		declaration += CR;
-- 
GitLab