Skip to content

Commit c1c57d3

Browse files
committed
fix ci
1 parent 56a07fe commit c1c57d3

File tree

8 files changed

+72
-29
lines changed

8 files changed

+72
-29
lines changed

examples/shell.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -73,6 +73,7 @@ use std::io::prelude::*;
7373

7474
use embedded_sdmmc::{
7575
Error as EsError, RawDirectory, RawVolume, ShortFileName, VolumeIdx, VolumeManager,
76+
VolumeOpenMode,
7677
};
7778

7879
use crate::linux::{Clock, LinuxBlockDevice};
@@ -531,7 +532,10 @@ fn main() -> Result<(), Error> {
531532

532533
let mut current_volume = None;
533534
for volume_no in 0..4 {
534-
match ctx.volume_mgr.open_raw_volume(VolumeIdx(volume_no)) {
535+
match ctx
536+
.volume_mgr
537+
.open_raw_volume(VolumeIdx(volume_no), VolumeOpenMode::ReadWrite)
538+
{
535539
Ok(volume) => {
536540
println!("Volume # {}: found", Context::volume_to_letter(volume_no));
537541
match ctx.volume_mgr.open_root_dir(volume) {

src/lib.rs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -75,7 +75,7 @@ pub mod filesystem;
7575
pub mod sdcard;
7676

7777
use filesystem::SearchId;
78-
use volume_mgr::VolumeOpenMode;
78+
pub use volume_mgr::VolumeOpenMode;
7979

8080
#[doc(inline)]
8181
pub use crate::blockdevice::{Block, BlockCount, BlockDevice, BlockIdx};

src/volume_mgr.rs

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,12 @@ use crate::{
1818
};
1919
use heapless::Vec;
2020

21+
/// Opening volume mode
2122
#[derive(Debug, PartialEq, Eq, Clone, Copy)]
2223
pub enum VolumeOpenMode {
24+
/// Opening volume read only. This is faster than ReadWrite if only readings are done
2325
ReadOnly,
26+
/// Opening volume for reading and writing.
2427
ReadWrite,
2528
}
2629

tests/directories.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! Directory related tests
22
3-
use embedded_sdmmc::{Mode, ShortFileName};
3+
use embedded_sdmmc::{Mode, ShortFileName, VolumeOpenMode};
44

55
mod utils;
66

@@ -41,7 +41,7 @@ fn fat16_root_directory_listing() {
4141
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
4242

4343
let fat16_volume = volume_mgr
44-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
44+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
4545
.expect("open volume 0");
4646
let root_dir = volume_mgr
4747
.open_root_dir(fat16_volume)
@@ -103,7 +103,7 @@ fn fat16_sub_directory_listing() {
103103
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
104104

105105
let fat16_volume = volume_mgr
106-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
106+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
107107
.expect("open volume 0");
108108
let root_dir = volume_mgr
109109
.open_root_dir(fat16_volume)
@@ -168,7 +168,7 @@ fn fat32_root_directory_listing() {
168168
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
169169

170170
let fat32_volume = volume_mgr
171-
.open_raw_volume(embedded_sdmmc::VolumeIdx(1))
171+
.open_raw_volume(embedded_sdmmc::VolumeIdx(1), VolumeOpenMode::ReadWrite)
172172
.expect("open volume 1");
173173
let root_dir = volume_mgr
174174
.open_root_dir(fat32_volume)
@@ -230,7 +230,7 @@ fn open_dir_twice() {
230230
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
231231

232232
let fat32_volume = volume_mgr
233-
.open_raw_volume(embedded_sdmmc::VolumeIdx(1))
233+
.open_raw_volume(embedded_sdmmc::VolumeIdx(1), VolumeOpenMode::ReadWrite)
234234
.expect("open volume 1");
235235

236236
let root_dir = volume_mgr
@@ -276,7 +276,7 @@ fn open_too_many_dirs() {
276276
> = embedded_sdmmc::VolumeManager::new_with_limits(disk, time_source, 0x1000_0000);
277277

278278
let fat32_volume = volume_mgr
279-
.open_raw_volume(embedded_sdmmc::VolumeIdx(1))
279+
.open_raw_volume(embedded_sdmmc::VolumeIdx(1), VolumeOpenMode::ReadWrite)
280280
.expect("open volume 1");
281281
let root_dir = volume_mgr
282282
.open_root_dir(fat32_volume)
@@ -295,7 +295,7 @@ fn find_dir_entry() {
295295
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
296296

297297
let fat32_volume = volume_mgr
298-
.open_raw_volume(embedded_sdmmc::VolumeIdx(1))
298+
.open_raw_volume(embedded_sdmmc::VolumeIdx(1), VolumeOpenMode::ReadWrite)
299299
.expect("open volume 1");
300300

301301
let root_dir = volume_mgr
@@ -325,7 +325,7 @@ fn delete_file() {
325325
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
326326

327327
let fat32_volume = volume_mgr
328-
.open_raw_volume(embedded_sdmmc::VolumeIdx(1))
328+
.open_raw_volume(embedded_sdmmc::VolumeIdx(1), VolumeOpenMode::ReadWrite)
329329
.expect("open volume 1");
330330

331331
let root_dir = volume_mgr
@@ -370,7 +370,7 @@ fn make_directory() {
370370
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
371371

372372
let fat32_volume = volume_mgr
373-
.open_raw_volume(embedded_sdmmc::VolumeIdx(1))
373+
.open_raw_volume(embedded_sdmmc::VolumeIdx(1), VolumeOpenMode::ReadWrite)
374374
.expect("open volume 1");
375375

376376
let root_dir = volume_mgr

tests/open_files.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! File opening related tests
22
3-
use embedded_sdmmc::{Error, Mode, VolumeIdx, VolumeManager};
3+
use embedded_sdmmc::{Error, Mode, VolumeIdx, VolumeManager, VolumeOpenMode};
44

55
mod utils;
66

@@ -11,7 +11,7 @@ fn open_files() {
1111
let mut volume_mgr: VolumeManager<utils::RamDisk<Vec<u8>>, utils::TestTimeSource, 4, 2, 1> =
1212
VolumeManager::new_with_limits(disk, time_source, 0xAA00_0000);
1313
let volume = volume_mgr
14-
.open_raw_volume(VolumeIdx(0))
14+
.open_raw_volume(VolumeIdx(0), VolumeOpenMode::ReadWrite)
1515
.expect("open volume");
1616
let root_dir = volume_mgr.open_root_dir(volume).expect("open root dir");
1717

tests/read_file.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ fn read_file_512_blocks() {
1414
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
1515

1616
let fat16_volume = volume_mgr
17-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
17+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
1818
.expect("open volume 0");
1919
let root_dir = volume_mgr
2020
.open_root_dir(fat16_volume)
@@ -56,7 +56,7 @@ fn read_file_all() {
5656
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
5757

5858
let fat16_volume = volume_mgr
59-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
59+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
6060
.expect("open volume 0");
6161
let root_dir = volume_mgr
6262
.open_root_dir(fat16_volume)
@@ -90,7 +90,7 @@ fn read_file_prime_blocks() {
9090
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
9191

9292
let fat16_volume = volume_mgr
93-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
93+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
9494
.expect("open volume 0");
9595
let root_dir = volume_mgr
9696
.open_root_dir(fat16_volume)
@@ -133,7 +133,7 @@ fn read_file_backwards() {
133133
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
134134

135135
let fat16_volume = volume_mgr
136-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
136+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
137137
.expect("open volume 0");
138138
let root_dir = volume_mgr
139139
.open_root_dir(fat16_volume)

tests/volume.rs

Lines changed: 45 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
//! Volume related tests
22
3+
use embedded_sdmmc::VolumeOpenMode;
4+
35
mod utils;
46

57
#[test]
@@ -16,36 +18,36 @@ fn open_all_volumes() {
1618

1719
// Open Volume 0
1820
let fat16_volume = volume_mgr
19-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
21+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
2022
.expect("open volume 0");
2123

2224
// Fail to Open Volume 0 again
2325
assert!(matches!(
24-
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(0)),
26+
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite),
2527
Err(embedded_sdmmc::Error::VolumeAlreadyOpen)
2628
));
2729

2830
volume_mgr.close_volume(fat16_volume).expect("close fat16");
2931

3032
// Open Volume 1
3133
let fat32_volume = volume_mgr
32-
.open_raw_volume(embedded_sdmmc::VolumeIdx(1))
34+
.open_raw_volume(embedded_sdmmc::VolumeIdx(1), VolumeOpenMode::ReadWrite)
3335
.expect("open volume 1");
3436

3537
// Fail to Volume 1 again
3638
assert!(matches!(
37-
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(1)),
39+
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(1), VolumeOpenMode::ReadWrite),
3840
Err(embedded_sdmmc::Error::VolumeAlreadyOpen)
3941
));
4042

4143
// Open Volume 0 again
4244
let fat16_volume = volume_mgr
43-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
45+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
4446
.expect("open volume 0");
4547

4648
// Open any volume - too many volumes (0 and 1 are open)
4749
assert!(matches!(
48-
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(0)),
50+
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite),
4951
Err(embedded_sdmmc::Error::TooManyOpenVolumes)
5052
));
5153

@@ -54,13 +56,13 @@ fn open_all_volumes() {
5456

5557
// This isn't a valid volume
5658
assert!(matches!(
57-
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(2)),
59+
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(2), VolumeOpenMode::ReadWrite),
5860
Err(embedded_sdmmc::Error::FormatError(_e))
5961
));
6062

6163
// This isn't a valid volume
6264
assert!(matches!(
63-
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(9)),
65+
volume_mgr.open_raw_volume(embedded_sdmmc::VolumeIdx(9), VolumeOpenMode::ReadWrite),
6466
Err(embedded_sdmmc::Error::NoSuchVolume)
6567
));
6668

@@ -79,7 +81,7 @@ fn close_volume_too_early() {
7981
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
8082

8183
let volume = volume_mgr
82-
.open_raw_volume(embedded_sdmmc::VolumeIdx(0))
84+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadWrite)
8385
.expect("open volume 0");
8486
let root_dir = volume_mgr.open_root_dir(volume).expect("open root dir");
8587

@@ -102,6 +104,40 @@ fn close_volume_too_early() {
102104
));
103105
}
104106

107+
#[test]
108+
fn volume_read_only_open_file_read_write() {
109+
let time_source = utils::make_time_source();
110+
let disk = utils::make_block_device(utils::DISK_SOURCE).unwrap();
111+
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
112+
113+
let volume = volume_mgr
114+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadOnly)
115+
.expect("open volume 0");
116+
let root_dir = volume_mgr.open_root_dir(volume).expect("open root dir");
117+
118+
// Dir open
119+
assert!(matches!(
120+
volume_mgr.open_file_in_dir(root_dir, "64MB.DAT", embedded_sdmmc::Mode::ReadWriteAppend),
121+
Err(embedded_sdmmc::Error::VolumeReadOnly)
122+
));
123+
}
124+
125+
#[test]
126+
fn volume_read_only_open_file_read_only() {
127+
let time_source = utils::make_time_source();
128+
let disk = utils::make_block_device(utils::DISK_SOURCE).unwrap();
129+
let mut volume_mgr = embedded_sdmmc::VolumeManager::new(disk, time_source);
130+
131+
let volume = volume_mgr
132+
.open_raw_volume(embedded_sdmmc::VolumeIdx(0), VolumeOpenMode::ReadOnly)
133+
.expect("open volume 0");
134+
let root_dir = volume_mgr.open_root_dir(volume).expect("open root dir");
135+
136+
volume_mgr
137+
.open_file_in_dir(root_dir, "64MB.DAT", embedded_sdmmc::Mode::ReadOnly)
138+
.unwrap();
139+
}
140+
105141
// ****************************************************************************
106142
//
107143
// End Of File

tests/write_file.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
//! File opening related tests
22
3-
use embedded_sdmmc::{Mode, VolumeIdx, VolumeManager};
3+
use embedded_sdmmc::{Mode, VolumeIdx, VolumeManager, VolumeOpenMode};
44

55
mod utils;
66

@@ -11,7 +11,7 @@ fn append_file() {
1111
let mut volume_mgr: VolumeManager<utils::RamDisk<Vec<u8>>, utils::TestTimeSource, 4, 2, 1> =
1212
VolumeManager::new_with_limits(disk, time_source, 0xAA00_0000);
1313
let volume = volume_mgr
14-
.open_raw_volume(VolumeIdx(0))
14+
.open_raw_volume(VolumeIdx(0), VolumeOpenMode::ReadWrite)
1515
.expect("open volume");
1616
let root_dir = volume_mgr.open_root_dir(volume).expect("open root dir");
1717

@@ -62,7 +62,7 @@ fn flush_file() {
6262
let mut volume_mgr: VolumeManager<utils::RamDisk<Vec<u8>>, utils::TestTimeSource, 4, 2, 1> =
6363
VolumeManager::new_with_limits(disk, time_source, 0xAA00_0000);
6464
let volume = volume_mgr
65-
.open_raw_volume(VolumeIdx(0))
65+
.open_raw_volume(VolumeIdx(0), VolumeOpenMode::ReadWrite)
6666
.expect("open volume");
6767
let root_dir = volume_mgr.open_root_dir(volume).expect("open root dir");
6868

0 commit comments

Comments
 (0)