Preliminary main mbed library for nexpaq development
Diff: libraries/tests/mbed/dir_sd/main.cpp
- Revision:
- 0:6c56fb4bc5f0
--- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/libraries/tests/mbed/dir_sd/main.cpp Fri Nov 04 20:27:58 2016 +0000 @@ -0,0 +1,120 @@ +#include "mbed.h" +#include "SDFileSystem.h" + +void led_blink(PinName led) +{ + DigitalOut myled(led); + + while (1) { + myled = !myled; + wait(1.0); + } +} + +void notify_completion(bool success) +{ + if (success) + printf("{success}\n"); + else + printf("{failure}\n"); + + printf("{end}\n"); + led_blink(success ? LED1 : LED4); +} + +#define TEST_STRING "Hello World!" + +FILE *test_open(char *path, const char *mode) +{ + FILE *f; + + f = fopen(path, mode); + if (f == NULL) { + printf("Error opening file\n"); + notify_completion(false); + } + + return f; +} + +void test_write(FILE *f, const char *str) +{ + int n = fprintf(f, str); + + if (n != strlen(str)) { + printf("Error writing file\n"); + notify_completion(false); + } +} + +void test_close(FILE *f) +{ + int rc = fclose(f); + + if (rc != 0) { + printf("Error closing file\n"); + notify_completion(false); + } +} + +DigitalOut led2(LED2); + +int main() +{ +#if defined(TARGET_KL25Z) + SDFileSystem sd(PTD2, PTD3, PTD1, PTD0, "sd"); +#elif defined(TARGET_nRF51822) +//SDFileSystem sd(p20, p22, p25, p24, "sd"); + SDFileSystem sd(p12, p13, p15, p14, "sd"); +#elif defined(TARGET_NUCLEO_F030R8) || \ + defined(TARGET_NUCLEO_F070RB) || \ + defined(TARGET_NUCLEO_F072RB) || \ + defined(TARGET_NUCLEO_F091RC) || \ + defined(TARGET_NUCLEO_F103RB) || \ + defined(TARGET_NUCLEO_F302R8) || \ + defined(TARGET_NUCLEO_F303RE) || \ + defined(TARGET_NUCLEO_F334R8) || \ + defined(TARGET_NUCLEO_F401RE) || \ + defined(TARGET_NUCLEO_F410RB) || \ + defined(TARGET_NUCLEO_F411RE) || \ + defined(TARGET_NUCLEO_L053R8) || \ + defined(TARGET_NUCLEO_L073RZ) || \ + defined(TARGET_NUCLEO_L152RE) + SDFileSystem sd(D11, D12, D13, D10, "sd"); +#elif defined(TARGET_LPC11U37H_401) + SDFileSystem sd(SDMOSI, SDMISO, SDSCLK, SDSSEL, "sd"); +#else + SDFileSystem sd(p11, p12, p13, p14, "sd"); +#endif + led2 = 1; + wait(0.5); + FILE *f; + char *str = TEST_STRING; + char *buffer = (char *)malloc(sizeof(unsigned char) * strlen(TEST_STRING)); + int str_len = strlen(TEST_STRING); + + printf("Write files\n"); + char filename[32]; + for (int i = 0; i < 10; i++) { + sprintf(filename, "/sd/test_%d.txt", i); + printf("Creating file: %s\n", filename); + f = test_open(filename, "w"); + led2 = 0; + test_write(f, str); + test_close(f); + } + + printf("List files:\n"); + DIR *d = opendir("/sd"); + if (d == NULL) { + printf("Error opening directory\n"); + notify_completion(false); + } + + struct dirent *p; + while ((p = readdir(d)) != NULL) + printf("%s\n", p->d_name); + closedir(d); + + notify_completion(true); +}