diff --git a/src/main/java/avatartranslator/AvatarStateMachine.java b/src/main/java/avatartranslator/AvatarStateMachine.java index 6dba84aeabbf78b9e610d3f9c1d8c684f63cdbed..55b610d6e49fe13db9305fdcbcd1855fc30dccae 100644 --- a/src/main/java/avatartranslator/AvatarStateMachine.java +++ b/src/main/java/avatartranslator/AvatarStateMachine.java @@ -1727,6 +1727,15 @@ public class AvatarStateMachine extends AvatarElement { AvatarStateMachineElement ae; ae = elt.basicCloneMe(_newBlock); + /*if (ae instanceof AvatarState) { + TraceManager.addDev("New state: "); + } + TraceManager.addDev("elt: " + ae.toString());*/ + + if (ae == null) { + TraceManager.addDev("Null AE"); + } + _newAsm.addElement(ae); if (ae instanceof AvatarStartState) { @@ -1739,7 +1748,9 @@ public class AvatarStateMachine extends AvatarElement { for (AvatarStateMachineElement elt : elements) { AvatarStateMachineElement ae = correspondenceMap.get(elt); if (ae != null) { - elt.fillAdvancedValues(ae, correspondenceMap); + elt.fillAdvancedValues(ae, correspondenceMap, this); + } else { + TraceManager.addDev("Null correspondance ae"); } } } diff --git a/src/main/java/avatartranslator/AvatarStateMachineElement.java b/src/main/java/avatartranslator/AvatarStateMachineElement.java index 50e1eed4c09e439ab583db0e698049ef045ef396..32bad1ffa65a4cb34ae677c649b4b8b795fa400e 100644 --- a/src/main/java/avatartranslator/AvatarStateMachineElement.java +++ b/src/main/java/avatartranslator/AvatarStateMachineElement.java @@ -39,6 +39,7 @@ package avatartranslator; +import myutil.TraceManager; import ui.TGComponent; import java.util.HashMap; @@ -290,7 +291,8 @@ public abstract class AvatarStateMachineElement extends AvatarElement { public abstract AvatarStateMachineElement basicCloneMe(AvatarStateMachineOwner _block); - public void fillAdvancedValues(AvatarStateMachineElement asme, HashMap<AvatarStateMachineElement, AvatarStateMachineElement> correspondenceMap) { + public void fillAdvancedValues(AvatarStateMachineElement asme, HashMap<AvatarStateMachineElement, AvatarStateMachineElement> correspondenceMap, + AvatarStateMachine mch ) { // Fill all reference elements cloneLinkToReferenceObjects(asme); @@ -310,6 +312,14 @@ public abstract class AvatarStateMachineElement extends AvatarElement { AvatarStateMachineElement newNext = correspondenceMap.get(next); if (newNext != null) { asme.addNext(newNext); + } else { + TraceManager.addDev("Null next for " + next.toString()); + if (mch != null) { + TraceManager.addDev("State machine contains next? " + mch.elements.contains(next)); + + + + } } } } diff --git a/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java b/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java index c452cea1f2e0fb57a728304ec7b8a9b19f84cb3e..b87cbad030eb80013763c2e4131096f96d756c4e 100644 --- a/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java +++ b/src/main/java/tmltranslator/toavatar/FullTML2Avatar.java @@ -534,6 +534,7 @@ public class FullTML2Avatar { //For each of the possible state blocks, translate 1 and recurse on the remaining random sequence tran = new AvatarTransition(block, "__after_" + ae.getName() + "_" + i, ae.getReferenceObject()); choiceState.addNext(tran); + elementList.add(tran); List<AvatarStateMachineElement> tmp = translateState(ae.getNextElement(i), block); @@ -1805,125 +1806,12 @@ public class FullTML2Avatar { //Events are ?? to ?? AvatarBlock fifo = new AvatarBlock("FIFO", avspec,null); for (TMLChannel channel:tmlmodel.getChannels()){ - /*if (channel.getName().contains("JOINCHANNEL")){ - //System.out.println("JOINCHANNEL"); - AvatarRelation ar= new AvatarRelation(channel.getName(), taskBlockMap.get(channel.getOriginTask()), taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject()); - ar.setPrivate(false); - if (channel.getType()==TMLChannel.BRBW){ - ar.setAsynchronous(true); - ar.setSizeOfFIFO(channel.getSize()); - ar.setBlocking(true); - } - else if (channel.getType()==TMLChannel.BRNBW){ - ar.setAsynchronous(true); - ar.setSizeOfFIFO(channel.getSize()); - ar.setBlocking(false); - } - else { - //Create new block, hope for best - if (mc){ - fifo = createFifo(channel.getName()); - ar.setAsynchronous(false); - } - } - //System.out.println(channel.getName() + " " +channel.getOriginTask().getName() + " " + channel.getDestinationTask().getName()); - //Find in signal - //Sig1 contains IN Signals, Sig2 contains OUT signals - List<AvatarSignal> sig1 = new ArrayList<AvatarSignal>(); - List<AvatarSignal> sig2 = new ArrayList<AvatarSignal>(); - for (AvatarSignal sig: taskBlockMap.get(channel.getDestinationTask()).getSignals()){ - if (sig.getInOut()==AvatarSignal.IN){ - String name = sig.getName(); - String tmp = getName(channel.getName()); - if (name.equals(tmp.split("JOIN")[tmp.split("JOIN").length-1]) || name.equals(tmp)){ - sig1.add(sig); - } - } - } - for (AvatarSignal sig: taskBlockMap.get(channel.getOriginTask()).getSignals()){ - if (sig.getInOut()==AvatarSignal.OUT){ - String name = sig.getName(); - String tmp = getName(channel.getName()); - if (name.equals(tmp.split("JOIN")[tmp.split("JOIN").length-1]) || name.equals(tmp)){ - sig2.add(sig); - } - } - } - - if (sig1.size()==1 && sig2.size()==1){ - if (channel.getType()==TMLChannel.NBRNBW && mc){ - AvatarSignal read = fifo.getSignalByName("readSignal"); - - ar.block2= fifo; - //Set IN signal with read - ar.addSignals(sig1.get(0), read); - AvatarRelation ar2= new AvatarRelation(channel.getName()+"2", fifo, taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject()); - AvatarSignal write = fifo.getSignalByName("writeSignal"); - //set OUT signal with write - ar2.addSignals(write, sig2.get(0)); - ar2.setAsynchronous(false); - avspec.addRelation(ar2); - } - else { - ar.addSignals(sig2.get(0), sig1.get(0)); - } - } - avspec.addRelation(ar); - } - - else if (channel.getName().contains("FORKCHANNEL") || channel.getName().contains("fork__")){ - System.out.println("FORKCHANNEL " + channel.getName()); - AvatarRelation ar= new AvatarRelation(channel.getName(), taskBlockMap.get(channel.getOriginTask()), taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject()); - ar.setPrivate(false); + // We assume one to one - //System.out.println(channel.getName() + " " +channel.getOriginTask().getName() + " " + channel.getDestinationTask().getName()); - //Find in signal - //Sig1 contains IN Signals, Sig2 contains OUT signals - List<AvatarSignal> sig1 = new ArrayList<AvatarSignal>(); - List<AvatarSignal> sig2 = new ArrayList<AvatarSignal>(); - for (AvatarSignal sig: taskBlockMap.get(channel.getDestinationTask()).getSignals()){ - if (sig.getInOut()==AvatarSignal.IN){ - String name = sig.getName(); - String tmp = getName(channel.getName()); - if (name.equals(tmp.split("FORK")[tmp.split("FORK").length-1]) || name.equals(tmp)){ - sig1.add(sig); - } - } - } - for (AvatarSignal sig: taskBlockMap.get(channel.getOriginTask()).getSignals()){ - if (sig.getInOut()==AvatarSignal.OUT){ - String name = sig.getName(); - String tmp = getName(channel.getName()); - if (name.equals(tmp.split("FORK")[tmp.split("FORK").length-1]) || name.equals(tmp)){ - sig2.add(sig); - } - } - } - - if (sig1.size()==1 && sig2.size()==1){ - if (channel.getType()==TMLChannel.NBRNBW && mc){ - AvatarSignal read = fifo.getSignalByName("readSignal"); - - ar.block2= fifo; - //Set IN signal with read - ar.addSignals(sig1.get(0), read); - AvatarRelation ar2= new AvatarRelation(channel.getName()+"2", fifo, taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject()); - AvatarSignal write = fifo.getSignalByName("writeSignal"); - //set OUT signal with write - ar2.addSignals(write, sig2.get(0)); - ar2.setAsynchronous(false); - avspec.addRelation(ar2); - } - else { - ar.addSignals(sig2.get(0), sig1.get(0)); - } - } - avspec.addRelation(ar); - }*/ if (channel.isBasicChannel()){ //System.out.println("checking channel " + channel.getName()); AvatarRelation ar= new AvatarRelation(channel.getName(), taskBlockMap.get(channel.getOriginTask()), taskBlockMap.get(channel.getDestinationTask()), channel.getReferenceObject()); - LinkedList<HwCommunicationNode> path =tmlmap.findNodesForElement(channel); + LinkedList<HwCommunicationNode> path = tmlmap.findNodesForElement(channel); if (path.size()!=0){ ar.setPrivate(true); for (HwCommunicationNode node:path){ diff --git a/src/main/java/ui/GTURTLEModeling.java b/src/main/java/ui/GTURTLEModeling.java index 4466132bb42fb6c9f7b94fdc8a9f7766fbbd2614..fed79b1ebf88716518d800c32e0202818d8b6b8f 100644 --- a/src/main/java/ui/GTURTLEModeling.java +++ b/src/main/java/ui/GTURTLEModeling.java @@ -1903,9 +1903,11 @@ public class GTURTLEModeling { TraceManager.addDev("Avatar spec generation"); avatarspec = t2a.generateAvatarSpec("1"); - /*if (mgui.isExperimentalOn()) { + if (mgui.isExperimentalOn()) { mgui.drawAvatarSpecification(avatarspec); - }*/ + AvatarSpecification av2 = avatarspec.advancedClone(); + mgui.drawAvatarSpecification(av2); + } } public void generateAvatarFromTML(boolean mc, boolean security) { @@ -8694,6 +8696,10 @@ public class GTURTLEModeling { mgui.resetAllDIPLOIDs(); listE.useDIPLOIDs(); mgui.setMode(MainGUI.GEN_DESIGN_OK); + + + + return true; } } @@ -9173,8 +9179,8 @@ public class GTURTLEModeling { originDestMap.put(bl1.split("__")[bl1.split("__").length - 1], hs); } } - //Add Relations + //Add Relations for (String bl1 : originDestMap.keySet()) { for (String bl2 : originDestMap.get(bl1)) { Vector<Point> points = new Vector<Point>(); @@ -9210,6 +9216,7 @@ public class GTURTLEModeling { conn.setSizeOfFIFO(ar.getSizeOfFIFO()); // for (int i = 0; i < ar.nbOfSignals(); i++) { + //TraceManager.addDev("Adding signal relations to connector"); // conn.addSignal(ar.getSignal1(i).toString(), ar.getSignal1(i).getInOut() == 0, ar.block1.getName().contains(bl1)); conn.addSignal(ar.getSignal2(i).toString(), ar.getSignal2(i).getInOut() == 0, !ar.block1.getName().contains(bl1)); @@ -9234,6 +9241,8 @@ public class GTURTLEModeling { } } ypos += 100; + + //Add Pragmas AvatarBDPragma pragma = new AvatarBDPragma(xpos, ypos, xpos, xpos * 2, ypos, ypos * 2, false, null, abd); // String[] arr = new String[avspec.getPragmas().size()]; diff --git a/src/main/java/ui/avatarbd/AvatarBDPortConnector.java b/src/main/java/ui/avatarbd/AvatarBDPortConnector.java index 5f321619d422811239fb623e2a9869e6c5564608..1d05088800697c203d9aa4ab87315a28fa17dfc8 100644 --- a/src/main/java/ui/avatarbd/AvatarBDPortConnector.java +++ b/src/main/java/ui/avatarbd/AvatarBDPortConnector.java @@ -673,6 +673,7 @@ public class AvatarBDPortConnector extends TGConnectorWithCommentConnectionPoint } public void addSignal(String signal, boolean in, boolean origin) { + TraceManager.addDev("Adding signal " + signal + " isIn:" + in + " origin:" + origin); if (in) { if (origin) { inSignalsAtOrigin.add(signal);