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

📄 sysmenu55.c

📁 M3355的源代码
💻 C
📖 第 1 页 / 共 3 页
字号:
#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 + -