From 60f0c590db98ffe88dffc1279f183cf4d041b6e9 Mon Sep 17 00:00:00 2001 From: danielhrisca Date: Thu, 29 Feb 2024 14:16:21 +0200 Subject: [PATCH 1/2] fix cond_unlock for keys that do not fit in a single unlock message --- .bumpversion.cfg | 2 +- pyproject.toml | 2 +- pyxcp/__init__.py | 2 +- pyxcp/master/master.py | 5 ++--- 4 files changed, 5 insertions(+), 6 deletions(-) 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..56e9f65 100644 --- a/pyxcp/master/master.py +++ b/pyxcp/master/master.py @@ -1809,9 +1809,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)) From f6d68e211bb55ad7f04cb404bb17a9856d000e78 Mon Sep 17 00:00:00 2001 From: danielhrisca Date: Thu, 29 Feb 2024 14:47:17 +0200 Subject: [PATCH 2/2] improve getting the seed in cond_unlock --- pyxcp/master/master.py | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/pyxcp/master/master.py b/pyxcp/master/master.py index 56e9f65..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,