Skip to content

Commit a205430

Browse files
chegewarame-no-dev
authored andcommitted
Add support to read/write raw sectors from/to sd card (espressif#4777)
1 parent d7eb1fc commit a205430

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
@@ -675,6 +675,15 @@ DRESULT ff_sd_ioctl(uint8_t pdrv, uint8_t cmd, void* buff)
675675
return RES_PARERR;
676676
}
677677

678+
bool sd_read_raw(uint8_t pdrv, uint8_t* buffer, DWORD sector)
679+
{
680+
return ff_sd_read(pdrv, buffer, sector, 1) == ESP_OK;
681+
}
682+
683+
bool sd_write_raw(uint8_t pdrv, uint8_t* buffer, DWORD sector)
684+
{
685+
return ff_sd_write(pdrv, buffer, sector, 1) == ESP_OK;
686+
}
678687

679688
/*
680689
* 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)