SDFileSystem, slightly modified for the ExoController
Dependents: Data-Management-Honka
Fork of SDFileSystem_HelloWorld by
Revision 11:b47fb3344ed9, committed 2015-05-11
- Comitter:
- mzling
- Date:
- Mon May 11 21:47:54 2015 +0000
- Parent:
- 10:23a3c0102ab0
- Commit message:
- Added debug functions/comments
Changed in this revision
SDFile.cpp | Show annotated file Show diff for this revision Revisions of this file |
SDFile.h | Show annotated file Show diff for this revision Revisions of this file |
diff -r 23a3c0102ab0 -r b47fb3344ed9 SDFile.cpp --- a/SDFile.cpp Mon Apr 27 21:58:36 2015 +0000 +++ b/SDFile.cpp Mon May 11 21:47:54 2015 +0000 @@ -8,7 +8,7 @@ SDFile::SDFile(string path, string filename, bool readOnly) { //Creates the necessary directory - //printf("Creating SDFile object\r\n"); + printf("Creating SDFile object\r\n"); char *a = new char[path.size()+1]; a[path.size()] = 0; memcpy(a,path.c_str(),path.size()); @@ -22,8 +22,17 @@ //printf("Opening readonly file\r\n"); //_fp = fopen((const char*)b, "r"); } else { - //printf("Opening writable file\r\n"); + printf("Opening writable file %s\r\n", b); _fp = fopen((const char*)b, "w+"); + if (_fp == NULL) { + //boardLed3 = 1; + newFile = true; + printf("file %s not found\r\n", b); + _fp = fopen((const char*)b, "w+"); + } else { + newFile = false; + printf("file %s found\r\n", b); + } } //printf("fp is %d\r\n", _fp); } @@ -39,13 +48,13 @@ { //shift to the end of the file and go back accounting for the commas, spaces, \n, and \r (6 places per data) - int s = fseek(_fp, -6*length, SEEK_END); + fseek(_fp, -6*length, SEEK_END); //pc.printf("reading to array at %d\r\n", &array[0]); //cycle through the length of the vector and read the values. for(int i = 0; i < length; i++) { //pc.printf("File %d, array %d\r\n", _fp, &array[i]); - s= fscanf(_fp, "%x, ", &array[i]); + fscanf(_fp, "%x, ", &array[i]); // pc.printf("HHHHH\r\n", s); //pc.printf("read %x now at %ld\r\n", array[i], ftell(_fp)); } @@ -62,6 +71,19 @@ return array; } +//Debug only--prints file contents, 6 chars to a line for up to 23 lines +void SDFile::debug_print() { + fseek(_fp, 0, SEEK_SET); + char c; + for (int i = 0; i < 23; i++) { + for (int j = 0; j < 6; j++) { + fscanf(_fp, "%c", &c); + pc.printf("%c", c); + } + pc.printf("\r\n"); + } +} + /** * This function writes from an array to the file pointed to by fp * @param length length of data to write @@ -75,17 +97,17 @@ fseek(_fp, 0, SEEK_SET); // printf("Writing %d\r\n", array[0]); //printf("Starting to write\r\n"); - int w; +// int w; for(int i = 0; i < length-1; i++) { /* This line fails when run on testFile, reason unknown...*/ //printf("%d\r\n", fprintf(_fp, "%04x, ", array[i])); - pc.printf("Writing at %ld\r\n", ftell(_fp)); - w = fprintf(_fp, "%04x, ", array[i]); - pc.printf("Wrote %d, now at %ld\r\n", w, ftell(_fp)); + //pc.printf("Writing at %ld\r\n", ftell(_fp)); + fprintf(_fp, "%04x, ", array[i]); + //pc.printf("Wrote %x, now at %ld\r\n", array[i], ftell(_fp)); } //printf("%d\r\n", fprintf(_fp, "%04x\r\n", array[length-1])); fprintf(_fp, "%04x\r\n", array[length-1]); - fflush(_fp); + //fflush(_fp); } /** This function writes to a single position in the file @@ -102,6 +124,7 @@ //pc.printf("Val is %x\r\n", val); //pc.printf("%d, %d\r\n", sizeof value, sizeof 0xdead); //pc.printf("%04x, ", value); + //The &0xffff forces the float to write only 4 characters--without it floats become 8 chars long, for some reason int w = fprintf(_fp, "%04x, ", value & 0xffff); //pc.printf("Wrote %d, now at %ld\r\n", w, ftell(_fp)); fflush(_fp);
diff -r 23a3c0102ab0 -r b47fb3344ed9 SDFile.h --- a/SDFile.h Mon Apr 27 21:58:36 2015 +0000 +++ b/SDFile.h Mon May 11 21:47:54 2015 +0000 @@ -25,6 +25,7 @@ void open_for_read(std::string path, std::string filename); void open_for_write(std::string path, std::string filename); void close(); + void debug_print(); private: FILE *_fp;