From 5e0e8c88237da2659eaf01f715cd1c9b2005329e Mon Sep 17 00:00:00 2001 From: SebastianEbert <sebastian.ebert@tu-dresden.de> Date: Mon, 4 Mar 2024 18:41:10 +0100 Subject: [PATCH] simplified exec, fixed tracing of pubs --- .../balloonMarking/BalloonExecution.jadd | 14 ++----- .../inf/st/pnml/engine/ros/DiNeRosNode.java | 37 ++++++++++++------- 2 files changed, 26 insertions(+), 25 deletions(-) diff --git a/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd b/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd index 0394b45..d35f9c5 100644 --- a/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd +++ b/src/main/jastadd/engine/balloonMarking/BalloonExecution.jadd @@ -152,24 +152,16 @@ aspect BalloonExecution{ } BalloonMarkedPlace bmp=this.resolveBalloonPlace(place); - org.ros.node.topic.Publisher<std_msgs.String> pub = node.getPublisherByPlaceId(place.getId()); - if(pub != null){ - std_msgs.String msg = pub.newMessage(); - msg.setData(result.getValue()); - pub.publish(msg); - } else { + if(pub != null) { result.setCreationTime(System.currentTimeMillis()); bmp.getBalloonMarkingList().add(result); + connectedToPubPlace = true; + connectedPubPlaceId = place.getId(); } } - // for(BalloonToken delToken : inToken){ - // System.out.println("[Engine] Removing token: " + delToken.getValue()); - // delToken.removeSelf(); - // } - if(requireFlush){ // flush the entire marking tree this.flushTreeCache(); diff --git a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java index 61947d4..fea8790 100644 --- a/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java +++ b/src/main/java/de/tudresden/inf/st/pnml/engine/ros/DiNeRosNode.java @@ -127,38 +127,47 @@ public abstract class DiNeRosNode extends AbstractNodeMain { switch (event.eventType) { case DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE: + System.out.println("NOTIFICATION_MARKING_CHANGE"); onChangeInternal(signalFilteredTransitions); break; case DiNeRosEventTypes.NOTIFICATION_SIGNAL_CHANGE: - - Boolean newVal = false; - - for(SignalConnection sc : this.inputSignalConnector.getSignalConnections()){ - if(sc.getId().equals(event.payload)){ - newVal = sc.getCurrentValue(); - } - } - - TracePublishing.publish(TracePublishing.TraceTypeSignalChanged, - this.getDefaultNodeName()+ " " + event.payload + " " + newVal, - this.connectedNode, this.tracePublisher); + System.out.println("NOTIFICATION_SIGNAL_CHANGE"); + handleSignalChange(event); onChangeInternal(signalFilteredTransitions); break; case DiNeRosEventTypes.NOTIFICATION_STARTUP_ENDED: + System.out.println("NOTIFICATION_STARTUP_ENDED"); onStartupEndedInternal(signalFilteredTransitions); break; case DiNeRosEventTypes.NOTIFICATION_SERVICE_REQ_CLIENT: + System.out.println("NOTIFICATION_SERVICE_REQ_CLIENT"); onServiceRequestAvailableOnClientSide(event.payload); break; case DiNeRosEventTypes.NOTIFICATION_TOPIC_PUB: + System.out.println("NOTIFICATION_TOPIC_PUB"); onTopicPublisherAvailable(event.payload); break; case DiNeRosEventTypes.NOTIFICATION_SERVICE_RES_SERVER: + System.out.println("NOTIFICATION_SERVICE_RES_SERVER"); onServiceResponseAvailableOnServerSide(event.payload); break; } } + private void handleSignalChange(DiNeRosEvent event) { + Boolean newVal = false; + + for(SignalConnection sc : this.inputSignalConnector.getSignalConnections()){ + if(sc.getId().equals(event.payload)){ + newVal = sc.getCurrentValue(); + } + } + + TracePublishing.publish(TracePublishing.TraceTypeSignalChanged, + this.getDefaultNodeName()+ " " + event.payload + " " + newVal, + this.connectedNode, this.tracePublisher); + } + private void onTopicPublisherAvailable(java.lang.String placeId) { java.lang.String[] split = placeId.split("-INSTANCE-"); @@ -166,11 +175,11 @@ public abstract class DiNeRosNode extends AbstractNodeMain { java.lang.String topicName = petriNet.getPortNameByPlaceId(originalId, PnmlConstants.CHANNEL_PLACE_TYPE_PUB_KEY); Place place = petriNet.getPlaceById(placeId); BalloonMarkedPlace bmp = this.marking.resolveBalloonPlace(place); + TracePublishing.publish(TracePublishing.TraceTypeTopicSend, + this.nodeName + " " + topicName + " " + placeId, this.connectedNode, this.tracePublisher); RosCommunicationUtil.publish(topicName, bmp.getBalloonMarking(0).getValue().getBytes(), this.connectedNode, getPublisherByPlaceId(placeId)); System.out.println("[DiNeROS-Node] [" + nodeName + "] Published msg: " + bmp.getBalloonMarking(0).getValue()); - TracePublishing.publish(TracePublishing.TraceTypeTopicSend, - this.nodeName + " " + topicName + "-" + placeId, this.connectedNode, this.tracePublisher); bmp.getBalloonMarking(0).removeSelf(); petriNet.flushTreeCache(); this.notify(new DiNeRosEvent(DiNeRosEventTypes.NOTIFICATION_MARKING_CHANGE)); -- GitLab