create_simple/
create_simple.rs1use ehatrom::*;
11
12fn main() {
13 println!("📝 Creating minimal EEPROM with basic vendor info...");
14
15 let vendor_atom = VendorInfoAtom::new(
17 0x5349, 0x4D50, 1, "Simple",
21 "MinimalHAT",
22 [
23 0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD,
24 0xEE, 0xFF,
25 ], );
27
28 let gpio_atom = GpioMapAtom {
30 flags: 0x0000,
31 pins: [0u8; 28], };
33
34 #[cfg(feature = "alloc")]
36 let mut eeprom = Eeprom {
37 header: EepromHeader::new(),
38 vendor_info: vendor_atom,
39 gpio_map_bank0: gpio_atom,
40 dt_blob: None,
41 gpio_map_bank1: None,
42 custom_atoms: Vec::new(),
43 };
44
45 #[cfg(not(feature = "alloc"))]
46 let mut eeprom = Eeprom {
47 header: EepromHeader::new(),
48 vendor_info: vendor_atom,
49 gpio_map_bank0: gpio_atom,
50 dt_blob: None,
51 gpio_map_bank1: None,
52 custom_atoms: &[],
53 };
54
55 eeprom.update_header();
57
58 #[cfg(feature = "alloc")]
60 let serialized = eeprom.serialize_with_crc();
61
62 #[cfg(not(feature = "alloc"))]
63 let serialized = {
64 let mut buffer = [0u8; 1024]; let size = eeprom
66 .serialize_with_crc_to_slice(&mut buffer)
67 .expect("Failed to serialize EEPROM");
68 &buffer[..size]
69 };
70
71 if std::fs::metadata("tests/data").is_err() {
73 std::fs::create_dir_all("tests/data").expect("Failed to create tests/data directory");
74 }
75
76 std::fs::write("tests/data/simple.bin", &serialized).expect("Failed to write simple file");
77
78 println!("Created tests/data/simple.bin ({} bytes)", serialized.len());
79
80 if Eeprom::verify_crc(&serialized) {
82 println!("✅ CRC verification passed");
83 } else {
84 println!("❌ CRC verification failed");
85 }
86}