diff --git a/.bumpversion.cfg b/.bumpversion.cfg index f7e1536..494d1ec 100644 --- a/.bumpversion.cfg +++ b/.bumpversion.cfg @@ -1,5 +1,5 @@ [bumpversion] -current_version = 0.21.9 +current_version = 0.21.10 commit = True tag = False diff --git a/pyproject.toml b/pyproject.toml index fa598cc..99def01 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -34,7 +34,7 @@ dependencies = [ "traitlets>=5.9.0", ] name = "pyxcp" -version = "0.21.9" +version = "0.21.10" readme = "README.md" description = "Universal Calibration Protocol for Python" keywords = ["automotive", "ecu", "xcp", "asam", "autosar"] diff --git a/pyxcp/__init__.py b/pyxcp/__init__.py index e6a9f57..0568d4c 100644 --- a/pyxcp/__init__.py +++ b/pyxcp/__init__.py @@ -25,4 +25,4 @@ from .transport import Usb # if you update this manually, do not forget to update .bumpversion.cfg and pyproject.toml -__version__ = "0.21.9" +__version__ = "0.21.10" diff --git a/pyxcp/master/master.py b/pyxcp/master/master.py index e625e40..91ef317 100644 --- a/pyxcp/master/master.py +++ b/pyxcp/master/master.py @@ -1790,12 +1790,13 @@ def cond_unlock(self, resources=None): length = result.length if length == 0: continue - if length > MAX_PAYLOAD: - remaining = length - len(seed) - while remaining > 0: - result = self.getSeed(types.XcpGetSeedMode.REMAINING, resource_value) - seed.extend(list(result.seed)) - remaining = result.length + + while length - len(seed) > 0: + result = self.getSeed(types.XcpGetSeedMode.REMAINING, resource_value) + seed.extend(list(result.seed)) + + seed = seed[: length] # maybe there are some padding bytes + result, key = getKey( self.logger, self.seedNKeyDLL, @@ -1809,9 +1810,8 @@ def cond_unlock(self, resources=None): offset = 0 while offset < total_length: data = key[offset : offset + MAX_PAYLOAD] - key_length = len(data) - offset += key_length - self.unlock(key_length, data) + self.unlock(total_length-offset, data) + offset += len(data) else: raise SeedNKeyError("SeedAndKey DLL returned: {}".format(SeedNKeyResult(result).name))