SD card example for Wio cellular targets - Seeed Wio 3G and Wio LTE-M1/NB1(BG96)

Committer:
MACRUM
Date:
Wed Feb 13 02:08:25 2019 +0000
Revision:
1:bda3045adb2f
Parent:
0:5e920a8fb894
Add error macro

Who changed what in which revision?

UserRevisionLine numberNew contents of line
MACRUM 0:5e920a8fb894 1 #include "mbed.h"
MACRUM 0:5e920a8fb894 2 #include "FATFileSystem.h"
MACRUM 0:5e920a8fb894 3 #include "SDBlockDevice.h"
MACRUM 0:5e920a8fb894 4 #include <stdio.h>
MACRUM 0:5e920a8fb894 5 #include <errno.h>
MACRUM 0:5e920a8fb894 6 /* mbed_retarget.h is included after errno.h so symbols are mapped to
MACRUM 0:5e920a8fb894 7 * consistent values for all toolchains */
MACRUM 0:5e920a8fb894 8 #include "platform/mbed_retarget.h"
MACRUM 0:5e920a8fb894 9
MACRUM 0:5e920a8fb894 10 #if defined(TARGET_WIO_3G) || defined(TARGET_WIO_BG96)
MACRUM 0:5e920a8fb894 11 DigitalOut SD_POWER(PA_15, 1);
MACRUM 1:bda3045adb2f 12 #else
MACRUM 1:bda3045adb2f 13 #error This example only supports the Seeed Wio 3G or Wio LTE M1/NB1(BG96)
MACRUM 0:5e920a8fb894 14 #endif
MACRUM 0:5e920a8fb894 15
MACRUM 0:5e920a8fb894 16 SDBlockDevice sd(MBED_CONF_SD_SPI_MOSI,
MACRUM 0:5e920a8fb894 17 MBED_CONF_SD_SPI_MISO,
MACRUM 0:5e920a8fb894 18 MBED_CONF_SD_SPI_CLK,
MACRUM 0:5e920a8fb894 19 MBED_CONF_SD_SPI_CS);
MACRUM 0:5e920a8fb894 20 FATFileSystem fs("sd", &sd);
MACRUM 0:5e920a8fb894 21
MACRUM 0:5e920a8fb894 22 void return_error(int ret_val){
MACRUM 0:5e920a8fb894 23 if (ret_val)
MACRUM 0:5e920a8fb894 24 printf("Failure. %d\n", ret_val);
MACRUM 0:5e920a8fb894 25 else
MACRUM 0:5e920a8fb894 26 printf("done.\n");
MACRUM 0:5e920a8fb894 27 }
MACRUM 0:5e920a8fb894 28
MACRUM 0:5e920a8fb894 29 void errno_error(void* ret_val){
MACRUM 0:5e920a8fb894 30 if (ret_val == NULL) {
MACRUM 0:5e920a8fb894 31 printf(" Failure. %d \n", errno);
MACRUM 0:5e920a8fb894 32 while (true) __WFI();
MACRUM 0:5e920a8fb894 33 } else
MACRUM 0:5e920a8fb894 34 printf(" done.\n");
MACRUM 0:5e920a8fb894 35 }
MACRUM 0:5e920a8fb894 36
MACRUM 0:5e920a8fb894 37 int main()
MACRUM 0:5e920a8fb894 38 {
MACRUM 0:5e920a8fb894 39 int error = 0;
MACRUM 0:5e920a8fb894 40 printf("Welcome to the filesystem example.\n");
MACRUM 0:5e920a8fb894 41
MACRUM 0:5e920a8fb894 42 printf("Opening a new file, numbers.txt.");
MACRUM 0:5e920a8fb894 43 FILE* fd = fopen("/sd/numbers.txt", "w+");
MACRUM 0:5e920a8fb894 44 errno_error(fd);
MACRUM 0:5e920a8fb894 45
MACRUM 0:5e920a8fb894 46 for (int i = 0; i < 20; i++){
MACRUM 0:5e920a8fb894 47 printf("Writing decimal numbers to a file (%d/20)\r", i);
MACRUM 0:5e920a8fb894 48 fprintf(fd, "%d\n", i);
MACRUM 0:5e920a8fb894 49 }
MACRUM 0:5e920a8fb894 50 printf("Writing decimal numbers to a file (20/20) done.\n");
MACRUM 0:5e920a8fb894 51
MACRUM 0:5e920a8fb894 52 printf("Closing file.");
MACRUM 0:5e920a8fb894 53 fclose(fd);
MACRUM 0:5e920a8fb894 54 printf(" done.\n");
MACRUM 0:5e920a8fb894 55
MACRUM 0:5e920a8fb894 56 printf("Re-opening file read-only.");
MACRUM 0:5e920a8fb894 57 fd = fopen("/sd/numbers.txt", "r");
MACRUM 0:5e920a8fb894 58 errno_error(fd);
MACRUM 0:5e920a8fb894 59
MACRUM 0:5e920a8fb894 60 printf("Dumping file to screen.\n");
MACRUM 0:5e920a8fb894 61 char buff[16] = {0};
MACRUM 0:5e920a8fb894 62 while (!feof(fd)){
MACRUM 0:5e920a8fb894 63 int size = fread(&buff[0], 1, 15, fd);
MACRUM 0:5e920a8fb894 64 fwrite(&buff[0], 1, size, stdout);
MACRUM 0:5e920a8fb894 65 }
MACRUM 0:5e920a8fb894 66 printf("EOF.\n");
MACRUM 0:5e920a8fb894 67
MACRUM 0:5e920a8fb894 68 printf("Closing file.");
MACRUM 0:5e920a8fb894 69 fclose(fd);
MACRUM 0:5e920a8fb894 70 printf(" done.\n");
MACRUM 0:5e920a8fb894 71
MACRUM 0:5e920a8fb894 72 printf("Opening root directory.");
MACRUM 0:5e920a8fb894 73 DIR* dir = opendir("/sd/");
MACRUM 0:5e920a8fb894 74 errno_error(fd);
MACRUM 0:5e920a8fb894 75
MACRUM 0:5e920a8fb894 76 struct dirent* de;
MACRUM 0:5e920a8fb894 77 printf("Printing all filenames:\n");
MACRUM 0:5e920a8fb894 78 while((de = readdir(dir)) != NULL){
MACRUM 0:5e920a8fb894 79 printf(" %s\n", &(de->d_name)[0]);
MACRUM 0:5e920a8fb894 80 }
MACRUM 0:5e920a8fb894 81
MACRUM 0:5e920a8fb894 82 printf("Closeing root directory. ");
MACRUM 0:5e920a8fb894 83 error = closedir(dir);
MACRUM 0:5e920a8fb894 84 return_error(error);
MACRUM 0:5e920a8fb894 85 printf("Filesystem Demo complete.\n");
MACRUM 0:5e920a8fb894 86
MACRUM 0:5e920a8fb894 87 while (true) {}
MACRUM 0:5e920a8fb894 88 }
MACRUM 0:5e920a8fb894 89