This is a C++ library implementation of ISO 15118-20, ISO15118-2 and DIN70121. The implementation of ISO15118-20 is currently under heavy development. DIN70121 and ISO15118-2 will follow and are currently covered by the EvseV2G module of everest-core.
The following table shows the current support for the listed EVSE ISO15118-20 features.
Feature | Supported |
---|---|
TCP, TLS 1.2 & 1.3 | ✔️ |
DC, DC_BPT | ✔️ |
AC, AC_BPT | WIP |
WPT | |
ACDP | |
ExternalPayment | ✔️ |
Plug&Charge | WIP |
CertificateInstallation | |
Scheduled Mode | ✔️ |
Dynamic Mode (+ MobilityNeedsMode) | ✔️ |
Private Env | |
Pause/Resume & Standby | WIP |
Schedule Renegotation | |
Smart Charging | |
Multiplex messages | |
Internet Service | |
Parking Status Service |
ISO15118 support is distributed accross multiple repositories and modules in EVerest. Please see the following references of other ISO15118 related development:
- Some functionality of part 2 of ISO 15118 is integrated in the EvseManager module in the everest-core repository.
- Current development for an EXI code generator (as used in the ISO 15118 protocol suite) is ongoing in the cbexigen repository.
- The repository libSlac contains definitions of SLAC messages that are used for ISO 15118 communication.
- DIN70121 & ISO15118-2 funcationality can be found in EVerest module EvseV2G
To build this library you need everest-cmake checkout in the same directory as libiso15118.
# Run cmake (BUILD_TESTING to enable/disable unit tests)
cmake -S . -B build -G Ninja -DBUILD_TESTING=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON
# Run cmake with disabled compiler warnings
cmake -S . -B build -G Ninja -DBUILD_TESTING=ON -DCMAKE_EXPORT_COMPILE_COMMANDS=ON -DISO15118_COMPILE_OPTIONS_WARNING=""
# Build
ninja -C build
# Running tests
ninja -C build test
# Generating a code coverage (BUILD_TESTING should be enabled)
ninja -C build iso15118_gcovr_coverage
The coverage report will be available in the index.html file in the build/iso15118_gcovr_coverage
directory.
Version 8.2 or higher of gcovr is required for the coverage report. Install gcovr release from PyPI:
pip install gcovr
Run the cmake (from the build dir) with the debug commands on:
cmake .. -DCMAKE_BUILD_TYPE=Debug -DBUILD_TESTING=ON
Run the GDB debugger with the following configuration:
{
"name": "(gdb) Launch LIBISO TESTS",
"type": "cppdbg",
"request": "launch",
"program": "${workspaceFolder}/libiso15118/build/test/iso15118/fsm/test_d20_transitions",
"args": [],
"stopAtEntry": false,
"cwd": "${workspaceFolder}/libiso15118/build/test/iso15118/fsm/",
"environment": [],
"externalConsole": false,
"MIMode": "gdb",
"setupCommands": [
{
"description": "Enable pretty-printing for gdb",
"text": "-enable-pretty-printing",
"ignoreFailures": true
},
{
"description": "Set Disassembly Flavor to Intel",
"text": "-gdb-set disassembly-flavor intel",
"ignoreFailures": true
}
]
},
Replace the program
path to any test executable you are debugging.
This library has thankfully received support from the German Federal Ministry for Economic Affairs and Climate Action. Information on the corresponding research project can be found here (in German only): InterBDL research project.