Only write export flag to replace_io_file, if the value was set during runtime

This commit is contained in:
2021-01-13 10:36:36 +01:00
parent 186406623b
commit cc9b4521e9
2 changed files with 24 additions and 6 deletions

View File

@@ -291,8 +291,8 @@ class IOBase(object):
__slots__ = "__bit_ioctl_off", "__bit_ioctl_on", "_bitaddress", \
"_bitshift", "_bitlength", "_byteorder", "_defaultvalue", \
"_iotype", "_length", "_name", "_parentdevice", \
"_read_only_io", "_signed", "_slc_address", "bmk", "export"
"_export", "_iotype", "_length", "_name", "_parentdevice", \
"_read_only_io", "_signed", "_slc_address", "bmk"
def __init__(self, parentdevice, valuelist: list, iotype: int, byteorder: str, signed: bool):
"""
@@ -325,7 +325,7 @@ class IOBase(object):
self._name = valuelist[0]
self._signed = signed
self.bmk = valuelist[6]
self.export = bool(valuelist[4])
self._export = int(valuelist[4]) & 1
int_startaddress = int(valuelist[3])
if self._bitshift:
@@ -514,6 +514,10 @@ class IOBase(object):
"""
return self._byteorder
def _get_export(self) -> bool:
"""Return value of export flag."""
return bool(self._export & 1)
def _get_iotype(self) -> int:
"""
Gibt io type zurueck.
@@ -522,6 +526,12 @@ class IOBase(object):
"""
return self._iotype
def _set_export(self, value: bool) -> None:
"""Set value of export flag and remember this change for export."""
if type(value) != bool:
raise ValueError("Value must be <class 'bool'>")
self._export = 2 + int(value)
def get_defaultvalue(self):
"""
Gibt die Defaultvalue von piCtory zurueck.
@@ -850,6 +860,7 @@ class IOBase(object):
address = property(_get_address)
byteorder = property(_get_byteorder)
defaultvalue = property(get_defaultvalue)
export = property(_get_export, _set_export)
length = property(__len__)
name = property(__str__)
type = property(_get_iotype)
@@ -1197,7 +1208,7 @@ class StructIO(IOBase):
kwargs.get("defaultvalue", None),
bitlength,
parentio._slc_address.start,
kwargs.get('export', parentio.export),
False,
str(parentio._slc_address.start).rjust(4, "0"),
kwargs.get("bmk", ""),
bitaddress
@@ -1217,6 +1228,13 @@ class StructIO(IOBase):
frm == frm.lower()
)
self.__frm = bofrm + frm
if "export" in kwargs:
# Use export property to remember given value for export
self.export = kwargs["export"]
else:
# User could change parent IO settings before replace to force
# export, so use parent settings for the new IO
self._export = parentio._export
# Platz für neuen IO prüfen
if not (self._slc_address.start >=

View File

@@ -855,8 +855,8 @@ class RevPiModIO(object):
cp[io.name]["defaultvalue"] = str(io.defaultvalue)
if io.bmk != "":
cp[io.name]["bmk"] = io.bmk
if io.export is not None:
cp[io.name]["export"] = io.export
if io._export & 2:
cp[io.name]["export"] = str(io._export & 1)
try:
with open(filename, "w") as fh: