Skip to content

Commit 525293b

Browse files
committed
Add read test and unwrap more
1 parent 49b3a4c commit 525293b

File tree

1 file changed

+37
-36
lines changed

1 file changed

+37
-36
lines changed

examples/sdcard_test.rs

Lines changed: 37 additions & 36 deletions
Original file line numberDiff line numberDiff line change
@@ -33,51 +33,52 @@ fn main() -> ! {
3333
sprintln!("Failed to initialize sdcard.");
3434
} else {
3535
sprintln!("OK");
36-
sprint!("SD Card Capacity: ");
37-
if let Ok(size) = sdcard.device().card_size_bytes() {
38-
sprintln!("{} MB", size / 1000 / 1000);
39-
// open the first partition
40-
sprintln!("Partition 0:");
41-
if let Ok(mut volume) = sdcard.get_volume(VolumeIdx(0)) {
42-
// list files in root dir
43-
if let Ok(root_dir) = sdcard.open_root_dir(&volume) {
44-
if let Err(_) = sdcard.iterate_dir(&volume, &root_dir, | entry | {
45-
sprintln!("{: >5}B {}", entry.size, entry.name);
46-
}) {
47-
sprintln!("Error while iterating over files.");
48-
}
49-
if let Ok(_) = sdcard.find_directory_entry(&volume, &root_dir, "W_TST.TXT") {
50-
// if a file with the name W_TST.TXT is present, do a write test
51-
write_test(&mut sdcard, &mut volume, &root_dir);
52-
}
53-
} else {
54-
sprintln!("Could not open root directory.");
55-
}
56-
} else {
57-
sprintln!("Could not open partition 0.");
58-
}
59-
} else {
60-
sprintln!("Failed to read card size.");
36+
37+
let size = sdcard.device().card_size_bytes().unwrap();
38+
sprintln!("SD Card Capacity: {} MB", size / 1000 / 1000);
39+
40+
// open the first partition
41+
sprintln!("Partition 0:");
42+
let mut volume = sdcard.get_volume(VolumeIdx(0)).unwrap();
43+
44+
// list files in root dir
45+
let root_dir = sdcard.open_root_dir(&volume).unwrap();
46+
sdcard.iterate_dir(&volume, &root_dir, | entry | {
47+
sprintln!("{: >5}B {}", entry.size, entry.name);
48+
}).unwrap();
49+
50+
// if a file with the name SDTST.TXT is present, do a read/write test
51+
if let Ok(_) = sdcard.find_directory_entry(&volume, &root_dir, "SDTST.TXT") {
52+
read_write_test(&mut sdcard, &mut volume, &root_dir);
6153
}
6254
}
55+
sprintln!("Done");
6356

64-
sprintln!("done.");
6557
loop { }
6658
}
6759

68-
fn write_test(sdcard: &mut SdCard, volume: &mut Volume, dir: &Directory) {
60+
fn read_write_test(sdcard: &mut SdCard, volume: &mut Volume, dir: &Directory) {
6961
sprint!("Write test: ");
70-
if let Ok(mut file) = sdcard.open_file_in_dir(volume, dir, "W_TST.CSV", embedded_sdmmc::Mode::ReadWriteCreateOrTruncate) {
71-
let data = "1,2,3,4,20";
72-
if let Ok(size_written) = sdcard.write(volume, &mut file, data.as_bytes()) {
73-
sprintln!("Success (Wrote {}B)", size_written);
62+
let mut file = sdcard.open_file_in_dir(volume, dir, "SDTST.CSV", embedded_sdmmc::Mode::ReadWriteCreateOrTruncate).unwrap();
63+
let data = "1,2,3,4,20";
64+
if let Ok(size_written) = sdcard.write(volume, &mut file, data.as_bytes()) {
65+
sprintln!("Success (Wrote {} bytes)", size_written);
66+
} else {
67+
sprintln!("Failed");
68+
}
69+
sdcard.close_file(volume, file).unwrap();
70+
71+
sprint!("Read test: ");
72+
let mut file = sdcard.open_file_in_dir(volume, dir, "SDTST.CSV", embedded_sdmmc::Mode::ReadOnly).unwrap();
73+
let mut buffer: [u8; 32] = [0; 32];
74+
if let Ok(size_read) = sdcard.read(volume, &mut file, &mut buffer) {
75+
if size_read == data.len() && buffer[0..size_read].eq(data.as_bytes()) {
76+
sprintln!("Success (Read same {} bytes)", size_read);
7477
} else {
75-
sprintln!("Failed");
76-
}
77-
if let Err(_) = sdcard.close_file(volume, file) {
78-
sprintln!("Could not close file.");
78+
sprintln!("Content differs.");
7979
}
8080
} else {
81-
sprintln!("Could not open file for writing.");
81+
sprintln!("Failed");
8282
}
83+
sdcard.close_file(volume, file).unwrap();
8384
}

0 commit comments

Comments
 (0)