#include "include.h" #include "app_variable.h" #define FS_CRC_SEED 0xffff static uint8_t mp3_res_playing; uint calc_crc(void *buf, uint len, uint seed); void mp3_res_play_kick(u32 addr, u32 len); void wav_res_play_kick(u32 addr, u32 len); void wav_res_dec_process(void); bool wav_res_is_play(void); bool wav_res_stop(void); void mp3_res_play_exit(void); static void set_mp3_res_sta(uint8_t sta) { mp3_res_playing = sta; } uint8_t get_mp3_res_sta(void) { return mp3_res_playing; } u8 mp3_res_process(void) { if (get_mp3_res_sta()) { if (get_music_dec_sta() == MUSIC_STOP) { // printf("mp3 ring stop:%d\n", sys_cb.mute); set_mp3_res_sta(false); music_control(MUSIC_MSG_STOP); bsp_change_volume(SysVariable.vol); if (music_set_eq_is_done()) { music_set_eq_by_num(sys_cb.eq_mode); // 恢复 EQ } mp3_res_play_exit(); if (sys_cb.mute) { bsp_loudspeaker_mute(); } #if DAC_DNR_EN dac_dnr_set_sta(sta); #endif func_bt_mp3_play_restore(); return 0; } } return 1; } void mp3_res_play_do(u32 addr, u32 len, bool sync) { // printf("mp3 ring:%d\n", sys_cb.mute); if (len == 0) { return; } #if DAC_DNR_EN u8 sta = dac_dnr_get_sta(); dac_dnr_set_sta(0); #endif set_mp3_res_sta(true); if (sys_cb.mute) { bsp_loudspeaker_unmute(); } if (get_music_dec_sta() != MUSIC_STOP) { //避免来电响铃/报号未完成,影响get_music_dec_sta()状态 music_control(MUSIC_MSG_STOP); } bsp_change_volume(WARNING_VOLUME); if (music_set_eq_is_done()) { music_set_eq_by_num(0); // EQ 设置为 normal } mp3_res_play_kick(addr, len); } void mp3_res_play(u32 addr, u32 len) { mp3_res_play_do(addr, len, 0); } void mp3_res_play_block(u32 addr, u32 len) { bt_audio_bypass(); mp3_res_play(addr, len); while(mp3_res_process()) { WDT_CLR(); }; bt_audio_enable(); }