Demo

Dependencies:   mbed

Committer:
kudlatykaskader
Date:
Sat Nov 18 22:04:50 2017 +0000
Revision:
0:e2da1a4652f5
commit;

Who changed what in which revision?

UserRevisionLine numberNew contents of line
kudlatykaskader 0:e2da1a4652f5 1 #include "mbed.h"
kudlatykaskader 0:e2da1a4652f5 2 #include "SDFileSystem.h"
kudlatykaskader 0:e2da1a4652f5 3
kudlatykaskader 0:e2da1a4652f5 4 SDFileSystem sd(PTE3, PTE1, PTE2, PTE4, "sd"); // MOSI, MISO, SCK, CS
kudlatykaskader 0:e2da1a4652f5 5 Serial pc(USBTX, USBRX);
kudlatykaskader 0:e2da1a4652f5 6 FILE *fp;
kudlatykaskader 0:e2da1a4652f5 7
kudlatykaskader 0:e2da1a4652f5 8 int file_copy(const char *src, const char *dst)
kudlatykaskader 0:e2da1a4652f5 9 {
kudlatykaskader 0:e2da1a4652f5 10 int retval = 0;
kudlatykaskader 0:e2da1a4652f5 11 int ch;
kudlatykaskader 0:e2da1a4652f5 12
kudlatykaskader 0:e2da1a4652f5 13 FILE *fpsrc = fopen(src, "r"); // src file
kudlatykaskader 0:e2da1a4652f5 14 FILE *fpdst = fopen(dst, "w"); // dest file
kudlatykaskader 0:e2da1a4652f5 15
kudlatykaskader 0:e2da1a4652f5 16 while (1) { // Copy src to dest
kudlatykaskader 0:e2da1a4652f5 17 ch = fgetc(fpsrc); // until src EOF read.
kudlatykaskader 0:e2da1a4652f5 18 if (ch == EOF) break;
kudlatykaskader 0:e2da1a4652f5 19 fputc(ch, fpdst);
kudlatykaskader 0:e2da1a4652f5 20 }
kudlatykaskader 0:e2da1a4652f5 21 fclose(fpsrc);
kudlatykaskader 0:e2da1a4652f5 22 fclose(fpdst);
kudlatykaskader 0:e2da1a4652f5 23
kudlatykaskader 0:e2da1a4652f5 24 fpdst = fopen(dst, "r"); // Reopen dest to insure
kudlatykaskader 0:e2da1a4652f5 25 if (fpdst == NULL) { // that it was created.
kudlatykaskader 0:e2da1a4652f5 26 retval = -1; // Return error.
kudlatykaskader 0:e2da1a4652f5 27 } else {
kudlatykaskader 0:e2da1a4652f5 28 fclose(fpdst);
kudlatykaskader 0:e2da1a4652f5 29 retval = 0; // Return success.
kudlatykaskader 0:e2da1a4652f5 30 }
kudlatykaskader 0:e2da1a4652f5 31 return retval;
kudlatykaskader 0:e2da1a4652f5 32 }
kudlatykaskader 0:e2da1a4652f5 33
kudlatykaskader 0:e2da1a4652f5 34 uint32_t do_list(const char *fsrc)
kudlatykaskader 0:e2da1a4652f5 35 {
kudlatykaskader 0:e2da1a4652f5 36 DIR *d = opendir(fsrc);
kudlatykaskader 0:e2da1a4652f5 37 struct dirent *p;
kudlatykaskader 0:e2da1a4652f5 38 uint32_t counter = 0;
kudlatykaskader 0:e2da1a4652f5 39
kudlatykaskader 0:e2da1a4652f5 40 while ((p = readdir(d)) != NULL) {
kudlatykaskader 0:e2da1a4652f5 41 counter++;
kudlatykaskader 0:e2da1a4652f5 42 printf("%s\n", p->d_name);
kudlatykaskader 0:e2da1a4652f5 43 }
kudlatykaskader 0:e2da1a4652f5 44 closedir(d);
kudlatykaskader 0:e2da1a4652f5 45 return counter;
kudlatykaskader 0:e2da1a4652f5 46 }
kudlatykaskader 0:e2da1a4652f5 47
kudlatykaskader 0:e2da1a4652f5 48 // bool is_folder(const char *fdir)
kudlatykaskader 0:e2da1a4652f5 49 // {
kudlatykaskader 0:e2da1a4652f5 50 // DIR *dir = opendir(fdir);
kudlatykaskader 0:e2da1a4652f5 51 // if (dir) {
kudlatykaskader 0:e2da1a4652f5 52 // closedir(dir);
kudlatykaskader 0:e2da1a4652f5 53 // }
kudlatykaskader 0:e2da1a4652f5 54 // return (dir != NULL);
kudlatykaskader 0:e2da1a4652f5 55
kudlatykaskader 0:e2da1a4652f5 56 // }
kudlatykaskader 0:e2da1a4652f5 57
kudlatykaskader 0:e2da1a4652f5 58 // bool is_file(const char *ffile)
kudlatykaskader 0:e2da1a4652f5 59 // {
kudlatykaskader 0:e2da1a4652f5 60 // FILE *fp = fopen(ffile, "r");
kudlatykaskader 0:e2da1a4652f5 61 // if (fp) {
kudlatykaskader 0:e2da1a4652f5 62 // fclose(fp);
kudlatykaskader 0:e2da1a4652f5 63 // }
kudlatykaskader 0:e2da1a4652f5 64 // return (fp != NULL);
kudlatykaskader 0:e2da1a4652f5 65 // }
kudlatykaskader 0:e2da1a4652f5 66
kudlatykaskader 0:e2da1a4652f5 67 void do_remove(const char *fsrc)
kudlatykaskader 0:e2da1a4652f5 68 {
kudlatykaskader 0:e2da1a4652f5 69 DIR *d = opendir(fsrc);
kudlatykaskader 0:e2da1a4652f5 70 struct dirent *p;
kudlatykaskader 0:e2da1a4652f5 71 char path[30] = {0};
kudlatykaskader 0:e2da1a4652f5 72 while((p = readdir(d)) != NULL) {
kudlatykaskader 0:e2da1a4652f5 73 strcpy(path, fsrc);
kudlatykaskader 0:e2da1a4652f5 74 strcat(path, "/");
kudlatykaskader 0:e2da1a4652f5 75 strcat(path, p->d_name);
kudlatykaskader 0:e2da1a4652f5 76 remove(path);
kudlatykaskader 0:e2da1a4652f5 77 }
kudlatykaskader 0:e2da1a4652f5 78 closedir(d);
kudlatykaskader 0:e2da1a4652f5 79 remove(fsrc);
kudlatykaskader 0:e2da1a4652f5 80 }
kudlatykaskader 0:e2da1a4652f5 81
kudlatykaskader 0:e2da1a4652f5 82 int main()
kudlatykaskader 0:e2da1a4652f5 83 {
kudlatykaskader 0:e2da1a4652f5 84 pc.printf("Initializing \n");
kudlatykaskader 0:e2da1a4652f5 85 wait(2);
kudlatykaskader 0:e2da1a4652f5 86
kudlatykaskader 0:e2da1a4652f5 87 do_remove("/sd/test1"); /* clean up from the previous Lab 5 if was executed */
kudlatykaskader 0:e2da1a4652f5 88 if (do_list("/sd") == 0) {
kudlatykaskader 0:e2da1a4652f5 89 printf("No files/directories on the sd card.");
kudlatykaskader 0:e2da1a4652f5 90 }
kudlatykaskader 0:e2da1a4652f5 91
kudlatykaskader 0:e2da1a4652f5 92 printf("\nCreating two folders. \n");
kudlatykaskader 0:e2da1a4652f5 93 mkdir("/sd/test1", 0777);
kudlatykaskader 0:e2da1a4652f5 94 mkdir("/sd/test2", 0777);
kudlatykaskader 0:e2da1a4652f5 95
kudlatykaskader 0:e2da1a4652f5 96 fp = fopen("/sd/test1/1.txt", "w");
kudlatykaskader 0:e2da1a4652f5 97 if (fp == NULL) {
kudlatykaskader 0:e2da1a4652f5 98 pc.printf("Unable to write the file \n");
kudlatykaskader 0:e2da1a4652f5 99 } else {
kudlatykaskader 0:e2da1a4652f5 100 fprintf(fp, "1.txt in test 1");
kudlatykaskader 0:e2da1a4652f5 101 fclose(fp);
kudlatykaskader 0:e2da1a4652f5 102 }
kudlatykaskader 0:e2da1a4652f5 103
kudlatykaskader 0:e2da1a4652f5 104 fp = fopen("/sd/test2/2.txt", "w");
kudlatykaskader 0:e2da1a4652f5 105 if (fp == NULL) {
kudlatykaskader 0:e2da1a4652f5 106 pc.printf("Unable to write the file \n");
kudlatykaskader 0:e2da1a4652f5 107 } else {
kudlatykaskader 0:e2da1a4652f5 108 fprintf(fp, "2.txt in test 2");
kudlatykaskader 0:e2da1a4652f5 109 fclose(fp);
kudlatykaskader 0:e2da1a4652f5 110 }
kudlatykaskader 0:e2da1a4652f5 111
kudlatykaskader 0:e2da1a4652f5 112 printf("\nList all directories/files /sd.\n");
kudlatykaskader 0:e2da1a4652f5 113 do_list("/sd");
kudlatykaskader 0:e2da1a4652f5 114
kudlatykaskader 0:e2da1a4652f5 115 printf("\nList all files within /sd/test1.\n");
kudlatykaskader 0:e2da1a4652f5 116 do_list("/sd/test1");
kudlatykaskader 0:e2da1a4652f5 117
kudlatykaskader 0:e2da1a4652f5 118
kudlatykaskader 0:e2da1a4652f5 119 printf("\nList all files within /sd/test2.\n");
kudlatykaskader 0:e2da1a4652f5 120 do_list("/sd/test2");
kudlatykaskader 0:e2da1a4652f5 121
kudlatykaskader 0:e2da1a4652f5 122 int status = file_copy("/sd/test2/2.txt", "/sd/test1/2_copy.txt");
kudlatykaskader 0:e2da1a4652f5 123 if (status == -1) {
kudlatykaskader 0:e2da1a4652f5 124 printf("Error, file was not copied.\n");
kudlatykaskader 0:e2da1a4652f5 125 }
kudlatykaskader 0:e2da1a4652f5 126 printf("Removing test2 folder and 2.txt file inside.");
kudlatykaskader 0:e2da1a4652f5 127 remove("/sd/test2/2.txt");
kudlatykaskader 0:e2da1a4652f5 128 remove("/sd/test2");
kudlatykaskader 0:e2da1a4652f5 129
kudlatykaskader 0:e2da1a4652f5 130 printf("\nList all directories/files /sd.\n");
kudlatykaskader 0:e2da1a4652f5 131 do_list("/sd");
kudlatykaskader 0:e2da1a4652f5 132
kudlatykaskader 0:e2da1a4652f5 133 printf("\nList all files within /sd/test1.\n");
kudlatykaskader 0:e2da1a4652f5 134 do_list("/sd/test1");
kudlatykaskader 0:e2da1a4652f5 135
kudlatykaskader 0:e2da1a4652f5 136 printf("\nEnd of complete Lab 5. \n");
kudlatykaskader 0:e2da1a4652f5 137 }