can_adapter

Crates.iocan_adapter
lib.rscan_adapter
version0.5.0
created_at2024-12-23 14:15:22.911701+00
updated_at2025-07-26 19:01:29.157626+00
descriptionLibrary to load CAN adapters typically used to diagnose vehicles.
homepagehttps://github.com/SolidDesignNet/rp1210-rs
repositoryhttps://github.com/SolidDesignNet/rp1210-rs
max_upload_size
id1493110
size119,477
Joe Batt (battjt)

documentation

README

CAN Adapter API

J2534 is a work in progress, but RP1210, SLCAN, and SocketCAN work.

Brokers packets from a queue to and from the attached adapter. Includes:

  1. Discovering configured adapters
  2. Bus that supports multiple listeners
  3. packet that encapsulates the byte[] (called J1939Packet. Needs to be enhanced to support raw CAN, 11 bit CAN, etc.)
  4. simulator for unit testing

Usage for command line J1939 logger

CAN tool

Usage: logger [OPTIONS] <CONNECTION> <COMMAND>

Commands:
  log        Dump Vector ASC compatible log to stdout
  server     Used for testing.  Requires another instance to send or ping this source address
  ping       Latency test. Ping [da] with as many requests as it will respond to
  bandwidth  Bandwidth test.  Send as much data to [da] with as many requests as it will respond to
  send       Send arbitrary CAN message
  vin        Read the VIN
  uds        Common UDS requests. See "uds --help" for more
  j1939      Common J1939 requests. See "j1939 --help" for more
  help       Print this message or the help of the given subcommand(s)

Arguments:
  <CONNECTION>  For a list of possible connections, "cancan list log".  Available connection strings will vary depending on the machine

Options:
  -s, --sa <SOURCE_ADDRESS>       Adapter Address (used for packets send and transport protocol) [default: 0xF9]
  -d, --da <DESTINATION_ADDRESS>  Adapter Address (used for packets send and transport protocol) [default: 0xFF]
  -t, --timeout <TIMEOUT>         Timeout in ms [default: 2000]
  -v, --verbose                   
  -h, --help                      Print help
  -V, --version                   Print version

  • log does what you would expect and prints all of the packets to stdout in a format simir to Vector's .ASC files.
  • server, ping, and bandwidth are used to performance test adapters.
  • send sends an arbitrary packet specified in a format similar to Vector's ASC file format.
  • vin reads the VIN from address 0 and broadcast. It is used as a demonstration.
  • uds is intended to be a command line implementation of ISO14229. It currently supports ISO15765.
  • j1939 allows J1939 requests. It currently supports receiving J1939-21 transport protocol. Sending transport protocol has not be validated beyond a self test.
  • --sa and --da are to configure RP1210 adapters have have built in support for J1939-21 transport protocol.

API

See main.rs implmentation for fn vin(...) https://github.com/SolidDesignNet/can_adapter/blob/main/src/main.rs#L357

Applications

When combined with DBC or J1939DA parsing, this becomes a light weight CAN logger. See https://github.com/SolidDesignNet/j1939logger.

Note for Linux setup:

slcan setup:

chmod a+rw /dev/ttyACM0

then the logger can be used to log all J1939 requests and TP packets between F9 and 00:

logger 'slcan /dev/ttyACM0 500' log | egrep 'E[ABC]..(00|F9)'

PEAK

ip link set can0 name peak
ip link set peak type can bitrate 500000
ip link set peak up
Commit count: 62

cargo fmt