X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;ds=sidebyside;f=README.mkd;h=8f9574fcf55a8b7615d6d357ef1d57710653b507;hb=96160fc20d2c939e73773f3fbec2f2fd9482dcf4;hp=041eff4ed939ed85e14219b728e40cf1d65885f6;hpb=af99c224668bdd1e952119cffc274a74b98b5d59;p=apps%2Flow-level-can-service.git diff --git a/README.mkd b/README.mkd index 041eff4..8f9574f 100644 --- a/README.mkd +++ b/README.mkd @@ -1,9 +1,11 @@ -OBD-II Support Library in C -============================= +Unified Diagnostic Services (UDS) Support Library in C +====================================================== -This is a platform agnostic C library that implements the standard On Board -Diagnostics system for vehicles. It currently supports OBD-II running over CAN -(ISO 15765-4), which uses the ISO-TP (ISO 15765-2) protocol underneath. +This is a platform agnostic C library that implements the Unified Diagnostics +Services protocol for automotive electronics. UDS is documented in ISO 14229 and +is the underpinning for the more well-known On-board Diagnostics (OBD) standard. +The library currently supports UDS running over CAN (ISO 15765-4), which uses +the ISO-TP (ISO 15765-2) protocol for message framing. This library doesn't assume anything about the source of your diagnostic message requests or underlying interface to the CAN bus. It uses dependency injection to @@ -17,7 +19,7 @@ system: // required, this must send a single CAN message with the given arbitration // ID (i.e. the CAN message ID) and data. The size will never be more than 8 // bytes. - void send_can(const uint16_t arbitration_id, const uint8_t* data, + bool send_can(const uint16_t arbitration_id, const uint8_t* data, const uint8_t size) { ... } @@ -37,8 +39,8 @@ With your shims in place, create a `DiagnosticShims` object to pass them around: DiagnosticShims shims = diagnostic_init_shims(debug, send_can, set_timer); -With your shims in hand, send a simple PID request to the stadnard broadcast -address, `0x7df`: +With your shims in hand, send a simple PID request to the standard broadcast +address, `0x7df` (we use the constant `OBD2_FUNCTIONAL_BROADCAST_ID` here): // Optional: This is your callback that will be called the response to your // diagnostic request is received. @@ -48,7 +50,7 @@ address, `0x7df`: DiagnosticRequestHandle handle = diagnostic_request_pid(&shims, DIAGNOSTIC_STANDARD_PID, // this is a standard PID request, not an extended or enhanced one - 0x7df, // the request is going out to the broadcast arbitration ID + OBD2_FUNCTIONAL_BROADCAST_ID, // the request is going out to the broadcast arbitration ID 0x2, // we want PID 0x2 response_received_handler); // our callback (optional, use NULL if you don't have one) @@ -97,7 +99,7 @@ If you want to do more besides PID requests on mode 0x1 and 0x22, there's a lower level API you can use. Here's how to make a mode 3 request to get DTCs. DiagnosticRequest request = { - arbitration_id: 0x7df, + arbitration_id: OBD2_FUNCTIONAL_BROADCAST_ID, mode: OBD2_MODE_EMISSIONS_DTC_REQUEST }; DiagnosticRequestHandle handle = diagnostic_request(&SHIMS, &request, NULL);