[][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 data_item

Structs

AsterixPacket
Cat34

Transmission of Monoradar Service Messages

Cat48

Transmission of Monoradar Target Reports

Enums

AsterixMessage

Union of Asterix categories