SD card functionality
Dependents: ELEC350_Project2 SDcard
SDCard.cpp@3:c6e5dd2faa22, 2018-11-09 (annotated)
- Committer:
- Swabey89
- Date:
- Fri Nov 09 17:56:55 2018 +0000
- Revision:
- 3:c6e5dd2faa22
- Parent:
- 2:9a5eea2adbf8
- Child:
- 4:dc767b5f917b
SD card now has new functions, one will write the sampled data to the SD card
Who changed what in which revision?
User | Revision | Line number | New 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 | 2:9a5eea2adbf8 | 20 | FATFileSystem fs("sd", &sd); |
Swabey89 | 2:9a5eea2adbf8 | 21 | |
Swabey89 | 2:9a5eea2adbf8 | 22 | //Open to WRITE |
Swabey89 | 3:c6e5dd2faa22 | 23 | FILE* fp = fopen("/sd/newtest.csv","a"); |
Swabey89 | 2:9a5eea2adbf8 | 24 | if (fp == NULL) { |
Swabey89 | 2:9a5eea2adbf8 | 25 | error("Could not open file for write\n"); |
Swabey89 | 2:9a5eea2adbf8 | 26 | lcd.cls(); |
Swabey89 | 2:9a5eea2adbf8 | 27 | lcd.printf("CANNOT OPEN FILE\n\n"); |
Swabey89 | 2:9a5eea2adbf8 | 28 | errorCode(FATAL); |
Swabey89 | 2:9a5eea2adbf8 | 29 | } |
Swabey89 | 2:9a5eea2adbf8 | 30 | |
Swabey89 | 3:c6e5dd2faa22 | 31 | fclose(fp); |
Swabey89 | 3:c6e5dd2faa22 | 32 | |
Swabey89 | 2:9a5eea2adbf8 | 33 | //Last message before sampling begins |
Swabey89 | 2:9a5eea2adbf8 | 34 | lcd.cls(); |
Swabey89 | 2:9a5eea2adbf8 | 35 | lcd.printf("READY\n\n"); |
Swabey89 | 2:9a5eea2adbf8 | 36 | |
Swabey89 | 3:c6e5dd2faa22 | 37 | |
Swabey89 | 3:c6e5dd2faa22 | 38 | |
Swabey89 | 2:9a5eea2adbf8 | 39 | //move? |
Swabey89 | 2:9a5eea2adbf8 | 40 | //Press either switch to unmount |
Swabey89 | 3:c6e5dd2faa22 | 41 | /* |
Swabey89 | 2:9a5eea2adbf8 | 42 | while ((SW1 == 0) && (SW2 == 0)) { |
Swabey89 | 2:9a5eea2adbf8 | 43 | |
Swabey89 | 3:c6e5dd2faa22 | 44 | |
Swabey89 | 2:9a5eea2adbf8 | 45 | //Write to SD (potentially slow) |
Swabey89 | 2:9a5eea2adbf8 | 46 | //fprintf(fp, "%6.1f,%.2f\n\r", temp, pressure); |
Swabey89 | 3:c6e5dd2faa22 | 47 | |
Swabey89 | 2:9a5eea2adbf8 | 48 | } |
Swabey89 | 2:9a5eea2adbf8 | 49 | |
Swabey89 | 2:9a5eea2adbf8 | 50 | //Close File |
Swabey89 | 2:9a5eea2adbf8 | 51 | fclose(fp); |
Swabey89 | 2:9a5eea2adbf8 | 52 | |
Swabey89 | 2:9a5eea2adbf8 | 53 | //Close down |
Swabey89 | 2:9a5eea2adbf8 | 54 | sd.deinit(); |
Swabey89 | 2:9a5eea2adbf8 | 55 | printf("Unmounted...\n"); |
Swabey89 | 2:9a5eea2adbf8 | 56 | lcd.cls(); |
Swabey89 | 2:9a5eea2adbf8 | 57 | lcd.printf("Unmounted...\n\n"); |
Swabey89 | 3:c6e5dd2faa22 | 58 | */ |
Swabey89 | 1:c3af0c26ded2 | 59 | } |
Swabey89 | 1:c3af0c26ded2 | 60 | |
Swabey89 | 1:c3af0c26ded2 | 61 | void SDread(int n) |
Swabey89 | 1:c3af0c26ded2 | 62 | { |
Swabey89 | 3:c6e5dd2faa22 | 63 | //Read n samples from the SD card |
Swabey89 | 2:9a5eea2adbf8 | 64 | if (n == -1) puts("Received command to read all"); |
Swabey89 | 2:9a5eea2adbf8 | 65 | else printf("Received command to read %d\n", n); |
Swabey89 | 2:9a5eea2adbf8 | 66 | } |
Swabey89 | 2:9a5eea2adbf8 | 67 | |
Swabey89 | 2:9a5eea2adbf8 | 68 | void SDdelete(int n) |
Swabey89 | 2:9a5eea2adbf8 | 69 | { |
Swabey89 | 3:c6e5dd2faa22 | 70 | //Delete n samples from the SD card |
Swabey89 | 2:9a5eea2adbf8 | 71 | if (n == -1) puts("Received command to delete all"); |
Swabey89 | 2:9a5eea2adbf8 | 72 | else printf("Received command to delete %d\n", n); |
Swabey89 | 1:c3af0c26ded2 | 73 | } |
Swabey89 | 1:c3af0c26ded2 | 74 | |
Swabey89 | 3:c6e5dd2faa22 | 75 | void SDaddSample(double temp, double pressure) |
Swabey89 | 3:c6e5dd2faa22 | 76 | { |
Swabey89 | 3:c6e5dd2faa22 | 77 | //Add the sampled data to the SD card |
Swabey89 | 3:c6e5dd2faa22 | 78 | |
Swabey89 | 3:c6e5dd2faa22 | 79 | FILE* fp = fopen("/sd/newtest.csv","a"); |
Swabey89 | 3:c6e5dd2faa22 | 80 | fprintf(fp, "%6.1f,%.2f\n\r", temp, pressure); |
Swabey89 | 3:c6e5dd2faa22 | 81 | fclose(fp); |
Swabey89 | 3:c6e5dd2faa22 | 82 | puts("SAMPLE ADDED TO SD CARD"); |
Swabey89 | 3:c6e5dd2faa22 | 83 | } |
Swabey89 | 3:c6e5dd2faa22 | 84 | |
Swabey89 | 1:c3af0c26ded2 | 85 | void SDalive(void) |
Swabey89 | 1:c3af0c26ded2 | 86 | { |
Swabey89 | 3:c6e5dd2faa22 | 87 | //Signal that the SD thread is still alive |
Swabey89 | 2:9a5eea2adbf8 | 88 | //puts("SD THREAD ALIVE\n"); |
Swabey89 | 0:0fc2cf27ff9e | 89 | } |