Simple test for using the local file system within a thread

Dependencies:   mbed mbed-rtos

Files at this revision

API Documentation at this revision

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

main.cpp Show annotated file Show diff for this revision Revisions of this file
mbed-rtos.lib Show annotated file Show diff for this revision Revisions of this file
mbed.bld Show annotated file Show diff for this revision Revisions of this file
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