Running multiple threads on mbed using RTOS

Dependencies:   4DGL-uLCD-SE SDFileSystem mbed-rtos mbed wave_player_appbd

Revision:
0:fdcdbc5499f7
Child:
1:2129bb91c172
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Sun Feb 28 21:58:15 2016 +0000
@@ -0,0 +1,44 @@
+#include "mbed.h"
+#include "rtos.h"
+#include "uLCD_4DGL.h"
+#include "SDFileSystem.h"
+
+SDFileSystem sd(p5, p6, p7, p8, "sd"); 
+Serial pc(USBTX, USBRX);
+Mutex ulcd_mutex;
+uLCD_4DGL uLCD(p9,p10,p11); // serial tx, serial rx, reset pin;
+DigitalOut myled(LED1);
+
+void ulcd2_thread(void const *args) {
+    while(true) {
+        ulcd_mutex.lock();
+        pc.printf("Activated mutex lock on uLCD screen: ulcd2_thread");
+        uLCD.cls();
+        uLCD.printf("\nECE 4180 L3: RTOS\n"); //Default Green on black text
+        uLCD.printf("\nWes Schon Nick Liu");
+        uLCD.text_width(4); //4X size text
+        uLCD.text_height(4);
+        Thread::wait(3000);
+        ulcd_mutex.unlock();
+        }
+    }
+
+int main() {
+    Thread thread(ulcd2_thread);
+    while(1) {
+        myled = 1;
+        Thread::wait(200);
+        myled = 0;
+        Thread::wait(200);
+        ulcd_mutex.lock();
+        uLCD.cls();
+    //SD card needed with image and video files for last two demos
+        uLCD.cls();
+        uLCD.media_init();
+        uLCD.printf("\n\nAn SD card is needed for image and video data");
+        uLCD.set_sector_address(0x0000, 0x0000);
+        uLCD.display_video(0,0);
+        Thread::wait(3000);
+        ulcd_mutex.unlock();
+    }
+}