Arduino FatFS
Loading...
Searching...
No Matches
MultiIO.h
1#pragma once
2
3#include "IO.h"
4#include "fatfs.h"
5
6namespace fatfs {
7
15class MultiIO : public IO {
16 public:
17 MultiIO() = default;
18
19 void add(IO& io) { io_vector.push_back(&io); }
20
22 FRESULT mount(FatFs& fs) override {
23 FRESULT rc;
24 for (int j = 0; j < io_vector.size(); j++) {
25 rc = io_vector[j]->mount(fs);
26 if (rc != FR_OK) break;
27 }
28 return rc;
29 }
30
32 FRESULT un_mount(FatFs& fs) override {
33 FRESULT result = FR_OK;
34 for (int j = 0; j < io_vector.size(); j++) {
35 auto rc = io_vector[j]->un_mount(fs);
36 if (rc != FR_OK) result = rc;
37 }
38 return result;
39 }
40
41 DSTATUS disk_initialize(BYTE pdrv) override {
42 if (pdrv >= io_vector.size()) return STA_NODISK;
43 return io_vector[pdrv]->disk_initialize(0);
44 };
45 DSTATUS disk_status(BYTE pdrv) override {
46 if (pdrv >= io_vector.size()) return STA_NODISK;
47 return io_vector[pdrv]->disk_status(0);
48 }
49 DRESULT disk_read(BYTE pdrv, BYTE* buff, LBA_t sector, UINT count) override {
50 if (pdrv >= io_vector.size()) return RES_NOTRDY;
51 return io_vector[pdrv]->disk_read(0, buff, sector, count);
52 }
53 DRESULT disk_write(BYTE pdrv, const BYTE* buff, LBA_t sector,
54 UINT count) override {
55 if (pdrv >= io_vector.size()) return RES_NOTRDY;
56 return io_vector[pdrv]->disk_write(0, buff, sector, count);
57 }
58 DRESULT disk_ioctl(BYTE pdrv, ioctl_cmd_t cmd, void* buff) override {
59 if (pdrv >= io_vector.size()) return RES_NOTRDY;
60 return io_vector[pdrv]->disk_ioctl(0, cmd, buff);
61 }
62
63 protected:
64 std::vector<IO*> io_vector;
65};
66
67} // namespace fatfs
API for FatFS See http://elm-chan.org/fsw/ff/00index_e.html.
Definition ff.h:34
FatFS interface definition.
Definition IO.h:74
File system driver which supports multiple drives: Add the drivers by calling add() then call mount()...
Definition MultiIO.h:15
FRESULT un_mount(FatFs &fs) override
unmount all drivers
Definition MultiIO.h:32
FRESULT mount(FatFs &fs) override
mount all the added drivers
Definition MultiIO.h:22