Crate asterix

source ·
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§

Enums§