7 个版本 (3 个稳定版)

新版本 2.0.0 2024年8月9日
1.1.0 2024年5月23日
1.0.0 2024年3月22日
0.1.6 2024年2月15日
0.1.0 2021年6月14日

#1715魔法豆

Download history 7/week @ 2024-05-02 1/week @ 2024-05-09 12/week @ 2024-05-16 161/week @ 2024-05-23 46/week @ 2024-05-30 42/week @ 2024-06-06 35/week @ 2024-06-13 46/week @ 2024-06-20 19/week @ 2024-06-27 29/week @ 2024-07-04 111/week @ 2024-07-11 86/week @ 2024-07-18 61/week @ 2024-07-25 28/week @ 2024-08-01

297 次每月下载
10 个crate(4个直接)中使用

MIT 许可证

74KB
1.5K SLoC

SV2 协议是二进制的,具有固定消息封装。每个消息以扩展类型、消息类型和消息长度(共六字节)开始,之后是可变长度的消息。

此crate提供了封装 SV2 二进制消息的原始功能。

以下概述了消息封装(根据 SV2 规范

协议类型 字节长度 描述
extension_type U16 描述此协议消息的唯一标识符。

最高位(即位 150-索引,又称 channel_msg)表示特定于通道的消息,而如果最高位未设置,则消息应由直接接收设备解释。

注意,在扩展查找中忽略 channel_msg 位,即 0x8ABCextension_type0x0ABC 是相同的“扩展”。

如果 channel_msg 位设置,负载字段的前四个字节是一个表示消息目的地 channel_idU32(这些字节在下面的消息帧描述中重复)。

注意,对于作业声明和模板分发协议,channel_msg 位始终未设置。
msg_type U8 描述此协议消息的唯一标识符。
msg_length U24 协议消息的长度,不包括此头部。
payload BYTES 长度为 msg_length 的消息特定负载。如果 extension_typechannel_msg 位)中的最高位设置,则前四个字节定义为 U32 ""channel_id"",尽管这个定义在下面的消息定义中重复,但这些4个字节包含在 msg_length 中。

特性

可以使用以下特性构建此包

  • with_serde:使用基于 serde 的编码和解码构建 binary_sv2buffer_sv2 包。
  • with_buffer_pool:使用 buffer_sv2non_std 环境提供更有效的分配方法。请参阅 buffer_sv2 包文档以获取更多上下文。

with_serde 功能标志仅用于消息生成器,对于任何其他类型的用法已弃用。它可能在未来完全弃用。

依赖项

~8MB
~102K SLoC