Part 2 of our ECE 4180 Final Project
Dependencies: 4DGL-uLCD-SE MODSERIAL USBHost wave_player
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 }
Generated on Thu Aug 4 2022 08:03:09 by
![doxygen](doxygen.png)