diff options
author | Christopher Peplin <chris.peplin@rhubarbtech.com> | 2014-01-20 15:22:27 -0500 |
---|---|---|
committer | Christopher Peplin <chris.peplin@rhubarbtech.com> | 2014-01-20 15:22:27 -0500 |
commit | 46fb0eb96e8efd285c2a0cccf699862ed21717ed (patch) | |
tree | 2107aa0fa9a382c006f73d5cdcdd18b586d4d229 /src/uds/extras.h | |
parent | 6ebad2aac3ba2f0d7ff5e37c5db4e5b9549247e2 (diff) |
Rename from simply obd2 to more general UDS (unified diagnostics).
Fixed #1.
Diffstat (limited to 'src/uds/extras.h')
-rw-r--r-- | src/uds/extras.h | 73 |
1 files changed, 73 insertions, 0 deletions
diff --git a/src/uds/extras.h b/src/uds/extras.h new file mode 100644 index 00000000..c59c7bad --- /dev/null +++ b/src/uds/extras.h @@ -0,0 +1,73 @@ +#ifndef __EXTRAS_H__ +#define __EXTRAS_H__ + +#include <uds/uds_types.h> + +#ifdef __cplusplus +extern "C" { +#endif + +// TODO everything in here is unused for the moment! + +typedef enum { + POWERTRAIN = 0x0, + CHASSIS = 0x1, + BODY = 0x2, + NETWORK = 0x3 +} DiagnosticTroubleCodeGroup; + +typedef struct { + DiagnosticTroubleCodeGroup group; + uint8_t group_num; + uint8_t code; +} DiagnosticTroubleCode; + + +/* Private: TODO unused for now + */ +typedef enum { + DTC_EMISSIONS, + DTC_DRIVE_CYCLE, + DTC_PERMANENT +} DiagnosticTroubleCodeType; + + +// TODO should we enumerate every OBD-II PID? need conversion formulas, too +typedef struct { + uint16_t pid; + uint8_t bytes_returned; + float min_value; + float max_value; +} DiagnosticParameter; + +typedef void (*DiagnosticMilStatusReceived)(bool malfunction_indicator_status); +typedef void (*DiagnosticVinReceived)(uint8_t vin[]); +typedef void (*DiagnosticTroubleCodesReceived)( + DiagnosticMode mode, DiagnosticTroubleCode* codes); +typedef void (*DiagnosticPidEnumerationReceived)( + const DiagnosticResponse* response, uint16_t* pids); + +DiagnosticRequestHandle diagnostic_request_malfunction_indicator_status( + DiagnosticShims* shims, + DiagnosticMilStatusReceived callback); + +DiagnosticRequestHandle diagnostic_request_vin(DiagnosticShims* shims, + DiagnosticVinReceived callback); + +DiagnosticRequestHandle diagnostic_request_dtc(DiagnosticShims* shims, + DiagnosticTroubleCodeType dtc_type, + DiagnosticTroubleCodesReceived callback); + +bool diagnostic_clear_dtc(DiagnosticShims* shims); + +DiagnosticRequestHandle diagnostic_enumerate_pids(DiagnosticShims* shims, + DiagnosticRequest* request, DiagnosticPidEnumerationReceived callback); + +// TODO +float diagnostic_decode_OBD2_pid(DiagnosticResponse* response); + +#ifdef __cplusplus +} +#endif + +#endif // __EXTRAS_H__ |