Previously, the address of the CAN device (`CANbaseAddress`)
was specified as a signed or unsigned integer of variable size.
This made the ABI specific for each driver and is not generic
enough for some use cases.
Replaced all usages by using a void pointer instead.
Renamed `CANbaseAddress` to `CANdevicePtr`.
Refactored the code where it needed to be (some comparisons to -1).
Use a pointer to a user-defined variable/structure instead of
a 32-bit integer for CANbaseAddress. Renamed CANbaseAddress
to CANbaseStruct to reflect that change in behavior.
This is more modular and avoids casts.
This driver is more sophisticated than the normal socketCAN driver. Compared
to the normal socketCAN driver, this one contains the linking exception license.
Changes compared to normal socketCAN driver:
- Re-implementation based on driver template
- Error detection works
- Setting up filters works properly
- Optional Support for socketCAN error frames. This currently handles bus-off
and no-ack condition by setting driver into listen-only mode. If you decide
to use this feature have a close look at your own requirements and fit
error handling functions to that.
- Optional support for CAN interface combining (not redundancy!). With this
feature enabled you can have multiple CAN interface represented as one within
CANopenNode stack. By default, all TX messages are sent on all used CAN
interfaces, but the user can change this behaviour inside own app (e.g. check
on wich bus rx-sdo is received and set-up tx-sdo accordingly).
Be aware that no bridging between the interfaces is done!