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
src/main.cpp
- Committer:
- aos
- Date:
- 2014-02-13
- Revision:
- 5:12a48b7c41bf
- Parent:
- 2:5bc47e544b8d
File content as of revision 5:12a48b7c41bf:
/* FILE: main.cpp by Chu Van Thiem + Sidik Soleman */ #include "mbed.h" #include "rtos.h" #include "EthernetInterface.h" #include "USBHostMSD.h" #include "usb.h" #include "tcp_task.h" #include "player.h" extern Ticker ticker; extern Ticker tickervolume; extern volatile int joyvalue; // Ethernet EthernetInterface eth; string songfile; char* song; volatile int cmd_en = 1; volatile int play_en = 1; int main() { int current = 0; // USB usb u("usb"); while(!u.connect()) { Thread::wait(5); } u.listdir("/"); // Initialize ethernet interface eth.init(IP_ADDR, IP_MASK, GW_ADDR); eth.connect(); //printf("Network setup completed!\n"); // LCD welcome(); /* print initiate */ print(&(u.filenames), 0); /* reading the joystick value */ ticker.attach(joystickcontrol, 0.004); /* reading the volume */ tickervolume.attach(controlvolume, 0.004); // TCPIP thread Thread thread_tcp(tcp_thread, NULL, osPriorityBelowNormal, 512, NULL); Thread thread_cmd(cmd_thread, &u, osPriorityBelowNormal, 2048, NULL); while(1) { if (joyvalue == 1){ if(u.filenames.size()>0){ current = (current-1)%u.filenames.size(); print(&(u.filenames),current); } } else if (joyvalue == 2){ if(u.filenames.size()>0){ current = (current+1)%u.filenames.size(); print(&(u.filenames),current); } } else if (joyvalue == 3){ if(u.filenames.size()>0){ if (play_en) { cmd_en = 0; songfile = "/usb/"; songfile = songfile + u.filenames.at(current); song = (char*)songfile.c_str(); play(song); cmd_en = 1; } } } joyvalue = 0; Thread::wait(5); } }