decode_packet/
decode_packet.rs1use spvirit_codec::{PvaPacket, PvaPacketCommand};
2
3fn main() {
4 let raw: &[u8] = &[
8 0xCA, 0x02, 0x00, 0x01, 0x09, 0x00, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0xFF, 0x7F, 0x00, 0x00, 0x00, ];
15
16 let mut packet = PvaPacket::new(raw);
17
18 println!("Header:");
19 println!(" magic: 0x{:02X}", packet.header.magic);
20 println!(" version: {}", packet.header.version);
21 println!(" command: {}", packet.header.command);
22 println!(" payload: {} bytes", packet.header.payload_length);
23 println!(" endian: {}", if packet.header.flags.is_msb { "big" } else { "little" });
24
25 if let Some(cmd) = packet.decode_payload() {
26 match cmd {
27 PvaPacketCommand::ConnectionValidation(cv) => {
28 println!("\nConnectionValidation:");
29 println!(" buffer_size: {}", cv.buffer_size);
30 println!(" intro_reg: {}", cv.introspection_registry_size);
31 println!(" qos: {}", cv.qos);
32 println!(" authz: {:?}", cv.authz);
33 }
34 other => println!("Decoded: {other:?}"),
35 }
36 } else {
37 eprintln!("Failed to decode payload");
38 }
39}