Übertragung piCtory Datei trennt bei Fehler Verbindung

Übertragung replace_io Datei trennt bei Fehler Verbindung
Replace IO wird nur übertragen, wenn HASH nicht HASH_NULL ist
This commit is contained in:
2019-08-26 13:18:47 +02:00
parent 43969d8162
commit 1eb38407f5
4 changed files with 26 additions and 26 deletions

View File

@@ -1,7 +1,7 @@
<?xml version="1.0" encoding="UTF-8"?> <?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE Project SYSTEM "Project-5.1.dtd"> <!DOCTYPE Project SYSTEM "Project-5.1.dtd">
<!-- eric project file for project revpipyload --> <!-- eric project file for project revpipyload -->
<!-- Saved: 2019-06-16, 15:47:42 --> <!-- Saved: 2019-08-26, 13:17:52 -->
<!-- Copyright (C) 2019 Sven Sager, akira@narux.de --> <!-- Copyright (C) 2019 Sven Sager, akira@narux.de -->
<Project version="5.1"> <Project version="5.1">
<Language>en_US</Language> <Language>en_US</Language>
@@ -9,7 +9,7 @@
<ProgLanguage mixed="0">Python3</ProgLanguage> <ProgLanguage mixed="0">Python3</ProgLanguage>
<ProjectType>Console</ProjectType> <ProjectType>Console</ProjectType>
<Description>Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten.</Description> <Description>Dieser Loader wird über das Init-System geladen und führt das angegebene Pythonprogramm aus. Es ist für den RevolutionPi gedacht um automatisch das SPS-Programm zu starten.</Description>
<Version>0.7.6</Version> <Version>0.8.0</Version>
<Author>Sven Sager</Author> <Author>Sven Sager</Author>
<Email>akira@narux.de</Email> <Email>akira@narux.de</Email>
<Eol index="1"/> <Eol index="1"/>

View File

@@ -403,10 +403,9 @@ class RevPiSlaveDev(Thread):
) )
break break
else: else:
continue
finally:
# End-of-Transmission character immer senden # End-of-Transmission character immer senden
self._devcon.send(b'\x04') self._devcon.send(b'\x04')
continue
elif cmd == b'PH': elif cmd == b'PH':
# piCtory md5 Hashwert senden (16 Byte) # piCtory md5 Hashwert senden (16 Byte)
@@ -416,26 +415,26 @@ class RevPiSlaveDev(Thread):
self._devcon.sendall(HASH_PICT) self._devcon.sendall(HASH_PICT)
elif cmd == b'RP': elif cmd == b'RP':
# Replace_IOs Konfiguration senden # Replace_IOs Konfiguration senden, wenn hash existiert
proginit.logger.debug( proginit.logger.debug(
"transfair replace_io configuration: {0}" "transfair replace_io configuration: {0}"
"".format(proginit.pargs.configrsc) "".format(proginit.pargs.configrsc)
) )
replace_ios = proginit.conf["DEFAULT"].get("replace_ios", None) replace_ios = proginit.conf["DEFAULT"].get("replace_ios", "")
try: try:
if replace_ios: if HASH_RPIO != HASH_NULL and replace_ios:
with open(replace_ios, "rb") as fh: with open(replace_ios, "rb") as fh:
# Komplette piCtory Datei senden # Komplette replace_io Datei senden
self._devcon.sendall(fh.read()) self._devcon.sendall(fh.read())
except Exception as e: except Exception as e:
proginit.logger.error( proginit.logger.error(
"error on replace_io transfair: {0}".format(e) "error on replace_io transfair: {0}".format(e)
) )
break
else: else:
continue
finally:
# End-of-Transmission character immer senden # End-of-Transmission character immer senden
self._devcon.send(b'\x04') self._devcon.send(b'\x04')
continue
elif cmd == b'RH': elif cmd == b'RH':
# Replace_IOs md5 Hashwert senden (16 Byte) # Replace_IOs md5 Hashwert senden (16 Byte)

View File

@@ -428,17 +428,18 @@ class RevPiPyLoad():
"revpimodio2: 'apt-get install python3-revpimodio2'" "revpimodio2: 'apt-get install python3-revpimodio2'"
"".format(min_revpimodio) "".format(min_revpimodio)
) )
try: else:
self.xml_ps = procimgserver.ProcimgServer( try:
self.xsrv, self.xml_ps = procimgserver.ProcimgServer(
None if not self.replace_ios_config self.xsrv,
else self.replace_ios_config, None if not self.replace_ios_config
) else self.replace_ios_config,
self.xsrv.register_function(1, self.xml_psstart, "psstart") )
self.xsrv.register_function(1, self.xml_psstop, "psstop") self.xsrv.register_function(1, self.xml_psstart, "psstart")
except Exception as e: self.xsrv.register_function(1, self.xml_psstop, "psstop")
self.xml_ps = None except Exception as e:
proginit.logger.error(e) self.xml_ps = None
proginit.logger.error(e)
# XML Modus 2 Einstellungen lesen und Programm herunterladen # XML Modus 2 Einstellungen lesen und Programm herunterladen
self.xsrv.register_function( self.xsrv.register_function(
@@ -612,7 +613,7 @@ class RevPiPyLoad():
# TODO: Nur "Devices" list vergleich # TODO: Nur "Devices" list vergleich
with open(proginit.pargs.configrsc, "rb") as fh: with open(proginit.pargs.configrsc, "rb") as fh:
file_hash = md5(fh.read()).hexdigest() file_hash = md5(fh.read()).digest()
if picontrolserver.HASH_PICT == file_hash: if picontrolserver.HASH_PICT == file_hash:
return False return False
picontrolserver.HASH_PICT = file_hash picontrolserver.HASH_PICT = file_hash
@@ -650,14 +651,14 @@ class RevPiPyLoad():
return False return False
self.replaceiosmtime = mtime self.replaceiosmtime = mtime
# TODO: Instanz von ConfigParser vergleichen
with open(self.replace_ios_config, "rb") as fh: with open(self.replace_ios_config, "rb") as fh:
file_hash = md5(fh.read()).hexdigest() file_hash = md5(fh.read()).digest()
if picontrolserver.HASH_RPIO == file_hash: if picontrolserver.HASH_RPIO == file_hash:
return False return False
picontrolserver.HASH_RPIO = file_hash picontrolserver.HASH_RPIO = file_hash
# TODO: Instanz von ConfigParser vergleichen
return True return True
return False return False

View File

@@ -27,7 +27,7 @@ setup(
license="LGPLv3", license="LGPLv3",
name="revpipyload", name="revpipyload",
version="0.7.6", version="0.8.0",
scripts=["data/revpipyload"], scripts=["data/revpipyload"],