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

📄 periphgui.c

📁 Sunplus 8202S source code.
💻 C
📖 第 1 页 / 共 5 页
字号:
/***************************************************************
 *
 * File Name :  periphGUI.c
 * 
 * Discription:
 *     Provide an interface for operations related with peripheral
 *     Especially for UDisk and CF card 
 *
 * Creator:  liweihua
 * Date   :  2003-10-29 20:18
 * Update :  sunzhh 2004-11-15 
 * modify :  linrc  20041204 rename Card*->FS*
 ***************************************************************/

#include "user_init.h"
#include "global.h"
#include "memmap0.h"
#include "ircmd.h"
#include "types.h"
#include "memcfg.h"
#include "framebuf.h"
#include "memmap.h"
#include "osd.h"
#include "fsNav.h"

#define NEW_INPUT_MENU //lijd 2004-12-20 16:15 

#ifdef SPHE8202_ALL_TYPE_CARD_WRITE
BYTE card_browse_sign = 1;
#endif

#if defined(FAT_Write_UI)||defined(CF_CARD_WRITE)
#include "cardfs.h"
//extern int CardSchedule(BYTE copy_mode);
extern int FSSchedule(BYTE copy_mode);
extern int CARDIsPlugIn(void);
extern CARD_INFO   cardP;
BYTE read_card_sign=0;
BYTE flag_cd2cf=0, flag_cf2cd=0;
BYTE InfoGui_flag=0;
int remain_capacity;
extern UINT32	zeroFAT_cnt;

#ifdef FAT_Write_File_System  //added by wangwei,2004-11-15 13:29
extern void StorageGetCapacityInfo(void);
extern UINT32 uiTotalCapacity;
extern UINT32 uiUsedCapacity;
extern UINT32 uiRemainCapacity;
#endif //FAT_WRITE_FILE_SYSTEM

#ifdef STORAGE_WRITE_GUI
    #ifdef CARD_SETUP_TYPE_3  
BYTE 	*stringMediaswitch[]={" ","UDISK","CF CARD","SD/MMC","MS/MS PRO","SMC"};
#else 
BYTE 	*stringMediaswitch[]={" ","UDISK","SD/MMC","MS/MS PRO"};
#endif
#elif defined(CARD_WRITE_GUI)
    #if defined(CARD_SETUP_TYPE_3)   
    BYTE 	*stringMediaswitch[]={" ","CF CARD","SD/MMC","MS/MS PRO","SMC"};
    #else 
    BYTE 	*stringMediaswitch[]={" ","SD/MMC","MS/MS PRO"};
    #endif
#endif

#ifdef STORAGE_WRITE_GUI
BYTE 	*string[]={"NO UDISK/CARD","CDROM TO UDISK","UDISK TO CDROM","COPY FILE TO","DELETE FILE","FORMAT","RENAME FILE","CAPACITY INFO"};
#elif defined(CF_CARD_WRITE)||defined(CARD_WRITE_GUI)
BYTE 	*string[]={"NO CARD","CDROM TO CARD","CARD TO CDROM","COPY THE FILE","DELETE FILE","FORMAT","RENAME FILE","CAPACITY INFO"};
#else
BYTE 	*string[]={"NO UDISK","CDROM TO UDISK","UDISK TO CDROM","COPY FILE TO","DELETE FILE","FORMAT","RENAME FILE","CAPACITY INFO"};
#endif

#define OSD_FONT_HEIGHT 24
#define	FUNCTION_REGION	3
#define	MESSAGE_REGION	2

#define	COLOR_WHITE	        2
#define	COLOR_GRAY		    3
#define	COLOR_GRAYWHITE     14
#define	COLOR_YELLOW	    7
#define	COLOR_YELLOWGREEN   9
#define	COLOR_DBLUE		    4
#define COLOR_LBLUE         0
#define COLOR_GREEN         13

#define	BUTTON_UP		0
#define	BUTTON_DOWN	    1
#define	BUTTON_LEN		18

#define	NO_PERIPHRAL	0
#define	BUTTON_CD2P		1
#define	BUTTON_P2CD		2
#define	BUTTON_COPY		3
#define	BUTTON_DELETE	4
#define	BUTTON_FORMAT	5
#define	BUTTON_RENAME	6
#define	BUTTON_CAPACITY 7

#ifdef FAT_Write_UI
BYTE Switch_flag=0;
BYTE SwitchID;
BYTE Select_Media;
#define Media_UDISK     1
#define	Media_CF		2
#define	Media_SD		3
#define	Media_MS		4
#define	Media_SMC		5
#ifdef CARD_SETUP_TYPE_3
#define	BUTTON_UDISK	1
#define	BUTTON_CF		2
#define	BUTTON_SD		3
#define	BUTTON_MS		4
#define	BUTTON_SMC		5
#else//if defined(CARD_SETUP_TYPE_4)
#define	BUTTON_UDISK	1
#define	BUTTON_SD		2
#define	BUTTON_MS		3
#endif
#endif

#define COPY_ROOTDIR   1   //copy file to root dir
#define COPY_EXISTING   2   //copy file to existing dir
#define COPY_NEWDIR   3   //created new dir and copy file to the new dir

#define	ERROR_MESSAGE	0
#define	PFUN_WRITE	1
#define	PFUN_DELETE	2
#define	PFUN_FORMAT	3
#define	PFUN_RENAME	4
#define	PFUN_COPYING	5
#define	P_SPACEFULL 	6
#define	P_SPACEEMPTY 	7
#define	P_INPUT 	8
#define P_NOMATCH    9
#define P_DIREXISTING	    10//add 2003-12-22

#define 	COPY_ROOTDIR   	1   //copy file to root dir
#define 	COPY_EXSITING   2   //copy file to existing dir
#define 	COPY_NEWDIR   	3   //created new dir and copy file to the new dir

#define __palette4F(G,B,R,A) \
        ( ((UINT32)((G)&0xff)<<24)|((UINT32)((B)&0xff)<<16)|((UINT32)((R)&0xff)<<8)|(A&0xff) ) 

extern void osd_init_MediaswitchGUI(void);
extern void osd_init_periphGUI(void);
extern void osd_DrawRegionString(BYTE xStart, BYTE yStart, BYTE *str, BYTE fontColor, BYTE bkColor, BYTE r);
extern void osd_draw_button(BYTE xStart, BYTE yStart, BYTE xLen, BYTE color, BYTE bDown, BYTE r);
extern void osd_draw_region_rect(UINT32 xStart, UINT32 yStart, UINT32 xLen, UINT32 yLen, BYTE bkColor, BYTE r);
extern int AVD_SetMediaInterrupt(void);

BYTE sign_PFun=0;
BYTE    *stringcopy[]={" ","ROOT DIR","EXISTING DIR","CREATE DIR"};
BYTE	KeyID;
BYTE	CopyID=0;

BYTE level=0;
BYTE input_flag=0;
BYTE pressnum=10, PressID=5,pressnum_flag=0,xoffset=0;
char *temp;
char getstring[8]={};

/***************************************************************************
 *  Function Name: Set_Button                                              *
 *  Purposes: Only for drawing the function button                         *
 *  Arguments: none                                                        *
 *  Returns: none                                                          *
 *  Update:  sunzhh 2004-11-10                                             *
 **************************************************************************/
void Set_Button(void)
{
	BYTE item;
    if(media_type==MEDIA_CD)
	{
        osd_DrawRegionString(2, BUTTON_CD2P*8+3, string[BUTTON_CD2P], COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button
        osd_DrawRegionString(2, BUTTON_P2CD*8+3, string[BUTTON_P2CD], COLOR_GRAY, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button
		osd_DrawRegionString(2, BUTTON_COPY*8+3, string[BUTTON_COPY], COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button
		for(item=BUTTON_DELETE; item<=BUTTON_RENAME; item++)//invalidate the latter three
		{
			osd_DrawRegionString(2, item*8+3, string[item], COLOR_GRAY, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button
		}
		osd_DrawRegionString(2, BUTTON_CAPACITY*8+3, string[BUTTON_CAPACITY], COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button		
	}
    if(media_type==MEDIA_CARD)
	{
        //for copy gray
        osd_DrawRegionString(2, BUTTON_CD2P*8+3, string[BUTTON_CD2P], COLOR_GRAY, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button
		osd_DrawRegionString(2, BUTTON_COPY*8+3, string[BUTTON_COPY], COLOR_GRAY, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button
        osd_DrawRegionString(2, BUTTON_P2CD*8+3, string[BUTTON_P2CD], COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button
    	for(item=BUTTON_DELETE; item<=BUTTON_RENAME; item++)//all six are ok
    	{
    	    osd_DrawRegionString(2, item*8+3, string[item], COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button
        }
		osd_DrawRegionString(2, BUTTON_CAPACITY*8+3, string[BUTTON_CAPACITY], COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);		//draw string on button		        
    }
}

/***************************************************************************
 *  Function Name: Set_MediaSwitch_Button                                  *
 *  Purposes: Only for drawing the meia button to switch                   *
 *  Arguments: none                                                        *
 *  Returns: none                                                          *
 *  Create:  sunzhh 2004-11-10                                             *
 **************************************************************************/
#if defined(STORAGE_WRITE_GUI)||defined(CARD_WRITE_GUI)
void Set_MediaSwitch_Button(void)
{ 	  
  		//draw string on button           	    	        
        if(detect_type & USB_DEVICE)   //&&(detect_type & SD_CARD_DEVICE)) 
            osd_DrawRegionString(1, BUTTON_UDISK*8+5, stringMediaswitch[BUTTON_UDISK], COLOR_WHITE, COLOR_GRAYWHITE,3);		//draw string on button        
        else 
            osd_DrawRegionString(1, BUTTON_UDISK*8+5, stringMediaswitch[BUTTON_UDISK], COLOR_GRAY, COLOR_GRAYWHITE,3);		//draw string on button        
        #ifdef CARD_SETUP_TYPE_3   //256Pin 16bit Non_share mode All card. 
        if(detect_type & CF_CARD_DEVICE) 
            osd_DrawRegionString(1, BUTTON_CF*8+5, stringMediaswitch[BUTTON_CF], COLOR_WHITE, COLOR_GRAYWHITE,3);		//draw string on button                       
        else
            osd_DrawRegionString(1, BUTTON_CF*8+5, stringMediaswitch[BUTTON_CF], COLOR_GRAY, COLOR_GRAYWHITE,3);		//draw string on button                       
        #endif
        if(detect_type & SD_CARD_DEVICE) 
            osd_DrawRegionString(1, BUTTON_SD*8+5, stringMediaswitch[BUTTON_SD], COLOR_WHITE, COLOR_GRAYWHITE,3);		//draw string on button        
        else 
            osd_DrawRegionString(1, BUTTON_SD*8+5, stringMediaswitch[BUTTON_SD], COLOR_GRAY, COLOR_GRAYWHITE,3);		//draw string on button        
        if(detect_type & MS_CARD_DEVICE)
            osd_DrawRegionString(1, BUTTON_MS*8+5, stringMediaswitch[BUTTON_MS], COLOR_WHITE, COLOR_GRAYWHITE,3);		//draw string on button        
        else
            osd_DrawRegionString(1, BUTTON_MS*8+5, stringMediaswitch[BUTTON_MS], COLOR_GRAY, COLOR_GRAYWHITE,3);		//draw string on button         
        #ifdef CARD_SETUP_TYPE_3   //256Pin 16bit Non_share mode All card.       
        if(detect_type & SMC_CARD_DEVICE) 
            osd_DrawRegionString(1, BUTTON_SMC*8+5, stringMediaswitch[BUTTON_SMC], COLOR_WHITE, COLOR_GRAYWHITE,3);		//draw string on button        
        else
            osd_DrawRegionString(1, BUTTON_SMC*8+5, stringMediaswitch[BUTTON_SMC], COLOR_GRAY, COLOR_GRAYWHITE,3);		//draw string on button                     
        #endif 
}
#endif        

/***************************************************************************
 *  Function Name: highlight_button                                              *
 *  Purposes: highlight the mainmenu button that will select               *
 *  Arguments: selectID                                                        *
 *  Returns: none                                                          *
 *  Update:  sunzhh 2004-11-10                                             *
 **************************************************************************/
void highlight_button(BYTE selectID)
{
    #if defined(STORAGE_WRITE_GUI)||defined(CARD_WRITE_GUI)
    if(Switch_flag==1)
    {
        Set_MediaSwitch_Button();
	    switch(selectID)
	    {
		    case BUTTON_UDISK:
                osd_DrawRegionString(1, BUTTON_UDISK*8+5, stringMediaswitch[BUTTON_UDISK], COLOR_WHITE, COLOR_YELLOWGREEN,3);		//draw string on button		    
			    break;                
            #ifdef CARD_SETUP_TYPE_3   //256Pin 16bit Non_share mode All card. 
		    case BUTTON_CF:
                osd_DrawRegionString(1, BUTTON_CF*8+5, stringMediaswitch[BUTTON_CF], COLOR_WHITE, COLOR_YELLOWGREEN,3);		//draw string on button	        
			    break;
            #endif
            case BUTTON_SD:
                osd_DrawRegionString(1, BUTTON_SD*8+5, stringMediaswitch[BUTTON_SD], COLOR_WHITE, COLOR_YELLOWGREEN,3);		//draw string on button        
			    break;
            case BUTTON_MS:
                osd_DrawRegionString(1, BUTTON_MS*8+5, stringMediaswitch[BUTTON_MS], COLOR_WHITE, COLOR_YELLOWGREEN,3);		//draw string on button         
			    break;
            #ifdef CARD_SETUP_TYPE_3   //256Pin 16bit Non_share mode All card.       
            case BUTTON_SMC:
                osd_DrawRegionString(1, BUTTON_SMC*8+5, stringMediaswitch[BUTTON_SMC], COLOR_WHITE, COLOR_YELLOWGREEN,3);		//draw string on button        
			    break;
            #endif 
	    }        
    }
    else
    #endif 
    {      
    int y;
	Set_Button();// back to the default color
	switch(selectID)
	{
		case BUTTON_CD2P:
			osd_DrawRegionString(2, BUTTON_CD2P*8+3, string[BUTTON_CD2P], COLOR_WHITE, COLOR_YELLOWGREEN, FUNCTION_REGION); 	//draw string on button
            for(y=0;y<3;y++)
                osd_DrawRegionString(17,(3+y)*8+3,"              ",COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);
			break;
		case BUTTON_P2CD:
			osd_DrawRegionString(2, BUTTON_P2CD*8+3, string[BUTTON_P2CD], COLOR_WHITE, COLOR_YELLOWGREEN, FUNCTION_REGION); 	//draw string on button
            for(y=0;y<3;y++)
                osd_DrawRegionString(17,(3+y)*8+3,"              ",COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);
			break;
		case BUTTON_COPY:
			osd_DrawRegionString(2, BUTTON_COPY*8+3, string[BUTTON_COPY], COLOR_WHITE, COLOR_YELLOWGREEN, FUNCTION_REGION); 	//draw string on button
            for(y=0;y<3;y++)
            {
                osd_DrawRegionString(17,(3+y)*8+3,"--",COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);
                osd_DrawRegionString(19,(3+y)*8+3,stringcopy[y+1],COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);
            }
			break;
		case BUTTON_DELETE:
			osd_DrawRegionString(2, BUTTON_DELETE*8+3, string[BUTTON_DELETE], COLOR_WHITE, COLOR_YELLOWGREEN, FUNCTION_REGION); 	//draw string on button
			break;
		case BUTTON_FORMAT:
			osd_DrawRegionString(2, BUTTON_FORMAT*8+3, string[BUTTON_FORMAT], COLOR_WHITE, COLOR_YELLOWGREEN, FUNCTION_REGION); 	//draw string on button
			break;
		case BUTTON_RENAME:
			osd_DrawRegionString(2, BUTTON_RENAME*8+3, string[BUTTON_RENAME], COLOR_WHITE, COLOR_YELLOWGREEN, FUNCTION_REGION);	//draw string on button
			break;
		case BUTTON_CAPACITY:
			osd_DrawRegionString(2, BUTTON_CAPACITY*8+3, string[BUTTON_CAPACITY], COLOR_WHITE, COLOR_YELLOWGREEN, FUNCTION_REGION);	//draw string on button
                for(y=0;y<3;y++)
                    osd_DrawRegionString(17,(3+y)*8+3,"              ",COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);
			break;	
	}
    }
}

/***************************************************************************
 *  Function Name: highlight_button_all                                              *
 *  Purposes: highlight all the button containing submenu that will select *
 *  Arguments: selectID,  copyID                                                      *
 *  Returns: none                                                          *
 *  Update:  sunzhh 2004-11-10                                             *
 **************************************************************************/
void highlight_button_all(BYTE selectID,BYTE copyID)
{
    if(copyID==0) 
        highlight_button(selectID);
    else 
    {
        highlight_button(selectID);
        osd_DrawRegionString(2, BUTTON_COPY*8+3, string[BUTTON_COPY], COLOR_WHITE, COLOR_GRAYWHITE, FUNCTION_REGION);
        osd_DrawRegionString(19,(2+copyID)*8+3,stringcopy[copyID],COLOR_WHITE, COLOR_YELLOWGREEN, FUNCTION_REGION);
    }
}

/***************************************************************************
 *  Function Name: show_mediaswitch                                        *
 *  Purposes: show the media switch menu                                   *
 *  Descriptions:                                                          * 
 *     If there is two media detected at one time,the menu is showing.     * 
 *  Arguments: none                                                        *
 *  Returns: none                                                          *
 *  Create:  sunzhh 2004-11-10                                             *
 **************************************************************************/
#if defined(STORAGE_WRITE_GUI)||defined(CARD_WRITE_GUI)
void show_mediaswitch(void)
{
    Switch_flag=1;
    osd_init_MediaswitchGUI();
    BYTE	*title_str="MEDIA SWITCH";
    osd_draw_region_rect(0, 0, 64*4, 40, COLOR_GREEN, 3);
    osd_DrawRegionString(2, 1, title_str, COLOR_YELLOW, COLOR_GREEN, FUNCTION_REGION);
    SetOsdCol(FUNCTION_REGION, FUNCTION_REGION, 0,__palette4F(192,192, 192, 0xe0));		//draw background of the region
	if(storage_type==0)
	{
		osd_DrawRegionString(8, 1, string[NO_PERIPHRAL], COLOR_DBLUE, COLOR_LBLUE, MESSAGE_REGION); 	//draw string on button
		delay_1ms(2000);
		full_scrn &= (~PERIPHERAL);//for release the IR

⌨️ 快捷键说明

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