5个版本 (3个稳定版本)
2.0.1 | 2024年4月15日 |
---|---|
2.0.0 | 2024年4月3日 |
1.0.1 | 2024年2月22日 |
0.2.0 | 2024年2月4日 |
0.1.0 | 2023年10月13日 |
#45 in #packet-parser
28KB
678 行
crsf-rs
该软件包提供了对crossfire协议的#[no_std]解析器。
示例
查看示例目录。
文档
暂不可用。
许可证
根据MIT许可证许可。
贡献
欢迎贡献代码,因为这个项目仍在进行中。
lib.rs
:
该软件包提供了对crossfire协议的#[no_std]解析器。
使用方法
数据包解析
use crsf::{PacketParser, PacketAddress, PacketType};
let mut parser = PacketParser::<1024>::new();
// Sync
parser.push_bytes(&[PacketAddress::Controller as u8]);
// Len
parser.push_bytes(&[24]);
// Type
parser.push_bytes(&[PacketType::RcChannelsPacked as u8]);
// Payload
parser.push_bytes(&[0; 22]);
// Checksum
parser.push_bytes(&[239]);
while let Some(Ok((dest, packet))) = parser.next_packet() {
println!("{:?} {:?}", dest, packet);
}
数据包构建
use crsf::{Packet, PacketAddress, RcChannels};
let channels: [u16; 16] = [0xffff; 16];
let packet = Packet::RcChannels(RcChannels(channels));
let raw_packet = packet.into_raw(PacketAddress::Transmitter);
println!("{:?}", raw_packet.data());
依赖
~0.5–1MB
~23K SLoC