nkjnm

Dependencies:   MAX44000 nexpaq_mdk

Fork of LED_Demo by Maxim nexpaq

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include "mbed.h"
00002 #include "SDFileSystem.h"
00003 
00004 void led_blink(PinName led)
00005 {
00006     DigitalOut myled(led);
00007 
00008     while (1) {
00009         myled = !myled;
00010         wait(1.0);
00011     }
00012 }
00013 
00014 void notify_completion(bool success)
00015 {
00016     if (success)
00017         printf("{success}\n");
00018     else
00019         printf("{failure}\n");
00020 
00021     printf("{end}\n");
00022     led_blink(success ? LED1 : LED4);
00023 }
00024 
00025 #define TEST_STRING   "Hello World!"
00026 
00027 FILE *test_open(char *path, const char *mode)
00028 {
00029     FILE *f;
00030 
00031     f = fopen(path, mode);
00032     if (f == NULL) {
00033         printf("Error opening file\n");
00034         notify_completion(false);
00035     }
00036 
00037     return f;
00038 }
00039 
00040 void test_write(FILE *f, const char *str)
00041 {
00042     int n = fprintf(f, str);
00043 
00044     if (n != strlen(str)) {
00045         printf("Error writing file\n");
00046         notify_completion(false);
00047     }
00048 }
00049 
00050 void test_close(FILE *f)
00051 {
00052     int rc = fclose(f);
00053 
00054     if (rc != 0) {
00055         printf("Error closing file\n");
00056         notify_completion(false);
00057     }
00058 }
00059 
00060 DigitalOut led2(LED2);
00061 
00062 int main()
00063 {
00064 #if defined(TARGET_KL25Z)
00065     SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd");
00066 #elif defined(TARGET_nRF51822)
00067 //SDFileSystem sd(p20, p22, p25, p24, "sd");
00068     SDFileSystem sd(p12, p13, p15, p14, "sd");
00069 #elif defined(TARGET_NUCLEO_F030R8) || \
00070       defined(TARGET_NUCLEO_F070RB) || \
00071       defined(TARGET_NUCLEO_F072RB) || \
00072       defined(TARGET_NUCLEO_F091RC) || \
00073       defined(TARGET_NUCLEO_F103RB) || \
00074       defined(TARGET_NUCLEO_F302R8) || \
00075       defined(TARGET_NUCLEO_F303RE) || \
00076       defined(TARGET_NUCLEO_F334R8) || \
00077       defined(TARGET_NUCLEO_F401RE) || \
00078       defined(TARGET_NUCLEO_F410RB) || \
00079       defined(TARGET_NUCLEO_F411RE) || \
00080       defined(TARGET_NUCLEO_L053R8) || \
00081       defined(TARGET_NUCLEO_L073RZ) || \
00082       defined(TARGET_NUCLEO_L152RE)
00083     SDFileSystem sd(D11, D12, D13, D10, "sd");
00084 #elif defined(TARGET_LPC11U37H_401)
00085     SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd");
00086 #else
00087     SDFileSystem sd(p11, p12, p13, p14, "sd");
00088 #endif
00089     led2 = 1;
00090     wait(0.5);
00091     FILE *f;
00092     char *str = TEST_STRING;
00093     char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING));
00094     int str_len = strlen(TEST_STRING);
00095 
00096     printf("Write files\n");
00097     char filename[32];
00098     for (int i = 0; i < 10; i++) {
00099         sprintf(filename, "/sd/test_%d.txt", i);
00100         printf("Creating file: %s\n", filename);
00101         f = test_open(filename, "w");
00102         led2 = 0;
00103         test_write(f, str);
00104         test_close(f);
00105     }
00106 
00107     printf("List files:\n");
00108     DIR *d = opendir("/sd");
00109     if (d == NULL) {
00110         printf("Error opening directory\n");
00111         notify_completion(false);
00112     }
00113 
00114     struct dirent *p;
00115     while ((p = readdir(d)) != NULL)
00116         printf("%s\n", p->d_name);
00117     closedir(d);
00118 
00119     notify_completion(true);
00120 }