From 0a954e316a5248f354f2daaf245992c9fd2953e2 Mon Sep 17 00:00:00 2001 From: Obsnold Date: Fri, 7 Jul 2023 22:04:56 +0100 Subject: [PATCH 1/2] Check for ValueError exception when reading PDOMapping entrys from EDS files. --- canopen/objectdictionary/eds.py | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/canopen/objectdictionary/eds.py b/canopen/objectdictionary/eds.py index d9f06e97..b03030d8 100644 --- a/canopen/objectdictionary/eds.py +++ b/canopen/objectdictionary/eds.py @@ -274,8 +274,10 @@ def build_variable(eds, section, node_id, index, subindex=0): logger.warning("%s has an unknown or unsupported data type (%X)", name, var.data_type) # Assume DOMAIN to force application to interpret the byte data var.data_type = datatypes.DOMAIN - - var.pdo_mappable = bool(int(eds.get(section, "PDOMapping", fallback="0"), 0)) + try: + var.pdo_mappable = bool(int(eds.get(section, "PDOMapping", fallback="0"), 0)) + except ValueError: + pass if eds.has_option(section, "LowLimit"): try: From cdf433b47db70bbb8f8ca76005b06cb89f130e35 Mon Sep 17 00:00:00 2001 From: Obsnold Date: Wed, 12 Jul 2023 07:52:05 +0100 Subject: [PATCH 2/2] change value error check from try/except to explicitly check for empty string, this way we don't mask any other errors --- canopen/objectdictionary/eds.py | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/canopen/objectdictionary/eds.py b/canopen/objectdictionary/eds.py index b03030d8..0e7ec9e7 100644 --- a/canopen/objectdictionary/eds.py +++ b/canopen/objectdictionary/eds.py @@ -274,10 +274,10 @@ def build_variable(eds, section, node_id, index, subindex=0): logger.warning("%s has an unknown or unsupported data type (%X)", name, var.data_type) # Assume DOMAIN to force application to interpret the byte data var.data_type = datatypes.DOMAIN - try: - var.pdo_mappable = bool(int(eds.get(section, "PDOMapping", fallback="0"), 0)) - except ValueError: - pass + + pdo_mappable_string = eds.get(section, "PDOMapping", fallback="0") + if pdo_mappable_string != "": + var.pdo_mappable = bool(int(pdo_mappable_string, 0)) if eds.has_option(section, "LowLimit"): try: