X-Git-Url: https://gerrit.automotivelinux.org/gerrit/gitweb?a=blobdiff_plain;f=README.md;h=2be7c10ca82a691e13381663e61fa195644e7877;hb=fba381d2003787a719252400487d3e6b9f2d1fdb;hp=a56971ea06fefd03317874c9214ebccda4794279;hpb=e9788f71fb5a4be6bc69605539b0135f0ba1829a;p=apps%2Fagl-service-can-low-level.git diff --git a/README.md b/README.md index a56971ea..2be7c10c 100644 --- a/README.md +++ b/README.md @@ -42,6 +42,117 @@ is sent as a JSON object, separated by newlines. The format of each object is: a hexidecimal number in a string. Many JSON parser cannot handle 64-bit integers, which is why we are not using a numerical data type. +## Diagnostic Messages + +### Requests + +A request to add or update a diagnostic request is sent to a vehicle interface +with this command format: + + { "command": "diagnostic_request", + "request": { + "bus": 1, + "id": 1234, + "mode": 1, + "pid": 5, + "payload": "0x1234", + "parse_payload": true, + "factor": 1.0, + "offset": 0, + "frequency": 1 + } + } + } + +**bus** - the numerical identifier of the CAN bus where this request should be + sent, most likely 1 or 2 (for a vehicle interface with 2 CAN controllers). + +**id** - the CAN arbitration ID for the request. + +**mode** - the OBD-II mode of the request - 1 through 15 (1 through 9 are the + standardized modes). + +**pid** - (optional) the PID for the request, if applicable. + +**payload** - (optional) up to 7 bytes of data for the request's payload + represented as a hexidecimal number in a string. Many JSON parser cannot + handle 64-bit integers, which is why we are not using a numerical data type. + +**parse_payload** - (optional, false by default) if true, the complete payload in the + response message will be parsed as a number and returned in the 'value' field of + the response. The 'payload' field will be omitted in responses with a + 'value'. + +**factor** - (optional, 1.0 by default) if `parse_payload` is true, the value in + the payload will be multiplied by this factor before returning. The `factor` + is applied before the `offset`. + +**offset** - (optional, 0 by default) if `parse_payload` is true, this offset + will be added to the value in the payload before returning. The `offset` is + applied after the `factor`. + +**frequency** - (optional, defaults to 0) The frequency in Hz to send this + request. To send a single request, set this to 0 or leave it out. + +The `bus+id+mode+pid` key is unique, so if you send a create request with that +key twice, it'll overwrite the existing one (i.e. it will change the frequency, +the only other parameter). To cancel a recurring request, send this command with +the frequency set to 0. + +TODO it'd be nice to have the OBD-II PIDs built in, with the proper conversion +functions - that may need a different output format + +If you're just requesting a PID, you can use this minimal field set for the +`request` object: + + {"bus": 1, "id": 1234, "mode": 1, "pid": 5} + +### Responses + + {"bus": 1, + "id": 1234, + "mode": 1, + "pid": 5, + "success": true, + "negative_response_code": 17, + "payload": "0x1234", + "parsed_payload": 4660} + +**bus** - the numerical identifier of the CAN bus where this response was + received. + +**id** - the CAN arbitration ID for this response. + +**mode** - the OBD-II mode of the original diagnostic request. + +**pid** - (optional) the PID for the request, if applicable. + +**success** - true if the response received was a positive response. If this + field is false, the remote node returned an error and the + `negative_response_code` field should be populated. + +**negative_response_code** - (optional) If requested node returned an error, + `success` will be `false` and this field will contain the negative response + code (NRC). + +Finally, the `payload` and `value` fields are mutually exclusive: + +**payload** - (optional) up to 7 bytes of data returned in the response, + represented as a hexadecimal number in a string. Many JSON parser cannot + handle 64-bit integers, which is why we are not using a numerical data type. + +**value** - (optional) if the response had a payload, this may be the + payload interpreted as an integer and transformed with a factor and offset + provided with the request. + +The response to a simple PID request would look like this: + + {"bus": 1, "id": 1234, "mode": 1, "pid": 5, "payload": "0x2"} + +TODO again, it'd be nice to have the OBD-II PIDs built in, with the proper +conversion functions so the response here included the actual transformed value +of the pid and a human readable name + ## Trace File Format An OpenXC vehicle trace file is a plaintext file that contains JSON objects,