Advanced Operating Systems - Final Project A @ Tokyo Tech ////////////// Author: Chu Van Thiem and Sidik Soleman ////////////// A WAVE file player on the MBED Application Board with an interface to a software on PC via a TCP connection. ////////////// Main functions: 1. Browse files of an attached USB flash 2. The list of the files of the attached USB are displayed on the LCD 3. Use an joystick to select a WAVE file and give an instruction to play that file 4. Adjust the volume using a potentiometer 5. Output audio to the analog audio out jack ////////////// Software (https://github.com/thiemcv/VS/tree/master/Terminal): 1. Connect with the MBED application board via Ethernet connection 2. Read the list of files stored on the USB flash 3. Write files to the USB flash

Dependencies:   C12832_lcd EthernetInterface USBHost mbed-rtos mbed wave_player

Revision:
1:3b567aa3b09e
Child:
2:5bc47e544b8d
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/src/player.cpp	Sun Feb 02 10:49:19 2014 +0000
@@ -0,0 +1,69 @@
+#include "player.h"
+
+C12832_LCD lcd;
+AnalogOut DACout(p18);
+/* joystick location */
+DigitalIn Up(p15);
+DigitalIn Down(p12);
+DigitalIn Left(p13);
+DigitalIn Right(p16);
+DigitalIn Play(p14);
+AnalogIn ain(p19);
+
+Ticker ticker;
+Ticker tickervolume;
+int joyup=0,joydown=0,joyplay=0;
+wave_player waver(&DACout);
+volatile int joyvalue=0;
+float aout = 0;
+FILE *wave_file;
+
+// Custom Function 
+void play(char* song){
+    wave_file=fopen(song,"r");
+    waver.play(wave_file);
+    fclose(wave_file);
+}
+
+void welcome(){
+   lcd.cls();
+   lcd.locate(15,0);
+   lcd.printf("MBED Player"); 
+   Thread::wait(1);
+   lcd.cls();
+}
+
+void print(vector<string> *listoffile, int current){
+    lcd.cls();
+    int nsong = listoffile->size();
+    lcd.locate(0,0);
+    lcd.printf("Song Title (%d/%d)",(current+1),nsong);
+    lcd.locate(0,9);
+    lcd.printf("-------------------------------");
+    if (nsong == 0){
+       lcd.locate(0,15);
+       lcd.printf("No File Song");
+    } else {
+        lcd.printf("> %s",(listoffile->at(current)).c_str());
+    }
+}
+
+/* JoyValue = 1: up, 2: down, 3: play */
+void joystickcontrol(){
+    if (Up){
+        if (joyup<NSAMPLE) joyup++;
+        if (joyup==NSAMPLE){ joyvalue=1; joyup=0;}
+    }
+    if (Down){
+        if (joydown<NSAMPLE) joydown++;
+        if (joydown==NSAMPLE) { joyvalue=2; joydown = 0;}
+    }
+    if (Play){
+        if (joyplay<NSAMPLE) joyplay++;
+        if (joyplay==NSAMPLE) { joyvalue=3; joyplay=0;}
+    }       
+}
+
+void controlvolume(){
+    waver.volume = (float)ain;
+}