diff --git a/src/dseengine/DSEConfiguration.java b/src/dseengine/DSEConfiguration.java index d9617a95ad78dfc1abb52762afb1c97af1814b70..a2cd620b10f97d1f903359fd0eb9f804657e9756 100755 --- a/src/dseengine/DSEConfiguration.java +++ b/src/dseengine/DSEConfiguration.java @@ -94,7 +94,7 @@ public class DSEConfiguration implements Runnable { private File taskModelFile = null; private boolean outputVCD = false; - private boolean outputHTML = false; + private boolean outputHTML = true; private boolean outputTXT = false; private boolean outputXML = false; diff --git a/src/tmltranslator/HwBridge.java b/src/tmltranslator/HwBridge.java index 3a288d4031b402aa0413b1f5792b80493ef0ceb4..93560e8f4d655df7d6ba040464c6aa0e3227ac6b 100755 --- a/src/tmltranslator/HwBridge.java +++ b/src/tmltranslator/HwBridge.java @@ -50,11 +50,10 @@ import java.util.*; public class HwBridge extends HwCommunicationNode { - public static final int DEFAULT_BUFFER_BYTE_DATA_SIZE = 4; - - public int bufferByteSize = DEFAULT_BUFFER_BYTE_DATA_SIZE; // In bytes. Should more than 0 + public static final int DEFAULT_BUFFER_BYTE_DATA_SIZE = 4; public boolean isFirewall; - public ArrayList<String> firewallRules = new ArrayList<String>(); + public ArrayList<String> firewallRules = new ArrayList<String>(); + public int bufferByteSize = DEFAULT_BUFFER_BYTE_DATA_SIZE; // In bytes. Should more than 0 public HwBridge(String _name) { super(_name); } diff --git a/src/tmltranslator/HwCPU.java b/src/tmltranslator/HwCPU.java index 42b266d8551308ce48e375b5f2718bdcdfec30fe..35e63f80b39c2e26c26e369b6b52eee4948eb3c9 100755 --- a/src/tmltranslator/HwCPU.java +++ b/src/tmltranslator/HwCPU.java @@ -79,7 +79,6 @@ public class HwCPU extends HwExecutionNode { public int sliceTime = DEFAULT_SLICE_TIME; public ArchUnitMEC MEC = DEFAULT_MODEL_EXTENSION_CONSTRUCT; - public HwCPU(String _name) { super(_name); maximumNbOfTasks = 100; diff --git a/src/tmltranslator/TMLArchitecture.java b/src/tmltranslator/TMLArchitecture.java index 26d721f60268b0c03cb4b35530b53ff7e8841de8..2e7169674f21c57ac5b029a8cf61a73ec7db4953 100755 --- a/src/tmltranslator/TMLArchitecture.java +++ b/src/tmltranslator/TMLArchitecture.java @@ -286,7 +286,18 @@ public class TMLArchitecture { } return null; } - + public List<HwBridge> getFirewalls(){ + List<HwBridge> firewalls= new ArrayList<HwBridge>(); + for (HwNode node:hwnodes){ + if (node instanceof HwBridge){ + HwBridge bridge= (HwBridge)node; + if (bridge.isFirewall){ + firewalls.add(bridge); + } + } + } + return firewalls; + } public HwCPU getHwCPUByName(String _name) { for(HwNode node: hwnodes) { if (node.getName().equals(_name)) { @@ -384,5 +395,13 @@ public class TMLArchitecture { return complexity; } - + public void replaceFirewall(HwBridge firewall, HwCPU newCPU){ + hwnodes.remove(firewall); + addHwNode(newCPU); + for (HwLink link:hwlinks){ + if (link.hwnode==firewall){ + link.hwnode=newCPU; + } + } + } } diff --git a/src/ui/GTMLModeling.java b/src/ui/GTMLModeling.java index 7c759a58ef59fbbaf49f883409c50010249a3cb2..03f6eb0c0a7aa348734dd9e56b63febf9ded753e 100755 --- a/src/ui/GTMLModeling.java +++ b/src/ui/GTMLModeling.java @@ -3365,8 +3365,15 @@ if (tgc instanceof TMLArchiCrossbarNode) { } } - if (map.firewall){ - TMLTask firewall = new TMLTask("Firewall", null,null); + + for (HwBridge firewallNode:map.getTMLArchitecture().getFirewalls()){ + + TMLCPrimitiveComponent firewallComp = new TMLCPrimitiveComponent(0, 0, tmlcdp.tmlctdp.getMinX(), tmlcdp.tmlctdp.getMaxX(), tmlcdp.tmlctdp.getMinY(), tmlcdp.tmlctdp.getMaxY(), false, null, tmlcdp.tmlctdp); + firewallComp.setValueWithChange(firewallNode.getName()); + tmlcdp.tmlctdp.addComponent(firewallComp,0,0,false,true); + TMLActivityDiagramPanel firewallADP = tmlcdp.getTMLActivityDiagramPanel(firewallNode.getName()); + + TMLTask firewall = new TMLTask("task"+firewallNode.getName(), firewallComp,firewallADP); HashMap<TMLChannel, TMLChannel> inChans = new HashMap<TMLChannel, TMLChannel>(); HashMap<TMLChannel, TMLChannel> outChans = new HashMap<TMLChannel, TMLChannel>(); ArrayList<TMLChannel> channelsCopy = tmlm.getChannels(); @@ -3388,20 +3395,95 @@ if (tgc instanceof TMLArchiCrossbarNode) { for (TMLChannel c:toAdd){ tmlm.addChannel(c); } + + tmlm.addTask(firewall); + TMLActivity act = firewall.getActivityDiagram(); - TMLStartState start = new TMLStartState("start", null); + TMLADStartState adStart = (TMLADStartState) firewallADP.getComponentList().get(0); + TMLStartState start = new TMLStartState("start", firewallADP.getComponentList().get(0)); act.setFirst(start); - tmlm.addTask(firewall); - TMLForLoop loop = new TMLForLoop("infiniteloop",null); + /* + TMLForLoop loop = new TMLForLoop("infiniteloop",firewallADP.getComponentList().get(0)); + loop.setInit(""); + loop.setCondition(""); + loop.setIncrement(""); loop.setInfinite(true); start.addNext(loop); act.addElement(loop); - TMLChoice choice = new TMLChoice("chooseChannel", null); + TMLChoice choice = new TMLChoice("chooseChannel", firewallADP.getComponentList().get(0)); act.addElement(choice); loop.addNext(choice); + */ + TMLADChoice adChoice = new TMLADChoice(200,100, firewallADP.getMinX(), firewallADP.getMaxX(), firewallADP.getMinY(), firewallADP.getMaxY(), false,null, firewallADP); + firewallADP.addComponent(adChoice, 100,100,false,true); + + TGConnector tmp =new TGConnectorTMLAD(adChoice.getX(), adChoice.getY(), firewallADP.getMinX(), firewallADP.getMaxX(), firewallADP.getMinY(), firewallADP.getMaxY(), false, null,firewallADP,adStart.getTGConnectingPointAtIndex(0), adChoice.getTGConnectingPointAtIndex(0), new Vector()); + firewallADP.addComponent(tmp, adChoice.getX(),adChoice.getY(),false,true); + + + TMLChoice choice = new TMLChoice("chooseChannel", adChoice); + act.addElement(choice); + start.addNext(choice); + + TMLComponentTaskDiagramPanel tcdp =tmlcdp.tmlctdp; + + for (TMLChannel chan: inChans.keySet()){ + TMLChannel newChan = inChans.get(chan); + TMLCChannelOutPort originPort = new TMLCChannelOutPort(0, 0, tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxX(), true, null, tcdp); + TMLCChannelOutPort destPort = new TMLCChannelOutPort(0, 0, tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxX(), true, null, tcdp); + for (TGComponent tg: tcdp.getComponentList()){ + if (tg instanceof TMLCPrimitiveComponent){ + if (tg.getValue().equals(newChan.getOriginTask().getName().split("__")[1])){ + originPort = new TMLCChannelOutPort(tg.getX(), tg.getY(), tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxX(), true, tg, tcdp); + originPort.commName=newChan.getName(); + tcdp.addComponent(originPort,tg.getX(), tg.getY(),true,true); + } + else if (tg.getValue().equals(firewallNode.getName())){ + destPort = new TMLCChannelOutPort(tg.getX(), tg.getY(), tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxX(), true, tg, tcdp); + destPort.isOrigin=false; + destPort.commName=newChan.getName(); + tcdp.addComponent(destPort,tg.getX(), tg.getY(),true,true); + } + } + } + TMLCPortConnector conn = new TMLCPortConnector(0, 0, tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxX(), true, null, tcdp, originPort.getTGConnectingPointAtIndex(0), destPort.getTGConnectingPointAtIndex(0), new Vector()); + tcdp.addComponent(conn, 0,0,false,true); + + TMLChannel wrChan = outChans.get(chan); + /*for (TGComponent tg: tcdp.getComponentList()){ + if (tg instanceof TMLCPrimitiveComponent){ + if (tg.getValue().equals(firewallNode.getName())){ + originPort = new TMLCChannelOutPort(tg.getX(), tg.getY(), tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxX(), true, tg, tcdp); + originPort.commName=wrChan.getName(); + tcdp.addComponent(originPort,tg.getX(), tg.getY(),true,true); + } + else if (tg.getValue().equals(wrChan.getDestinationTask().getName().split("__")[1])){ + destPort = new TMLCChannelOutPort(tg.getX(), tg.getY(), tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxX(), true, tg, tcdp); + destPort.isOrigin=false; + destPort.commName=wrChan.getName(); + tcdp.addComponent(destPort,tg.getX(), tg.getY(),true,true); + } + } + } + conn = new TMLCPortConnector(0, 0, tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxX(), true, null, tcdp, originPort.getTGConnectingPointAtIndex(0), destPort.getTGConnectingPointAtIndex(0), new Vector()); + tcdp.addComponent(conn, 0,0,false,true); + */ + } + + int xpos=200; + int i=1; for (TMLChannel chan: inChans.keySet()){ + //Add Ports to Component Diagram TMLChannel newChan = inChans.get(chan); - TMLReadChannel rd = new TMLReadChannel(newChan.getName(), chan.getReferenceObject()); + TMLADReadChannel adRC = new TMLADReadChannel(xpos,150, firewallADP.getMinX(), firewallADP.getMaxX(), firewallADP.getMinY(), firewallADP.getMaxY(), false,null, firewallADP); + adRC.setChannelName(newChan.getName()); + adRC.setSamples("1"); + + tmp =new TGConnectorTMLAD(adChoice.getX(), adChoice.getY(), firewallADP.getMinX(), firewallADP.getMaxX(), firewallADP.getMinY(), firewallADP.getMaxY(), false, null,firewallADP,adChoice.getTGConnectingPointAtIndex(i), adRC.getTGConnectingPointAtIndex(0), new Vector()); + firewallADP.addComponent(tmp, adChoice.getX(),adChoice.getY(),false,true); + + firewallADP.addComponent(adRC,xpos,150,false,true); + TMLReadChannel rd = new TMLReadChannel(newChan.getName(), adRC); rd.setNbOfSamples("1"); rd.addChannel(newChan); choice.addNext(rd); @@ -3409,7 +3491,16 @@ if (tgc instanceof TMLArchiCrossbarNode) { act.addElement(rd); if (channelAllowed(chan)){ TMLChannel wrChan = outChans.get(chan); - TMLWriteChannel wr = new TMLWriteChannel(wrChan.getName(), chan.getReferenceObject()); + + TMLADWriteChannel adWC = new TMLADWriteChannel(xpos,200, firewallADP.getMinX(), firewallADP.getMaxX(), firewallADP.getMinY(), firewallADP.getMaxY(), false,null, firewallADP); + adWC.setChannelName(wrChan.getName()); + adWC.setSamples("1"); + firewallADP.addComponent(adWC, xpos,200, false,true); + + tmp =new TGConnectorTMLAD(adChoice.getX(), adChoice.getY(), firewallADP.getMinX(), firewallADP.getMaxX(), firewallADP.getMinY(), firewallADP.getMaxY(), false, null,firewallADP,adRC.getTGConnectingPointAtIndex(1), adWC.getTGConnectingPointAtIndex(0), new Vector()); + firewallADP.addComponent(tmp, adChoice.getX(),adChoice.getY(),false,true); + + TMLWriteChannel wr = new TMLWriteChannel(wrChan.getName(), adWC); wr.setNbOfSamples("1"); wr.addChannel(wrChan); rd.addNext(wr); @@ -3420,8 +3511,14 @@ if (tgc instanceof TMLArchiCrossbarNode) { actd.replaceWriteChannelWith(chan,newChan); actd.replaceReadChannelWith(chan, outChans.get(chan)); } + xpos+=100; + i++; } + HwCPU cpu = new HwCPU(firewallNode.getName()); + map.getTMLArchitecture().replaceFirewall(firewallNode,cpu); + map.addTaskToHwExecutionNode(firewall,cpu); } + /* for (TMLActivityElement el:act.getElements()){ System.out.println(el); }*/ diff --git a/src/ui/GTURTLEModeling.java b/src/ui/GTURTLEModeling.java index 89e28f10fdb1a34d09b1060168956e6886f7ebfb..49ff442d01b75913ecafce06d0058a25d9cd372c 100755 --- a/src/ui/GTURTLEModeling.java +++ b/src/ui/GTURTLEModeling.java @@ -978,7 +978,6 @@ public class GTURTLEModeling { //System.out.println("channel " + chan); if (chan!=null){ if (chan.checkConf){ - System.out.println("F#$%^&*( "); if (!securePath(map, chan.getOriginTask(), chan.getDestinationTask())){ insecureOutChannels.get(chan.getOriginTask()).add(writeChannel.getChannelName()); insecureInChannels.get(chan.getDestinationTask()).add(writeChannel.getChannelName()); @@ -991,7 +990,6 @@ public class GTURTLEModeling { } } } - System.out.println("tosecure " + toSecure); int num=0; int nonceNum=0; //Create reverse channels to send nonces if they don't already exist @@ -7842,6 +7840,9 @@ public class GTURTLEModeling { addStates(start, smx, smy, smp, bl, SMDMap, locMap, tranDestMap, tranSourceMap); //Add transitions for (AvatarTransition t: tranSourceMap.keySet()){ + if (tranSourceMap.get(t)==null || tranDestMap.get(t)==null){ + continue; + } int x=tranSourceMap.get(t).getX()+tranSourceMap.get(t).getWidth()/2; int y=tranSourceMap.get(t).getY()+tranSourceMap.get(t).getHeight(); diff --git a/src/ui/TGComponent.java b/src/ui/TGComponent.java index dca685bb1ffe0d797bbdca480b1335a3e0a325e5..b9d53e00b312cc42e8be0d93406e78f9e621150e 100755 --- a/src/ui/TGComponent.java +++ b/src/ui/TGComponent.java @@ -1080,6 +1080,7 @@ public abstract class TGComponent implements CDElement, GenericTree { } } } + synchronized(this) { Map<String, String> statMap = tdp.getMGUI().getStatus(getDIPLOID()); for (String name:statMap.keySet()){ String stat =statMap.get(name); @@ -1097,6 +1098,7 @@ public abstract class TGComponent implements CDElement, GenericTree { } } + } /*if (this instanceof TMLArchiCPUNode) { } diff --git a/src/ui/tmlad/TMLADReadChannel.java b/src/ui/tmlad/TMLADReadChannel.java index 8f72bc3dc0dfa2362aba6d631e242e9af3fc66b9..7842c7b94fb61988d7dddeaa38b0030c61fdb642 100755 --- a/src/ui/tmlad/TMLADReadChannel.java +++ b/src/ui/tmlad/TMLADReadChannel.java @@ -262,7 +262,10 @@ public class TMLADReadChannel extends TGCWithoutInternalComponent implements Che return false; } - + public void setSamples(String sp){ + nbOfSamples=sp; + makeValue(); + } protected String translateExtraParam() { StringBuffer sb = new StringBuffer("<extraparam>\n"); sb.append("<Data channelName=\""); @@ -327,6 +330,7 @@ public class TMLADReadChannel extends TGCWithoutInternalComponent implements Che } public void setChannelName(String s){ channelName=s; + makeValue(); } } diff --git a/src/ui/tmlad/TMLADWriteChannel.java b/src/ui/tmlad/TMLADWriteChannel.java index 1f15811b8b44b7cc1277d5498c19a13fe98442bb..943274d9d1e1e3f9084462692ad2049c6ab6cc83 100755 --- a/src/ui/tmlad/TMLADWriteChannel.java +++ b/src/ui/tmlad/TMLADWriteChannel.java @@ -319,8 +319,12 @@ public class TMLADWriteChannel extends TGCWithoutInternalComponent implements Ch } public void setChannelName(String s){ channelName=s; + makeValue(); + } + public void setSamples(String sp){ + nbOfSamples=sp; + makeValue(); } - public void setStateAction(int _stateAction) { stateOfError = _stateAction; } diff --git a/src/ui/tmldd/TMLArchiFirewallNode.java b/src/ui/tmldd/TMLArchiFirewallNode.java index caa741a3cd573512f95f063d431446402bd38db1..7c06694f86ce77810f6702917bb2500f6554df0b 100644 --- a/src/ui/tmldd/TMLArchiFirewallNode.java +++ b/src/ui/tmldd/TMLArchiFirewallNode.java @@ -280,7 +280,6 @@ public class TMLArchiFirewallNode extends TMLArchiCommunicationNode implements S return latency; } public ArrayList<String> getRules(){ - System.out.println("FIREWALL rules " + rules); return rules; } public String getAttributes() { diff --git a/src/ui/window/JDialogDSE.java b/src/ui/window/JDialogDSE.java index 02a66667388be83475631ad4f7a36876bc43a533..ea9fdafa4a8227438ae8f13d0116e847cf41aa61 100644 --- a/src/ui/window/JDialogDSE.java +++ b/src/ui/window/JDialogDSE.java @@ -739,7 +739,7 @@ public class JDialogDSE extends javax.swing.JDialog implements ActionListener, R } config.setOutputTXT("true"); - // config.setOutputHTML("true"); + config.setOutputHTML("true"); // config.setOutputVCD("true"); // config.setOutputXML("true"); config.setRecordResults("true");