Change dataflow from pulling to pushing. Service modules (EVNotify) register with the active car module and get called when new data is available. This removes the need for the rwlock. Removes dependency "readerwriterlock".
Rewrite SocketCAN to directly use Python's socket API. Greatly reduces CPU load. Removes dependency "python-can".
Rewrite serial based CAN adapters to share as much code as possible and get rid of "pexpect" dependency.
CAN adapters return data as linear bytearrays. No more decoding by frame number and offset. Makes decoders cleaner for cases where fields wrapped around multiple frames.
Flatten data structures so the car modules don't need to know about EVNotify API requirements.
Add alpha support for new Zoe Z.E.50
Various minor bug fixes.
Thresholds of I2C watchdog may be changed through config. Applied at startup of evnotipi, stay active until restart of I2C watchdog.
If poll interval of car is smaller than transmit intervall to EVNotify some data will be averaged over transmit interval.