Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions cores/esp8266/FS.h
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,8 @@
#include <memory>
#include <Arduino.h>

class SDClass;

namespace fs {

class File;
Expand Down Expand Up @@ -208,8 +210,10 @@ class FS

bool gc();

friend class ::SDClass; // More of a frenemy, but SD needs internal implementation to get private FAT bits
protected:
FSImplPtr _impl;
FSImplPtr getImpl() { return _impl; }
};

} // namespace fs
Expand Down
18 changes: 11 additions & 7 deletions libraries/SD/src/SD.h
Original file line number Diff line number Diff line change
Expand Up @@ -84,35 +84,39 @@ class SDClass {
}

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() {
return 512;
}

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());
return (clusterSize() * totalClusters());
}

private:
Expand Down
24 changes: 24 additions & 0 deletions libraries/SDFS/src/SDFS.h
Original file line number Diff line number Diff line change
Expand Up @@ -159,6 +159,30 @@ class SDFSImpl : public FSImpl

bool format() override;

// The following are not common FS interfaces, but are needed only to
// support the older SD.h exports
uint8_t type() {
return _fs.card()->type();
}
uint8_t fatType() {
return _fs.vol()->fatType();
}
size_t blocksPerCluster() {
return _fs.vol()->blocksPerCluster();
}
size_t totalClusters() {
return _fs.vol()->clusterCount();
}
size_t totalBlocks() {
return (totalClusters() / blocksPerCluster());
}
size_t clusterSize() {
return blocksPerCluster() * 512; // 512b block size
}
size_t size() {
return (clusterSize() * totalClusters());
}

protected:
friend class SDFileImpl;
friend class SDFSDirImpl;
Expand Down