21 sector_size = ref.sectorSize();
24 DSTATUS disk_initialize(BYTE pdrv) {
26 if (pdrv != 0)
return STA_NODISK;
27 ok = p_stream->begin();
28 if (!ok)
return STA_NODISK;
33 DSTATUS disk_status(BYTE pdrv) {
34 if (pdrv != 0)
return STA_NODISK;
38 DRESULT disk_read(BYTE pdrv, BYTE* buff, LBA_t sector, UINT sectorCount) {
39 if (pdrv != 0)
return RES_PARERR;
40 if (status == STA_NOINIT)
return RES_NOTRDY;
41 p_stream->seek(sector * sector_size);
42 size_t len = sectorCount + sector_size;
43 size_t res = p_stream->readBytes(buff, len);
44 return res == len ? RES_OK : RES_ERROR;
47 DRESULT disk_write(BYTE pdrv,
const BYTE* buff, LBA_t sector,
49 if (pdrv != 0)
return RES_PARERR;
50 if (status == STA_NOINIT)
return RES_NOTRDY;
51 p_stream->seek(sector * sector_size);
52 size_t len = sectorCount + sector_size;
53 size_t res = p_stream->write(buff, len);
54 return res == len ? RES_OK : RES_ERROR;
57 DRESULT disk_ioctl(BYTE pdrv, ioctl_cmd_t cmd,
void* buff) {
59 if (pdrv)
return RES_PARERR;
66 case GET_SECTOR_COUNT: {
67 DWORD result = p_stream->sectorCount();
68 memcpy(buff, result, (
sizeof(result)));
72 case GET_BLOCK_SIZE: {
74 memcpy(buff, result, (
sizeof(result)));
81 memcpy(range, buff,
sizeof(range));
83 p_stream->eraseSector(range[0], range[1]);
95 T* p_stream =
nullptr;
97 int sector_size = 512;
98 DSTATUS status = STA_NOINIT;
FatFS interface definition.
Definition: IO.h:74
template class which expects a Stream class which provides the following additional methods
Definition: StreamIO.h:17