|
|
@ -18,6 +18,8 @@ CardReader::CardReader() |
|
|
|
saving = false; |
|
|
|
logging = false; |
|
|
|
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.
|
|
|
|
lastnr=0; |
|
|
@ -521,19 +523,24 @@ void CardReader::chdir(const char * relpath) |
|
|
|
} |
|
|
|
else |
|
|
|
{ |
|
|
|
workDirParentParent=workDirParent; |
|
|
|
workDirParent=*parent; |
|
|
|
|
|
|
|
if (workDirDepth < MAX_DIR_DEPTH) { |
|
|
|
for (int d = ++workDirDepth; d--;) |
|
|
|
workDirParents[d+1] = workDirParents[d]; |
|
|
|
workDirParents[0]=*parent; |
|
|
|
} |
|
|
|
workDir=newfile; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|
void CardReader::updir() |
|
|
|
{ |
|
|
|
if(!workDir.isRoot()) |
|
|
|
if(workDirDepth > 0) |
|
|
|
{ |
|
|
|
workDir=workDirParent; |
|
|
|
workDirParent=workDirParentParent; |
|
|
|
--workDirDepth; |
|
|
|
workDir = workDirParents[0]; |
|
|
|
int d; |
|
|
|
for (int d = 0; d < workDirDepth; d++) |
|
|
|
workDirParents[d] = workDirParents[d+1]; |
|
|
|
} |
|
|
|
} |
|
|
|
|
|
|
|