From 40cbceeab6046e34eb3f911a9d8f13ce4d2421e4 Mon Sep 17 00:00:00 2001 From: Holger Lembke Date: Sun, 13 Aug 2023 20:44:36 +0200 Subject: [PATCH 1/2] Fixes wrong usedbytes/totalbytes results. drive id was implemented fixed, does not work with arbitrary initialization. See https://github.com/espressif/arduino-esp32/issues/3546 --- libraries/SD/src/SD.cpp | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/libraries/SD/src/SD.cpp b/libraries/SD/src/SD.cpp index b1731f155ba..82ede4fe6a5 100644 --- a/libraries/SD/src/SD.cpp +++ b/libraries/SD/src/SD.cpp @@ -95,7 +95,8 @@ uint64_t SDFS::totalBytes() { FATFS* fsinfo; DWORD fre_clust; - if(f_getfree("0:",&fre_clust,&fsinfo)!= 0) return 0; + char drv[3] = {(char)(48+_pdrv), ':', 0}; + if(f_getfree(drv,&fre_clust,&fsinfo)!= 0) return 0; uint64_t size = ((uint64_t)(fsinfo->csize))*(fsinfo->n_fatent - 2) #if _MAX_SS != 512 *(fsinfo->ssize); @@ -109,7 +110,8 @@ uint64_t SDFS::usedBytes() { FATFS* fsinfo; DWORD fre_clust; - if(f_getfree("0:",&fre_clust,&fsinfo)!= 0) return 0; + char drv[3] = {(char)(48+_pdrv), ':', 0}; + if(f_getfree(drv,&fre_clust,&fsinfo)!= 0) return 0; uint64_t size = ((uint64_t)(fsinfo->csize))*((fsinfo->n_fatent - 2) - (fsinfo->free_clst)) #if _MAX_SS != 512 *(fsinfo->ssize); From c8cdbd2040125cb64a542476e827681f8710d544 Mon Sep 17 00:00:00 2001 From: Holger Lembke Date: Sun, 13 Aug 2023 20:52:24 +0200 Subject: [PATCH 2/2] Fixing indention/tabs --- libraries/SD/src/SD.cpp | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/libraries/SD/src/SD.cpp b/libraries/SD/src/SD.cpp index 82ede4fe6a5..75f9e235c9e 100644 --- a/libraries/SD/src/SD.cpp +++ b/libraries/SD/src/SD.cpp @@ -95,9 +95,9 @@ uint64_t SDFS::totalBytes() { FATFS* fsinfo; DWORD fre_clust; - char drv[3] = {(char)(48+_pdrv), ':', 0}; + char drv[3] = {(char)(48+_pdrv), ':', 0}; if(f_getfree(drv,&fre_clust,&fsinfo)!= 0) return 0; - uint64_t size = ((uint64_t)(fsinfo->csize))*(fsinfo->n_fatent - 2) + uint64_t size = ((uint64_t)(fsinfo->csize))*(fsinfo->n_fatent - 2) #if _MAX_SS != 512 *(fsinfo->ssize); #else @@ -110,7 +110,7 @@ uint64_t SDFS::usedBytes() { FATFS* fsinfo; DWORD fre_clust; - char drv[3] = {(char)(48+_pdrv), ':', 0}; + char drv[3] = {(char)(48+_pdrv), ':', 0}; if(f_getfree(drv,&fre_clust,&fsinfo)!= 0) return 0; uint64_t size = ((uint64_t)(fsinfo->csize))*((fsinfo->n_fatent - 2) - (fsinfo->free_clst)) #if _MAX_SS != 512