Simple SD File System test using mbed-os, FATFileSystem + sd-driver

Dependencies:   sd-driver

Fork of mbed-os-example-fat-filesystem by mbed-os-examples

Committer:
mbed_official
Date:
Thu Mar 09 17:45:26 2017 +0000
Revision:
0:ab69df6f1c47
Child:
9:4cbf1601a4a5
Update example to mbed-os-5.4

.
Commit copied from https://github.com/ARMmbed/mbed-os-example-fat-filesystem

Who changed what in which revision?

UserRevisionLine numberNew contents of line
mbed_official 0:ab69df6f1c47 1 #include "mbed.h"
mbed_official 0:ab69df6f1c47 2 #include "FATFileSystem.h"
mbed_official 0:ab69df6f1c47 3 #include "HeapBlockDevice.h"
mbed_official 0:ab69df6f1c47 4 #include <stdio.h>
mbed_official 0:ab69df6f1c47 5 #include <errno.h>
mbed_official 0:ab69df6f1c47 6
mbed_official 0:ab69df6f1c47 7 HeapBlockDevice bd(128 * 512, 512);
mbed_official 0:ab69df6f1c47 8 FATFileSystem fs("fs");
mbed_official 0:ab69df6f1c47 9
mbed_official 0:ab69df6f1c47 10 void return_error(int ret_val){
mbed_official 0:ab69df6f1c47 11 if (ret_val)
mbed_official 0:ab69df6f1c47 12 printf("Failure. %d\r\n", ret_val);
mbed_official 0:ab69df6f1c47 13 else
mbed_official 0:ab69df6f1c47 14 printf("done.\r\n");
mbed_official 0:ab69df6f1c47 15 }
mbed_official 0:ab69df6f1c47 16
mbed_official 0:ab69df6f1c47 17 void errno_error(void* ret_val){
mbed_official 0:ab69df6f1c47 18 if (ret_val == NULL)
mbed_official 0:ab69df6f1c47 19 printf(" Failure. %d \r\n", errno);
mbed_official 0:ab69df6f1c47 20 else
mbed_official 0:ab69df6f1c47 21 printf(" done.\r\n");
mbed_official 0:ab69df6f1c47 22 }
mbed_official 0:ab69df6f1c47 23
mbed_official 0:ab69df6f1c47 24 int main() {
mbed_official 0:ab69df6f1c47 25 int error = 0;
mbed_official 0:ab69df6f1c47 26 printf("Welcome to the filesystem example.\r\n"
mbed_official 0:ab69df6f1c47 27 "Formatting a FAT, RAM-backed filesystem. ");
mbed_official 0:ab69df6f1c47 28 error = FATFileSystem::format(&bd);
mbed_official 0:ab69df6f1c47 29 return_error(error);
mbed_official 0:ab69df6f1c47 30
mbed_official 0:ab69df6f1c47 31 printf("Mounting the filesystem on \"/fs\". ");
mbed_official 0:ab69df6f1c47 32 error = fs.mount(&bd);
mbed_official 0:ab69df6f1c47 33 return_error(error);
mbed_official 0:ab69df6f1c47 34
mbed_official 0:ab69df6f1c47 35 printf("Opening a new file, numbers.txt.");
mbed_official 0:ab69df6f1c47 36 FILE* fd = fopen("/fs/numbers.txt", "w");
mbed_official 0:ab69df6f1c47 37 errno_error(fd);
mbed_official 0:ab69df6f1c47 38
mbed_official 0:ab69df6f1c47 39 for (int i = 0; i < 20; i++){
mbed_official 0:ab69df6f1c47 40 printf("Writing decimal numbers to a file (%d/20)\r", i);
mbed_official 0:ab69df6f1c47 41 fprintf(fd, "%d\r\n", i);
mbed_official 0:ab69df6f1c47 42 }
mbed_official 0:ab69df6f1c47 43 printf("Writing decimal numbers to a file (20/20) done.\r\n");
mbed_official 0:ab69df6f1c47 44
mbed_official 0:ab69df6f1c47 45 printf("Closing file.");
mbed_official 0:ab69df6f1c47 46 fclose(fd);
mbed_official 0:ab69df6f1c47 47 printf(" done.\r\n");
mbed_official 0:ab69df6f1c47 48
mbed_official 0:ab69df6f1c47 49 printf("Re-opening file read-only.");
mbed_official 0:ab69df6f1c47 50 fd = fopen("/fs/numbers.txt", "r");
mbed_official 0:ab69df6f1c47 51 errno_error(fd);
mbed_official 0:ab69df6f1c47 52
mbed_official 0:ab69df6f1c47 53 printf("Dumping file to screen.\r\n");
mbed_official 0:ab69df6f1c47 54 char buff[16] = {0};
mbed_official 0:ab69df6f1c47 55 while (!feof(fd)){
mbed_official 0:ab69df6f1c47 56 int size = fread(&buff[0], 1, 15, fd);
mbed_official 0:ab69df6f1c47 57 fwrite(&buff[0], 1, size, stdout);
mbed_official 0:ab69df6f1c47 58 }
mbed_official 0:ab69df6f1c47 59 printf("EOF.\r\n");
mbed_official 0:ab69df6f1c47 60
mbed_official 0:ab69df6f1c47 61 printf("Closing file.");
mbed_official 0:ab69df6f1c47 62 fclose(fd);
mbed_official 0:ab69df6f1c47 63 printf(" done.\r\n");
mbed_official 0:ab69df6f1c47 64
mbed_official 0:ab69df6f1c47 65 printf("Opening root directory.");
mbed_official 0:ab69df6f1c47 66 DIR* dir = opendir("/fs/");
mbed_official 0:ab69df6f1c47 67 errno_error(fd);
mbed_official 0:ab69df6f1c47 68
mbed_official 0:ab69df6f1c47 69 struct dirent* de;
mbed_official 0:ab69df6f1c47 70 printf("Printing all filenames:\r\n");
mbed_official 0:ab69df6f1c47 71 while((de = readdir(dir)) != NULL){
mbed_official 0:ab69df6f1c47 72 printf(" %s\r\n", &(de->d_name)[0]);
mbed_official 0:ab69df6f1c47 73 }
mbed_official 0:ab69df6f1c47 74
mbed_official 0:ab69df6f1c47 75 printf("Closeing root directory. ");
mbed_official 0:ab69df6f1c47 76 error = closedir(dir);
mbed_official 0:ab69df6f1c47 77 return_error(error);
mbed_official 0:ab69df6f1c47 78 printf("Filesystem Demo complete.\r\n");
mbed_official 0:ab69df6f1c47 79
mbed_official 0:ab69df6f1c47 80 while (true) {}
mbed_official 0:ab69df6f1c47 81 }
mbed_official 0:ab69df6f1c47 82