1
0
mirror of https://github.com/esp8266/Arduino.git synced 2025-07-24 19:42:27 +03:00

Re-add original SD FAT info access methods (#6092)

Fixes #6081

The SD rewrite blanked out some of the internal FAT info.. Restore the
function calls and return proper values.

Because size() is used in many printf()s, we can't just change its
return type to uint64.  Instead, when size is > size-max warn.

Add SD.size64 which can be used by new apps who care about >4GB cards.
Prints a warning if debugging enabled
This commit is contained in:
Earle F. Philhower, III
2019-05-19 08:43:23 -07:00
committed by GitHub
parent 82adc95d64
commit b5560759ec
3 changed files with 49 additions and 7 deletions

View File

@ -84,19 +84,23 @@ public:
}
uint8_t type() {
return 0;//card.type();
sdfs::SDFSImpl* sd = static_cast<sdfs::SDFSImpl*>(SDFS.getImpl().get());
return sd->type();
}
uint8_t fatType() {
return 0;//volume.fatType();
sdfs::SDFSImpl* sd = static_cast<sdfs::SDFSImpl*>(SDFS.getImpl().get());
return sd->fatType();
}
size_t blocksPerCluster() {
return 0;//volume.blocksPerCluster();
sdfs::SDFSImpl* sd = static_cast<sdfs::SDFSImpl*>(SDFS.getImpl().get());
return sd->blocksPerCluster();
}
size_t totalClusters() {
return 0;//volume.clusterCount();
sdfs::SDFSImpl* sd = static_cast<sdfs::SDFSImpl*>(SDFS.getImpl().get());
return sd->totalClusters();
}
size_t blockSize() {
@ -104,15 +108,25 @@ public:
}
size_t totalBlocks() {
return 0;//(totalClusters() / blocksPerCluster());
return (totalClusters() / blocksPerCluster());
}
size_t clusterSize() {
return 0;//blocksPerCluster() * blockSize();
return blocksPerCluster() * blockSize();
}
size_t size() {
return 0;//(clusterSize() * totalClusters());
uint64_t sz = size64();
#ifdef DEBUG_ESP_PORT
if (sz > (uint64_t)SIZE_MAX) {
DEBUG_ESP_PORT.printf_P(PSTR("WARNING: SD card size overflow (%lld>= 4GB). Please update source to use size64().\n"), sz);
}
#endif
return (size_t)sz;
}
uint64_t size64() {
return ((uint64_t)clusterSize() * (uint64_t)totalClusters());
}
private: