Part 2 of our ECE 4180 Final Project

Dependencies:   4DGL-uLCD-SE MODSERIAL USBHost wave_player

Embed: (wiki syntax)

« Back to documentation index

Show/hide line numbers main.cpp Source File

main.cpp

00001 #include <vector>
00002 #include <string>
00003 #include "mbed.h"
00004 #include "wave_player.h"
00005 #include "Speaker.h"
00006 #include "uLCD_4DGL.h"
00007 #include "USBHostMSD.h"
00008 #include "rtos.h"
00009 
00010 #define MODSERIAL_DEFAULT_RX_BUFFER_SIZE 512
00011 #define MODSERIAL_DEFAULT_TX_BUFFER_SIZE 1024
00012 
00013 #include "MODSERIAL.h"
00014 
00015 using namespace std;
00016 
00017 MODSERIAL device(p13,p14);
00018 MODSERIAL pc(USBTX, USBRX);
00019 
00020 AnalogOut DACout(p18);
00021 wave_player waver(&DACout);
00022 
00023 uLCD_4DGL screen1(p28, p27, p11);
00024 uLCD_4DGL screen2(p9, p10, p11);
00025 
00026 Mutex mutex;
00027 
00028 volatile bool playAlarm = false;
00029 
00030 void musicThread(void const*);
00031 
00032 void getDate()
00033 {
00034     //mutex.lock();
00035     device.printf("date\n");
00036     //pc.printf("Requesting date\n");
00037     //mutex.unlock();
00038 }
00039 
00040 void getTime()
00041 {
00042     //mutex.lock();
00043     device.printf("time\n");
00044     //pc.printf("Requesting time\n");
00045     //mutex.unlock();
00046 }
00047 
00048 void getAlarm()
00049 {
00050     //mutex.lock();
00051     device.printf("alarm\n");
00052     //pc.printf("Requesting Alarm\n");
00053     //mutex.unlock();
00054 }
00055 
00056 string date;
00057 string t;
00058 volatile bool playingMusic = false;
00059 
00060 void printDate()
00061 {
00062     // TODO - IMPLEMENT THIS SHIT
00063 }
00064 
00065 void printTime()
00066 {
00067     // TODO - IMPLEMENT THIS SHIT
00068 }
00069 
00070 /*void playAlarm()
00071 {
00072     //if (playingMusic) return;
00073     //Thread music(musicThread, NULL, osPriorityNormal, 1024 * 4);
00074 
00075 }*/
00076 
00077 void timeThread(void const* args)
00078 {
00079     //screen1.locate(0,5);
00080     //screen1.color(WHITE);
00081     //screen1.textbackground_color(RED);
00082     //screen1.printf("I AM IN THE THREAD\n");
00083 
00084     getDate();
00085     while (!device.readable());
00086     char buffer[80];
00087     device.scanf("%s", buffer);
00088     date = string(buffer);
00089     char buffer2[80];
00090     device.scanf("%s", buffer2);
00091     date += (" " + string(buffer2));
00092     char buffer3[80];
00093     device.scanf("%s", buffer3);
00094     date += (" " + string(buffer3));
00095 
00096     printDate();
00097 
00098     while (1) {
00099         getTime();
00100         while (!device.readable());
00101         char buffert[80];
00102         device.scanf("%s", buffert);
00103         t = string(buffert);
00104 
00105         printTime();
00106 
00107         getAlarm();
00108         while (!device.readable());
00109         char buffera[20];
00110         device.scanf("%s", buffera);
00111         if (buffera[0] == '1') {
00112             playAlarm = true;
00113         }
00114 
00115         Thread::wait(6000);
00116     }
00117 }
00118 
00119 void musicThread(void const *args)
00120 {
00121     if (playingMusic) return;
00122     USBHostMSD msd("usb");
00123     while (1) {
00124         while (!playAlarm);
00125 
00126         playingMusic = true;
00127         //pc.printf("Playing\n");
00128         
00129         //pc.printf("USB\n");
00130         // try to connect a MSD device
00131         while(!msd.connect()) {
00132             Thread::wait(500);
00133         }
00134         //pc.printf("Connected\n");
00135         FILE * fp = fopen("/usb/sample.wav", "r");
00136 
00137         if (fp != NULL) {
00138             waver.play(fp);
00139             fclose(fp);
00140         } else {
00141         }
00142         
00143         playAlarm = false;
00144         playingMusic = false;
00145     }
00146 }
00147 
00148 
00149 void setupScreens()
00150 {
00151     screen1.baudrate(3000000);
00152     screen1.cls();
00153     screen2.baudrate(3000000);
00154     screen2.cls();
00155 }
00156 
00157 
00158 int main()
00159 {
00160     setupScreens();
00161 
00162     screen1.locate(0,5);
00163     screen1.color(WHITE);
00164     screen1.textbackground_color(RED);
00165     screen1.printf("Song Playing\n");
00166 
00167     Thread thread(musicThread, NULL, osPriorityNormal, 1024 * 4);
00168     Thread tThread(timeThread);
00169 
00170     while (1);
00171 }