Expand description
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::*;
use asterix::data_item::*;
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::*;
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::*;
use asterix::data_item::*;
// 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§
- Defined Data Items that are used for formal parsing of data structs in categories
- Enums used for providing common meaning for bits in a
data_item
Structs§
- Transmission of Monoradar Service Messages
- Transmission of Monoradar Target Reports
Enums§
- Union of Asterix categories