Skip to content
Snippets Groups Projects
Commit bcf8bc8a authored by Sophie Coudert's avatar Sophie Coudert
Browse files

transition handler : receive transition in progress...

parent 45cfae33
No related branches found
No related tags found
4 merge requests!504merge first stable version of Avatar-SysML V2,!503merge the first stable version of the Avatar-SysML parser/generator,!501Avatar sys ml 04 2024,!498Avatar sys ml 04 2024 (first merge request, only for verification)
......@@ -306,24 +306,37 @@ public class AvatarFromSysML {
}
}
}
if (transition.getType() == AvatarFromSysMLSyntax.STXTRIVIALTRANSITION) {
// search next state
AvatarStateMachineElement tgtState = getState(transition.getTarget(), theBlock);
theTransition.addNext(tgtState);
}
else if (transition.getType() == AvatarFromSysMLSyntax.STXSENDTRANSITION) {
if(transition.getTarget().getType() == AvatarFromSysMLSyntax.STXPRESENDSTATE){
AvatarStateMachineElement tgtState = getState(transition.getTarget(), theBlock);
if (tgtState instanceof AvatarActionOnSignal) { // ELSE ERROR
theTransition.addNext(getState(transition.getTarget().getTransition(0).getTarget(), theBlock));
if(transition.getTarget().getType() == AvatarFromSysMLSyntax.STXPRESENDSTATE ||
transition.getTarget().getType() == AvatarFromSysMLSyntax.STXPRERECEIVESTATE)
transition = transition.getTarget().getTransition(0);
AvatarStateMachineElement tgtState = getState(transition.getTarget(), theBlock);
theTransition.addNext(tgtState);
if (transition.getType() == AvatarFromSysMLSyntax.STXSENDTRANSITION) {
if(tgtState instanceof AvatarActionOnSignal) {
AvatarActionOnSignal state = (AvatarActionOnSignal)tgtState;
state.setSignal( getSignal(transition.getSignal()));
ArrayList<StxTerm> sendPayload = transition.getSendPayload();
for(StxTerm p: sendPayload) {
if (p instanceof StxId){
String[] ids = extendPath(((StxId)p).getString(),blk).split(",");
for (String id : ids) { state.addValue(id.trim()); }
}
else if (p instanceof StxExpr){ state.addValue( ((StxExpr)p).getString() ); }
else { state.addValue( extendCall((StxCall)p,blk) ); }
}
else {}
}
else if (transition.getTarget().getType() == AvatarFromSysMLSyntax.STXPRERECEIVESTATE){}
else {}
}
else if (transition.getType() == AvatarFromSysMLSyntax.STXRECEIVETRANSITION) {
if(tgtState instanceof AvatarActionOnSignal) {
AvatarActionOnSignal state = (AvatarActionOnSignal)tgtState;
state.setSignal(getSignal(transition.getSignal()));
StxOutMessage profile = transition.getSignal().getChannel().getOutProfile();
HashMap<String, String> receivePayload = transition.getReceivePayload();
}
}
else if (transition.getType() == AvatarFromSysMLSyntax.STXRECEIVETRANSITION) {}
else if (transition.getType() == AvatarFromSysMLSyntax.STXSETTIMERTRANSITION) {}
else if (transition.getType() == AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION) {}
else if (transition.getType() == AvatarFromSysMLSyntax.STXEXPIRETIMERTRANSITION) {}
......
......@@ -412,6 +412,7 @@ public class AvatarFromSysMLSyntax {
public static class StxSignal extends StxElement {
private String name;
private boolean input;
private StxChannel channel;
public StxSignal(Location _left, Location _right, String _name){
super(_left, _right);
name = _name;
......@@ -421,7 +422,9 @@ public class AvatarFromSysMLSyntax {
name = _name;
}
public void setInput(boolean _b) { input = _b; }
public boolean isInput() { return input; }
public void setChannel(StxChannel _c) { channel = _c; }
public StxChannel getChannel() { return channel; }
public boolean isInput() { return input; }
public String getName() { return name; }
}
public static class StxInMessage extends StxStructure {
......@@ -462,7 +465,10 @@ public class AvatarFromSysMLSyntax {
}
public void complete() {
fieldMap.forEach(new Complete());
inMessage.channel.setOutProfile(this);
channel = inMessage.channel;
channel.setOutProfile(this);
channel.getSignalA().setChannel(channel);
channel.getSignalB().setChannel(channel);
}
}
public static class StxState extends StxElement {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment