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

transition handled. Remaining: startState, relations and channels

parent 28829030
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)
...@@ -80,6 +80,11 @@ public class AvatarFromSysML { ...@@ -80,6 +80,11 @@ public class AvatarFromSysML {
if(l.get(i).getName().equals(_name)) return l.get(i); if(l.get(i).getName().equals(_name)) return l.get(i);
return null; return null;
} }
private AvatarAttribute getTimerByName(String _name, AvatarBlock _block) {
AvatarAttribute res = getAttributeByName(_name, _block);
if (res != null && res.getType() == AvatarType.TIMER) return res;
return null;
}
private AvatarStateMachineElement getState(StxState _s, AvatarBlock _b) { private AvatarStateMachineElement getState(StxState _s, AvatarBlock _b) {
AvatarStateMachineElement s = stateMap.get(_s); AvatarStateMachineElement s = stateMap.get(_s);
if (s == null) { if (s == null) {
...@@ -334,12 +339,32 @@ public class AvatarFromSysML { ...@@ -334,12 +339,32 @@ public class AvatarFromSysML {
state.setSignal(getSignal(transition.getSignal())); state.setSignal(getSignal(transition.getSignal()));
StxOutMessage profile = transition.getSignal().getChannel().getOutProfile(); StxOutMessage profile = transition.getSignal().getChannel().getOutProfile();
HashMap<String, String> receivePayload = transition.getReceivePayload(); HashMap<String, String> receivePayload = transition.getReceivePayload();
int nbParams = profile.getSize();
for (int k = 0; k < nbParams; k++) {
String[] ids = extendPath( receivePayload.get(profile.getFieldName(k)), blk).split(",");
for (String id : ids) state.addValue(id);
}
}
}
else if (transition.getType() == AvatarFromSysMLSyntax.STXSETTIMERTRANSITION) {
if(tgtState instanceof AvatarSetTimer) {
AvatarSetTimer state = (AvatarSetTimer) tgtState;
state.setTimer(getTimerByName(transition.getTimer(), theBlock));
state.setTimerValue(((StxExpr)transition.getSendPayload().get(0)).getString());
}
}
else if (transition.getType() == AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION) {
if(tgtState instanceof AvatarResetTimer) {
AvatarResetTimer state = (AvatarResetTimer) tgtState;
state.setTimer(getTimerByName(transition.getTimer(), theBlock));
}
}
else if (transition.getType() == AvatarFromSysMLSyntax.STXEXPIRETIMERTRANSITION) {
if(tgtState instanceof AvatarExpireTimer) {
AvatarExpireTimer state = (AvatarExpireTimer) tgtState;
state.setTimer(getTimerByName(transition.getTimer(), theBlock));
} }
} }
else if (transition.getType() == AvatarFromSysMLSyntax.STXSETTIMERTRANSITION) {}
else if (transition.getType() == AvatarFromSysMLSyntax.STXRESETTIMERTRANSITION) {}
else if (transition.getType() == AvatarFromSysMLSyntax.STXEXPIRETIMERTRANSITION) {}
else {} else {}
} }
} }
......
...@@ -945,6 +945,11 @@ payloadParam ::= ...@@ -945,6 +945,11 @@ payloadParam ::=
:} :}
| payloadParamBegin IDENT LPAR RPAR | payloadParamBegin IDENT LPAR RPAR
| payloadParamBegin IDENT | payloadParamBegin IDENT
| payloadParamBegin TIMERSETMSG_T LPAR StxExpr:e RPAR {:
argList.add(e);
theTransition.setSendPayload(argList);
argList = null;
:}
; ;
payloadParamBegin ::= PAYLOAD_F EQUAL {: argList= new ArrayList<StxTerm>(); :}; payloadParamBegin ::= PAYLOAD_F EQUAL {: argList= new ArrayList<StxTerm>(); :};
...@@ -953,7 +958,7 @@ channelParam ::= CHANNEL_F EQUAL IDENT:id {: ...@@ -953,7 +958,7 @@ channelParam ::= CHANNEL_F EQUAL IDENT:id {:
theTransition.setSignal(theSignal); theTransition.setSignal(theSignal);
:}; :};
settimerParam ::= CHANNEL_F EQUAL IDENT:id POINT SET_TM {: settimerParam ::= CHANNEL_F EQUAL IDENT:id POINT SET_TM {: // '@payload' = '#TimerSetMsg'(10)
theTransition.setTimer(id.getAvatarName()); theTransition.setTimer(id.getAvatarName());
:}; :};
resettimerParam ::= CHANNEL_F EQUAL IDENT:id POINT RESET_TM {: resettimerParam ::= CHANNEL_F EQUAL IDENT:id POINT RESET_TM {:
......
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