SD card functionality

Dependents:   ELEC350_Project2 SDcard

Committer:
Swabey89
Date:
Sat Nov 10 16:28:49 2018 +0000
Revision:
4:dc767b5f917b
Parent:
3:c6e5dd2faa22
Child:
5:0d49326968ca
Changes made to have fs global. See OneNote for what to do

Who changed what in which revision?

UserRevisionLine numberNew contents of line
Swabey89 0:0fc2cf27ff9e 1 #include "SDCard.hpp"
Swabey89 0:0fc2cf27ff9e 2
Swabey89 3:c6e5dd2faa22 3
Swabey89 3:c6e5dd2faa22 4
Swabey89 1:c3af0c26ded2 5 void SDcard(void)
Swabey89 0:0fc2cf27ff9e 6 {
Swabey89 1:c3af0c26ded2 7
Swabey89 2:9a5eea2adbf8 8
Swabey89 2:9a5eea2adbf8 9 //REQUIRES IMPROVEMENTS, SEE ONENOTE
Swabey89 0:0fc2cf27ff9e 10
Swabey89 2:9a5eea2adbf8 11 //Initialise the SD card
Swabey89 2:9a5eea2adbf8 12 if ( sd.init() != 0) {
Swabey89 2:9a5eea2adbf8 13 printf("Init failed \n");
Swabey89 2:9a5eea2adbf8 14 lcd.cls();
Swabey89 2:9a5eea2adbf8 15 lcd.printf("CANNOT INIT SD");
Swabey89 2:9a5eea2adbf8 16 errorCode(FATAL);
Swabey89 2:9a5eea2adbf8 17 }
Swabey89 2:9a5eea2adbf8 18
Swabey89 2:9a5eea2adbf8 19 //Create a filing system for SD Card
Swabey89 4:dc767b5f917b 20 //FATFileSystem fs("sd", &sd);
Swabey89 4:dc767b5f917b 21 fs = new FATFileSystem("sd", &sd);
Swabey89 4:dc767b5f917b 22
Swabey89 2:9a5eea2adbf8 23 //Open to WRITE
Swabey89 4:dc767b5f917b 24 fp = fopen("/sd/q.csv","a");
Swabey89 2:9a5eea2adbf8 25 if (fp == NULL) {
Swabey89 2:9a5eea2adbf8 26 error("Could not open file for write\n");
Swabey89 2:9a5eea2adbf8 27 lcd.cls();
Swabey89 2:9a5eea2adbf8 28 lcd.printf("CANNOT OPEN FILE\n\n");
Swabey89 2:9a5eea2adbf8 29 errorCode(FATAL);
Swabey89 2:9a5eea2adbf8 30 }
Swabey89 2:9a5eea2adbf8 31
Swabey89 4:dc767b5f917b 32
Swabey89 3:c6e5dd2faa22 33 fclose(fp);
Swabey89 3:c6e5dd2faa22 34
Swabey89 2:9a5eea2adbf8 35 //Last message before sampling begins
Swabey89 2:9a5eea2adbf8 36 lcd.cls();
Swabey89 2:9a5eea2adbf8 37 lcd.printf("READY\n\n");
Swabey89 2:9a5eea2adbf8 38
Swabey89 3:c6e5dd2faa22 39
Swabey89 3:c6e5dd2faa22 40
Swabey89 2:9a5eea2adbf8 41 //move?
Swabey89 2:9a5eea2adbf8 42 //Press either switch to unmount
Swabey89 3:c6e5dd2faa22 43 /*
Swabey89 2:9a5eea2adbf8 44 while ((SW1 == 0) && (SW2 == 0)) {
Swabey89 2:9a5eea2adbf8 45
Swabey89 3:c6e5dd2faa22 46
Swabey89 2:9a5eea2adbf8 47 //Write to SD (potentially slow)
Swabey89 2:9a5eea2adbf8 48 //fprintf(fp, "%6.1f,%.2f\n\r", temp, pressure);
Swabey89 3:c6e5dd2faa22 49
Swabey89 2:9a5eea2adbf8 50 }
Swabey89 2:9a5eea2adbf8 51
Swabey89 2:9a5eea2adbf8 52 //Close File
Swabey89 2:9a5eea2adbf8 53 fclose(fp);
Swabey89 2:9a5eea2adbf8 54
Swabey89 2:9a5eea2adbf8 55 //Close down
Swabey89 2:9a5eea2adbf8 56 sd.deinit();
Swabey89 2:9a5eea2adbf8 57 printf("Unmounted...\n");
Swabey89 2:9a5eea2adbf8 58 lcd.cls();
Swabey89 2:9a5eea2adbf8 59 lcd.printf("Unmounted...\n\n");
Swabey89 3:c6e5dd2faa22 60 */
Swabey89 1:c3af0c26ded2 61 }
Swabey89 1:c3af0c26ded2 62
Swabey89 1:c3af0c26ded2 63 void SDread(int n)
Swabey89 1:c3af0c26ded2 64 {
Swabey89 3:c6e5dd2faa22 65 //Read n samples from the SD card
Swabey89 2:9a5eea2adbf8 66 if (n == -1) puts("Received command to read all");
Swabey89 2:9a5eea2adbf8 67 else printf("Received command to read %d\n", n);
Swabey89 2:9a5eea2adbf8 68 }
Swabey89 2:9a5eea2adbf8 69
Swabey89 2:9a5eea2adbf8 70 void SDdelete(int n)
Swabey89 2:9a5eea2adbf8 71 {
Swabey89 3:c6e5dd2faa22 72 //Delete n samples from the SD card
Swabey89 2:9a5eea2adbf8 73 if (n == -1) puts("Received command to delete all");
Swabey89 2:9a5eea2adbf8 74 else printf("Received command to delete %d\n", n);
Swabey89 1:c3af0c26ded2 75 }
Swabey89 1:c3af0c26ded2 76
Swabey89 3:c6e5dd2faa22 77 void SDaddSample(double temp, double pressure)
Swabey89 3:c6e5dd2faa22 78 {
Swabey89 4:dc767b5f917b 79 //Add the sampled data to the SD card
Swabey89 4:dc767b5f917b 80 fp = fopen("/sd/q.csv","a");
Swabey89 3:c6e5dd2faa22 81 fprintf(fp, "%6.1f,%.2f\n\r", temp, pressure);
Swabey89 3:c6e5dd2faa22 82 fclose(fp);
Swabey89 3:c6e5dd2faa22 83 puts("SAMPLE ADDED TO SD CARD");
Swabey89 3:c6e5dd2faa22 84 }
Swabey89 3:c6e5dd2faa22 85
Swabey89 1:c3af0c26ded2 86 void SDalive(void)
Swabey89 1:c3af0c26ded2 87 {
Swabey89 3:c6e5dd2faa22 88 //Signal that the SD thread is still alive
Swabey89 2:9a5eea2adbf8 89 //puts("SD THREAD ALIVE\n");
Swabey89 0:0fc2cf27ff9e 90 }