⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 musicplayer_main.c

📁 C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码C 代码
💻 C
📖 第 1 页 / 共 2 页
字号:
          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(&current_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 + -