f303k8 wav player

Dependencies:   SDFileSystem mbed

wavPlayer.cpp

Committer:
nameless129
Date:
2016-07-31
Revision:
0:1561c4efda0e
Child:
1:7a3f34b2d18b

File content as of revision 0:1561c4efda0e:

#include "mbed.h"
#include "wavChunks.h"
#include "wavPlayer.h"
#include <stdio.h>
#include "SDFileSystem.h"


wavPlayerOnDAC::wavPlayerOnDAC(PinName pinDAC) : 
    DACout(pinDAC) 
{
}

void wavPlayerOnDAC::setFile(FIL* tgtFile)
{
    uint16_t i;
    wavfil = *tgtFile;
    f_read(&wavfil,&wavReadData,sizeof(wavReadData),&wavReadByte);
    for(i=0;i<WAV_READ_SIZE;i++)
    {
        DACData[0][i] = wavReadData[i]+32768;
    }
    dac_flag[0] = 1;
    
    f_read(&wavfil,&wavReadData,sizeof(wavReadData),&wavReadByte);
    for(i=0;i<WAV_READ_SIZE;i++)
    {
        DACData[1][i] = wavReadData[i]+32768;
    }
    dac_flag[1] = 1;
    fWavPlaying = 1;
    dac_c = 0;
}

//return 0:playing 1:stop
uint8_t wavPlayerOnDAC::readProc(void)
{
    uint16_t i,j;

    if(f_eof(&wavfil) != 0)
    {
        fWavPlaying = 0;
    }

    if(fWavPlaying == 0)
    {
        dac_on = 0;
        return 1;
    }
    dac_on = 1;
    for(j=0;j<2;j++)
    {
        if(dac_flag[j] == 0)
        {
            
            f_read(&wavfil,&wavReadData,sizeof(wavReadData),&wavReadByte);
            for(i=0;i<WAV_READ_SIZE;i++)
            {
                DACData[j][i] = wavReadData[i]+32768;
            }
            dac_flag[j] = 1;
        }
    }
    return 0;
}

void wavPlayerOnDAC::rewind(void)
{
    f_lseek(&wavfil,0);
    fWavPlaying = 1;
}
void wavPlayerOnDAC::stop(void)
{
    fWavPlaying = 0;
}

void wavPlayerOnDAC::DACOutProc(void)
{
    if(dac_on == 1) {
        if(dac_flag[dac_c] == 1)
        {
            DACout.write_u16(DACData[dac_c][rp]);
            if( rp == WAV_READ_SIZE-1)
            {
                dac_flag[dac_c] = 0;
                rp = 0;
                dac_c = (dac_c+1)%2;
            }
            else
            {
                rp++;
            }
        }
    }
}