Fork of my original MQTTGateway

Dependencies:   mbed-http

Committer:
vpcola
Date:
Sat Apr 08 14:43:14 2017 +0000
Revision:
0:a1734fe1ec4b
Initial commit

Who changed what in which revision?

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