/*----------------------------------------------------------------------------*/
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);
	}	
}
Example #3
0
/*----------------------------------------------------------------------------*/
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;	//无有效设备
    }
}
Example #4
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;
}