The communication layer of the OBD-II API uses the ISO-TP transport protocol when creating a CAN socket. Only one process can be bound to a given send/receive ID pair at one time. As a result, multiple processes cannot use the API simultaneously. We can remedy this problem by implementing a userspace daemon that vends the API to interested clients.
Approach
We will use dbus to vend the OBD-II functionality to interested clients.
Example clients
A logger that periodically logs diagnostic data to a file
A command line interface that provides interactive querying of diagnostic data
Design
The dbus API that is exposed by the daemon still needs to be designed.
The initial design and implementation of the userspace daemon is finished (2499b8dbe1a1305a6f3882d9243968c3b16bba21). We've opted not to use dbus. Instead, the daemon uses an extremely simple binary protocol documented in daemon.md.
Overview
The communication layer of the OBD-II API uses the ISO-TP transport protocol when creating a CAN socket. Only one process can be bound to a given send/receive ID pair at one time. As a result, multiple processes cannot use the API simultaneously. We can remedy this problem by implementing a userspace daemon that vends the API to interested clients.
Approach
We will use dbus to vend the OBD-II functionality to interested clients.
Example clients
Design
The dbus API that is exposed by the daemon still needs to be designed.