From 950d55c1f988800168fa4e1747ae824dcc669058 Mon Sep 17 00:00:00 2001 From: timothyanderson096-ocdealcheck Date: Thu, 27 Aug 2026 16:02:14 +1000 Subject: [PATCH 1/2] Fix SYSTEC ctypes error code lookup --- can/interfaces/systec/exceptions.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/can/interfaces/systec/exceptions.py b/can/interfaces/systec/exceptions.py index 8768b412a..f14e8ee5d 100644 --- a/can/interfaces/systec/exceptions.py +++ b/can/interfaces/systec/exceptions.py @@ -13,7 +13,7 @@ def __init__(self, result, func, arguments): self.func = func self.arguments = arguments - message = self._error_message_mapping.get(result, "unknown") + message = self._error_message_mapping.get(result.value, "unknown") super().__init__( message=f"Function {func.__name__} (called with {arguments}): {message}", error_code=result.value, From 792bdea9190248d75361dbc540cd4710cebdf811 Mon Sep 17 00:00:00 2001 From: timothyanderson096-ocdealcheck Date: Thu, 27 Aug 2026 16:02:44 +1000 Subject: [PATCH 2/2] Add regression test for SYSTEC ctypes result codes --- test/test_systec_exceptions.py | 16 ++++++++++++++++ 1 file changed, 16 insertions(+) create mode 100644 test/test_systec_exceptions.py diff --git a/test/test_systec_exceptions.py b/test/test_systec_exceptions.py new file mode 100644 index 000000000..64dcb3f33 --- /dev/null +++ b/test/test_systec_exceptions.py @@ -0,0 +1,16 @@ +from ctypes import c_ubyte + +from can.interfaces.systec.constants import ReturnCode +from can.interfaces.systec.exceptions import UcanError + + +def test_ucan_error_accepts_ctypes_result_code() -> None: + def ucan_write_can_msg_ex() -> None: + pass + + result = c_ubyte(ReturnCode.ERR_ILLPARAM) + + error = UcanError(result, ucan_write_can_msg_ex, ("arg",)) + + assert error.error_code == ReturnCode.ERR_ILLPARAM + assert "wrong parameter handed over to the function" in str(error)