diff --git a/openvisualizer/motehandler/moteconnector/moteconnector.py b/openvisualizer/motehandler/moteconnector/moteconnector.py index d6975c80..62bda657 100644 --- a/openvisualizer/motehandler/moteconnector/moteconnector.py +++ b/openvisualizer/motehandler/moteconnector/moteconnector.py @@ -144,6 +144,9 @@ def _bytes_to_mesh_handler(self, sender, signal, data): # ======================== public ========================================== + def close(self): + self.parser.close() + def quit(self): raise NotImplementedError() diff --git a/openvisualizer/motehandler/moteconnector/openparser/openparser.py b/openvisualizer/motehandler/moteconnector/openparser/openparser.py index 16c3ecde..ee88a398 100644 --- a/openvisualizer/motehandler/moteconnector/openparser/openparser.py +++ b/openvisualizer/motehandler/moteconnector/openparser/openparser.py @@ -108,3 +108,6 @@ def __init__(self, mqtt_broker, stack_defines, mote_port): val=self.SERFRAME_MOTE2PC_PRINTF, parser=self.parser_printf, ) + + def close(self): + self.parser_data.close() diff --git a/openvisualizer/motehandler/moteconnector/openparser/parserdata.py b/openvisualizer/motehandler/moteconnector/openparser/parserdata.py index 7756329e..6e92a664 100644 --- a/openvisualizer/motehandler/moteconnector/openparser/parserdata.py +++ b/openvisualizer/motehandler/moteconnector/openparser/parserdata.py @@ -60,6 +60,11 @@ def __init__(self, mqtt_broker_address, mote_port): # ======================== private ========================================= + def close(self): + if self.broker and self.mqtt_connected: + self.mqtt_client.loop_stop() + self.mqtt_client.disconnect() + def _on_mqtt_connect(self, client, userdata, flags, rc): log.success("connected to broker ({}) for mote on port: {}".format(self.broker, self.mote_port)) diff --git a/openvisualizer/server.py b/openvisualizer/server.py index 67e3eaef..b6d8f8c3 100644 --- a/openvisualizer/server.py +++ b/openvisualizer/server.py @@ -128,6 +128,9 @@ def shutdown(self) -> None: self.tun.close() self.jrc.close() + for connector in self.mote_connectors: + connector.close() + for probe in self.mote_probes: probe.close() probe.join()