Skip to content

ixxat: can.Notifier/Listener stops on too many errors #1643

@henzef

Description

@henzef

Describe the bug

I am currently porting my application from python-can 3.3.4 to 4.x and noticed that the IXXAT implementation changed quite a lot. The new version raises much more exceptions than before, which breaks my usecase and I am unsure if there is a non-hacky way to get back the old behaviour.

The issue happens when registering a can.Listener/Notifier as a background thread and the IXXAT reports errors (e.g. because another controller on the bus sends something in a different baudrate). In that case an exception is raised in the receiver thread and it stops, which is permanent even if the bus errors recover.
The old implementation would just continue to call recv() till it succeeds and that's the behaviour I rely on in my code. Would it be possible to add e.g. a config flag to ignore such non-fatal errors?

To Reproduce

Nothing special, just a can.Listener/Notifier and another CAN controller with a different baudrate is sending data on the bus.

Expected behavior

Either non-fatal errors should be:

  • ignored
  • Communicated via some side-channel (e.g. some get_controller_warning_flags() function)
  • Configurable to be disabled

Additional context

OS and version: Windows 10
Python version: 3.9.x
python-can version: 4.2.2
python-can interface/s (if applicable): IXXAT

Metadata

Metadata

Assignees

No one assigned

    Labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions