You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
The Broadcast Manager protocol provides a command based configuration
interface to filter and send (e.g. cyclic) CAN messages in kernel space.
Filtering messages in kernel space may significantly reduce the load in an application.
A BCM socket is not intended for sending individual CAN frames.
To send invidiual frames use the tokio-socketcan crate.
This crate would not have been possible without the socketcan crate.
Example
use std::time;use futures_util::stream::StreamExt;use tokio_socketcan_bcm::{BCMSocket,Id,StandardId};#[tokio::main]asyncfnmain(){let socket = BCMSocket::open_nb("vcan0").unwrap();let ival = time::Duration::from_millis(0);// create a stream of messages that filters by the can frame id 0x123let id = Id::Standard(StandardId::new(0x123).unwrap());letmut can_frame_stream = socket
.filter(id, ival, ival).unwrap();whileletSome(frame) = can_frame_stream.next().await{println!("Frame {:?}", frame);()}}
About
Asynchronous Linux SocketCAN - Broadcast Manager support (BCM) with tokio