diff --git a/src/main/java/ui/HSMGeneration.java b/src/main/java/ui/HSMGeneration.java index e081057a123823befab08f2202a9f9675734a276..70cf3fa8a6516db97c796f8097e125b24db07c8a 100644 --- a/src/main/java/ui/HSMGeneration.java +++ b/src/main/java/ui/HSMGeneration.java @@ -131,6 +131,8 @@ public class HSMGeneration implements Runnable { } public void run(){ + Map<String, Integer> channelIndexMap = new HashMap<String, Integer>(); + int channelIndex=0; TraceManager.addDev("Adding HSM"); String encComp = "100"; @@ -171,8 +173,8 @@ public class HSMGeneration implements Runnable { for (String cpuName : selectedCpuTasks.keySet()) { Map<String, HSMChannel> hsmChannels = new HashMap<String, HSMChannel>(); TMLCPrimitiveComponent hsm = new TMLCPrimitiveComponent(0, 500, tcdp.getMinX(), tcdp.getMaxX(), tcdp.getMinY(), tcdp.getMaxY(), false, null, tcdp); - //TAttribute isEnc = new TAttribute(2, "isEnc", "true", 4); - //hsm.getAttributeList().add(isEnc); + TAttribute index = new TAttribute(2, "channelIndex", "0", 0); + hsm.getAttributeList().add(index); tcdp.addComponent(hsm, 0, 500, false, true); hsm.setValueWithChange("HSM_" + cpuName); //Find all associated components @@ -240,6 +242,10 @@ public class HSMGeneration implements Runnable { if (type != -1) { compChannels.put(writeChannel.getChannelName(), ch); channelInstances.add(tg); + if (!channelIndexMap.containsKey(writeChannel.getChannelName())){ + channelIndexMap.put(writeChannel.getChannelName(),channelIndex); + channelIndex++; + } } } } else { @@ -261,6 +267,10 @@ public class HSMGeneration implements Runnable { HSMChannel ch = new HSMChannel(writeChannel.getChannelName(), compName, type); ch.securityContext = writeChannel.getSecurityContext(); compChannels.put(writeChannel.getChannelName(), ch); + if (!channelIndexMap.containsKey(writeChannel.getChannelName())){ + channelIndexMap.put(writeChannel.getChannelName(),channelIndex); + channelIndex++; + } //chanNames.add(writeChannel.getChannelName()+compName); } } @@ -275,6 +285,10 @@ public class HSMGeneration implements Runnable { HSMChannel ch = new HSMChannel(readChannel.getChannelName(), compName, HSMChannel.DEC); ch.securityContext = "hsmSec_" + readChannel.getChannelName(); compChannels.put(readChannel.getChannelName(), ch); + if (!channelIndexMap.containsKey(readChannel.getChannelName())){ + channelIndexMap.put(readChannel.getChannelName(),channelIndex); + channelIndex++; + } if (nonSecChans.contains(compName + "__" + readChannel.getChannelName() + "_chData") && nonAuthChans.contains(compName + "__" + readChannel.getChannelName())) { ch.nonceName = "nonce_" + readChannel.getChannelName(); } @@ -287,6 +301,10 @@ public class HSMGeneration implements Runnable { HSMChannel ch = new HSMChannel(readChannel.getChannelName(), compName, HSMChannel.DEC); ch.securityContext = readChannel.getSecurityContext(); compChannels.put(readChannel.getChannelName(), ch); + if (!channelIndexMap.containsKey(readChannel.getChannelName())){ + channelIndexMap.put(readChannel.getChannelName(),channelIndex); + channelIndex++; + } } } } @@ -301,6 +319,8 @@ public class HSMGeneration implements Runnable { //} } } + + System.out.println("channelIndex " + channelIndexMap); //System.out.println("compchannels " +compChannels); List<ChannelData> hsmChans = new ArrayList<ChannelData>(); ChannelData chd = new ChannelData("startHSM_" + cpuName, false, false); @@ -322,7 +342,7 @@ public class HSMGeneration implements Runnable { if (!hsmChan.isChan) { originPort.typep = 2; destPort.typep = 2; - // originPort.setParam(0, new TType(2)); + originPort.setParam(0, new TType(1)); } destPort.isOrigin = !hsmChan.isOrigin; @@ -367,7 +387,11 @@ public class HSMGeneration implements Runnable { TMLADSendRequest req = new TMLADSendRequest(xpos, ypos + yShift, tad.getMinX(), tad.getMaxX(), tad.getMinY(), tad.getMaxY(), false, null, tad); req.setRequestName("startHSM_" + cpuName); - // req.setParam(0, "isEnc"); + + + + req.setParam(0, Integer.toString(channelIndexMap.get(chanName))); + req.makeValue(); tad.addComponent(req, xpos, ypos + yShift, false, true); fromStart.setP2(req.getTGConnectingPointAtIndex(0)); @@ -458,7 +482,9 @@ public class HSMGeneration implements Runnable { yShift += 50; TMLADSendRequest req = new TMLADSendRequest(xpos, ypos + yShift, tad.getMinX(), tad.getMaxX(), tad.getMinY(), tad.getMaxY(), false, null, tad); req.setRequestName("startHSM_" + cpuName); - // req.setParam(0, "isEnc"); + + req.setParam(0, Integer.toString(channelIndexMap.get(chanName))); + req.makeValue(); tad.addComponent(req, xpos, ypos + yShift, false, true); @@ -534,9 +560,9 @@ public class HSMGeneration implements Runnable { fromStart = new TGConnectorTMLAD(xpos, ypos, tad.getMinX(), tad.getMaxX(), tad.getMinY(), tad.getMaxY(), false, null, tad, null, null, new Vector<Point>()); -/* TMLADReadRequestArg req = new TMLADReadRequestArg(300, 100, tad.getMinX(), tad.getMaxX(), tad.getMinY(), tad.getMaxY(), false, null, tad); + TMLADReadRequestArg req = new TMLADReadRequestArg(300, 100, tad.getMinX(), tad.getMaxX(), tad.getMinY(), tad.getMaxY(), false, null, tad); tad.addComponent(req, 300, 100, false, true); - req.setParam(0, "isEnc"); + req.setParam(0, "channelIndex"); req.makeValue(); //Connect start and readrequest @@ -544,14 +570,14 @@ public class HSMGeneration implements Runnable { fromStart.setP2(req.getTGConnectingPointAtIndex(0)); tad.addComponent(fromStart, 300, 200, false, true); -*/ + TMLADChoice choice = new TMLADChoice(300, 200, tad.getMinX(), tad.getMaxX(), tad.getMinY(), tad.getMaxY(), false, null, tad); tad.addComponent(choice, 300, 200, false, true); //Connect readrequest and choice fromStart = new TGConnectorTMLAD(xpos, ypos, tad.getMinX(), tad.getMaxX(), tad.getMinY(), tad.getMaxY(), false, null, tad, null, null, new Vector<Point>()); - fromStart.setP1(start.getTGConnectingPointAtIndex(0)); + fromStart.setP1(req.getTGConnectingPointAtIndex(1)); fromStart.setP2(choice.getTGConnectingPointAtIndex(0)); tad.addComponent(fromStart, 300, 200, false, true); @@ -661,6 +687,10 @@ public class HSMGeneration implements Runnable { int i = 1; for (String chan : hsmChannels.keySet()) { + + //Add guard as channelindex + choice.setGuard("[channelIndex=="+channelIndexMap.get(chan)+"]",i-1); + HSMChannel ch = hsmChannels.get(chan); TMLADReadChannel rd = new TMLADReadChannel(xc, 300, tad.getMinX(), tad.getMaxX(), tad.getMinY(), tad.getMaxY(), false, null, tad); rd.setChannelName("data_" + chan + "_" + hsmChannels.get(chan).task);