SD Fat Find parent folder help


i'm looking make function uses [sdfat library](https://github.com/greiman/sdfat) browse next file in sd card. when finds folder, opens folder , reads contents in lexicographic order , then, after finishes folder, should reopen folder's parent directory , continue on.
(equivalent to  `[fatfile].ls(&serial, ls_r);` except stopping @ each file)

right function looks this:

**init steps**

*pass in `disp` file name out lcd

*pass in `movement` may want go `n` files forward in future

*then open next file in global var `sdfat dirfile` (the sd card's current active folder)

code: [select]
    char sdbrowse (char *disp, int movement)
    {
      char sfn[13];        //shrot file name allocation space check .csv extension
      fatfile browsefile;  //allocation next fatfile
      while(movement>0)
      {
        if(!browsefile.opennext(&dirfile, o_rdonly))
        {


(if opennext==false, `browsefile` may either subdirectory or @ end of folder) ->test determine accordingly:

if browsefile subdirectory, set `dirfile` `browsefile` , read 1st file

code: [select]
          if(browsefile.issubdir())
          {
            browsefile.open(&dirfile,browsefile.dirindex(), o_read);
            dirfile=browsefile;
            browsefile.close();
            browsefile.opennext(&dirfile, o_read);
            serial.print("sub ->");      //debug
            dirfile.printname(&serial);  //debug
            serial.println();            //debug
          }



----------


here's i'm having toubble
this element of function supposed determine parent folder of `dirfile`, open parent, set `dirfile=[parent]`, , open `browsefile` @ `dirfile`'s index in parent folder +1. however, seems closing , reopening `dirfile`.
         
code: [select]
          else if(dirfile.issubdir())
          {
           
            uint16_t dirpos=dirfile.dirindex();
            sdfile *parentdir;
            browsefile.close();
            //open parent
            parentdir=dirfile.cwd();
            //parentdir.open(dirfile.cwd(),"/",o_read);
            //move dirfile up
            dirfile.close();
            dirfile.setcwd(parentdir);
            //parentdir.close();
            //reopen browse @ dir+1
            browsefile.open(&dirfile,dirpos+1, o_read);
            serial.print("up ->");          //debug
            dirfile.printname(&serial);     //debug
            serial.println(" new parent");  //debug
          }



----------


if `browsefile.opennext(&dirfile, o_rdonly)==false` andneither `browsefile` nor `dirfile` sub directories, follows `browsefile` has reached end of root directory. function closes `browsefile` , `dirfile` , reopens `dirfile` @ root restart top.

code: [select]
          else
          {
            browsefile.close();
            dirfile.close();
            dirfile.open("/",o_read);
            serial.println("reset");  //debug
          }
        } //end of if(!browsefile.opennext(&dirfile, o_rdonly)) statement


if `browsefile.opennext(&dirfile, o_rdonly)==true`, double check make sure file , not hidden. then, if there's .csv extension, decrement `movement` , if `movement--=0` feed `disp`.....

 
code: [select]
       else if(browsefile.isfile()&& !browsefile.ishidden())
        {
          browsefile.getsfn(&*sfn);         
          if(strstr(sfn,".csv") != null)
          {
            browsefile.printname(&serial);  //debug
            serial.println();               //debug
            movement--;
            if(movement=0){browsefile.getname(disp,17);}
          }
        }
      }
    }
   



----------

i'm relatively new working computer file structures @ level, there may i'm missing. please let me know if there i'm missing or if there's can better within code itself.

in post #4 of thread in french attached code goes recursively through files hierarchy

that  give ideas (some comments in french code code)

printing files sorted alphabetically @ given level require buffer , sort eat memory


Arduino Forum > Using Arduino > Programming Questions > SD Fat Find parent folder help


arduino

Comments

Popular posts from this blog

Flip address is out of range arduino uno r3

Arduino Uno not uploading

Indesign and MathType fonts