Skip to content
Snippets Groups Projects
Commit 93b53358 authored by Sebastian Ebert's avatar Sebastian Ebert
Browse files

added none-result, added sample sensorics node

parent ea31a964
No related branches found
No related tags found
No related merge requests found
Showing with 95 additions and 10 deletions
......@@ -11,6 +11,9 @@ aspect BalloonExecution{
syn FiringSelectionFail TransitionSelectionResult.asFiringSelectionFail()=null;
eq FiringSelectionFail.asFiringSelectionFail()=this;
syn FiringSelectionNone TransitionSelectionResult.asFiringSelectionNone()=null;
eq FiringSelectionNone.asFiringSelectionNone()=this;
syn boolean TransitionSelectionResult.isFiringSelectionSuccess()=false;
eq FiringSelectionSuccess.isFiringSelectionSuccess()=true;
......@@ -20,6 +23,9 @@ aspect BalloonExecution{
syn boolean TransitionSelectionResult.isFiringSelectionFail()=false;
eq FiringSelectionFail.isFiringSelectionFail()=true;
syn boolean TransitionSelectionResult.isFiringSelectionNone()=false;
eq FiringSelectionNone.isFiringSelectionNone()=true;
public Optional<BalloonMarking> BalloonMarking.fireTransition(Transition transition, BalloonCallbackStorage callbackStorage,
InputSignalConnector inputSignalConnector,de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode node, boolean requireFlush) {
......
......@@ -8,3 +8,4 @@ FiringSelectionSuccess : TransitionSelectionResult;
rel FiringSelectionSuccess.Transition -> Transition;
FiringSelectionWait : TransitionSelectionResult ::= <WaitingTime:int>;
FiringSelectionFail : TransitionSelectionResult;
FiringSelectionNone : TransitionSelectionResult;
\ No newline at end of file
package de.tudresden.inf.st.pnml.engine;
import de.tudresden.inf.st.pnml.engine.execution.DefaultFinalTransitionHandler;
import de.tudresden.inf.st.pnml.engine.execution.TransitionHandler;
import de.tudresden.inf.st.pnml.engine.testNodes.DinerosTestNode;
import de.tudresden.inf.st.pnml.engine.example.DinerosTestNode;
import de.tudresden.inf.st.pnml.jastadd.model.*;
import org.ros.node.DefaultNodeMainExecutor;
import org.ros.node.NodeConfiguration;
import org.ros.node.NodeMainExecutor;
import java.net.URI;
import java.util.ArrayList;
import java.util.List;
public class Main {
......
package de.tudresden.inf.st.pnml.engine.testNodes;
package de.tudresden.inf.st.pnml.engine.example;
import org.ros.exception.RemoteException;
import org.ros.exception.RosRuntimeException;
......
package de.tudresden.inf.st.pnml.engine.testNodes;
package de.tudresden.inf.st.pnml.engine.example;
import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
import de.tudresden.inf.st.pnml.jastadd.model.*;
......
package de.tudresden.inf.st.pnml.engine.example;
import de.tudresden.inf.st.pnml.engine.ros.DiNeRosNode;
import de.tudresden.inf.st.pnml.jastadd.model.*;
import org.jetbrains.annotations.NotNull;
import java.util.Set;
public class SensoricsNode extends DiNeRosNode {
public SensoricsNode(String nodeName, PetriNet petriNet, String rcHost, String gcProtocol) {
super(nodeName, petriNet, rcHost, gcProtocol);
}
@Override
protected void nodeLoop() {}
@NotNull
private TransitionSelectionResult fireFirstEnabled(Set<Transition> enabledTransitions) {
FiringSelectionSuccess fsc = new FiringSelectionSuccess();
for (Transition t : enabledTransitions) {
fsc.setTransition(t);
break;
}
return fsc;
}
@Override
protected TransitionSelectionResult onMarkingChange(Set<Transition> enabledTransitions) {
for(Transition t : enabledTransitions){
if(t.getId().equals("GetSensorData")){
FiringSelectionSuccess sel = new FiringSelectionSuccess();
sel.setTransition(t);
return sel;
}
if(t.getId().equals("ProcessSensorData")){
FiringSelectionWait sel = new FiringSelectionWait();
sel.setWaitingTime(100);
return sel;
}
}
return new FiringSelectionNone();
}
@Override
protected TransitionSelectionResult onSignalChange(Set<Transition> enabledTransitions) {
for(Transition t : enabledTransitions){
if(t.getId().equals("GetSensorData")){
FiringSelectionSuccess sel = new FiringSelectionSuccess();
sel.setTransition(t);
return sel;
}
}
return new FiringSelectionNone();
}
@Override
protected TransitionSelectionResult onWaitEnded(Set<Transition> enabledTransitions) {
return fireFirstEnabled(enabledTransitions);
}
@Override
protected TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions) {
return new FiringSelectionNone();
}
}
package de.tudresden.inf.st.pnml.engine.testNodes;
package de.tudresden.inf.st.pnml.engine.example;
import org.ros.namespace.GraphName;
import org.ros.node.AbstractNodeMain;
......
......@@ -14,7 +14,7 @@ public abstract class TransitionHandler{
private String id;
private int priority;
private List<String> params = new ArrayList<>();
protected List<String> params = new ArrayList<>();
public TransitionHandler(String id, int priority, List<String> params) {
this.id = id;
......
......@@ -227,12 +227,17 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
}
}
if(res.isFiringSelectionNone()){
return;
}
if (res.isFiringSelectionFail()) {
System.err.println("[DiNeROS-Node] [" + nodeName + "] Firing selection action failed!");
return;
}
System.out.println("FIRING TRANSITION");
System.out.println("[DiNeROS-Node] [" + nodeName + "] " +
"Firing Transition " + res.asFiringSelectionSuccess().getTransition().getId());
marking.fireTransition(res.asFiringSelectionSuccess()
.getTransition(), callbackStorage, inputSignalConnector, this, true);
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment