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

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

#595 in Hardware support

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–5.5MB
~100K SLoC