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!(
24 " endian: {}",
25 if packet.header.flags.is_msb {
26 "big"
27 } else {
28 "little"
29 }
30 );
31
32 if let Some(cmd) = packet.decode_payload() {
33 match cmd {
34 PvaPacketCommand::ConnectionValidation(cv) => {
35 println!("\nConnectionValidation:");
36 println!(" buffer_size: {}", cv.buffer_size);
37 println!(" intro_reg: {}", cv.introspection_registry_size);
38 println!(" qos: {}", cv.qos);
39 println!(" authz: {:?}", cv.authz);
40 }
41 other => println!("Decoded: {other:?}"),
42 }
43 } else {
44 eprintln!("Failed to decode payload");
45 }
46}