Part 2 of our ECE 4180 Final Project

Dependencies:   4DGL-uLCD-SE MODSERIAL USBHost wave_player

Revision:
0:25c861ee0c38
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/main.cpp	Fri May 01 18:10:34 2015 +0000
@@ -0,0 +1,171 @@
+#include <vector>
+#include <string>
+#include "mbed.h"
+#include "wave_player.h"
+#include "Speaker.h"
+#include "uLCD_4DGL.h"
+#include "USBHostMSD.h"
+#include "rtos.h"
+
+#define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512
+#define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 1024
+
+#include "MODSERIAL.h"
+
+using namespace std;
+
+MODSERIAL device(p13,p14);
+MODSERIAL pc(USBTX, USBRX);
+
+AnalogOut DACout(p18);
+wave_player waver(&DACout);
+
+uLCD_4DGL screen1(p28, p27, p11);
+uLCD_4DGL screen2(p9, p10, p11);
+
+Mutex mutex;
+
+volatile bool playAlarm = false;
+
+void musicThread(void const*);
+
+void getDate()
+{
+    //mutex.lock();
+    device.printf("date\n");
+    //pc.printf("Requesting date\n");
+    //mutex.unlock();
+}
+
+void getTime()
+{
+    //mutex.lock();
+    device.printf("time\n");
+    //pc.printf("Requesting time\n");
+    //mutex.unlock();
+}
+
+void getAlarm()
+{
+    //mutex.lock();
+    device.printf("alarm\n");
+    //pc.printf("Requesting Alarm\n");
+    //mutex.unlock();
+}
+
+string date;
+string t;
+volatile bool playingMusic = false;
+
+void printDate()
+{
+    // TODO - IMPLEMENT THIS SHIT
+}
+
+void printTime()
+{
+    // TODO - IMPLEMENT THIS SHIT
+}
+
+/*void playAlarm()
+{
+    //if (playingMusic) return;
+    //Thread music(musicThread, NULL, osPriorityNormal, 1024 * 4);
+
+}*/
+
+void timeThread(void const* args)
+{
+    //screen1.locate(0,5);
+    //screen1.color(WHITE);
+    //screen1.textbackground_color(RED);
+    //screen1.printf("I AM IN THE THREAD\n");
+
+    getDate();
+    while (!device.readable());
+    char buffer[80];
+    device.scanf("%s", buffer);
+    date = string(buffer);
+    char buffer2[80];
+    device.scanf("%s", buffer2);
+    date += (" " + string(buffer2));
+    char buffer3[80];
+    device.scanf("%s", buffer3);
+    date += (" " + string(buffer3));
+
+    printDate();
+
+    while (1) {
+        getTime();
+        while (!device.readable());
+        char buffert[80];
+        device.scanf("%s", buffert);
+        t = string(buffert);
+
+        printTime();
+
+        getAlarm();
+        while (!device.readable());
+        char buffera[20];
+        device.scanf("%s", buffera);
+        if (buffera[0] == '1') {
+            playAlarm = true;
+        }
+
+        Thread::wait(6000);
+    }
+}
+
+void musicThread(void const *args)
+{
+    if (playingMusic) return;
+    USBHostMSD msd("usb");
+    while (1) {
+        while (!playAlarm);
+
+        playingMusic = true;
+        //pc.printf("Playing\n");
+        
+        //pc.printf("USB\n");
+        // try to connect a MSD device
+        while(!msd.connect()) {
+            Thread::wait(500);
+        }
+        //pc.printf("Connected\n");
+        FILE * fp = fopen("/usb/sample.wav", "r");
+
+        if (fp != NULL) {
+            waver.play(fp);
+            fclose(fp);
+        } else {
+        }
+        
+        playAlarm = false;
+        playingMusic = false;
+    }
+}
+
+
+void setupScreens()
+{
+    screen1.baudrate(3000000);
+    screen1.cls();
+    screen2.baudrate(3000000);
+    screen2.cls();
+}
+
+
+int main()
+{
+    setupScreens();
+
+    screen1.locate(0,5);
+    screen1.color(WHITE);
+    screen1.textbackground_color(RED);
+    screen1.printf("Song Playing\n");
+
+    Thread thread(musicThread, NULL, osPriorityNormal, 1024 * 4);
+    Thread tThread(timeThread);
+
+    while (1);
+}
\ No newline at end of file