[−][src]Crate asterix
Encode/Decode for ASTERIX protocol using the deku library
Creating an Asterix packet
There are currently two ways of creating an AsterixPacket:
From &[u8]
use deku::prelude::*; use asterix::AsterixPacket; let bytes = &[0x22, 0x00, 0x0b, 0xf0, 0x19, 0x0d, 0x02, 0x35, 0x6d, 0xfa, 0x60]; let (_, mut packet) = AsterixPacket::from_bytes((bytes, 0)).unwrap();
Packet Creation
Create an CAT34 Asterix packet.
use deku::prelude::*; use asterix::{AsterixPacket, Cat34}; use asterix::data_item::*; use asterix::types::*; let mut thirty_eight = Cat34::default(); thirty_eight.data_source_identifier = Some(DataSourceIdentifier { sac: 25, sic: 13 }); thirty_eight.message_type = Some(MessageType { t: MTYPE::SectorCrossing, }); thirty_eight.time_of_day = Some(TimeOfDay { time: 27355.953 }); thirty_eight.sector_number = Some(SectorNumber { num: 135 }); let mut packet = AsterixPacket::default(); packet.category = 34; packet.messages = vec![asterix::AsterixMessage::Cat34(thirty_eight)];
Encoding Packets
use deku::prelude::*; use asterix::AsterixPacket; // Create / Mutate a packet let mut packet = AsterixPacket::default(); // finalize(): Updates fspec for all packet messages, as well as setting the length as per // the protocol. packet.finalize().unwrap(); // serialize packet.to_bytes().unwrap();
Modules
data_item | Defined Data Items that are used for formal parsing of data structs in categories |
types | Enums used for providing common meaning for bits in a |
Structs
AsterixPacket | |
Cat34 | Transmission of Monoradar Service Messages |
Cat48 | Transmission of Monoradar Target Reports |
Enums
AsterixMessage | Union of Asterix categories |