debug_vsf_bytes/
debug_vsf_bytes.rs1use chrono::Utc;
2use vsf::types::{EtType, VsfType};
3
4fn main() {
5 let mut vsf: Vec<Vec<u8>> = Vec::new();
7
8 vsf.push("RÅ".as_bytes().to_vec());
10 vsf[0].push(b'<');
11
12 vsf.push(VsfType::b(0, true).flatten());
14
15 let header_index = vsf.len();
17 vsf.push(VsfType::z(2).flatten());
18 vsf[header_index].extend_from_slice(&VsfType::y(2).flatten());
19
20 let now = Utc::now();
22 let et = vsf::datetime_to_eagle_time(now);
23 let oscillations = et.oscillations().unwrap_or(0);
24 let creation_time = VsfType::e(EtType::e6(oscillations));
25 vsf[header_index].extend_from_slice(&creation_time.flatten());
26
27 vsf[header_index].extend_from_slice(&VsfType::hb(vec![0u8; 32]).flatten());
29
30 let bytes: Vec<u8> = vsf.into_iter().flatten().collect();
32
33 println!("Total bytes: {}", bytes.len());
34 println!("\nFirst 60 bytes with positions:");
35 for (i, &b) in bytes.iter().take(60).enumerate() {
36 if i % 16 == 0 {
37 println!();
38 print!("{:04X}: ", i);
39 }
40 print!("{:02X} ", b);
41 }
42 println!("\n");
43
44 for (i, &b) in bytes.iter().enumerate().take(40) {
46 if b == b'h' {
47 println!("Found 'h' at position {}", i);
48 }
49 }
50
51 println!("\nParsing simulation:");
53 let mut pointer = 0;
54
55 pointer += 3; pointer += 1; println!("After magic: pointer = {}", pointer);
59
60 let hl_start = pointer;
62 if bytes[pointer] == b'b' {
63 pointer += 1;
64 let len_marker = bytes[pointer];
65 pointer += 1;
66 println!(
67 "Header length type at {}, marker={}, pointer now={}",
68 hl_start, len_marker as char, pointer
69 );
70 }
71
72 let v_start = pointer;
74 if bytes[pointer] == b'z' {
75 pointer += 1;
76 let len_marker = bytes[pointer];
77 pointer += 1;
78 println!(
79 "Version at {}, marker={}, pointer now={}",
80 v_start, len_marker as char, pointer
81 );
82 }
83
84 let bc_start = pointer;
86 if bytes[pointer] == b'y' {
87 pointer += 1;
88 let len_marker = bytes[pointer];
89 pointer += 1;
90 println!(
91 "Backward compat at {}, marker={}, pointer now={}",
92 bc_start, len_marker as char, pointer
93 );
94 }
95
96 let et_start = pointer;
98 if bytes[pointer] == b'e' {
99 pointer += 1;
100 if bytes[pointer] == b'f' {
101 pointer += 1;
102 if bytes[pointer] == b'5' {
103 pointer += 1;
104 pointer += 4; println!("Eagle Time (ef5) at {}, pointer now={}", et_start, pointer);
106 }
107 }
108 }
109
110 println!(
112 "\nAt position {}: byte = 0x{:02X} ('{}')",
113 pointer, bytes[pointer], bytes[pointer] as char
114 );
115 if bytes[pointer] == b'h' {
116 println!("SUCCESS: Found hash placeholder at correct position!");
117 } else {
118 println!("ERROR: Expected 'h', found something else");
119 }
120}