#can-bus #socket-can #can #config-file #message-bus #pcan

multican

Provides connections to multiple CAN busses at the same time. Allows use of different types of networks

9 releases (5 breaking)

0.6.0-beta.1 Aug 21, 2020
0.6.0-beta.0 Jun 26, 2020
0.5.0 Jun 4, 2020
0.4.0 May 7, 2020
0.1.1 Oct 28, 2019

#691 in Hardware support

22 downloads per month

MIT license

42KB
880 lines

MultiCan

Library that supports different CANBUS scenarios, especially those that require multiple busses to operate at the same time.

Typical usage: 3 busses, using mixed network types

[[can_networks]]
id = 0
kind = "socketcan"

[[can_networks]]
id = 1
kind = "socketcan"

[[can_networks]]
id = 2
kind = "udp"

// read the config file however you'd like
let network_config = read_config("can.toml");
let network = multican::from_config(network_config);

// receive from all busses:
for rx in network.recv() {
    println!("RX: {:?}", rx);
}

// send a message to bus 2
let m = CanMessage { bus: 2, header: 0x12345678, data: vec![1, 2, 3, 4] };
network.send(m);

Dependencies

~3–5MB
~98K SLoC