I am currently working on enhancing the OBD II driver for a project and would like to see what features people are looking for and get some suggestions/thoughts on some new implementation options.
Where I am at currently:
- Enhanced Mode 1 to include more methods including requesting number of DTC codes, MIL light status, Engine Load, request list of supported PIDS, etc
- Added very basic Mode 2 (I have not been able to test this as my car does not support it)
- Added Mode 3, requests current DTC codes and returns a string array with the P,C,U, etc codes
- Added Mode 4 to clear any DTC codes
- Enhanced Mode 9 to request ECU ID and CAL ID
Find a car that supports Mode 2 for basic function testing
I have found that some cars (specifically hybrids in my case) give multiple returns for some PIDs, for example if I request engine speed, 3 different speeds are returned (I assume Gas Motor, E-Motor and ?).
This unfortunately changes a big part of the driver concept. My first thought is to create a new PID return object that contains the ECU ID, HEX Return Value, and Physical value and have each PID request return an array of these PID return objects. Currently with the documentation I have I cannot identify which motor speed is which as I do not know the controller IDs and if they are constant across auto makers. So if anyone has some information to share in that area, it would be extremely helpful.
I will post my code once I get a few things cleaned up and commented, but I thought I would open a discussion before I go too far down a path that is specific to my application.