Skip to content

Commit 2aa1728

Browse files
committed
embedded-sdmmc updates.
1 parent 6a3ab3f commit 2aa1728

File tree

5 files changed

+30
-43
lines changed

5 files changed

+30
-43
lines changed

Cargo.lock

Lines changed: 2 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

Cargo.toml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -49,7 +49,7 @@ postcard = "1.0"
4949
serde = { version = "1.0", default-features = false }
5050
menu = "0.3"
5151
chrono = { version = "0.4", default-features = false }
52-
embedded-sdmmc = { version = "0.5", default-features = false }
52+
embedded-sdmmc = { git = "https://github.com/rust-embedded-community/embedded-sdmmc-rs", default-features = false }
5353
neotron-api = "0.1"
5454
neotron-loader = "0.1"
5555
vte = "0.12"

src/commands/fs.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -33,11 +33,11 @@ fn dir(_menu: &menu::Menu<Ctx>, _item: &menu::Item<Ctx>, _args: &[&str], _ctx: &
3333
let time = crate::fs::BiosTime();
3434
let mut mgr = embedded_sdmmc::VolumeManager::new(bios_block, time);
3535
// Open the first partition
36-
let volume = mgr.get_volume(VolumeIdx(0))?;
37-
let root_dir = mgr.open_root_dir(&volume)?;
36+
let volume = mgr.open_volume(VolumeIdx(0))?;
37+
let root_dir = mgr.open_root_dir(volume)?;
3838
let mut total_bytes = 0u64;
3939
let mut num_files = 0;
40-
mgr.iterate_dir(&volume, &root_dir, |dir_entry| {
40+
mgr.iterate_dir(root_dir, |dir_entry| {
4141
let padding = 8 - dir_entry.name.base_name().len();
4242
for b in dir_entry.name.base_name() {
4343
let ch = *b as char;

src/commands/sound.rs

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -127,14 +127,9 @@ fn play(_menu: &menu::Menu<Ctx>, _item: &menu::Item<Ctx>, args: &[&str], ctx: &m
127127
let time = crate::fs::BiosTime();
128128
let mut mgr = embedded_sdmmc::VolumeManager::new(bios_block, time);
129129
// Open the first partition
130-
let mut volume = mgr.get_volume(embedded_sdmmc::VolumeIdx(0))?;
131-
let root_dir = mgr.open_root_dir(&volume)?;
132-
let mut file = mgr.open_file_in_dir(
133-
&mut volume,
134-
&root_dir,
135-
file_name,
136-
embedded_sdmmc::Mode::ReadOnly,
137-
)?;
130+
let volume = mgr.open_volume(embedded_sdmmc::VolumeIdx(0))?;
131+
let root_dir = mgr.open_root_dir(volume)?;
132+
let file = mgr.open_file_in_dir(root_dir, file_name, embedded_sdmmc::Mode::ReadOnly)?;
138133

139134
osprintln!("Press Q to quit, P to pause/unpause...");
140135

@@ -145,9 +140,10 @@ fn play(_menu: &menu::Menu<Ctx>, _item: &menu::Item<Ctx>, args: &[&str], ctx: &m
145140
let mut delta = 0;
146141

147142
let mut pause = false;
148-
'playback: while !file.eof() {
143+
144+
'playback: while !mgr.file_eof(file).unwrap() {
149145
if !pause {
150-
let bytes_read = mgr.read(&volume, &mut file, buffer)?;
146+
let bytes_read = mgr.read(file, buffer)?;
151147
let mut buffer = &buffer[0..bytes_read];
152148
while !buffer.is_empty() {
153149
let slice = bios::FfiByteSlice::new(buffer);

src/program.rs

Lines changed: 18 additions & 27 deletions
Original file line numberDiff line numberDiff line change
@@ -61,24 +61,18 @@ impl From<neotron_loader::Error<embedded_sdmmc::Error<bios::Error>>> for Error {
6161
/// Something the ELF loader can use to get bytes off the disk
6262
struct FileSource {
6363
mgr: core::cell::RefCell<embedded_sdmmc::VolumeManager<BiosBlock, BiosTime>>,
64-
volume: embedded_sdmmc::Volume,
65-
file: core::cell::RefCell<File>,
64+
file: embedded_sdmmc::File,
6665
buffer: core::cell::RefCell<[u8; Self::BUFFER_LEN]>,
6766
offset_cached: core::cell::Cell<Option<u32>>,
6867
}
6968

7069
impl FileSource {
7170
const BUFFER_LEN: usize = 128;
7271

73-
fn new(
74-
mgr: embedded_sdmmc::VolumeManager<BiosBlock, BiosTime>,
75-
volume: embedded_sdmmc::Volume,
76-
file: File,
77-
) -> FileSource {
72+
fn new(mgr: embedded_sdmmc::VolumeManager<BiosBlock, BiosTime>, file: File) -> FileSource {
7873
FileSource {
7974
mgr: core::cell::RefCell::new(mgr),
80-
file: core::cell::RefCell::new(file),
81-
volume,
75+
file,
8276
buffer: core::cell::RefCell::new([0u8; 128]),
8377
offset_cached: core::cell::Cell::new(None),
8478
}
@@ -90,10 +84,11 @@ impl FileSource {
9084
out_buffer: &mut [u8],
9185
) -> Result<(), embedded_sdmmc::Error<bios::Error>> {
9286
osprintln!("Reading from {}", offset);
93-
self.file.borrow_mut().seek_from_start(offset).unwrap();
9487
self.mgr
9588
.borrow_mut()
96-
.read(&self.volume, &mut self.file.borrow_mut(), out_buffer)?;
89+
.file_seek_from_start(self.file, offset)
90+
.unwrap();
91+
self.mgr.borrow_mut().read(self.file, out_buffer)?;
9792
Ok(())
9893
}
9994
}
@@ -117,12 +112,13 @@ impl neotron_loader::traits::Source for &FileSource {
117112
}
118113

119114
osprintln!("Reading from {}", offset);
120-
self.file.borrow_mut().seek_from_start(offset).unwrap();
121-
self.mgr.borrow_mut().read(
122-
&self.volume,
123-
&mut self.file.borrow_mut(),
124-
self.buffer.borrow_mut().as_mut_slice(),
125-
)?;
115+
self.mgr
116+
.borrow_mut()
117+
.file_seek_from_start(self.file, offset)
118+
.unwrap();
119+
self.mgr
120+
.borrow_mut()
121+
.read(self.file, self.buffer.borrow_mut().as_mut_slice())?;
126122
self.offset_cached.set(Some(offset));
127123
chunk.copy_from_slice(&self.buffer.borrow()[0..chunk.len()]);
128124

@@ -209,16 +205,11 @@ impl TransientProgramArea {
209205
let time = crate::fs::BiosTime();
210206
let mut mgr = embedded_sdmmc::VolumeManager::new(bios_block, time);
211207
// Open the first partition
212-
let mut volume = mgr.get_volume(embedded_sdmmc::VolumeIdx(0))?;
213-
let root_dir = mgr.open_root_dir(&volume)?;
214-
let file = mgr.open_file_in_dir(
215-
&mut volume,
216-
&root_dir,
217-
file_name,
218-
embedded_sdmmc::Mode::ReadOnly,
219-
)?;
220-
221-
let source = FileSource::new(mgr, volume, file);
208+
let volume = mgr.open_volume(embedded_sdmmc::VolumeIdx(0))?;
209+
let root_dir = mgr.open_root_dir(volume)?;
210+
let file = mgr.open_file_in_dir(root_dir, file_name, embedded_sdmmc::Mode::ReadOnly)?;
211+
212+
let source = FileSource::new(mgr, file);
222213
let loader = neotron_loader::Loader::new(&source)?;
223214

224215
let mut iter = loader.iter_program_headers();

0 commit comments

Comments
 (0)