Expand description
This crate provides a #[no_std] parser for the crossfire protocol.
§Usage
§Packet Parsing
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);
}
§Packet Construction
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());
Structs§
- Default
Channels Mapper - Maps channel values to the ones that betaflight uses(1000->2000)
- Link
Statistics - Stores LinkStatistics packet data
- Packet
Parser - Crossfire packet parser
- RawPacket
- Stores raw packet data
- RcChannels
- Stores RcChannelsPacked packet data
- RcChannels
Mapped - Maps channels according to a ChannelMapper
Enums§
- Packet
- Represents different kinds of packets
- Packet
Address - Represents packet addresses
- Packet
Error - Represents packet errors
- Packet
Type - Crossfire packet types
Constants§
- MAX_
PACKET_ LENGTH - Max crsf packet length
- PACKET_
HEADER_ LENGTH - Crsf packet header length
Traits§
- Channel
Mapper - Trait for mapping channel values