Metadata-Version: 2.4
Name: jumpstarter-driver-uds-can
Version: 0.8.2.dev113+gb19d6327f
Summary: UDS (Unified Diagnostic Services) over CAN/ISO-TP driver for Jumpstarter
Project-URL: Homepage, https://jumpstarter.dev
Project-URL: source_archive, https://github.com/jumpstarter-dev/repo/archive/b19d6327fda749bdd72caf050a458788ab29375f.zip
Author-email: Vinicius Zein <vtzein@gmail.com>
License-Expression: Apache-2.0
Requires-Python: >=3.11
Requires-Dist: can-isotp>=2.0.6
Requires-Dist: jumpstarter
Requires-Dist: jumpstarter-driver-can
Requires-Dist: jumpstarter-driver-uds
Requires-Dist: python-can>=4.5.0
Requires-Dist: udsoncan>=1.21
Description-Content-Type: text/markdown

# UDS over CAN Driver

`jumpstarter-driver-uds-can` provides UDS (Unified Diagnostic Services, ISO-14229)
operations over CAN/ISO-TP (ISO-15765) transport for Jumpstarter. This enables
remote automotive ECU diagnostics over CAN bus.

For UDS over DoIP (automotive Ethernet), see `jumpstarter-driver-uds-doip`.
For raw CAN and ISO-TP operations, see `jumpstarter-driver-can`.

## Installation

```shell
pip3 install --extra-index-url https://pkg.jumpstarter.dev/simple/ jumpstarter-driver-uds-can
```

## Configuration

| Parameter          | Type   | Default      | Description                                     |
|--------------------|--------|--------------|-------------------------------------------------|
| `channel`          | str    | required     | CAN channel (e.g. `can0`, `vcan0`)              |
| `interface`        | str    | `socketcan`  | python-can interface type                        |
| `rxid`             | int    | required     | ISO-TP receive arbitration ID                    |
| `txid`             | int    | required     | ISO-TP transmit arbitration ID                   |
| `request_timeout`  | float  | 5.0          | UDS request timeout in seconds                   |
| `isotp_params`     | IsoTpParams | `{}`    | ISO-TP parameters (stmin, blocksize, etc.)       |

### ISO-TP Parameters

| Parameter                     | Type   | Default | Description                          |
|-------------------------------|--------|---------|--------------------------------------|
| `stmin`                       | int    | 0       | Minimum separation time (ms)         |
| `blocksize`                   | int    | 8       | Number of consecutive frames         |
| `tx_data_length`              | int    | 8       | CAN frame data length                |
| `max_frame_size`              | int    | 4095    | Maximum ISO-TP frame size            |
| `can_fd`                      | bool   | false   | Use CAN FD                           |
| `blocking_send`               | bool   | false   | Use blocking send                    |

### Example exporter configuration

```yaml
export:
  uds:
    type: jumpstarter_driver_uds_can.driver.UdsCan
    config:
      channel: "can0"
      interface: "socketcan"
      rxid: 1601  # 0x641
      txid: 1602  # 0x642
      request_timeout: 5
      isotp_params:
        stmin: 32
        blocksize: 8
        tx_data_length: 8
```

## Client API

The client API is shared by all UDS transport drivers via `jumpstarter-driver-uds`.
See the UDS driver documentation for the full API reference.

| Method                                | Description                                  |
|---------------------------------------|----------------------------------------------|
| `change_session(session)`             | Change diagnostic session                    |
| `ecu_reset(reset_type)`              | Reset ECU                                    |
| `tester_present()`                    | Keep session alive                           |
| `read_data_by_identifier(did_list)`   | Read DID values                              |
| `write_data_by_identifier(did, value)`| Write DID value                              |
| `request_seed(level)`                 | Request security access seed                 |
| `send_key(level, key)`               | Send security access key                     |
| `clear_dtc(group)`                    | Clear diagnostic trouble codes               |
| `read_dtc_by_status_mask(mask)`       | Read DTCs matching status mask               |
