diff --git a/libraries/SD/src/SD.cpp b/libraries/SD/src/SD.cpp index d268aa0fb97..4f8e76e5f31 100644 --- a/libraries/SD/src/SD.cpp +++ b/libraries/SD/src/SD.cpp @@ -103,4 +103,15 @@ uint64_t SDFS::usedBytes() return size; } +bool SDFS::readRAW(uint8_t* buffer, uint32_t sector) +{ + return sd_read_raw(_pdrv, buffer, sector); +} + +bool SDFS::writeRAW(uint8_t* buffer, uint32_t sector) +{ + return sd_write_raw(_pdrv, buffer, sector); +} + + SDFS SD = SDFS(FSImplPtr(new VFSImpl())); diff --git a/libraries/SD/src/SD.h b/libraries/SD/src/SD.h index da66c386c88..55f4a369d7e 100644 --- a/libraries/SD/src/SD.h +++ b/libraries/SD/src/SD.h @@ -34,6 +34,8 @@ class SDFS : public FS uint64_t cardSize(); uint64_t totalBytes(); uint64_t usedBytes(); + bool readRAW(uint8_t* buffer, uint32_t sector); + bool writeRAW(uint8_t* buffer, uint32_t sector); }; } diff --git a/libraries/SD/src/sd_diskio.cpp b/libraries/SD/src/sd_diskio.cpp index a10d322b6c9..a633133c42a 100644 --- a/libraries/SD/src/sd_diskio.cpp +++ b/libraries/SD/src/sd_diskio.cpp @@ -641,6 +641,15 @@ DRESULT ff_sd_ioctl(uint8_t pdrv, uint8_t cmd, void* buff) return RES_PARERR; } +bool sd_read_raw(uint8_t pdrv, uint8_t* buffer, DWORD sector) +{ + return ff_sd_read(pdrv, buffer, sector, 1) == ESP_OK; +} + +bool sd_write_raw(uint8_t pdrv, uint8_t* buffer, DWORD sector) +{ + return ff_sd_write(pdrv, buffer, sector, 1) == ESP_OK; +} /* * Public methods diff --git a/libraries/SD/src/sd_diskio.h b/libraries/SD/src/sd_diskio.h index 143be683e63..738be96b67d 100644 --- a/libraries/SD/src/sd_diskio.h +++ b/libraries/SD/src/sd_diskio.h @@ -17,6 +17,7 @@ #include "Arduino.h" #include "SPI.h" #include "sd_defines.h" +// #include "diskio.h" uint8_t sdcard_init(uint8_t cs, SPIClass * spi, int hz); uint8_t sdcard_uninit(uint8_t pdrv); @@ -27,5 +28,7 @@ uint8_t sdcard_unmount(uint8_t pdrv); sdcard_type_t sdcard_type(uint8_t pdrv); uint32_t sdcard_num_sectors(uint8_t pdrv); uint32_t sdcard_sector_size(uint8_t pdrv); +bool sd_read_raw(uint8_t pdrv, uint8_t* buffer, uint32_t sector); +bool sd_write_raw(uint8_t pdrv, uint8_t* buffer, uint32_t sector); #endif /* _SD_DISKIO_H_ */