📄 musicmain.c
字号:
/********************************************************************************
* SDK30F_D1
* music player main sub
*
* (c) Copyright 2002, Actions Co,Ld.
* All Right Reserved
*
* File: musicmain.c
* By : wurui
* Version: 1> v1.00 first version 2005-9-19 8:28
*
* $Id: musicmain.c,v 1.24 2005/12/30 08:02:25 wurui Exp $
*******************************************************************************
*/
#ifndef WIN32
#include "music.h"
#include "FIFO.h"
void Music_GetMusicList(muisc_vars *MusicTaskVars);
void MusicTask()
{
muisc_vars MusicTaskVars;
int sel=0;
INT8U err;
msg_t msg;
char *ListMusicBox[10];
char music_menu[104];
char music_exts[MUSIC_TOTAL_TYPE * 4];
char *filesel_exts[MUSIC_TOTAL_TYPE+1];
char play_mode[22];
int fileno[8];
memset(&MusicTaskVars, 0, sizeof(muisc_vars));
OSSetTaskOwnPtr((unsigned int *)&MusicTaskVars, MUSIC_FACE_ID);
ListMusicBox[0] = &music_menu[0];
ListMusicBox[1] = &music_menu[13];
ListMusicBox[2] = &music_menu[26];
ListMusicBox[3] = &music_menu[39];
ListMusicBox[4] = &music_menu[52];
ListMusicBox[5] = &music_menu[65];
ListMusicBox[6] = &music_menu[78];
ListMusicBox[7] = &music_menu[91];
ListMusicBox[8] = NULL;
ListMusicBox[9] = music_menu;
MusicTaskVars.point[0] = ListMusicBox;
MusicTaskVars.point[1] = play_mode;
MusicTaskVars.point[2] = fileno;
// filesel_exts[0] = music_exts;
// MusicTaskVars.g_fselector_vars.fsel_Exts = filesel_exts;
Music_ReadMusicVars(&MusicTaskVars);
MusicTaskVars.PlayWin = 0;
//MusicTaskVars.music_selectflag = FALSE;
Music_GetMusicList(&MusicTaskVars);
Music_ShowSelectWindow(&MusicTaskVars);
while(1)
{
MYOSQPend(MP3_Player_Out, &msg, 0);
switch(msg.type)
{
case MSG_KEY:
Music_DealKeyMessage(&MusicTaskVars,&msg);
break;
case MS_PLAYER:
Music_DealPlayerMessage(&MusicTaskVars,&msg);
break;
case MS_Err:
break;
case MS_END:
Music_DeleteAllWindow(&MusicTaskVars);
MusicTaskDelete();
break;
}
}
}
void Music_DealKeyMessage(muisc_vars *MusicTaskVars,msg_t *msg)
{
switch(msg->msg.data[0])
{
case GUI_KeyEnter_KeyMode | GUI_Key_Long:
Music_BackToMainTask(MusicTaskVars);
break;
case GUI_KeyBackspace_KeyPlay | GUI_Key_Up:
Music_PauseSong(MusicTaskVars);
break;
case GUI_KeyRight_KeyVolAdd | GUI_Key_Down:
case GUI_KeyRight_KeyVolAdd | GUI_Key_Hold:
Music_AddVolumn(MusicTaskVars);
break;
case GUI_KeyLeft_KeyVolSub | GUI_Key_Down:
case GUI_KeyLeft_KeyVolSub | GUI_Key_Hold:
Music_SubVolumn(MusicTaskVars);
break;
case GUI_KeyEnter_KeyMode | GUI_Key_Up:
Music_SelectKeyResolve(MusicTaskVars);
break;
case GUI_KeyDelete_KeyLoop | GUI_Key_Up:
Music_SetABPoint(MusicTaskVars);
break;
case GUI_KeyDown_KeyNext | GUI_Key_Up:
if(Music_FastStepStop(MusicTaskVars))
break;
if( LISTBOX_GetSel(MusicTaskVars->ListWin) == 7 )
Music_GetNextFile(MusicTaskVars);
else
LISTBOX_IncSel(MusicTaskVars->ListWin);
Music_BackToListWindow(MusicTaskVars);
break;
case GUI_KeyUp_KeyPrev | GUI_Key_Up:
if(Music_FastStepStop(MusicTaskVars))
break;
if( LISTBOX_GetSel(MusicTaskVars->ListWin) == 0 )
Music_GetPrevFile(MusicTaskVars);
else
LISTBOX_DecSel(MusicTaskVars->ListWin);
Music_BackToListWindow(MusicTaskVars);
break;
case GUI_KeyDown_KeyNext | GUI_Key_Long:
Music_FastForward(MusicTaskVars);
break;
case GUI_KeyUp_KeyPrev | GUI_Key_Long:
Music_FastBackward(MusicTaskVars);
break;
}
MusicTaskVars->PlayingTimeStub = 0;
}
void Music_DealPlayerMessage(muisc_vars *MusicTaskVars , msg_t *msg)
{
switch(msg->msg.data[0])
{
case MS_DecEnd:
Music_DecReachEnd(MusicTaskVars);
break;
case MS_RedrawInfo:
Music_RedrawSongInfo(MusicTaskVars);
Music_ResolveTimeOut(MusicTaskVars);
break;
case MS_Redraw:
MusicTaskVars->RedrawFlag = TRUE;
WM_InvalidateWindow(MusicTaskVars->PlayWin);
break;
case MS_PlayerErr:
Music_DealPlayerErr(MusicTaskVars , msg);
break;
}
}
void Music_DealPlayerErr(muisc_vars *MusicTaskVars, msg_t *msg)
{
int err_type;
char err[32];
switch(msg->msg.data[1])
{
case FSErr:
err_type = EF_ERR;
break;
case DSPErr:
err_type = EDS_ERR;
break;
case FileFormatErr:
err_type = E_FILEF;
break;
case DiskErr:
err_type = ED_ERR;
break;
case DiskEmptyErr:
err_type = ED_EMPE;
break;
case ApplyBuffErr:
err_type = E_APPBE;
break;
case UnknowErr:
err_type = E_UNKER;
break;
case FifoErr:
err_type = EFI_ERR;
break;
case FifoCloseErr:
err_type = EFI_C;
break;
case FifoOpenErr:
err_type = EFI_O;
break;
case FifoModeErr:
err_type = EFI_M;
break;
case FifoReadErr:
err_type = EFI_R;
break;
case FifoSeekErr:
err_type = EFI_S;
break;
case FifoNameErr:
err_type = EFI_W;
break;
default:
err_type = E_UNKEX;
}
strcpy(err,GUI_GetStringByID(S_MUSER, 1));
GUI_MessageBox(GUI_GetStringByID(err_type , 1),err, GUI_MESSAGEBOX_CF_MOVEABLE);
Music_BackToMainTask(MusicTaskVars);
}
/*
void Music_ShowSearchBar(muisc_vars *MusicTaskVars)
{
msg_t msg_send;
if(MusicTaskVars->SearchWin == NULL)
{
MusicTaskVars->SearchWin = PROGBAR_Create(8,32,80,10, WM_CF_SHOW);
PROGBAR_SetText(MusicTaskVars->SearchWin, GUI_GetStringByID(S_SEAMU , 1));
PROGBAR_SetBarColor(MusicTaskVars->SearchWin, 0, GUI_BLUE);
PROGBAR_SetBarColor(MusicTaskVars->SearchWin, 1, GUI_RED);
PROGBAR_SetValue(MusicTaskVars->SearchWin, 0);
MYOSQFlush(MP3_Player_Out);
}
else
{
int i;
if( (i =PROGBAR_GetValue(MusicTaskVars->SearchWin)) >= 100)
i = 99;
PROGBAR_SetValue(MusicTaskVars->SearchWin, i+1);
}
msg_send.type = MSG_RESERVE1;
MYOSQPost(MP3_Player_Out,&msg_send);
MusicTaskVars->PlayingTimeStub=0;
OSTimeDly(2);
}*/
//void Music_DeleteSearchBar(muisc_vars *MusicTaskVars)
//{
// PROGBAR_SetValue(MusicTaskVars->SearchWin, 100);
// MYOSQFlush(MP3_Player_Out);
// WM_DeleteWindow(MusicTaskVars->SearchWin);
//}
void Music_ResolveTimeOut(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->PlayingTimeStub++ > 8)
{
if(!MusicTaskVars->PlayWin && MusicTaskVars->g_music_var->status != music_unvalid)
{
//MusicTaskVars->music_selectflag = TRUE;
Music_CreatePlayingWindow(MusicTaskVars);
}
if(MusicTaskVars->VolumWin)
{
MusicTaskVars->RedrawFlag = TRUE;
Music_DeleteVolumnWindow(MusicTaskVars);
}
}
}
/********************************************************************/
void Music_SetABPoint(muisc_vars *MusicTaskVars)
{
msg_t msg_send;
msg_send.type = MS_SetAB;
MYOSQPost(MP3_Player_In,&msg_send);
}
void Music_FastForward(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->g_music_var->status != music_FFStep)
{
msg_t msg;
msg.type = MS_SetStep;
msg.msg.data[0] = MusicPlayer_StepFF;
msg.msg.data[1] = 0;
MYOSQPost(MP3_Player_In,&msg);
}
}
void Music_FastBackward(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->g_music_var->status != music_FBStep)
{
msg_t msg;
msg.type = MS_SetStep;
msg.msg.data[0] = MusicPlayer_StepRv;
msg.msg.data[1] = 0;
MYOSQPost(MP3_Player_In,&msg);
}
}
bool Music_FastStepStop(muisc_vars *MusicTaskVars)
{
if(MusicTaskVars->g_music_var->status == music_FFStep || MusicTaskVars->g_music_var->status == music_FBStep)
{
msg_t msg;
msg.type = MS_SetStep;
msg.msg.data[0] = MusicPlayer_StepStop;
MYOSQPost(MP3_Player_In,&msg);
return TRUE;
}
return FALSE;
}
void Music_SelectSong(muisc_vars *MusicTaskVars)
{
msg_t msg_send;
int *fileno = MusicTaskVars->point[2];
Music_StopSong(MusicTaskVars);
OSTimeDly(20);
MusicTaskVars->g_music_var->infomation.fileno = fileno[ LISTBOX_GetSel(MusicTaskVars->ListWin) ];
Music_PlaySong(MusicTaskVars);
}
void Music_PlaySong(muisc_vars *MusicTaskVars)
{
msg_t msg_send;
/***************将长名转为ASCII码格式******************/
// int i;
// for(i = 0;MusicTaskVars->g_music_var->infomation.MusicFullName[i<<1] != 0x00 ;i++)
// {
// MusicTaskVars->g_music_var->infomation.MusicFullName[i] = MusicTaskVars->g_music_var->infomation.MusicFullName[i<<1];
// }
//MusicTaskVars->g_music_var->infomation.MusicFullName[i] = 0;
//MusicTaskVars->music_selectflag = TRUE;
MusicTaskVars->RedrawFlag = TRUE;
Music_CreatePlayingWindow(MusicTaskVars);
msg_send.type = MS_SetLocation;
MYOSQPost(MP3_Player_In,&msg_send);
OSTimeDly(50);
msg_send.type = MS_Play;
MYOSQPost(MP3_Player_In,&msg_send);
}
void Music_PauseSong(muisc_vars *MusicTaskVars)
{
msg_t msg;
msg.type = MS_Play;
MYOSQPost(MP3_Player_In,&msg);
}
void Music_StopSong(muisc_vars *MusicTaskVars)
{
msg_t msg;
Music_DeletePlayingWindow(MusicTaskVars);
Music_DeleteVolumnWindow(MusicTaskVars);
//MusicTaskVars->music_selectflag = FALSE;
msg.type = MS_Stop;
MYOSQPost(MP3_Player_In,&msg);
}
void Music_DecReachEnd(muisc_vars *MusicTaskVars)
{
//MusicTaskVars->RedrawFlag = TRUE;
//Music_DeletePlayingWindow(MusicTaskVars);
//Music_DeleteVolumnWindow(MusicTaskVars);
//Music_PlaySong(MusicTaskVars);
//MusicTaskVars->music_selectflag = FALSE;
// MusicTaskVars->MusicABFlag = MSG_Normal;
}
void Music_BackToMainTask(muisc_vars *MusicTaskVars)
{
WM_SetFocus(WM_HBKWIN);
Music_DeleteAllWindow(MusicTaskVars);
MainTaskCreate();
MusicTaskDelete();
}
void Music_BackToListWindow(muisc_vars *MusicTaskVars)
{
Music_DeleteVolumnWindow(MusicTaskVars);
Music_DeletePlayingWindow(MusicTaskVars);
}
void Music_AddVolumn(muisc_vars *MusicTaskVars)
{
msg_t msg;
Music_CreateVolumnWindow(MusicTaskVars);
SLIDER_Inc(MusicTaskVars->SliderWin);
MusicTaskVars->CurVolumn = SLIDER_GetValue(MusicTaskVars->SliderWin);
msg.type = MS_SetVolume;
msg.msg.data[0] = MusicTaskVars->CurVolumn;
MYOSQPost(MP3_Player_In,&msg);
}
void Music_SubVolumn(muisc_vars *MusicTaskVars)
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -