📄 periphgui.c
字号:
/***************************************************************
*
* 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 + -