📄 musicplayer_main.c
字号:
break;
case LAST_STATE:
{
current_song_no--;
if(current_song_no == 0)
current_song_no = Files;
API_MusicSetFile(music_format,current_song_no,FF_ID_AUTO);
API_MusicSetFrame(0);
if(API_MusicGetThreadState() == TS_STOP)
{
_music_play(volume);
}
else
{
API_MusicStop();
}
// clear percentage bar
API_LcmPutSysImage(IMG_PROCESS_BAR,POS_MUSPLY_PROBAR_X,POS_MUSPLY_PROBAR_Y);
music_percentage_s = 0;
}
break;
case NEXT_STATE:
{
current_song_no++;
if(current_song_no == Files+1)
current_song_no = 1;
API_MusicSetFile(music_format,current_song_no,FF_ID_AUTO);
API_MusicSetFrame(0);
if(API_MusicGetThreadState() == TS_STOP)
{
_music_play(volume);
}
else
{
API_MusicStop();
}
// clear percentage bar
API_LcmPutSysImage(IMG_PROCESS_BAR,POS_MUSPLY_PROBAR_X,POS_MUSPLY_PROBAR_Y);
music_percentage_s = 0;
}
break;
case MODE_STATE:
{
//mp3_state = MODE_STATE;
// show music browser BG
API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_MUSICPLAYER);
API_SysWriteValue(RAM_SHARING_ADR,MUS_PAINT_FLAG,3);
API_OsSetCurrentTask(TASKID_MUSICBROWSER);
}
break;
}
API_OsPendEvent(EVID_KEY_UP);
}
// receive event form audio thread
if(API_OsCheckEventOccur(EVID_AUD_THD_RESPONSE))
{
API_OsReleaseEvent(EVID_AUD_THD_RESPONSE);
switch(API_MusicGetThreadState())
{
case TS_PLAY:
_show_volume_icon(volume);
API_LcmPutSysImage(IMG_BUTTON_PLAY,POS_MUSPLY_STATE_X,POS_MUSPLY_STATE_Y);
//modify song name when last song or next song
_show_cur_song_info();
mp3_state = PLAY_STATE;
break;
case TS_STOP:
//change another song
if(_music_play(volume))
_music_show_state(mp3_state);
break;
case TS_PAUSE:
API_LcmPutSysImage(IMG_BUTTON_PAUSE,POS_MUSPLY_STATE_X,POS_MUSPLY_STATE_Y);
mp3_state = PAUSE_STATE;
break;
case TS_FF:
API_LcmPutSysImage(IMG_BUTTON_PREVIOUS,POS_MUSPLY_STATE_X,POS_MUSPLY_STATE_Y);
mp3_state = FF_STATE;
break;
case TS_BF:
API_LcmPutSysImage(IMG_BUTTON_REWIND,POS_MUSPLY_STATE_X,POS_MUSPLY_STATE_Y);
mp3_state = BF_STATE;
break;
case TS_REPEND:
//repeat finish -- show stop icon
API_LcmPutSysImage(IMG_BUTTON_STOP,POS_MUSPLY_STATE_X,POS_MUSPLY_STATE_Y);
min = 0;
sec = 0;
mp3_state = STOP_STATE;
break;
case TS_PLAY_ER:
//reload MPL lib
API_SysLoadMediaLib();
// set hardware volume
API_SysSetHardwareVolume(0,0); // DAC set 0
API_SysSetHardwareVolume(4,10); // Mixer set 10
//set mixer output
API_SysMixerOutputSelection(MIXER_DAC);
_show_error_message_box();
mp3_state = ERROR_STATE;
counter_2hz = 0;
break;
}
API_OsPendEvent(EVID_AUD_THD_RESPONSE);
}
if(API_OsCheckEventOccur(EVID_MEDIA_CHANGE))
{
API_OsReleaseEvent(EVID_MEDIA_CHANGE);
_show_cur_song_info();
// clear percentage bar
API_LcmPutSysImage(IMG_PROCESS_BAR,POS_MUSPLY_PROBAR_X,POS_MUSPLY_PROBAR_Y);
music_percentage_s = 0;
API_OsPendEvent(EVID_MEDIA_CHANGE);
}
if(API_OsCheckEventOccur(EVID_BT_2HZ))
{
//uint8 *pStrLen,index=0;
API_OsReleaseEvent(EVID_BT_2HZ);
/*
API_MusicLRCText(counter_2hz_temp/4,lfnPtr,pStrLen);
counter_2hz_temp++;
API_LcmSetLanguage(CS_UTF8);
API_LcmClearScreen(0,0,320,32);
API_LcmShowString(lfnPtr,0,0);
API_LcmShowaXY(0,0,16);
while(lfnPtr[index] != 0x00)
{
API_LcmShowNum(lfnPtr[index]);
index++;
}
//API_LcmSetLanguage(CS_BIG5);
*/
//show play time
if(mp3_state == PLAY_STATE)// || mp3_state == PAUSE_STATE || mp3_state == STOP_STATE)
{
API_MusicGetCurrentPlayTime(&hr,&min,&sec);
show_play_time(min,sec);
_show_percentage();
}
//show battery charger
if(API_SysReadValue(RAM_SHARING_ADR,VBUS_STATE) == VBUS_SRC_ADAPTER)
{
if(slide_bat_lv_idx == 5)
slide_bat_lv_idx = cur_bat_lv_icon_idx;
API_LcmPutSysImage(IMG_BATTERY_0+slide_bat_lv_idx,POS_MUSBRO_BATTERY_X,POS_MUSBRO_BATTERY_Y);
slide_bat_lv_idx++;
}
//don't play next song until error message box display for 2 sec
if(mp3_state == ERROR_STATE)
{
counter_2hz++;
if(counter_2hz == 4)
{
//_music_player_init();
_music_main_show(volume);
current_song_no++;
if(current_song_no == Files+1)
current_song_no = 1;
API_MusicSetFile(music_format,current_song_no,FF_ID_AUTO);
API_MusicSetFrame(0);
if( (API_MusicGetThreadState() == TS_PLAY_ER) || (API_MusicGetThreadState() == TS_STOP) )
{
_music_play(volume);
}
else
{
API_MusicStop();
}
// clear percentage bar
//API_LcmPutSysImage(IMG_PROCESS_BAR,POS_MUSPLY_PROBAR_X,POS_MUSPLY_PROBAR_Y);
music_percentage_s = 0;
}
}
API_OsPendEvent(EVID_BT_2HZ);
}
if(API_OsCheckEventOccur(EVID_UPDATE_SD))
{
//API_OsReleaseEvent(EVID_UPDATE_SD);
API_OsSetCurrentTask(TASKID_CHANGESOURCE);
//API_OsPendEvent(EVID_UPDATE_SD);
}
if (API_OsCheckEventOccur(EVID_VBUS_PLUGIN))
{
API_OsReleaseEvent(EVID_VBUS_PLUGIN);
if(API_SysGetUSBSource() == VBUS_SRC_USB_ON_LINE)
{
uint32 frame_no;
if(API_MusicGetThreadState() == TS_PLAY || API_MusicGetThreadState() == TS_PAUSE)
{
API_SysWriteValue2B(RAM_SHARING_ADR,B_SONG_FILE_L,current_song_no);
API_MusicGetFrame(&frame_no);
API_SysWriteValue4B(RAM_SHARING_ADR,FRAME_NO_LL,frame_no);
}
API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_MUSICPLAYER);
API_SysWriteValue(RAM_SHARING_ADR,VBUS_STATE,VBUS_SRC_USB_ON_LINE);
API_OsSetCurrentTask(TASKID_USBAPP);
}
else
{
API_SysWriteValue(RAM_SHARING_ADR,VBUS_STATE,VBUS_SRC_ADAPTER);
}
API_OsPendEvent(EVID_VBUS_PLUGIN);
}
if(API_OsCheckEventOccur(EVID_VBUS_PLUGOUT))
{
API_OsReleaseEvent(EVID_VBUS_PLUGOUT);
API_SysWriteValue(RAM_SHARING_ADR,VBUS_STATE,VBUS_SRC_NONE);
_show_battery();
API_OsPendEvent(EVID_VBUS_PLUGOUT);
}
if(API_OsCheckEventOccur(EVID_ALARM_OCCUR))
{
uint32 frame_no;
//uint16 current_song_no;
API_OsReleaseEvent(EVID_ALARM_OCCUR);
if(API_MusicGetThreadState() == TS_PLAY || API_MusicGetThreadState() == TS_PAUSE)
{
//API_MusicGetCurrentSongIndex(¤t_song_no);
API_SysWriteValue2B(RAM_SHARING_ADR,B_SONG_FILE_L,current_song_no);
API_MusicGetFrame(&frame_no);
API_SysWriteValue4B(RAM_SHARING_ADR,FRAME_NO_LL,frame_no);
}
API_SysWriteValue(RAM_SHARING_ADR,LAST_TASK,TASKID_MUSICPLAYER);
API_OsSetCurrentTask(TASKID_ALARMOCCUR);
API_OsPendEvent(EVID_ALARM_OCCUR);
}
if(API_OsCheckEventOccur(EVID_UPDATE_BATVOL))
{
uint8 bat_lv;
API_OsReleaseEvent(EVID_UPDATE_BATVOL);
bat_lv = API_SysGetVolLv();
if(bat_lv < BATTERY_LV0)
{
API_OsSetCurrentTask(TASKID_POWEROFF);
}
else
{
uint8 bat_lv_icon_idx;
//get current voltage icon
bat_lv_icon_idx = _get_battery_icon_index();
if(API_SysReadValue(RAM_SHARING_ADR,VBUS_STATE) == VBUS_SRC_ADAPTER)
cur_bat_lv_icon_idx = bat_lv_icon_idx;
else if(API_SysReadValue(RAM_SHARING_ADR,VBUS_STATE) == VBUS_SRC_NONE)
API_LcmPutSysImage(IMG_BATTERY_0+bat_lv_icon_idx,POS_MUSBRO_BATTERY_X,POS_MUSBRO_BATTERY_Y);
}
API_OsPendEvent(EVID_UPDATE_BATVOL);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -