#bus #priority #message #pool #order #hash #serialization

vhrdcan

用于处理 CAN 总线的类型,包括适当的优先级排序、消息池、序列化和哈希支持

1 个不稳定版本

0.1.0 2021 年 7 月 11 日

#12 in #ordering


mcp25625 中使用

MIT 许可

13KB
347

vhrdcan

FrameId

检查 CAN 总线标识符,可以是 StandardId 或 ExtendedId。构造函数是 const fn,因此可以在编译时检查 ID 是否有效

const MOTOR_DRIVE_ID: FrameId = FrameId::new_extended(0x1).unwrap();
const EMERGENCY_STOP_ID: FrameId = FrameId::new_standard(0x0).unwrap();

RawFrameRef

包含 FrameId + 对 [u8] 切片的引用。可以用来创建一个帧,而无需复制数据。

RawFrame

包含 FrameId + 所有者 [u8; 8] 数组 + 长度以确定实际使用的字节数。

Frame

包含 RawFrame + 序列号。只能从 FramePool 安全创建,以保留消息顺序并避免各种错误,例如优先级反转(CAN 总线驱动程序也应仔细检查优先级反转,尤其是在它有几个发送缓冲区的情况下)。

FramePool

允许创建 Frame,同时保留它们的创建时间。

特质

OrdHashhash32::Hash、漂亮的 DebugEqPartialEqCopyClone 已实现。 SerializeDeserializeserialization 功能门后面。

依赖

~2MB
~52K SLoC