v2.0
Major changes
- The TransportLayer handle its own timing by running an internal thread. No need to call
process
anymore - The user provided
rxfn
is expected to be blocking and respect a timeout passed as an argument. CPU throttling will be applied by calls tosleep()
if the given timeout is not respected. squash_stmin_requirement
has been replaced byoverride_receiver_stmin
- Many internal methods/properties have been prefixed with an underscore to indicates that they are internal
- The error handler is called from a different thread.
- The isotp.socket.recv does not return None on Timeout anymore
- Minimal Python version is 3.7
isotp.socket.bind
now requires anisotp.Address
object and is no more backward compatible with old interface
Improvements
- Timing behaviors has been globally improved. The pure python implementation running in the user space is able to reach similar timings as the kernel module when running on a vcan interface
- Blocking sends are now possible
- Added
NotifierBasedCanStack
which is an improved version of the CanStack object using a can.Notifier improving performances and avoiding starvation of other readers. - Asymmetric addressing is possible, meaning sending and receiving with different address schemes
- ConsecutiveFrame wait period can be achieved by a user-passed function (default to time.sleep)
- Possible to send data using a generator
- Test suite is more robust
- Type hints are coupled with the code
Bugfix
- Fixed missing parameter check in
Address
- Receiving a wait frame when wftmax is set to 0 triggers the error handle only when reception is not idle.