pub trait FrameCallback: Send + Sync {
// Required method
fn on_frame_received(&self, frame: &PiperFrame);
// Provided method
fn on_frame_sent(&self, frame: &PiperFrame) { ... }
}Expand description
帧回调 Trait
定义 CAN 帧回调接口,用于在接收到帧时执行自定义逻辑。
§性能要求
- 非阻塞: 实现必须在 <1μs 内完成
- 无锁: 禁止使用 Mutex、I/O、分配等阻塞操作
- Channel 模式: 推荐使用
crossbeam::channel::Sender异步处理
§示例
use piper_driver::hooks::FrameCallback;
use piper_protocol::PiperFrame;
use crossbeam_channel::{Sender, bounded};
struct MyCallback {
sender: Sender<PiperFrame>,
}
impl FrameCallback for MyCallback {
fn on_frame_received(&self, frame: &PiperFrame) {
// ✅ 使用 try_send,非阻塞
let _ = self.sender.try_send(*frame);
}
}