diff --git a/canopen_monitor/__init__.py b/canopen_monitor/__init__.py index 90fe29a..393f540 100755 --- a/canopen_monitor/__init__.py +++ b/canopen_monitor/__init__.py @@ -2,7 +2,7 @@ MAJOR = 3 MINOR = 3 -PATCH = 2 +PATCH = 3 APP_NAME = 'canopen-monitor' APP_DESCRIPTION = 'An NCurses-based TUI application for tracking activity' \ diff --git a/canopen_monitor/app.py b/canopen_monitor/app.py index 24c25fd..6aa57cf 100644 --- a/canopen_monitor/app.py +++ b/canopen_monitor/app.py @@ -179,7 +179,8 @@ def __enter__(self: App) -> App: style=curses.color_pair(1)) self.hb_pane = MessagePane(cols={'Node ID': ('node_name', 0), 'State': ('state', 0), - 'Status': ('message', 0)}, + 'Status': ('message', 0), + 'Error': ('error', 0)}, types=[MessageType.HEARTBEAT], parent=self.screen, height=int(height / 2) - 1, @@ -192,7 +193,8 @@ def __enter__(self: App) -> App: 'Node Name': ('node_name', 0), 'Type': ('type', 0), 'Age': ('age', 0), - 'Message': ('message', 0)}, + 'Message': ('message', 0), + 'Error': ('error', 0)}, types=[MessageType.NMT, MessageType.SYNC, MessageType.TIME, diff --git a/canopen_monitor/can/message_table.py b/canopen_monitor/can/message_table.py index 7884b4c..9cbfd2a 100644 --- a/canopen_monitor/can/message_table.py +++ b/canopen_monitor/can/message_table.py @@ -10,7 +10,7 @@ def __init__(self: MessageTable, parser=None): def __add__(self: MessageTable, message: Message) -> MessageTable: if(self.parser is not None): message.node_name = self.parser.get_name(message) - message.message = self.parser.parse(message) + message.message, message.error = self.parser.parse(message) self.table[message.arb_id] = message return self diff --git a/canopen_monitor/parse/canopen.py b/canopen_monitor/parse/canopen.py index dddb464..4e03c68 100644 --- a/canopen_monitor/parse/canopen.py +++ b/canopen_monitor/parse/canopen.py @@ -23,7 +23,7 @@ def get_name(self, message: Message) -> Union[str, None]: return parser.device_commissioning.node_name \ if parser else hex(message.node_id) - def parse(self, message: Message) -> str: + def parse(self, message: Message) -> (str, str): """ Detect the type of the given message and return the parsed version @@ -64,8 +64,9 @@ def parse(self, message: Message) -> str: parsed_message = parse_function(message.arb_id, message.data, eds_config) + error = "" except (FailedValidationError, TypeError) as exception: - parsed_message = f"{format_bytes(message.data)} " \ - f"Parse Error: {str(exception)}" + parsed_message = format_bytes(message.data) + error = str(exception) - return parsed_message + return parsed_message, error