SDFileSystem, slightly modified for the ExoController

Dependencies:   SDFileSystem

Dependents:   Data-Management-Honka

Fork of SDFileSystem_HelloWorld by Bradley Perry

Files at this revision

API Documentation at this revision

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;