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

simplification of callbacks

parent 93b53358
No related branches found
No related tags found
No related merge requests found
......@@ -5,9 +5,6 @@ aspect BalloonExecution{
syn FiringSelectionSuccess TransitionSelectionResult.asFiringSelectionSuccess()=null;
eq FiringSelectionSuccess.asFiringSelectionSuccess()=this;
syn FiringSelectionWait TransitionSelectionResult.asFiringSelectionWait()=null;
eq FiringSelectionWait.asFiringSelectionWait()=this;
syn FiringSelectionFail TransitionSelectionResult.asFiringSelectionFail()=null;
eq FiringSelectionFail.asFiringSelectionFail()=this;
......@@ -17,9 +14,6 @@ aspect BalloonExecution{
syn boolean TransitionSelectionResult.isFiringSelectionSuccess()=false;
eq FiringSelectionSuccess.isFiringSelectionSuccess()=true;
syn boolean TransitionSelectionResult.isFiringSelectionWait()=false;
eq FiringSelectionWait.isFiringSelectionWait()=true;
syn boolean TransitionSelectionResult.isFiringSelectionFail()=false;
eq FiringSelectionFail.isFiringSelectionFail()=true;
......
......@@ -6,6 +6,6 @@ rel BalloonTransition.Transition -> Transition;
abstract TransitionSelectionResult;
FiringSelectionSuccess : TransitionSelectionResult;
rel FiringSelectionSuccess.Transition -> Transition;
FiringSelectionWait : TransitionSelectionResult ::= <WaitingTime:int>;
// FiringSelectionWait : TransitionSelectionResult ::= <WaitingTime:int>;
FiringSelectionFail : TransitionSelectionResult;
FiringSelectionNone : TransitionSelectionResult;
\ No newline at end of file
......@@ -5,6 +5,7 @@ import de.tudresden.inf.st.pnml.jastadd.model.*;
import org.jetbrains.annotations.NotNull;
import org.ros.concurrent.CancellableLoop;
import java.util.List;
import java.util.Set;
public class DinerosTestNode extends DiNeRosNode {
......@@ -39,7 +40,7 @@ public class DinerosTestNode extends DiNeRosNode {
}
@NotNull
private TransitionSelectionResult fireFirstEnabled(Set<Transition> enabledTransitions) {
private TransitionSelectionResult fireFirstEnabled(List<Transition> enabledTransitions) {
System.out.println("Calling fireFirstEnabled");
System.out.println(marking.print());
......@@ -52,35 +53,18 @@ public class DinerosTestNode extends DiNeRosNode {
break;
}
if(enabledTransitions.size() == 0){
FiringSelectionWait fsw = new FiringSelectionWait();
fsw.setWaitingTime(1000);
return fsw;
}
if(enabledTransitions.size() == 0){ return new FiringSelectionNone(); }
return fsc;
}
@Override
protected TransitionSelectionResult onMarkingChange(Set<Transition> enabledTransitions) {
System.out.println("Calling onMarkingChange");
return fireFirstEnabled(enabledTransitions);
}
@Override
protected TransitionSelectionResult onSignalChange(Set<Transition> enabledTransitions) {
System.out.println("Calling onSignalChange");
return fireFirstEnabled(enabledTransitions);
}
@Override
protected TransitionSelectionResult onWaitEnded(Set<Transition> enabledTransitions) {
protected TransitionSelectionResult onChange(List<Transition> enabledTransitions) {
System.out.println("Calling onWaitEnded");
return fireFirstEnabled(enabledTransitions);
}
@Override
protected TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions) {
protected TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions) {
System.out.println("Calling onStartupEnded");
return fireFirstEnabled(enabledTransitions);
}
......
......@@ -4,7 +4,8 @@ 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;
import java.util.List;
import java.util.Random;
public class SensoricsNode extends DiNeRosNode {
......@@ -16,61 +17,20 @@ public class SensoricsNode extends DiNeRosNode {
protected void nodeLoop() {}
@NotNull
private TransitionSelectionResult fireFirstEnabled(Set<Transition> enabledTransitions) {
private TransitionSelectionResult fireRandomEnabledTransition(List<Transition> enabledTransitions) {
FiringSelectionSuccess fsc = new FiringSelectionSuccess();
for (Transition t : enabledTransitions) {
fsc.setTransition(t);
break;
}
fsc.setTransition(enabledTransitions.get(new Random().nextInt(enabledTransitions.size())));
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);
protected TransitionSelectionResult onChange(List<Transition> enabledTransitions) {
return enabledTransitions.size() == 0 ?
new FiringSelectionNone() : fireRandomEnabledTransition(enabledTransitions);
}
@Override
protected TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions) {
protected TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions) {
return new FiringSelectionNone();
}
}
......@@ -2,6 +2,7 @@ package de.tudresden.inf.st.pnml.engine.ros;
import de.tudresden.inf.st.pnml.jastadd.model.*;
import java.util.List;
import java.util.Set;
public class DiNeRosDefaultNode extends DiNeRosNode{
......@@ -23,19 +24,11 @@ public class DiNeRosDefaultNode extends DiNeRosNode{
}
protected TransitionSelectionResult onMarkingChange(Set<Transition> enabledTransitions){
protected TransitionSelectionResult onChange(List<Transition> enabledTransitions){
return null;
}
protected TransitionSelectionResult onSignalChange(Set<Transition> enabledTransitions){
return null;
}
protected TransitionSelectionResult onWaitEnded(Set<Transition> enabledTransitions){
return null;
}
protected TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions){
protected TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions){
return null;
}
}
......@@ -28,7 +28,6 @@ import std_msgs.String;
import javax.xml.parsers.ParserConfigurationException;
import java.io.IOException;
import java.util.*;
import java.util.concurrent.TimeUnit;
public abstract class DiNeRosNode extends AbstractNodeMain {
......@@ -89,17 +88,12 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
public synchronized void notify(DiNeRosEvent event) {
Set<Transition> signalFilteredTransitions = getSignalFilteredTransitions();
List<Transition> signalFilteredTransitions = getSignalFilteredTransitions();
switch (event.eventType) {
case DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE:
onMarkingChangeInternal(signalFilteredTransitions);
break;
case DiNeRosEventTypes.NOTIFICATION_SIGNAL_CHANGE:
onSignalChangeInternal(signalFilteredTransitions);
break;
case DiNeRosEventTypes.NOTIFICATION_WAIT_ENDED:
onWaitEndedInternal(signalFilteredTransitions);
onChange(signalFilteredTransitions);
break;
case DiNeRosEventTypes.NOTIFICATION_STARTUP_ENDED:
onStartupEndedInternal(signalFilteredTransitions);
......@@ -187,8 +181,8 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
}
@NotNull
protected Set<Transition> getSignalFilteredTransitions() {
Set<Transition> signalFilteredTransitions = new HashSet<>();
protected List<Transition> getSignalFilteredTransitions() {
List<Transition> signalFilteredTransitions = new ArrayList<>();
ClauseValuesDefinition clauseValuesDefinition = new ClauseValuesDefinition();
......@@ -217,19 +211,8 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
}
private void getTransitionSelectionResult(TransitionSelectionResult res) {
if (res.isFiringSelectionWait()) {
try {
TimeUnit.MILLISECONDS.sleep(res.asFiringSelectionWait().getWaitingTime());
onWaitEndedInternal(getSignalFilteredTransitions());
return;
} catch (InterruptedException e) {
e.printStackTrace();
}
}
if(res.isFiringSelectionNone()){
return;
}
if(res.isFiringSelectionNone()){ return; }
if (res.isFiringSelectionFail()) {
System.err.println("[DiNeROS-Node] [" + nodeName + "] Firing selection action failed!");
......@@ -243,7 +226,7 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
}
private void onStartupEndedInternal(Set<Transition> enabledTransitions) {
private void onStartupEndedInternal(List<Transition> enabledTransitions) {
System.out.println("Calling onStartupEndedInternal");
......@@ -251,39 +234,17 @@ public abstract class DiNeRosNode extends AbstractNodeMain {
getTransitionSelectionResult(res);
}
private void onMarkingChangeInternal(Set<Transition> enabledTransitions) {
private void onChangeInternal(List<Transition> enabledTransitions) {
System.out.println("Calling onMarkingChangeInternal");
System.out.println("Calling onChangeInternal");
TransitionSelectionResult res = onMarkingChange(enabledTransitions);
TransitionSelectionResult res = onChange(enabledTransitions);
getTransitionSelectionResult(res);
}
private void onSignalChangeInternal(Set<Transition> enabledTransitions) {
System.out.println("Calling onSignalChangeInternal");
TransitionSelectionResult res = onSignalChange(enabledTransitions);
getTransitionSelectionResult(res);
}
private void onWaitEndedInternal(Set<Transition> enabledTransitions) {
System.out.println("Calling onWaitEndedInternal");
TransitionSelectionResult res = onWaitEnded(enabledTransitions);
getTransitionSelectionResult(res);
}
protected abstract TransitionSelectionResult onMarkingChange(Set<Transition> enabledTransitions);
protected abstract TransitionSelectionResult onSignalChange(Set<Transition> enabledTransitions);
protected abstract TransitionSelectionResult onWaitEnded(Set<Transition> enabledTransitions);
protected abstract TransitionSelectionResult onChange(List<Transition> enabledTransitions);
protected abstract TransitionSelectionResult onStartupEnded(Set<Transition> enabledTransitions);
protected abstract TransitionSelectionResult onStartupEnded(List<Transition> enabledTransitions);
@Override
public GraphName getDefaultNodeName() {
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment