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

📄 ircmd_card.c

📁 OSD显示,单片机实现,ICCAVR! 代码风格严谨,为高人所写.我仅为了上传换取资料
💻 C
📖 第 1 页 / 共 2 页
字号:
#define COLOR_YELLOWGREEN   9
#define COLOR_DBLUE         4
#define COLOR_LBLUE         6
#define COLOR_GREEN         13
#define COLOR_ORANGE        5
//button id define
#define CDBUTTON            0
#ifdef SUPPORT_USB
#define USBBUTTON           CDBUTTON+1
#else
#define USBBUTTON           CDBUTTON
#endif
#ifdef CARD_SETUP_TYPE_3    //dingzhy 2005-6-23 10:03
#define CFBUTTON            (USBBUTTON+1)
#define SDBUTTON            (USBBUTTON+2)
#define MSBUTTON            (USBBUTTON+3)
#define SMCBUTTON           (USBBUTTON+4)
#else  //dingzy add for 3in1 card,usb and cd change 2005-6-23 10:00
#define CARDBUTTON          (USBBUTTON+1)//2
#endif
//define osd parameter
#define RWIDTH      64*4
#define RHEIGHT     288
#define GUIREGION   3


BYTE *show_string[] = { "READ CD",
                        #ifdef SUPPORT_USB
                        "READ USB",
                        #endif
                        #ifdef CARD_SETUP_TYPE_3  //dingzhy 2005-6-23 10:00
                        "READ CF",
                        "READ SD/MMC",
                        "READ MS/MS PRO",
                        "READ SMC",
                        #else
                        "READ CARD",
                        #endif
                        };
BYTE select_media_type = 0;//define selected media type through switch gui
BYTE hilight_button_id;

void draw_switch_background(void)
{
    osd_draw_region_rect(0, 0, RWIDTH, RHEIGHT, COLOR_LBLUE, GUIREGION);
    osd_DrawRegionLine(0, 0, RWIDTH-1, 0, COLOR_WHITE, 1, GUIREGION);
    osd_DrawRegionLine(0, 0, 0, RHEIGHT-1, COLOR_WHITE, 1, GUIREGION);
    osd_DrawRegionLine(RWIDTH-1, 0, RWIDTH-1, RHEIGHT, COLOR_GRAY,1, GUIREGION);
    osd_DrawRegionLine(0, RHEIGHT-1, RWIDTH, RHEIGHT-1, COLOR_GRAY, 1, GUIREGION);    
}
void draw_switch_button(BYTE button_id,BYTE fontcolor,BYTE backcolor,BYTE region)
{
    osd_DrawRegionString(1, button_id*8+6, show_string[button_id],fontcolor,backcolor,region);    
}
void show_switch_gui(void)
{
    osd_init_switchGUI();
    hilight_button_id = 0;
    if(detect_type == 0)
    {
        psprintf(RegionValStr[REGION1], "USB/CARD NOT FOUND");
        PrintOsdMsg(STR_OS_SPACE, REGION1, 1, 1);   
    }
    else
    {
        draw_switch_background();
        if(media_type == MEDIA_CARD)
            hilight_button_id = CDBUTTON;
        else if((detect_type & USB_DEVICE) ) 
            hilight_button_id = USBBUTTON;
        #ifdef CARD_SETUP_TYPE_3   //dingzhy 2005-6-23 10:00
        else if((detect_type & CF_CARD_DEVICE)) 
            hilight_button_id = CFBUTTON;
        else if((detect_type & SD_CARD_DEVICE)) 
            hilight_button_id = SDBUTTON;
        else if((detect_type & MS_CARD_DEVICE)) 
            hilight_button_id = MSBUTTON;
        else if((detect_type & SMC_CARD_DEVICE)) 
            hilight_button_id = SMCBUTTON;
        #else
        else if((detect_type & SD_CARD_DEVICE)||(detect_type & MS_CARD_DEVICE)) 
            hilight_button_id = CARDBUTTON;
        #endif
        
        hilight_button(hilight_button_id);
    }
    
}
//draw default button 
void set_switch_button(void)
{
    BYTE i;
    //DRAW all button with gray font
    #ifdef CARD_SETUP_TYPE_3  //dingzhy add  2005-6-23 10:01
    for(i=CDBUTTON;i<=SMCBUTTON;i++)
        draw_switch_button(i,COLOR_GRAY,COLOR_LBLUE,GUIREGION);
    #else
    for(i=CDBUTTON;i<=CARDBUTTON;i++)
        draw_switch_button(i,COLOR_GRAY,COLOR_LBLUE,GUIREGION);
    #endif    
    //draw all exist media button with white font
    //CD button    
    if(media_type == MEDIA_CARD)
        draw_switch_button(CDBUTTON,COLOR_WHITE,COLOR_LBLUE,GUIREGION);
    // USB button
    #ifdef SUPPORT_USB
    if(detect_type & USB_DEVICE)
        draw_switch_button(USBBUTTON,COLOR_WHITE,COLOR_LBLUE,GUIREGION);
    #endif
    // CF button
    #ifdef CARD_SETUP_TYPE_3  //dingzhy 2005-6-23 10:01
    if(detect_type & CF_CARD_DEVICE)
        draw_switch_button(CFBUTTON,COLOR_WHITE,COLOR_LBLUE,GUIREGION);
    // SD/MMC button
    if(detect_type & SD_CARD_DEVICE)
        draw_switch_button(SDBUTTON,COLOR_WHITE,COLOR_LBLUE,GUIREGION);
    // MS/MS pro button
    if(detect_type & MS_CARD_DEVICE)
        draw_switch_button(MSBUTTON,COLOR_WHITE,COLOR_LBLUE,GUIREGION);
    // SMC button
    if(detect_type & SMC_CARD_DEVICE)
        draw_switch_button(SMCBUTTON,COLOR_WHITE,COLOR_LBLUE,GUIREGION);
    #else
    if((detect_type & SD_CARD_DEVICE)||(detect_type & MS_CARD_DEVICE))
        draw_switch_button(CARDBUTTON,COLOR_WHITE,COLOR_LBLUE,GUIREGION);
    #endif

}

//draw default button and hilight the current select button
void hilight_button(BYTE button_id)
{
    set_switch_button();
    osd_DrawRegionString(1, button_id*8+6, show_string[button_id],COLOR_WHITE,COLOR_ORANGE,GUIREGION); 
}

void switch_gui_up(void)
{
    BYTE offset;
    BYTE current_type;
    offset = detect_type << (7-hilight_button_id);
    if((media_type == MEDIA_CARD)&&(hilight_button_id <= CDBUTTON))
        hilight_button_id = CDBUTTON;
    else if((media_type == MEDIA_CD) && (hilight_button_id <= (CDBUTTON+1)))
        hilight_button_id = CDBUTTON+1;
    else if(offset > 0)
    {
        hilight_button_id--;
        if(hilight_button_id > CDBUTTON)
        {
            #ifdef SUPPORT_USB
            current_type = 0x01<<(hilight_button_id-1);
            #else
            current_type = 0x01<<(hilight_button_id);
            #endif
            if((current_type & detect_type) == 0)
            {
                hilight_button_id--;
                if((media_type == MEDIA_CD) && (hilight_button_id == CDBUTTON))
                return;
            }
        }
        hilight_button(hilight_button_id);
    }
}
void switch_gui_down(void)
{
    BYTE offset;
    BYTE current_type;
    offset = detect_type>>hilight_button_id;
    #ifdef CARD_SETUP_TYPE_3  //dingzhy 2005-6-23 10:01
    if(hilight_button_id>=SMCBUTTON)
        hilight_button_id = SMCBUTTON;
    #else
    if(hilight_button_id>=CARDBUTTON)
        hilight_button_id = CARDBUTTON;
    #endif
    #ifdef SUPPORT_USB
     #ifndef CARD_SETUP_TYPE_3 //dingzhy add 2005-6-23 10:18
     else if(((detect_type>>hilight_button_id) > 0)&&(hilight_button_id < CARDBUTTON))
     #else
    else if((detect_type>>hilight_button_id) > 0)
     #endif
    #else
    else if((detect_type>>(hilight_button_id+1)) > 0)
    #endif
    {
        hilight_button_id++;
        #ifdef SUPPORT_USB
        current_type = 0x01<<(hilight_button_id-1);
        #else
        current_type = 0x01<<(hilight_button_id);
        #endif
        #ifdef CARD_SETUP_TYPE_3 //dingzhy  2005-6-23 10:02
        if((current_type & detect_type) == 0)
            hilight_button_id++;
        #endif
        hilight_button(hilight_button_id);
    }
}
void switch_gui_select(void)
{
    BYTE current_type;
    
    AVD_SetMediaInterrupt();
    
    switch(hilight_button_id)
    {
        case CDBUTTON:
            select_media_type = 0;
            SwitchMedia(CARD2CD);
            break;
        #ifdef SUPPORT_USB
        case USBBUTTON:
            select_media_type = USB_DEVICE;
            storage_type = USB_DEVICE;  //dingzhy  add for  3in1 car usb and disc change  050623 
            SwitchMedia(CD2CARD);
            break;
        #endif
				#ifdef CARD_SETUP_TYPE_3  //dingzhy  add  0623
        case CFBUTTON:
            select_media_type = CF_CARD_DEVICE;
            SwitchMedia(CD2CARD);
            break;
        case SDBUTTON:
            select_media_type = SD_CARD_DEVICE;
            SwitchMedia(CD2CARD);
            break;
        case MSBUTTON:
            select_media_type = MS_CARD_DEVICE;
            SwitchMedia(CD2CARD);
            break;
        case SMCBUTTON:
            select_media_type = SMC_CARD_DEVICE;
            break;
        #else//#ifdef CARD_SETUP_TYPE_3  //dingzhy  a
        case CARDBUTTON:
        		if(detect_type & SD_CARD_DEVICE)
        		{
            	select_media_type = SD_CARD_DEVICE;
            	storage_type = SD_CARD_DEVICE;
            }
            else if(detect_type & MS_CARD_DEVICE)
            {
            	select_media_type = MS_CARD_DEVICE;
            	storage_type = MS_CARD_DEVICE;
            }
            SwitchMedia(CD2CARD);
            break;
        #endif//#ifdef CARD_SETUP_TYPE_3  //dingzhy  a
        default:
            break;
    }
}
void ircmd_switch_cd_card_usb(void)
{
    if(play_state == VCD_STATE_OPEN)
        return;
    if (full_scrn & SWITCH_GUI)
    {
        full_scrn &= (~SWITCH_GUI);
        #ifdef CD_PLAYER 
        if(cd_type_loaded==CDDA)
        {
            osd_init_cdplayer();
        }else               
            osd_init();
        #else
        osd_init();
        #endif
    }
    else
    {
        if((full_scrn & MARK)||(full_scrn & GOTO))
        {
            invalid_key();
            return;
        }
        full_scrn |= SWITCH_GUI;

        show_switch_gui();
        //Maoyong added for IR U/D/L/R/Sel proc func setting 2004-9-24 9:59
        SetFullscrnCmdFuncPtr( switch_gui_up, switch_gui_down, ircmd_null,
                                   ircmd_null, switch_gui_select);
    }
}

#endif//#ifdef SWITCH_CD_CARD_USB
#if defined(FAT_FILE_MODE) && defined(SPHE8202_FAT_WRITE_API)//liweihua mod 2005-3-15 16:16
void ircmd_card_copy(void)
{
    if(fat_play_mode == 1)
    {
        if(pFsJpeg->ControlArea == CNT_AREA_CARD)
        {
            if(pFsJpeg->gifsState == FS_STATE_HDD)
                CardCopy();
            else
            {
                FATCopy();
             }

        }
        else
        {
            invalid_key();
            return;
        }
    }
}
void ircmd_card_delete(void)
{
    if(fat_play_mode == 1)
    {
        FATDelete();
        return;
    }
}
#endif
#endif  //#if defined(SUPPORT_CARD_STORAGE)||defined(SUPPORT_USB)||defined(SPHE8202_CARD_STORAGE)

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -