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; }
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; }