diff --git a/src/main/java/avatartranslator/AvatarPragmaLatency.java b/src/main/java/avatartranslator/AvatarPragmaLatency.java index 78c579b6b39cca61c0f24af17c4d271612394849..79613f55c68b1706a1e382435e784387a2b7ddc9 100644 --- a/src/main/java/avatartranslator/AvatarPragmaLatency.java +++ b/src/main/java/avatartranslator/AvatarPragmaLatency.java @@ -47,6 +47,8 @@ package avatartranslator; * @version 1.0 22/09/2017 * @author Letitia LI */ +import java.util.List; + public class AvatarPragmaLatency extends AvatarPragma { private AvatarActionOnSignal state1; private AvatarBlock block1; @@ -56,8 +58,11 @@ public class AvatarPragmaLatency extends AvatarPragma { public static final int lessThan =1; public static final int greaterThan=2; private int time; + private List<String> id1; + private List<String> id2; + - public AvatarPragmaLatency(String _name, Object _referenceObject, AvatarBlock block1, AvatarActionOnSignal state1, AvatarBlock block2, AvatarActionOnSignal state2, int symbolType, int time) + public AvatarPragmaLatency(String _name, Object _referenceObject, AvatarBlock block1, AvatarActionOnSignal state1, AvatarBlock block2, AvatarActionOnSignal state2, int symbolType, int time, List<String> id1, List<String> id2) { super(_name, _referenceObject); this.block1 = block1; @@ -66,6 +71,8 @@ public class AvatarPragmaLatency extends AvatarPragma { this.state2 = state2; this.symbolType = symbolType; this.time = time; + this.id1=id1; + this.id2=id2; } public AvatarActionOnSignal getState1() @@ -88,6 +95,14 @@ public class AvatarPragmaLatency extends AvatarPragma { return this.block2; } + public List<String> getId1(){ + return this.id1; + } + + public List<String> getId2(){ + return this.id2; + } + public int getSymbolType(){ return this.symbolType; } diff --git a/src/main/java/avatartranslator/AvatarSpecification.java b/src/main/java/avatartranslator/AvatarSpecification.java index 3176973716137d6192901033c6130d564e6bf82d..0c792f13fe732be166909be5c7d5fe652c982b05 100644 --- a/src/main/java/avatartranslator/AvatarSpecification.java +++ b/src/main/java/avatartranslator/AvatarSpecification.java @@ -74,7 +74,7 @@ public class AvatarSpecification extends AvatarElement { private LinkedList<AvatarPragma> pragmas; private LinkedList<String> safety_pragmas; - private LinkedList<AvatarPragma> latency_pragmas; + private LinkedList<AvatarPragmaLatency> latency_pragmas; private LinkedList<AvatarConstant> constants; public List<String> checkedIDs; private boolean robustnessMade = false; @@ -90,7 +90,7 @@ public class AvatarSpecification extends AvatarElement { pragmas = new LinkedList<AvatarPragma>(); constants = new LinkedList<AvatarConstant>(); safety_pragmas = new LinkedList<String>(); - latency_pragmas = new LinkedList<AvatarPragma>(); + latency_pragmas = new LinkedList<AvatarPragmaLatency>(); this.constants.add (AvatarConstant.FALSE); this.constants.add (AvatarConstant.TRUE); checkedIDs= new ArrayList<String>(); @@ -156,7 +156,7 @@ public class AvatarSpecification extends AvatarElement { return safety_pragmas; } - public List<AvatarPragma> getLatencyPragmas() { + public List<AvatarPragmaLatency> getLatencyPragmas() { return latency_pragmas; } @@ -221,7 +221,7 @@ public class AvatarSpecification extends AvatarElement { safety_pragmas.add(_pragma); } - public void addLatencyPragma(AvatarPragma _pragma) { + public void addLatencyPragma(AvatarPragmaLatency _pragma) { System.out.println(_pragma); latency_pragmas.add(_pragma); } @@ -651,7 +651,7 @@ public class AvatarSpecification extends AvatarElement { spec.addSafetyPragma(safetyPragma); } - for(AvatarPragma latencyPragma: latency_pragmas) { + for(AvatarPragmaLatency latencyPragma: latency_pragmas) { spec.addLatencyPragma(latencyPragma); } diff --git a/src/main/java/ui/AvatarDesignPanelTranslator.java b/src/main/java/ui/AvatarDesignPanelTranslator.java index 40c75847f5a49a95cafa8c6b23c0e41443469c2a..206740536a97222e99105a06bc7cb46071006d25 100644 --- a/src/main/java/ui/AvatarDesignPanelTranslator.java +++ b/src/main/java/ui/AvatarDesignPanelTranslator.java @@ -211,7 +211,7 @@ public class AvatarDesignPanelTranslator { values = tgsp.getValues(); for (String s: values){ if (s.startsWith("Latency")){ - AvatarPragma pragma = checkLatencyPragma(s, _blocks, _as, tgc); + AvatarPragmaLatency pragma = checkLatencyPragma(s, _blocks, _as, tgc); if (pragma!=null){ _as.addLatencyPragma(pragma); } @@ -226,7 +226,7 @@ public class AvatarDesignPanelTranslator { } } - public AvatarPragma checkLatencyPragma(String _pragma, List<AvatarBDBlock> _blocks, AvatarSpecification as, TGComponent tgc){ + public AvatarPragmaLatency checkLatencyPragma(String _pragma, List<AvatarBDBlock> _blocks, AvatarSpecification as, TGComponent tgc){ if (_pragma.contains("=") || (!_pragma.contains(">") && !_pragma.contains("<"))){ TraceManager.addDev("No latency expression found"); return null; @@ -240,7 +240,7 @@ public class AvatarDesignPanelTranslator { String state1 = p1.split("\\.")[1]; AvatarBlock bl1; AvatarActionOnSignal st1; - + List<String> id1= new ArrayList<String>(); bl1 = as.getBlockWithName(block1); AvatarStateMachine asm = bl1.getStateMachine(); st1 = asm.getAOSWithName(state1); @@ -252,6 +252,8 @@ public class AvatarDesignPanelTranslator { TraceManager.addDev("State " + block1+ "." + state1 + " is not checkable"); return null; } + id1.add((st1.getSignal().isIn() ? "Receive signal" : "Send signal") +"-"+ st1.getSignal().getName()+":"+st1.getID()); + //Find second block.state @@ -265,6 +267,7 @@ public class AvatarDesignPanelTranslator { bl2 = as.getBlockWithName(block2); asm = bl2.getStateMachine(); st2 = asm.getAOSWithName(state2); + List<String> id2= new ArrayList<String>(); if (bl2 ==null || st2 ==null){ TraceManager.addDev("State " + block2+ "." + state2 + " in pragma does not exist"); return null; @@ -274,6 +277,9 @@ public class AvatarDesignPanelTranslator { return null; } + id2.add((st2.getSignal().isIn() ? "Receive signal" : "Send signal")+"-"+ st2.getSignal().getName()+":"+st2.getID()); + + String equation = _pragma.split("\\)")[1]; equation = equation.replaceAll(" ",""); int symbolType=0; @@ -290,7 +296,7 @@ public class AvatarDesignPanelTranslator { TraceManager.addDev("No latency expression found"); return null; } - return new AvatarPragmaLatency(_pragma, tgc, bl1, st1, bl2, st2, symbolType, time); + return new AvatarPragmaLatency(_pragma, tgc, bl1, st1, bl2, st2, symbolType, time, id1, id2); } diff --git a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java index 787909a88ab39bce244c2b1e674f5d9416c40493..d69b4437a7e4c617bf1419238dd535e8a76320b6 100755 --- a/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java +++ b/src/main/java/ui/avatarinteractivesimulation/JFrameAvatarInteractiveSimulation.java @@ -265,6 +265,10 @@ public class JFrameAvatarInteractiveSimulation extends JFrame implements Avatar checkedTransactions.add(id); transTimes.put(id, new ArrayList<String>()); } + for (AvatarPragmaLatency latencyPragma: _avspec.getLatencyPragmas()){ + toCheck.add(latencyPragma.getId1().get(0) + "--"+latencyPragma.getId2().get(0)); + updateTransactionsTable(); + } makeComponents(); setComponents(); }