Simple SD File System test using mbed-os, FATFileSystem + sd-driver
Fork of mbed-os-example-fat-filesystem by
main.cpp@0:ab69df6f1c47, 2017-03-09 (annotated)
- 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?
User | Revision | Line number | New 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 |