Beispiel #1
0
bool get_prog_song_num(u8 get_Mode)
{

#if 0
	if(get_Mode==GET_PREV_FILE){

		if(usb_play_prog_index>0){
			usb_play_prog_index--;
		}
		else{
			usb_play_prog_index=usb_prog_total_num-2;
		}
	}
	else{			
		usb_play_prog_index++;
	
		if(usb_play_prog_index>(usb_prog_total_num-2)){

			usb_play_prog_index =0;

			if(get_Mode==GET_PLAY_FILE){
				repeat_off_flag =1;
				return 0;		
			}			
		}
	}

#else
	repeat_off_flag =0;

	if(play_mode == REPEAT_ALL){

		if(get_Mode==GET_PREV_FILE){

			if(usb_play_prog_index>0){
				usb_play_prog_index--;
			}
			else{
				usb_play_prog_index=usb_prog_total_num-2;
			}
		}
		else{			
			usb_play_prog_index++;
	
			if(usb_play_prog_index>=usb_prog_total_num){
				usb_play_prog_index =0;
			}
		}
	}
	else if(play_mode == REPEAT_ONE){


	}
	else if(play_mode == REPEAT_OFF){

		if(get_Mode==GET_PREV_FILE){

			if(usb_play_prog_index>0){
				usb_play_prog_index--;
			}
			else{
				usb_play_prog_index=usb_prog_total_num-2;
			}
		}
		else{

			usb_play_prog_index++;
	
			if(usb_play_prog_index>=usb_prog_total_num){
				usb_play_prog_index =0;
			}			
		}
		
			
		if(get_Mode==GET_PLAY_FILE){
			repeat_off_flag =1;
			return 0;		
		}			
		
	}
	else if(play_mode == REPEAT_RANDOM){
		
	        CRCREG = T3CNTH;
	        CRCREG = T3CNTL;

	        usb_play_prog_index = ReadLFSR();
	        usb_play_prog_index = usb_play_prog_index % (usb_prog_total_num-1)+ 1;
	}	
#endif
	given_file_number =usb_prog_tab[usb_play_prog_index];

#ifdef MP3_UART_ENABLE
    printf(" ---> 1111	get_prog_song_num	IDX%x    FILE NUM %x  \r\n",(u16)usb_play_prog_index,(u16)usb_prog_total_num);
#endif
	
#ifdef MP3_UART_ENABLE
    printf(" ---> 2222	get_prog_song_num	%x \r\n",(u16)given_file_number);
#endif

	return 1;

}
Beispiel #2
0
u8 fs_get_filenum(u8 playmode, u8 searchMode)
{
    //u16 fileTotal;
    
    find_break_point_file_flag = 0;
//    if(RECODE_PLAY == encode_status)
//    {
//        playmode = REPEAT_REC;
//    }
//    else 
    if (searchMode == PLAY_FIRST_FILE)				//播放第一个文件
    {
        given_file_number = 1;
        return GET_FILE_OK;
    }
    else if (searchMode == PLAY_LAST_FILE)				//播放最后一个文件
    {
        given_file_number = logic_fileTotal;//fs_msg.fileTotal;
        return GET_FILE_OK;
    }
    else if (searchMode == PLAY_BREAK_POINT)				//播放记忆的文件序号和断点
    {
#if ((LAST_MEM_FILE_PLAY_EN == 1) || (BREAK_POINT_PLAY_EN == 1))

        if (break_point_filenum)
        {
            given_file_number = break_point_filenum;
            find_break_point_file_flag = 1;
        }
        else
#endif

            given_file_number = 1;

        break_point_filenum = 0;

        return GET_FILE_OK;
    }
    else if (PLAY_SEL_FILE == searchMode)		 //播放删除文件后的文件
    {
        if((!given_file_number) || (given_file_number > logic_fileTotal))
        {
            given_file_number = 1;
        }
        return GET_FILE_OK;   
    }

    given_file_number = filenum_phy_logic(fs_msg.fileNumber);  //物理文件号转换成逻辑文件号

    if ((playmode == REPEAT_ONE) && (searchMode != PLAY_AUTO_NEXT))
    {
        playmode = REPEAT_ALL;					//在单曲循环模式下,转换成全循环模式
    }


    switch (playmode)
    {
    case REPEAT_RANDOM:
        given_file_number = ReadLFSR();
        given_file_number = given_file_number % logic_fileTotal + 1;
        break;

    case REPEAT_BACK:					  //倒序排列
        if (searchMode == PLAY_PREV_FILE)		 //next file		
        {
            goto _next_file_rpt;
        }
        else					               	  	//prev file
        {
            goto _prve_file_rpt;
        }
        break;
    case REPEAT_ALL:
        if (searchMode == PLAY_PREV_FILE)					//prev file
        {
_prve_file_rpt:
            given_file_number--;
            if (given_file_number == 0)
            {
                return GET_DEVICE_HEAD;
            }
        }
        else					                //next file
        {
_next_file_rpt:
            given_file_number++;
            if (given_file_number > logic_fileTotal)
            {
                given_file_number = 1;
                return GET_DEVICE_END;
            }
        }
        break;

    case REPEAT_FOLDER:
        if (searchMode == PLAY_PREV_FILE)
        {
            given_file_number = filenum_logic_phy(given_file_number);  //逻辑文件号转换成物理文件号
            given_file_number--;
            if (given_file_number == fs_msg.fileTotalOutDir)
                given_file_number = fs_msg.fileTotalOutDir + fs_msg.fileTotalInDir;
            given_file_number = filenum_phy_logic(given_file_number);	//物理文件号转换成逻辑文件号
        }
        else					//next file
        {
            given_file_number = filenum_logic_phy(given_file_number);
            given_file_number++;
            if (given_file_number > (fs_msg.fileTotalOutDir + fs_msg.fileTotalInDir))
                given_file_number = fs_msg.fileTotalOutDir + 1;
            given_file_number = filenum_phy_logic(given_file_number);
        }
        break;
    }

    return GET_FILE_OK;
}