EVerest / everest-core

Apache License 2.0
92 stars 68 forks source link

Multiplexer module for ISO communication #776

Open corneliusclaussen opened 1 month ago

corneliusclaussen commented 1 month ago

This module starts and SDP server and waits for incoming V2G connections (TCP, and optionally TLS). Upon connection, it reads the SupportedAppProtocol.req message to determine if the EV supports ISO-20 or not.

If ISO-20 is supported, it transparently bridges the connection to the ISO-20 module (using TLS->TCP).

If the EV does not support ISO-20, it bridges to the ISO-2 module instead.

Both the required iso-2 and iso-20 modules only need TCP enabled, but they require to accept e.g. PnC on TCP sessions (as the actual communication to the EV may be TLS). Also the need to listen on localhost (::1) instead of the actual PLC device.

Describe your changes

Issue ticket number and link

Checklist before requesting a review

corneliusclaussen commented 1 month ago

What's missing: D20 module needs support for ::1 TCP connections via option, both modules need to allow PnC via option on TCP connection. Config files to be updated to actually use D20 module once it is merged.

corneliusclaussen commented 1 month ago

Stopping reviewing here as most of the code base is copied from the EvseV2G module (and therefore this would be more like a review for that code base). Nice to see that the proxying can be implemented that easy via the connection_proxy functions. I would recommend for the next time, when copying source files, that they are checked in with their initial/original content in a first commit - so it would be possible to track changes.

Thanks for your review, I'm not sure if it makes sense to fix the issues that are copy past from the EvseV2G module as it will make it harder to merge fixes done to EvseV2G into this module. This module is also just an intermediate solution until the D20 module supports DIN and ISO-2 as well.