Skip to content

Commit 0ec6c18

Browse files
authored
Add support to read/write raw sectors from/to sd card (#4777)
1 parent d3f4f34 commit 0ec6c18

File tree

4 files changed

+25
-0
lines changed

4 files changed

+25
-0
lines changed

libraries/SD/src/SD.cpp

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -103,4 +103,15 @@ uint64_t SDFS::usedBytes()
103103
return size;
104104
}
105105

106+
bool SDFS::readRAW(uint8_t* buffer, uint32_t sector)
107+
{
108+
return sd_read_raw(_pdrv, buffer, sector);
109+
}
110+
111+
bool SDFS::writeRAW(uint8_t* buffer, uint32_t sector)
112+
{
113+
return sd_write_raw(_pdrv, buffer, sector);
114+
}
115+
116+
106117
SDFS SD = SDFS(FSImplPtr(new VFSImpl()));

libraries/SD/src/SD.h

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,8 @@ class SDFS : public FS
3434
uint64_t cardSize();
3535
uint64_t totalBytes();
3636
uint64_t usedBytes();
37+
bool readRAW(uint8_t* buffer, uint32_t sector);
38+
bool writeRAW(uint8_t* buffer, uint32_t sector);
3739
};
3840

3941
}

libraries/SD/src/sd_diskio.cpp

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -641,6 +641,15 @@ DRESULT ff_sd_ioctl(uint8_t pdrv, uint8_t cmd, void* buff)
641641
return RES_PARERR;
642642
}
643643

644+
bool sd_read_raw(uint8_t pdrv, uint8_t* buffer, DWORD sector)
645+
{
646+
return ff_sd_read(pdrv, buffer, sector, 1) == ESP_OK;
647+
}
648+
649+
bool sd_write_raw(uint8_t pdrv, uint8_t* buffer, DWORD sector)
650+
{
651+
return ff_sd_write(pdrv, buffer, sector, 1) == ESP_OK;
652+
}
644653

645654
/*
646655
* Public methods

libraries/SD/src/sd_diskio.h

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@
1717
#include "Arduino.h"
1818
#include "SPI.h"
1919
#include "sd_defines.h"
20+
// #include "diskio.h"
2021

2122
uint8_t sdcard_init(uint8_t cs, SPIClass * spi, int hz);
2223
uint8_t sdcard_uninit(uint8_t pdrv);
@@ -27,5 +28,7 @@ uint8_t sdcard_unmount(uint8_t pdrv);
2728
sdcard_type_t sdcard_type(uint8_t pdrv);
2829
uint32_t sdcard_num_sectors(uint8_t pdrv);
2930
uint32_t sdcard_sector_size(uint8_t pdrv);
31+
bool sd_read_raw(uint8_t pdrv, uint8_t* buffer, uint32_t sector);
32+
bool sd_write_raw(uint8_t pdrv, uint8_t* buffer, uint32_t sector);
3033

3134
#endif /* _SD_DISKIO_H_ */

0 commit comments

Comments
 (0)