Part 2 of our ECE 4180 Final Project

Dependencies:   4DGL-uLCD-SE MODSERIAL USBHost wave_player

main.cpp

Committer:
mohit1234
Date:
2015-05-01
Revision:
0:25c861ee0c38

File content as of revision 0:25c861ee0c38:

#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);
}