From 5542f5d63b41b9d967d3ff74092e930c15467a90 Mon Sep 17 00:00:00 2001 From: NaruX Date: Mon, 19 Aug 2019 18:09:27 +0200 Subject: [PATCH] =?UTF-8?q?Bei=20=C3=84nderung=20von=20replace=5Fios=20nur?= =?UTF-8?q?=20Clients=20trennen,=20die=20Hashwert=20anforderten?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- doc/picontrolserver.html | 9 +++++++++ eric-revpipyload.api | 1 + revpipyload/picontrolserver.py | 12 +++++++++++- revpipyload/revpipyload.py | 15 +++++++++++---- 4 files changed, 32 insertions(+), 5 deletions(-) diff --git a/doc/picontrolserver.html b/doc/picontrolserver.html index 62b049c..84552c0 100644 --- a/doc/picontrolserver.html +++ b/doc/picontrolserver.html @@ -69,6 +69,9 @@ Methods disconnect_all Close all device connection. +disconnect_replace_ios +Close all device with loaded replace_ios file. + newlogfile Konfiguriert die FileHandler auf neue Logdatei. @@ -113,6 +116,12 @@ RevPiSlave.disconnect_all disconnect_all()

Close all device connection. +

+

+RevPiSlave.disconnect_replace_ios

+disconnect_replace_ios() +

+Close all device with loaded replace_ios file.

RevPiSlave.newlogfile

diff --git a/eric-revpipyload.api b/eric-revpipyload.api index 87afb45..ad935ce 100644 --- a/eric-revpipyload.api +++ b/eric-revpipyload.api @@ -34,6 +34,7 @@ mqttserver.__copyright__?9 mqttserver.__license__?9 picontrolserver.RevPiSlave.check_connectedacl?4() picontrolserver.RevPiSlave.disconnect_all?4() +picontrolserver.RevPiSlave.disconnect_replace_ios?4() picontrolserver.RevPiSlave.newlogfile?4() picontrolserver.RevPiSlave.run?4() picontrolserver.RevPiSlave.stop?4() diff --git a/revpipyload/picontrolserver.py b/revpipyload/picontrolserver.py index 1a2caaa..8f9650a 100644 --- a/revpipyload/picontrolserver.py +++ b/revpipyload/picontrolserver.py @@ -76,6 +76,13 @@ class RevPiSlave(Thread): for th in self._th_dev: th.stop() + def disconnect_replace_ios(self): + """Close all device with loaded replace_ios file.""" + # Alle Threads beenden die Replace_IOs emfpangen haben + for th in self._th_dev: + if th.got_replace_ios: + th.stop() + def newlogfile(self): """Konfiguriert die FileHandler auf neue Logdatei.""" pass @@ -183,6 +190,7 @@ class RevPiSlaveDev(Thread): self._deadtime = None self._devcon, self._addr = devcon self._evt_exit = Event() + self.got_replace_ios = False self._writeerror = False # Sicherheitsbytes @@ -415,7 +423,7 @@ class RevPiSlaveDev(Thread): continue elif cmd == b'RP': - # piCtory Konfiguration senden + # Replace_IOs Konfiguration senden proginit.logger.debug( "transfair replace_io configuration: {0}" "".format(proginit.pargs.configrsc) @@ -439,6 +447,8 @@ class RevPiSlaveDev(Thread): elif cmd == b'RH': # Replace_IOs md5 Hashwert senden (16 Byte) + self.got_replace_ios = True + replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "") try: if replace_ios: diff --git a/revpipyload/revpipyload.py b/revpipyload/revpipyload.py index 1966b34..b44eef0 100755 --- a/revpipyload/revpipyload.py +++ b/revpipyload/revpipyload.py @@ -28,7 +28,7 @@ begrenzt werden! __author__ = "Sven Sager" __copyright__ = "Copyright (C) 2018 Sven Sager" __license__ = "GPLv3" -__version__ = "0.7.6" +__version__ = "0.8.0" import gzip import logsystem import picontrolserver @@ -739,10 +739,20 @@ class RevPiPyLoad(): # Dateiveränderungen prüfen mit beiden Funktionen! if self.check_pictory_changed(): file_changed = True + + # Alle Verbindungen von ProcImgServer trennen + self.th_plcslave.disconnect_all() + proginit.logger.warning("piCtory configuration was changed") + if self.check_replace_ios_changed(): + if not file_changed: + # Verbindungen von ProcImgServer trennen mit replace_ios + self.th_plcslave.disconnect_replace_ios() + file_changed = True proginit.logger.warning("replace ios file was changed") + if file_changed: # Auf Dateiveränderung reagieren @@ -750,9 +760,6 @@ class RevPiPyLoad(): if self.mqtt and self.th_plcmqtt is not None: self.th_plcmqtt.reload_revpimodio() - # Alle Verbindungen von ProcImgServer trennen - self.th_plcslave.disconnect_all() - # XML Prozessabbildserver neu laden if self.xml_ps is not None: self.xml_psstop()