From 8f6065ad9b40b06f97ab0951b7a346b886d89d1a Mon Sep 17 00:00:00 2001 From: mestrode <35630715+mestrode@users.noreply.github.com> Date: Wed, 29 Jul 2026 10:47:28 +0200 Subject: [PATCH 1/3] mv example.uf2 into tests --- uftwo/src/block.rs | 2 +- example.uf2 => uftwo/tests/example.uf2 | Bin 2 files changed, 1 insertion(+), 1 deletion(-) rename example.uf2 => uftwo/tests/example.uf2 (100%) diff --git a/uftwo/src/block.rs b/uftwo/src/block.rs index f748f93..b5a16b6 100644 --- a/uftwo/src/block.rs +++ b/uftwo/src/block.rs @@ -537,7 +537,7 @@ mod tests { fn example_file() { use std::io::prelude::*; - let mut f = std::fs::File::open("example.uf2").unwrap(); + let mut f = std::fs::File::open("tests/example.uf2").unwrap(); let mut buffer = [0; 512]; f.read(&mut buffer).unwrap(); diff --git a/example.uf2 b/uftwo/tests/example.uf2 similarity index 100% rename from example.uf2 rename to uftwo/tests/example.uf2 From 8280e9362dbea251ace7e4bb35b6cf79f192697f Mon Sep 17 00:00:00 2001 From: mestrode <35630715+mestrode@users.noreply.github.com> Date: Wed, 29 Jul 2026 10:49:06 +0200 Subject: [PATCH 2/3] rename block::data to block::payload --- uftwo/src/block.rs | 38 +++++++++++++++++++------------------- uftwo/src/reader.rs | 14 +++++++------- uftwo/src/writer.rs | 22 +++++++++++----------- 3 files changed, 37 insertions(+), 37 deletions(-) diff --git a/uftwo/src/block.rs b/uftwo/src/block.rs index b5a16b6..046170d 100644 --- a/uftwo/src/block.rs +++ b/uftwo/src/block.rs @@ -77,7 +77,7 @@ pub struct Block { /// /// When the MD5 checksum flag is set, the last 24 bytes hold the checksum /// as well as address start and length. - pub data: [u8; MAX_PAYLOAD_SIZE], + pub payload: [u8; MAX_PAYLOAD_SIZE], /// Final magic number. pub magic_end: u32, } @@ -98,7 +98,7 @@ impl Default for Block { block: 0, total_blocks: 0, board_family_id_or_file_size: 0, - data: [0; MAX_PAYLOAD_SIZE], + payload: [0; MAX_PAYLOAD_SIZE], magic_end: MAGIC_NUMBER[2], } } @@ -126,9 +126,9 @@ impl Block { this.target_addr = target_addr as u32; // copy over data - assert!(data.len() <= this.data.len()); + assert!(data.len() <= this.payload.len()); this.data_len = data.len() as u32; - this.data[0..data.len()].copy_from_slice(data); + this.payload[0..data.len()].copy_from_slice(data); this } @@ -169,8 +169,8 @@ impl Block { /// Returns the checksum value only if the checksum flag is set. pub fn checksum(&self) -> Option<&Checksum> { if self.has_checksum() { - let len = self.data.len(); - Checksum::ref_from_bytes(&self.data[len - CHECKSUM_SIZE..len]).ok() + let len = self.payload.len(); + Checksum::ref_from_bytes(&self.payload[len - CHECKSUM_SIZE..len]).ok() } else { None } @@ -178,10 +178,10 @@ impl Block { /// Set the checksum for this block. pub fn set_checksum(&mut self, checksum: Checksum) { - let begin = self.data.len() - size_of::(); - let end = self.data.len(); + let begin = self.payload.len() - size_of::(); + let end = self.payload.len(); - self.data[begin..end].copy_from_slice(checksum.as_bytes()); + self.payload[begin..end].copy_from_slice(checksum.as_bytes()); self.flags |= Flags::Checksum; } @@ -196,8 +196,8 @@ impl Block { if self.has_extensions() { let start = self.data_len as usize; let start = start.next_multiple_of(Extensions::ALIGN); - let end = self.data.len(); - Some(Extensions::from_bytes(&self.data[start..end])) + let end = self.payload.len(); + Some(Extensions::from_bytes(&self.payload[start..end])) } else { None } @@ -213,7 +213,7 @@ impl Block { /// Returns the payload data slice. pub fn data(&self) -> &[u8] { - &self.data[0..self.data_len as usize] + &self.payload[0..self.data_len as usize] } /// Returns the file size if the family ID flag is not set. @@ -270,19 +270,19 @@ impl Block { let ext_end = ext_start + ext_len; // Check if there's enough space in the block's data array - if ext_end > self.data.len() { + if ext_end > self.payload.len() { return Err(BlockError::PayloadSize); } // Write extension length (1 byte) - self.data[ext_start] = ext_len as u8; + self.payload[ext_start] = ext_len as u8; // Write extension tag (3 bytes) let tag_bytes = tag.to_bytes(); - self.data[ext_start + 1..ext_start + 4].copy_from_slice(&tag_bytes); + self.payload[ext_start + 1..ext_start + 4].copy_from_slice(&tag_bytes); // Write extension data - self.data[ext_start + Extensions::HEADER_SIZE..ext_end] + self.payload[ext_start + Extensions::HEADER_SIZE..ext_end] .copy_from_slice(data); // Set the extension flag @@ -501,17 +501,17 @@ mod tests { }; // Semver string - block.data[0..12].copy_from_slice(&[ + block.payload[0..12].copy_from_slice(&[ 0x09, 0xbc, 0xc7, 0x9f, 0x30, 0x2e, 0x31, 0x2e, 0x32, 0x00, 0x00, 0x00, ]); // Semver string - block.data[12..24].copy_from_slice(&[ + block.payload[12..24].copy_from_slice(&[ 0x09, 0xbc, 0xc7, 0x9f, 0x30, 0x2e, 0x31, 0x2e, 0x32, 0x00, 0x00, 0x00, ]); // Device description - block.data[24..44].copy_from_slice(&[ + block.payload[24..44].copy_from_slice(&[ 0x14, 0x9d, 0x0d, 0x65, 0x41, 0x43, 0x4d, 0x45, 0x20, 0x54, 0x6f, 0x61, 0x73, 0x74, 0x65, 0x72, 0x20, 0x6d, 0x6b, 0x33, ]); diff --git a/uftwo/src/reader.rs b/uftwo/src/reader.rs index 2954e3c..712900e 100644 --- a/uftwo/src/reader.rs +++ b/uftwo/src/reader.rs @@ -156,7 +156,7 @@ mod tests { // Create a valid UF2 block let mut block = Block::default(); block.data_len = 256; - block.data[0..256].copy_from_slice(&[0xAA; 256]); + block.payload[0..256].copy_from_slice(&[0xAA; 256]); let bytes = block.as_bytes(); let buffer = [bytes; 1]; // Single block @@ -194,13 +194,13 @@ mod tests { block1.block = 0; block1.total_blocks = 2; block1.data_len = 100; - block1.data[0..100].copy_from_slice(&[0xAA; 100]); + block1.payload[0..100].copy_from_slice(&[0xAA; 100]); let mut block2 = Block::default(); block2.block = 1; block2.total_blocks = 2; block2.data_len = 100; - block2.data[0..100].copy_from_slice(&[0xBB; 100]); + block2.payload[0..100].copy_from_slice(&[0xBB; 100]); let mut bytes = Vec::new(); bytes.extend_from_slice(block1.as_bytes()); @@ -215,7 +215,7 @@ mod tests { block.block = 0; block.total_blocks = 1; block.data_len = 100; - block.data[0..100].copy_from_slice(&[0xCC; 100]); + block.payload[0..100].copy_from_slice(&[0xCC; 100]); let bytes = block.as_bytes(); let uf2_file = from_bytes(&bytes).unwrap(); @@ -231,13 +231,13 @@ mod tests { block1.block = 0; block1.total_blocks = 2; block1.data_len = 100; - block1.data[0..100].copy_from_slice(&[0xAA; 100]); + block1.payload[0..100].copy_from_slice(&[0xAA; 100]); let mut block2 = Block::default(); block2.block = 1; block2.total_blocks = 2; block2.data_len = 50; - block2.data[0..50].copy_from_slice(&[0xBB; 50]); + block2.payload[0..50].copy_from_slice(&[0xBB; 50]); let mut bytes = Vec::new(); bytes.extend_from_slice(block1.as_bytes()); @@ -347,7 +347,7 @@ mod tests { block.block = 5; block.total_blocks = 3; // block=5 >= total=3 block.data_len = 100; - block.data[0..100].copy_from_slice(&[0xAA; 100]); + block.payload[0..100].copy_from_slice(&[0xAA; 100]); uf2_file.push_block(block); diff --git a/uftwo/src/writer.rs b/uftwo/src/writer.rs index 67e6677..89eafe1 100644 --- a/uftwo/src/writer.rs +++ b/uftwo/src/writer.rs @@ -88,12 +88,12 @@ impl Uf2File { block: block_num as u32, total_blocks: total_blocks as u32, board_family_id_or_file_size: 0, - data: [0; MAX_PAYLOAD_SIZE], + payload: [0; MAX_PAYLOAD_SIZE], magic_end: MAGIC_NUMBER[2], }; // Copy data - block.data[0..chunk_size] + block.payload[0..chunk_size] .copy_from_slice(&payload[offset..offset + chunk_size]); // Set family ID if provided @@ -261,12 +261,12 @@ impl Uf2File { block: block_no as u32, total_blocks: u32::MAX, // Placeholder for total_blocks board_family_id_or_file_size: 0, - data: [0; MAX_PAYLOAD_SIZE], + payload: [0; MAX_PAYLOAD_SIZE], magic_end: MAGIC_NUMBER[2], }; // Copy data - block.data[0..chunk_size].copy_from_slice( + block.payload[0..chunk_size].copy_from_slice( &page[page_offset..page_offset + chunk_size], ); @@ -286,7 +286,7 @@ impl Uf2File { let checksum_bytes = checksum.as_bytes(); let end_index = MAX_PAYLOAD_SIZE; let start_index = end_index - 24; - block.data[start_index..end_index] + block.payload[start_index..end_index] .copy_from_slice(checksum_bytes); // Add extensions to the first block of each page @@ -299,11 +299,11 @@ impl Uf2File { let end = start + target_page_size_ext_len; if end <= MAX_PAYLOAD_SIZE_WITH_CHECKSUM { - block.data[start] = target_page_size_ext_len as u8; + block.payload[start] = target_page_size_ext_len as u8; let tag_bytes = ExtensionTag::TargetPageSize.to_bytes(); - block.data[start + 1..start + 4] + block.payload[start + 1..start + 4] .copy_from_slice(&tag_bytes); - block.data[start + Extension::HEADER_SIZE..end] + block.payload[start + Extension::HEADER_SIZE..end] .copy_from_slice(page_size_str.as_bytes()); block.flags |= Flags::ExtensionTags; @@ -319,12 +319,12 @@ impl Uf2File { let end = start + semver_ext_len; if end <= MAX_PAYLOAD_SIZE_WITH_CHECKSUM { - block.data[start] = semver_ext_len as u8; + block.payload[start] = semver_ext_len as u8; let tag_bytes = ExtensionTag::SemverString.to_bytes(); - block.data[start + 1..start + 4] + block.payload[start + 1..start + 4] .copy_from_slice(&tag_bytes); - block.data[start + Extension::HEADER_SIZE..end] + block.payload[start + Extension::HEADER_SIZE..end] .copy_from_slice(semver_str.as_bytes()); block.flags |= Flags::ExtensionTags; From a846e2bc2cd8fe81714d8d2e36a1a2a38a1d28fe Mon Sep 17 00:00:00 2001 From: mestrode <35630715+mestrode@users.noreply.github.com> Date: Wed, 29 Jul 2026 10:55:02 +0200 Subject: [PATCH 3/3] cargo fmt --- uftwo/src/block.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/uftwo/src/block.rs b/uftwo/src/block.rs index 046170d..79673fc 100644 --- a/uftwo/src/block.rs +++ b/uftwo/src/block.rs @@ -170,7 +170,8 @@ impl Block { pub fn checksum(&self) -> Option<&Checksum> { if self.has_checksum() { let len = self.payload.len(); - Checksum::ref_from_bytes(&self.payload[len - CHECKSUM_SIZE..len]).ok() + Checksum::ref_from_bytes(&self.payload[len - CHECKSUM_SIZE..len]) + .ok() } else { None }