/*----------------------------------------------------------------------------*/ void disp_music_play_time(void) { u16 play_time; u8 min,sec; play_time_filenum_slider++; if(play_time_filenum_slider<30){ play_time = dec_msg->play_time; min = play_time / 60; sec = play_time % 60; #if(monitor == DISP_LED5X7) printf_num(sec,2,2); printf_num(min,0,2); led_putchar(':',0); #endif } else{ disp_input_number(filenum_phy_logic(fs_msg.fileNumber)); if(play_time_filenum_slider==36){ play_time_filenum_slider=0; } } if(alm_on_flag){ led_disp_icon(LED0_ALARM); } }
/*----------------------------------------------------------------------------*/ void disp_port(u8 menu) { if (menu < 0x80) //显示场景切换,整个显示均会更新 { clear_led(); cur_menu = menu; main_menu_conter = 0; if (menu != MENU_INPUT_NUMBER) input_number = 0; switch (menu) { case MENU_NULL: break; case MENU_PAUSE: disp_music_pause(); break; case MENU_STOP: disp_music_stop(); break; case MENU_SCAN_DISK: disp_scan_disk(); break; case MENU_MAIN_VOL: disp_main_vol(sys_main_vol); break; case MENU_FILENUM: play_time_filenum_slider=0; disp_input_number(filenum_phy_logic(fs_msg.fileNumber)); break; case MENU_MUSIC_MAIN: disp_music_main(); break; case MENU_INPUT_NUMBER: disp_input_number(input_number); break; case MENU_FM_MAIN: #if FM_MODULE disp_fm_main(); #endif break; case MENU_FM_CHANNEL: #if FM_MODULE disp_fm_channel(); #endif break; case MENU_POWER_UP: disp_power_on(); break; case MENU_FM_DISP_FRE: #if FM_MODULE disp_fm_freq(); #endif break; case MENU_FM_FIND_STATION: #if FM_MODULE disp_fm_find_station(); #endif break; case MENU_AUX: disp_aux(); break; case MENU_REC_ERR: disp_rec_err(); break; case MENU_REC_MAIN: disp_music_main(); break; case MENU_SET_EQ: disp_eq(); break; case MENU_SET_PLAY_MODE: disp_play_mode(); break; case DISP_PWR_TIMER: disp_sleep_timer(); break; case MENU_RECWORKING: disp_rec_working(); break; case MENU_REC: disp_rec(); break; case MENU_REC_PAUSE: disp_rec_pause(); break; case MENU_REC_DEL: disp_del(); break; #if ECHO_ENABLE case MENU_REV_DEEP: disp_rev_deep(); break; case MENU_REV_STRONG: disp_rev_strong(); break; #endif #if USB_DEVICE_ENABLE case MENU_USBDEV_MAIN: disp_usb_device(); break; #endif #if RTC_ENABLE case MENU_RTC: disp_curr_time(); break; case MENU_ALM_SET: disp_alarm(); break; case MENU_ALM_UP: disp_alarm_up(); break; case MENU_RTC_PWD: disp_power_off(); break; #if USB_DEVICE_ENABLE case MENU_ALM_REQUEST: disp_alm_request(); break; #endif #endif } } else //局部显示替换和更新 { switch (menu) { case MENU_HALF_SEC_REFRESH: disp_main_menu_refresh(); break; case MENU_POWER_DOWN: disp_nothing(); break; } } if(alm_on_flag){ led_flash_icon(LED0_ALARM); } if(alarm.sw){ led_disp_icon(LED0_ALARM); } }
/*----------------------------------------------------------------------------*/ u8 device_init(void) { u8 sector_sizeof512 = 1; device_check(); if (device_active & device_online) ///<当前需要活动的设备在线 { #ifdef DISP_REC_IN_ENCODE_MODE if(encode_status>0){ disp_port(MENU_REC); } else #endif disp_port(MENU_SCAN_DISK); stop_decode(); // deg_str("device init\n"); fs_fun_init(); if ((device_active & (~VIRTUAL_DEVICE)) == DEVICE_SDMMC0) { if (init_sd()) ///<sd 卡鉴定 { f_init(win_buffer, (u16)sdmmc_read, 1);//get_usb_device_pkt_size()); ///<鉴定成功后 初始化文件系统参数 } else { return 0xff; ///<鉴定失败 } } else if ((device_active & (~VIRTUAL_DEVICE)) == DEVICE_UDISK) { if (usb_host_emuerate_devcie(win_buffer)) ///<USB MASS STORAGE 枚举 { sector_sizeof512 = get_usb_device_pkt_size(); f_init(win_buffer, (u16)read_usb, sector_sizeof512); ///<枚举成功后 初始化文件系统参数 } else { return 0xff; ///<枚举失败 } } } else { return 0xff; } // deg_str("fat init\n"); //if (!f_mount()) ///<文件系统初始化 if (!f_mount_bsp(sector_sizeof512)) { if((RECODE_INIT == encode_status)) { if(0 == f_write_init(device_active & (~VIRTUAL_DEVICE))) //初始化写设备的数据 { return 0xfd; } else { return 0; } } fs_ext_setting(file_type); { u16 break_point; get_rec_mem_info(); if ((device_active & (~VIRTUAL_DEVICE)) == DEVICE_SDMMC0) { break_point = disk_mus_point[0 + encode_cnt].id0; } else if ((device_active & (~VIRTUAL_DEVICE) ) == DEVICE_UDISK) { break_point = disk_mus_point[1 + encode_cnt].id0; } break_point_filenum = fs_scan_disk(break_point); encode_fristfile = fs_msg_rec.firstfilenum; //录音文件总数 encode_filenum = fs_msg_rec.fileTotalInDir; //录音文件夹的第一个文件号 if (break_point_filenum) { break_point_filenum = filenum_phy_logic(break_point_filenum); } } #if VIRTUAL_ENABLE logic_fileTotal = fs_msg.fileTotal - encode_filenum; ///音乐文件总数 if(device_active & VIRTUAL_DEVICE) { logic_fileTotal = encode_filenum; //录音文件总数 } #else logic_fileTotal = fs_msg.fileTotal; #endif if(0 == logic_fileTotal)//if (fs_msg.fileTotal == 0) { return 0xfe; } return 0; } else { return 0xff; //无有效设备 } }
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; }