Emilio Monti
/
rtos_file
Simple test for using the local file system within a thread
Revision 0:cfccdef0d536, committed 2012-08-10
- Comitter:
- emilmont
- Date:
- Fri Aug 10 11:40:29 2012 +0000
- Commit message:
- Simple test for using the local file system within an RTOS thread
Changed in this revision
diff -r 000000000000 -r cfccdef0d536 main.cpp --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/main.cpp Fri Aug 10 11:40:29 2012 +0000 @@ -0,0 +1,86 @@ +#include "mbed.h" +#include "rtos.h" + +void led_blink(PinName led_name) { + DigitalOut led(led_name); + while (1) { + Thread::wait(1000); + led = !led; + } +} + +void notify_completion(bool success) { + if (success) { + printf("{success}\n"); + } else { + printf("{failure}\n"); + } + + printf("{end}\n"); + led_blink(success?LED2:LED4); +} + +#define FILENAME "/local/out.txt" +#define TEST_STRING "Hello World!" + +FILE* test_open(const char* mode) { + FILE *f; + f = fopen(FILENAME, mode); + if (f == NULL) { + printf("Error opening file\n"); + notify_completion(false); + } + + return f; +} + +void test_write(FILE* f, char* str, int str_len) { + int n = fprintf(f, str); + if (n != str_len) { + printf("Error writing file\n"); + notify_completion(false); + } +} + +void test_read(FILE* f, char* str, int str_len) { + int n = fread(str, sizeof(unsigned char), str_len, f); + if (n != str_len) { + printf("Error reading 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); + } +} + +void test_localfilesystem(void const *argument) { + LocalFileSystem local("local"); + + FILE *f; + char* str = TEST_STRING; + char* buffer = (char*) malloc(sizeof(unsigned char)*strlen(TEST_STRING)); + int str_len = strlen(TEST_STRING); + + // Write + f = test_open("w"); + test_write(f, str, str_len); + test_close(f); + + // Read + f = test_open("r"); + test_read(f, buffer, str_len); + test_close(f); + + // Check the two strings are equal + notify_completion((strncmp(buffer, str, str_len) == 0)); +} + +int main() { + Thread t(test_localfilesystem); + led_blink(LED1); +}
diff -r 000000000000 -r cfccdef0d536 mbed-rtos.lib --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed-rtos.lib Fri Aug 10 11:40:29 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed-rtos/#9654a71f5a90
diff -r 000000000000 -r cfccdef0d536 mbed.bld --- /dev/null Thu Jan 01 00:00:00 1970 +0000 +++ b/mbed.bld Fri Aug 10 11:40:29 2012 +0000 @@ -0,0 +1,1 @@ +http://mbed.org/users/mbed_official/code/mbed/builds/10b9abbe79a6 \ No newline at end of file