uint8_t PLR_StartNewFile(const char* filename, bool turn) { uint16_t data; if(turn == TRUE){ turning = TRUE; turntime = (config_turnval*1000)/TASKDEL_MS; /*Turn in taskcycles*/ } //Stop actual playback PLR_StopPlayback(); VS_ReadRegister(VS_MODE, &data); data = (data | VS_MODE_SM_LINE1 | VS_MODE_SM_SDINEW); VS_WriteRegister(VS_MODE, data); /*resync*/ VS_WriteRegister(VS_WRAMADDR, 0x1E29); VS_WriteRegister(VS_WRAM, 0); if (FAT1_open(&fp, filename, FA_READ) != FR_OK) { return ERR_FAILED; } /*As in datasheet explained set twice 0 in REG_DECODETIME to set back playback time*/ VS_WriteRegister(VS_DECODE_TIME, 0x00); VS_WriteRegister(VS_DECODE_TIME, 0x00); setPlayback(); while (!VS_Ready()) { //wait until DREQ high } return ERR_OK; }
uint8_t PLR_StopPlayback(void) { uint16_t data; clearPlayback(); FAT1_close(&fp); VS_ReadRegister(VS_MODE, &data); data = (data | VS_MODE_SM_LINE1 | VS_MODE_SM_SDINEW | VS_MODE_SM_CANCEL); VS_WriteRegister(VS_MODE, data); }
uint8_t VS_SetVolume(uint16_t leftright) { /* max volume: 0x0000, total silence: 0xFEFE, 0xFFFF analog power down */ return VS_WriteRegister(VS_VOL, leftright); }