This is an OBD-II emulator via CAN over Linux that handles diagnostics queries of OBD2 scanners. The emulator listens to the CAN packets coming from the USB-CAN Analyzer device over a serial communication and by using the device CAN driver, converts the packets to CAN frames. Then the OBD emulator extracts the parameter ID (PID) from the frames and routes them to the corresponding OBD service as shown below:
+-------------------------+
| Serial Communication : |
| Communication Layer |
+------------|------------+
|
Byte Array
|
+-------------------------+
| CAN Driver |
| |
+------------|------------+
|
CAN Frame
|
+------------|------------+
| OBD Emulator |
| |
/------------|------------\
/- | -\
PID PID PID
/- | -\
+-------------------------- +------------|------------+ --------------------------+
| OBD Service(0) | | OBD Service(i) | | OBD Service(n) |
| | | | | |
+-------------------------+ +-------------------------+ +-------------------------+
The current library has two categories of dependency as follows:
⚠️ If after loading the driver, the analyzer is got disconnected because of brltty (which can be seen via launching
sudo dmesg | grep tty
in the termnial), then follow this solution.
The library documentation is available from GitHub Pages which is powered by Doxygen .
The library samples build is disabled by default. To be able to build the library with the samples, following bash command can be used:
cmake -S . -B build -Dbuild_samples=ON
cmake --build build
# To run the tests:
cd build && ctest