📄 sysmenu55.c
字号:
#include <comsub.h>
#include <platform.h>
#include<gui.h>
#include<ui.h>
#include <newres.h>
#include <setupfunc.h>
#include "..\fend\frntp.h"
#include "..\..\ui\normal\normal.h"
BOOL RMTMRegCodeOk=FALSE;
#define _VENDER_E_
#ifdef _VENDER_E_
#include <ui_sub.h>
#include <iic.h>
//#include <string.h>
#include <stdlib.h>
//SYSMENU UPPERLEFT POINT COORDINATION.
#define SYSMENU_UPPERLEFT 60
#define SYSMENU_UPPERTOP 40
//SYSMENU size
#define SYSMENU_WIDTH 460
#define SYSMENU_HEIGHT 400//360
//
#define SYSMENU_ITEM_NUMS 8
#define SYSMENU_ITEM_XOFFSET 30
#define SYSMENU_ITEM_YOFFSET 60//50//30
#define SYSMENU_ITEM_WIDTH 140//
#define SYSMENU_ITEMVALUE_XOFFSET (SYSMENU_ITEM_XOFFSET+SYSMENU_ITEM_WIDTH +4)// 160 base on the sysmenu rect's left edge
#define SYSMENU_ITEMVALUE_WIDTH (SYSMENU_WIDTH-SYSMENU_ITEMVALUE_XOFFSET-SYSMENU_ITEM_XOFFSET)//(480-160-16)
#define SYSMENU_ITEMVALUE_HEIGHT ((SYSMENU_HEIGHT-2*SYSMENU_ITEM_YOFFSET)/(SYSMENU_ITEM_NUMS+2))
#define SYSMENU_BKCOLOR1 30
#define SYSMENU_BKCOLOR2 294
#define SCREEN_BKCOLOR 244
#define SYSMENU_BKCOLOR 244
//
#define C_MODEL 0
#define C_REGIONO 1
#define C_CHIPID 2
#define C_SERVOVER 3
#define C_MICOMVER 4
#define C_SDKVER 5
#define C_PROMOPTION 6
#define C_FACTORYRESET 7
//
#define FORMAL 1
#define INTERNAL 0
#define FORMAL_INTERNAL INTERNAL
//EEPROM WINDOW size
#define EEPROM_WIDTH 460
#define EEPROM_HEIGHT 260
//EEPROM WINDOW UPPERLEFT POINT COORDINATION.
#define EEPROM_UPPERLEFT 60
#define EEPROM_UPPERTOP 40
//EEPROM item offset base on left and top edge.
#define EEPROM_ITEM_XOFFSET 30
#define EEPROM_ITEM_YOFFSET 30
//
#define EEPROM_ITEM_WIDTH 140
#define EEPROM_VALUE_WIDTH 30
#define EEPROM_ITEM_HEIGHT 20
#define EEPROM_VALUE_XOFFSET (EEPROM_ITEM_XOFFSET+EEPROM_ITEM_WIDTH+4)
//
#define EEPROM_VALUE_BYTES 8
#define EEP_COUNTRY_CODEH 0
#define EEP_COUNTRY_CODEL 1
#define EEP_LANGUAGE 2
#define EEP_OPTION_1 3
#define EEP_OPTION_2 4
#define EEP_OPTION_3 5
#define EEP_OPTION_4 6
#define EEP_OPTION_5 7
//
#define HIGHLIGHT 1
#define HIGHLIGHT_CANCEL 0
#define REGIONITEM_WIDTH 140
#define REGIONITEM_HEIGHT EEPROM_ITEM_HEIGHT
#define REGIONITEM_SPACE (REGIONITEM_HEIGHT*2) //SPACE BETWEEN TWO LINE.
#define REGIONITEM_XOFFSET (SYSMENU_WIDTH/4)
#define REGIONITEM_YOFFSET (SYSMENU_HEIGHT/4)
#define REGIONVALUE_WIDTH 20
void SysmenuRespondFPKey(DWORD key);
void ShowVersionRespondFPKey(DWORD key);
void SetVenderMsgAttr(LPBYTE msg_attr,BYTE Attr);
void SetVenderMsgInverse(LPBYTE MsgAttr,BYTE Start,BYTE End);
void UiFuncSysmenuOver();
void EEPOptionRespondScrsaverNotice(DWORD MsgInput);
void EEPOptionRespondFPKey(DWORD MsgInput);
void ColorbarRespondFPKey(DWORD MsgInput);
void BtoStr(BYTE* str,BYTE val,BYTE strlen);
void BtoHexStr(BYTE val,BYTE* str);
void RgnCodeRespondScrsvNotice(DWORD MsgInput);
void RegionCodeRespondFPKey(DWORD msginput);
void MP1RespondFPKey(DWORD MsgInput);
void LoadEEPROMOptionValue(void);
void ExcuFactoryReset(void);
#endif/*#ifdef _VENDER_E_*/
#define STR_M3355C ": M3355C"
#define STR_M3355E ": M3355E"
#define STR_M3355F ": M3355F"
#define STR_M3355G ": M3355G"
#define STR_M3355A_A ": M3355A-A"
#define STR_M3355A_B ": M3355A-B"
#define STR_M3355B_A ": M3355B-A"
const static BYTE SystermInfo[8][36]=
{
{"\0M\0O\0D\0E\0L"
}
,//MODEL
{"\0R\0E\0G\0I\0O\0N\0 \0N\0O"},//REGION NO.
{"\0C\0H\0I\0P\0 \0I\0.\0D"},//CHIP I.D.
{"\0S\0E\0R\0V\0O\0 \0V\0E\0R"},//SERVO VER
{"\0M\0I\0C\0O\0M\0 \0V\0E\0R"},//MICOM VER
{"\0S\0D\0K\0 \0V\0E\0R"},//SDK VER
{"\0P\0R\0O\0M\0 \0O\0P\0T\0I\0O\0N"},//PROM OPTION
{"\0F\0a\0c\0t\0o\0r\0y\0 \0R\0e\0s\0e\0t\0.\0."}//Factory Reset..
};
const static BYTE systitle[]="SYSTEM INFORMATION";
const static BYTE model[20]=": ";
const static BYTE regionid[6]=": ";
const static BYTE chipid[]=": M3355";
static BYTE servover[20]="";
const static BYTE micom[20]=CUSTOMER_MICOM_VERSION;//30905_02 Sean for compile option
static BYTE sdkver[20]="" ;
const static BYTE promoption[]=": ";
const static BYTE factoryok[]=": Done";
const static BYTE factoryno[]=": Failed";
const static BYTE promedit[]="PROM EDIT :";
const static BYTE eeprom[] ="EEPROM. :";
static BYTE eepromdata[EEPROM_VALUE_BYTES];
static BYTE region_code;
static BYTE cur_editnum=0;
static BYTE eep_value;
static BOOL press_progkey=FALSE;
//extern BOOL isupgradeDisc;
static HDC hk_dc;
BYTE internalOrform;
static BYTE cur_func=UI_FUNC_FORBIDDEN;//fixed logo twinkling when press open key
extern BOOL bIsRegionErrShow;
static BYTE temp_curval=0;
typedef struct
{
RECT rect;
COLORREF bkCol;//color index
COLORREF region1Col;//no use now
COLORREF region2Col;//no use now
COLORREF innerEdgeCol;//no use now
}
SysmenuRect,*lpSysmenuRect;
SysmenuRect sRc;
void HiddenKeyDCInit(void)
{
RECT rect;
extern BOOL IsSysmenuLogo;
halClearFrameBuffer((GetM3323BYTE(0xd8)&0x03), 122, 115, 84);
IsSysmenuLogo=1;
hk_dc=CreateDC("DISPLAY", "OSD", NULL, NULL);
SetBkMode(hk_dc,TRANSPARENT);
}
void clearScreen(HDC hdc)
{
RECT rect;
HBRUSH hbr;
int left,top,right,bottom;
left=0;
top=0;
right=608;
bottom=416;
SetRect(&rect,left, top, right, bottom);
hbr=CreateSolidBrush(GetColorInDef256Palette(255));
FillRect(hdc, &rect, hbr);
DeleteObject((HGDIOBJ)hbr);
}
void DrawSysmenuItemValue(HDC hdc, const lpSysmenuRect srect,BYTE item,BYTE InorFormal)
{
int left,right,top,bottom,i;
RECT rc;
BYTE str[4];
BYTE curstr[40];
memset(str,0x00,4);
memset(curstr,0x00,40);
if(InorFormal==FORMAL&&item==C_SDKVER)
return ;
//locate the item value
left=srect->rect.left+SYSMENU_ITEMVALUE_XOFFSET;
if(item==SYSMENU_ITEM_NUMS-1)
top=srect->rect.top+SYSMENU_ITEM_YOFFSET+(item*SYSMENU_ITEMVALUE_HEIGHT)+10;
else
top=srect->rect.top+SYSMENU_ITEM_YOFFSET+(item*SYSMENU_ITEMVALUE_HEIGHT);
right=left+SYSMENU_ITEMVALUE_WIDTH;
bottom=top+SYSMENU_ITEMVALUE_HEIGHT;
SetRect(&rc, left, top, right, bottom);
SetTextColor(hdc, GetColorInDef256Palette(237/*30*/));
switch(item)
{
case C_MODEL:
//strcpy(curstr, model);
StringCopy(curstr, model);
StringCat(curstr,_MODEL_NAME );
break;
case C_REGIONO:
BtoStr(str, region_code, 4);
StringCopy(curstr, regionid);
StringCat(curstr, str);
break;
case C_CHIPID:
switch (CHIP_VERSION)
{
case CHIP_M3355_A_A:
StringCopy(curstr, STR_M3355A_A);
break;
case CHIP_M3355_A_B:
StringCopy(curstr, STR_M3355A_B);
break;
case CHIP_M3355_B_A:
StringCopy(curstr, STR_M3355B_A);
break;
case CHIP_M3355_C:
StringCopy(curstr, STR_M3355C);
break;
case CHIP_M3355_E:
StringCopy(curstr, STR_M3355E);
break;
case CHIP_M3355_F:
StringCopy(curstr, STR_M3355F);
break;
case CHIP_M3355_G:
StringCopy(curstr, STR_M3355G);
break;
default:
StringCopy(curstr, "M3355");
break;
}
break;
case C_SERVOVER:
MEM_CPY(servover, (char*)GetServoVersion(), 12);
servover[12] = 0;
StringCat(curstr, ": ");
StringCat(curstr, servover);
break;
case C_MICOMVER:
StringCat(curstr, ": "); //30905_02 Sean for compile option
StringCat(curstr, micom);//30905_02 Sean for compile option
StringCat(curstr, _RELEASE_DATE);
break;
case C_SDKVER:
if(InorFormal==FORMAL)
StringCopy(curstr," ");
else
{
StringCat(curstr, ": ");
StringCopy(sdkver, (char*)GetSDKVersion());
StringCat(curstr, sdkver);
}
break;
case C_PROMOPTION:
StringCopy(curstr, promoption);
for(i=0;i<EEPROM_VALUE_BYTES;i++)
{
BtoHexStr(eepromdata[i], str);
StringCat(str, " ");
StringCat(curstr, str);
}
break;
case C_FACTORYRESET:
StringCopy(curstr, factoryok);
break;
default:
break;
}
DrawText(hk_dc, UNICODE(curstr), -1,&rc, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CHARCLIP);
}
void DrawSysmenuItem(HDC hdc,const lpSysmenuRect srect,BYTE InorFormal)
{
RECT rc;
int left,right,top,bottom,xtemp,ytemp;
int i;
xtemp=srect->rect.left;
ytemp=srect->rect.top;
//draw systerm title SYSTEM INORMATION
left=xtemp+SYSMENU_ITEM_XOFFSET;
top=ytemp+30;
right=left+200;
bottom=top+28;
SetRect(&rc, left, top, right,bottom);
SetTextColor( hdc, GetColorInDef256Palette(237/*30*/));
DrawText(hdc, UNICODE(systitle), -1, &rc, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CHARCLIP);
//
for(i=0;i<SYSMENU_ITEM_NUMS;i++)
{
if(InorFormal==FORMAL&&i==C_SDKVER)
;
else
{
left=xtemp+SYSMENU_ITEM_XOFFSET;
if(i==SYSMENU_ITEM_NUMS-1)
top=ytemp+SYSMENU_ITEM_YOFFSET+(i*SYSMENU_ITEMVALUE_HEIGHT)+10;
else
top=ytemp+SYSMENU_ITEM_YOFFSET+(i*SYSMENU_ITEMVALUE_HEIGHT);
right=left+SYSMENU_ITEM_WIDTH;
bottom=top+SYSMENU_ITEMVALUE_HEIGHT;
SetRect(&rc, left, top, right,bottom);
SetTextColor( hdc, GetColorInDef256Palette(237/*30*/));
DrawText(hdc, SystermInfo[i], -1, &rc, DT_LEFT|DT_VCENTER|DT_SINGLELINE|DT_CHARCLIP);
}
}
}
void ShowSysmenuTable(HDC hdc,const lpSysmenuRect srect,BYTE inorform)
{
int i;
// draw systerm menu's item information
DrawSysmenuItem(hdc,srect,inorform);
//draw systerm menu's item value information
for(i=C_MODEL;i<SYSMENU_ITEM_NUMS;i++)
{
DrawSysmenuItemValue(hdc,srect,i,inorform);
}
}
void UiFuncSysmenuInit(void)
{
RECT rc;
cur_func=UI_FUNC_VENDER_SETUP;
//set factory default value(namely ,default const value in SetDefOptionPara function ) to eeprom.
ExcuFactoryReset();
region_code=OSD_Setup_Parameter.bRegion;
//040721, for 512k
// InitSetupCfg();
SetOSDLanguage(&OSD_Setup_Parameter.bOSDLang);
// get eeprom value for display
LoadEEPROMOptionValue();
HiddenKeyDCInit();
//draw system menu rectangle
sRc.rect.left=SYSMENU_UPPERLEFT;
sRc.rect.top=SYSMENU_UPPERTOP;
sRc.rect.right=SYSMENU_UPPERLEFT+SYSMENU_WIDTH;
sRc.rect.bottom=SYSMENU_UPPERTOP+SYSMENU_HEIGHT;
sRc.bkCol=SYSMENU_BKCOLOR;
sRc.region1Col=30;
sRc.region2Col=294;
//DrawSysmenuRect(hk_dc,&sRc);
ShowSysmenuTable(hk_dc,&sRc,internalOrform);
}
void UiFuncSysmenuProc(WORD MsgType, DWORD MsgInput)
{
#ifdef _VENDER_E_
switch(MsgType)
{
case C_DT_TEST:
if(MsgInput==C_DT_TEST_BEGIN)
{
cur_func=UI_FUNC_NORMAL;
clearScreen(hk_dc);
DeleteDC(hk_dc);
ChangeLogoData(1);
ShowLogo(C_LOGO_FRAME);
g_UiCrntFunc = UI_FUNC_NORMAL;
(UiInitFunc[UI_FUNC_NORMAL])();
CmdUIMsg(C_DT_TEST, C_DT_TEST_BEGIN);
}
break;
case C_FP_PLAYTIME:
case C_FP_SHOWLOAD:
case C_NV_NOTICE:
case C_PLAYBACK_MANAGE:
case C_UI_NOTICE:
case C_TIMER_ACTIVE:
//UiFuncNormalProc(MsgType, MsgInput);
break;
case C_FP_MIC_DETECT:
UiFuncNormalProc(MsgType, MsgInput);
break;
case C_FP_KEY:
SysmenuRespondFPKey(MsgInput);
break;
}
#endif
}
void SysmenuRespondFPKey(DWORD key)
{
#ifdef _VENDER_E_
#if ( _NO_ENTER_KEY_MODE==NoEnter_Enable )
if(key == C_KEY_PLAY)
key = C_KEY_ENTER;
#endif
switch(key)
{
case V_KEY_OPEN:
if (cur_func == UI_FUNC_VENDER_SETUP)
{
cur_func=UI_FUNC_NORMAL;
clearScreen(hk_dc);
DeleteDC(hk_dc);
ChangeLogoData(1);
ShowLogo(C_LOGO_FRAME);
g_UiCrntFunc = UI_FUNC_NORMAL;
(UiInitFunc[UI_FUNC_NORMAL])();
}
break;
default:
if (cur_func == UI_FUNC_VENDER_SETUP)
{
cur_func=UI_FUNC_NORMAL;
clearScreen(hk_dc);
DeleteDC(hk_dc);
//ChangeLogoData(1);
//ShowLogo(C_LOGO_FRAME);
if(key!=V_KEY_CLOSE)
CaseV_KEY_SETUP();
else
{
ChangeLogoData(1);
ShowLogo(C_LOGO_FRAME);
g_UiCrntFunc = UI_FUNC_NORMAL;
}
//g_UiCrntFunc = UI_FUNC_NORMAL;
}
break;
}
#endif
}
void DrawRegionCodeItem(HDC hdc,const lpSysmenuRect srect)
{
int left,right,top,bottom;
RECT rect;
BYTE regionedit[]="REGION EDIT :";
BYTE regioncode[]="REGION CODE:";
left=srect->rect.left+REGIONITEM_XOFFSET;
top=srect->rect.top+REGIONITEM_YOFFSET;
right=left+REGIONITEM_WIDTH;
bottom=top+REGIONITEM_HEIGHT;
SetRect(&rect, left, top, right,bottom);
SetTextColor( hdc, GetColorInDef256Palette(31));
DrawText(hdc, UNICODE(regionedit), -1, &rect, DT_LEFT|DT_VCENTER|DT_SINGLELINE);
top=bottom+REGIONITEM_SPACE;
bottom=top+REGIONITEM_HEIGHT;
SetRect(&rect, left, top, right,bottom);
SetTextColor( hdc, GetColorInDef256Palette(31));
DrawText(hdc, UNICODE(regioncode), -1, &rect, DT_LEFT|DT_VCENTER|DT_SINGLELINE);
}
void DrawRegionCodeItemValue(HDC hdc,const lpSysmenuRect srect,BYTE itemNum,BYTE* str)
{
int left,right,top,bottom;
RECT rect;
if(itemNum<=0)
return;
left=srect->rect.left+REGIONITEM_XOFFSET+REGIONITEM_WIDTH;
top=srect->rect.top+REGIONITEM_YOFFSET+REGIONITEM_HEIGHT*(itemNum-1)+REGIONITEM_SPACE*(itemNum-1);
right=left+REGIONVALUE_WIDTH;
bottom=top+REGIONITEM_HEIGHT;
SetRect(&rect, left, top, right,bottom);
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -