extern void application_task(void) { UINT bytesread = 0; WAVE_FormatTypeDef waveformat; switch (appState) { case APPSTATE_IDLE: break; case APPSTATE_MOUNT_FS: if (f_mount(&USBDISKFatFs, (TCHAR const*)USBDISKPath, 0 ) != FR_OK ) { /* FatFs initialization fails */ Error_Handler(); } else { appState = APPSTATE_PLAY; } break; case APPSTATE_UMOUNT_FS: f_mount(NULL, (TCHAR const*)"", 0); appState = APPSTATE_IDLE; break; case APPSTATE_WRITE: if (f_open(&FileRead, WAVE_NAME_COMPLETO, FA_READ) != FR_OK) { Error_Handler(); } else { /* Read sizeof(WaveFormat) from the selected file */ f_read (&FileRead, &waveformat, sizeof(waveformat), &bytesread); WaveRecord(waveformat, getDataCB); f_close(&FileRead); } appState = APPSTATE_PLAY; break; case APPSTATE_PLAY: if (f_open(&FileRead, WAVE_NAME_COMPLETO, FA_READ) != FR_OK) { Error_Handler(); } else { /* Read sizeof(WaveFormat) from the selected file */ f_read (&FileRead, &waveformat, sizeof(waveformat), &bytesread); WavePlayerStart(waveformat, getDataCB, 70); f_close(&FileRead); } break; default: appState = APPSTATE_IDLE; break; } }
extern void application_task(void) { UINT bytesread = 0; WAVE_FormatTypeDef waveformat; switch (appState) { case APPSTATE_IDLE: if (usbConnected) { appState = APPSTATE_MOUNT_FS; } break; case APPSTATE_GEN_SINE: waveformat.SampleRate = SINE_GEN_AUDIO_SAMPLE_RATE; waveformat.FileSize = SINE_GEN_AUDIO_SAMPLE_RATE * SINE_GEN_DURATION * \ sizeof(int16_t) + sizeof(WAVE_FormatTypeDef); waveformat.NbrChannels = CHANNEL_MONO; WavePlayerStart(waveformat, getDataSineCB, 70); break; case APPSTATE_MOUNT_FS: if (f_mount(&USBDISKFatFs, (TCHAR const*)USBDISKPath, 0 ) != FR_OK ) { /* FatFs initialization fails */ Error_Handler(); } else { appState = APPSTATE_WRITE; } break; case APPSTATE_UMOUNT_FS: f_mount(NULL, (TCHAR const*)"", 1); appState = APPSTATE_IDLE; break; case APPSTATE_WRITE: if (f_open(&FileWrite, WAVE_NAME_COMPLETO, FA_CREATE_ALWAYS | FA_WRITE) != FR_OK) { Error_Handler(); } else { waveformat.SampleRate = SINE_GEN_AUDIO_SAMPLE_RATE; waveformat.FileSize = SINE_GEN_AUDIO_SAMPLE_RATE * SINE_GEN_DURATION * \ sizeof(int16_t) + sizeof(WAVE_FormatTypeDef); waveformat.NbrChannels = WAVE_CHANNEL_MONO; waveformat.ByteRate = SINE_GEN_AUDIO_SAMPLE_RATE * WAVE_CHANNEL_MONO * sizeof(int16_t); waveformat.BitPerSample = __REV16(WAVE_16_BIT_PER_SAMPLE); waveformat.SubChunk2Size = SINE_GEN_AUDIO_SAMPLE_RATE * SINE_GEN_DURATION * sizeof(int16_t); WaveRecord(&FileWrite, waveformat, getDataSineCB); f_close(&FileWrite); appState = APPSTATE_PLAY; } break; case APPSTATE_PLAY: if (f_open(&FileRead, WAVE_NAME_COMPLETO, FA_READ) != FR_OK) { Error_Handler(); } else { /* Read sizeof(WaveFormat) from the selected file */ f_read (&FileRead, &waveformat, sizeof(waveformat), &bytesread); WavePlayerStart(waveformat, getDataCB, 70); f_close(&FileRead); } break; default: appState = APPSTATE_IDLE; break; } }