High-speed access version sd-driver.
Dependents: SDBlockDevice_GR_PEACH SDBlockDevice_GR_PEACH HagridOS5
This library has modified SDBlockDevice.h based on revision "14: c7dba87" of sd-driver.
https://github.com/ARMmbed/sd-driver
features/TESTS/examples/example1/example1.cpp@0:b22a1df967cb, 2017-03-23 (annotated)
- Committer:
- dkato
- Date:
- Thu Mar 23 08:25:54 2017 +0000
- Revision:
- 0:b22a1df967cb
Initial commit
Who changed what in which revision?
User | Revision | Line number | New contents of line |
---|---|---|---|
dkato | 0:b22a1df967cb | 1 | #include "mbed.h" |
dkato | 0:b22a1df967cb | 2 | #include "FATFileSystem.h" |
dkato | 0:b22a1df967cb | 3 | #include "SDBlockDevice.h" |
dkato | 0:b22a1df967cb | 4 | #include <stdio.h> |
dkato | 0:b22a1df967cb | 5 | #include <errno.h> |
dkato | 0:b22a1df967cb | 6 | /* mbed_retarget.h is included after errno.h so symbols are mapped to |
dkato | 0:b22a1df967cb | 7 | * consistent values for all toolchains */ |
dkato | 0:b22a1df967cb | 8 | #include "platform/mbed_retarget.h" |
dkato | 0:b22a1df967cb | 9 | |
dkato | 0:b22a1df967cb | 10 | |
dkato | 0:b22a1df967cb | 11 | SDBlockDevice sd(MBED_CONF_APP_SPI_MOSI, MBED_CONF_APP_SPI_MISO, MBED_CONF_APP_SPI_CLK, MBED_CONF_APP_SPI_CS); |
dkato | 0:b22a1df967cb | 12 | FATFileSystem fs("sd", &sd); |
dkato | 0:b22a1df967cb | 13 | |
dkato | 0:b22a1df967cb | 14 | void return_error(int ret_val){ |
dkato | 0:b22a1df967cb | 15 | if (ret_val) |
dkato | 0:b22a1df967cb | 16 | printf("Failure. %d\n", ret_val); |
dkato | 0:b22a1df967cb | 17 | else |
dkato | 0:b22a1df967cb | 18 | printf("done.\n"); |
dkato | 0:b22a1df967cb | 19 | } |
dkato | 0:b22a1df967cb | 20 | |
dkato | 0:b22a1df967cb | 21 | void errno_error(void* ret_val){ |
dkato | 0:b22a1df967cb | 22 | if (ret_val == NULL) |
dkato | 0:b22a1df967cb | 23 | printf(" Failure. %d \n", errno); |
dkato | 0:b22a1df967cb | 24 | else |
dkato | 0:b22a1df967cb | 25 | printf(" done.\n"); |
dkato | 0:b22a1df967cb | 26 | } |
dkato | 0:b22a1df967cb | 27 | |
dkato | 0:b22a1df967cb | 28 | int main() |
dkato | 0:b22a1df967cb | 29 | { |
dkato | 0:b22a1df967cb | 30 | int error = 0; |
dkato | 0:b22a1df967cb | 31 | printf("Welcome to the filesystem example.\n"); |
dkato | 0:b22a1df967cb | 32 | |
dkato | 0:b22a1df967cb | 33 | printf("Opening a new file, numbers.txt."); |
dkato | 0:b22a1df967cb | 34 | FILE* fd = fopen("/sd/numbers.txt", "w+"); |
dkato | 0:b22a1df967cb | 35 | errno_error(fd); |
dkato | 0:b22a1df967cb | 36 | |
dkato | 0:b22a1df967cb | 37 | for (int i = 0; i < 20; i++){ |
dkato | 0:b22a1df967cb | 38 | printf("Writing decimal numbers to a file (%d/20)\r", i); |
dkato | 0:b22a1df967cb | 39 | fprintf(fd, "%d\n", i); |
dkato | 0:b22a1df967cb | 40 | } |
dkato | 0:b22a1df967cb | 41 | printf("Writing decimal numbers to a file (20/20) done.\n"); |
dkato | 0:b22a1df967cb | 42 | |
dkato | 0:b22a1df967cb | 43 | printf("Closing file."); |
dkato | 0:b22a1df967cb | 44 | fclose(fd); |
dkato | 0:b22a1df967cb | 45 | printf(" done.\n"); |
dkato | 0:b22a1df967cb | 46 | |
dkato | 0:b22a1df967cb | 47 | printf("Re-opening file read-only."); |
dkato | 0:b22a1df967cb | 48 | fd = fopen("/sd/numbers.txt", "r"); |
dkato | 0:b22a1df967cb | 49 | errno_error(fd); |
dkato | 0:b22a1df967cb | 50 | |
dkato | 0:b22a1df967cb | 51 | printf("Dumping file to screen.\n"); |
dkato | 0:b22a1df967cb | 52 | char buff[16] = {0}; |
dkato | 0:b22a1df967cb | 53 | while (!feof(fd)){ |
dkato | 0:b22a1df967cb | 54 | int size = fread(&buff[0], 1, 15, fd); |
dkato | 0:b22a1df967cb | 55 | fwrite(&buff[0], 1, size, stdout); |
dkato | 0:b22a1df967cb | 56 | } |
dkato | 0:b22a1df967cb | 57 | printf("EOF.\n"); |
dkato | 0:b22a1df967cb | 58 | |
dkato | 0:b22a1df967cb | 59 | printf("Closing file."); |
dkato | 0:b22a1df967cb | 60 | fclose(fd); |
dkato | 0:b22a1df967cb | 61 | printf(" done.\n"); |
dkato | 0:b22a1df967cb | 62 | |
dkato | 0:b22a1df967cb | 63 | printf("Opening root directory."); |
dkato | 0:b22a1df967cb | 64 | DIR* dir = opendir("/sd/"); |
dkato | 0:b22a1df967cb | 65 | errno_error(fd); |
dkato | 0:b22a1df967cb | 66 | |
dkato | 0:b22a1df967cb | 67 | struct dirent* de; |
dkato | 0:b22a1df967cb | 68 | printf("Printing all filenames:\n"); |
dkato | 0:b22a1df967cb | 69 | while((de = readdir(dir)) != NULL){ |
dkato | 0:b22a1df967cb | 70 | printf(" %s\n", &(de->d_name)[0]); |
dkato | 0:b22a1df967cb | 71 | } |
dkato | 0:b22a1df967cb | 72 | |
dkato | 0:b22a1df967cb | 73 | printf("Closeing root directory. "); |
dkato | 0:b22a1df967cb | 74 | error = closedir(dir); |
dkato | 0:b22a1df967cb | 75 | return_error(error); |
dkato | 0:b22a1df967cb | 76 | printf("Filesystem Demo complete.\n"); |
dkato | 0:b22a1df967cb | 77 | |
dkato | 0:b22a1df967cb | 78 | while (true) {} |
dkato | 0:b22a1df967cb | 79 | } |
dkato | 0:b22a1df967cb | 80 |