Mathew Swabey / SDCard

Dependents:   ELEC350_Project2 SDcard

Files at this revision

API Documentation at this revision

Comitter:
Swabey89
Date:
Thu Nov 08 21:29:38 2018 +0000
Parent:
1:c3af0c26ded2
Child:
3:c6e5dd2faa22
Commit message:
Initialise moved into SDcard, requires improvement. ultimately sampling will be done on timer ISR with data put in queue

Changed in this revision

SDCard.cpp Show annotated file Show diff for this revision Revisions of this file
SDCard.hpp Show annotated file Show diff for this revision Revisions of this file
--- a/SDCard.cpp	Wed Nov 07 19:56:55 2018 +0000
+++ b/SDCard.cpp	Thu Nov 08 21:29:38 2018 +0000
@@ -3,21 +3,77 @@
 void SDcard(void)
 {
         
-        //puts("SD Card alive");
-        //Thread::wait(3000);
+        
+    //REQUIRES IMPROVEMENTS, SEE ONENOTE
         
-        //Initialisation stuff
-               
-        //printf("SD card queue error, unreachable code");
-        //SDQueue.dispatch();
+    //Initialise the SD card
+    if ( sd.init() != 0) {
+        printf("Init failed \n");
+        lcd.cls();
+        lcd.printf("CANNOT INIT SD");        
+        errorCode(FATAL);
+    } 
+    
+    //Create a filing system for SD Card
+    FATFileSystem fs("sd", &sd);     
+
+    //Open to WRITE
+    FILE* fp = fopen("/sd/test.csv","a");
+    if (fp == NULL) {
+        error("Could not open file for write\n");
+        lcd.cls();
+        lcd.printf("CANNOT OPEN FILE\n\n");
+        errorCode(FATAL);
+    }
+    
+    //Last message before sampling begins
+    lcd.cls();
+    lcd.printf("READY\n\n");
+    
+    //move?   
+    //Press either switch to unmount
+    while ((SW1 == 0) && (SW2 == 0)) {
+        
+        //Base loop delay
+        wait(1.0);
+        
+        //Read environmental sensors
+        double temp = sensor.getTemperature();
+        double pressure = sensor.getPressure();
+        
+        //Write new data to LCD (not fast!)
+        lcd.cls();
+        lcd.printf("Temp   Pressure\n"); 
+        lcd.printf("%6.1f ",temp);
+        lcd.printf("%.2f\n",pressure);
+        
+        //Write to SD (potentially slow)
+        //fprintf(fp, "%6.1f,%.2f\n\r", temp, pressure);
+    }
+    
+    //Close File
+    fclose(fp);
+    
+    //Close down
+    sd.deinit();
+    printf("Unmounted...\n");
+    lcd.cls();
+    lcd.printf("Unmounted...\n\n");
 }
 
 void SDread(int n)
 {
-    printf("Read %d files\n", n);
+    if (n == -1) puts("Received command to read all");
+    else printf("Received command to read %d\n", n);
+}
+
+void SDdelete(int n)
+{
+    if (n == -1) puts("Received command to delete all");
+    else printf("Received command to delete %d\n", n);   
 }
 
 void SDalive(void)
 {
-    puts("Im alive\n");   
+    //puts("SD THREAD ALIVE\n");   
 }
\ No newline at end of file
--- a/SDCard.hpp	Wed Nov 07 19:56:55 2018 +0000
+++ b/SDCard.hpp	Thu Nov 08 21:29:38 2018 +0000
@@ -10,6 +10,7 @@
 
 void SDcard(void);
 void SDread(int n);
+void SDdelete(int n);
 void SDalive(void);
 
 #endif
\ No newline at end of file