Support for 10 level deep SD folder hierarchy
This commit is contained in:
parent
0ef54f2f85
commit
a5cd582665
@ -18,6 +18,8 @@ CardReader::CardReader()
|
|||||||
saving = false;
|
saving = false;
|
||||||
logging = false;
|
logging = false;
|
||||||
autostart_atmillis=0;
|
autostart_atmillis=0;
|
||||||
|
workDirDepth = 0;
|
||||||
|
memset(workDirParents, 0, sizeof(workDirParents));
|
||||||
|
|
||||||
autostart_stilltocheck=true; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
|
autostart_stilltocheck=true; //the sd start is delayed, because otherwise the serial cannot answer fast enought to make contact with the hostsoftware.
|
||||||
lastnr=0;
|
lastnr=0;
|
||||||
@ -521,19 +523,24 @@ void CardReader::chdir(const char * relpath)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
workDirParentParent=workDirParent;
|
if (workDirDepth < MAX_DIR_DEPTH) {
|
||||||
workDirParent=*parent;
|
for (int d = ++workDirDepth; d--;)
|
||||||
|
workDirParents[d+1] = workDirParents[d];
|
||||||
|
workDirParents[0]=*parent;
|
||||||
|
}
|
||||||
workDir=newfile;
|
workDir=newfile;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
void CardReader::updir()
|
void CardReader::updir()
|
||||||
{
|
{
|
||||||
if(!workDir.isRoot())
|
if(workDirDepth > 0)
|
||||||
{
|
{
|
||||||
workDir=workDirParent;
|
--workDirDepth;
|
||||||
workDirParent=workDirParentParent;
|
workDir = workDirParents[0];
|
||||||
|
int d;
|
||||||
|
for (int d = 0; d < workDirDepth; d++)
|
||||||
|
workDirParents[d] = workDirParents[d+1];
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -3,6 +3,8 @@
|
|||||||
|
|
||||||
#ifdef SDSUPPORT
|
#ifdef SDSUPPORT
|
||||||
|
|
||||||
|
#define MAX_DIR_DEPTH 10
|
||||||
|
|
||||||
#include "SdFile.h"
|
#include "SdFile.h"
|
||||||
enum LsAction {LS_SerialPrint,LS_Count,LS_GetFilename};
|
enum LsAction {LS_SerialPrint,LS_Count,LS_GetFilename};
|
||||||
class CardReader
|
class CardReader
|
||||||
@ -53,7 +55,8 @@ public:
|
|||||||
bool filenameIsDir;
|
bool filenameIsDir;
|
||||||
int lastnr; //last number of the autostart;
|
int lastnr; //last number of the autostart;
|
||||||
private:
|
private:
|
||||||
SdFile root,*curDir,workDir,workDirParent,workDirParentParent;
|
SdFile root,*curDir,workDir,workDirParents[MAX_DIR_DEPTH];
|
||||||
|
uint16_t workDirDepth;
|
||||||
Sd2Card card;
|
Sd2Card card;
|
||||||
SdVolume volume;
|
SdVolume volume;
|
||||||
SdFile file;
|
SdFile file;
|
||||||
|
Loading…
Reference in New Issue
Block a user