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

📄 updateui.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
📖 第 1 页 / 共 2 页
字号:
/******************************************************************/
/*   Copyright (C) 2007 ROCK-CHIPS FUZHOU . All Rights Reserved.  */
/*******************************************************************
File        :  updateUI.c
Desc        :  定义 系统升级相关的与界面相关的操作和接口.

Author      : huangsl
Date        : 2007-11-14
Notes       : 安装类型:
                1.在没有任何系统的情况下 的安装 -- 此时安装程序没有任何系统接口和资源澹(包括字库).
                    此种情况下,无须用户干预.
                2.系统正常运行下的升级 安装.
              安装模式:
                通过脚本和PC工具生产安装固件,然后有专门的安装程序来执行该固件.
              相关工作:
                1.两种情况下的文件结构安排.
                2.安装接口 扩展性问题--跨版本安装.
                3.安装固件如何生成--脚本生成还是模块生成.
                4.如果安装过程中断电,如何保证安全性.

$Log: updateUI.c,v $
Revision 1.8  2008/06/30 06:16:17  HSL
增加升级过程中关闭 定时器和USB中断功能.

Revision 1.7  2008/06/19 04:43:27  Administrator
代码整理!

Revision 1.6  2008/06/18 02:56:21  Administrator
修改头文件位置!

Revision 1.5  2008/06/17 08:23:26  Administrator
VC工程修改!

Revision 1.4  2008/06/13 07:08:55  Administrator
HJ 更新三级 LOAD 工程!

Revision 1.3  2008/05/26 03:33:13  HSL
修改SETUP工程的BUG.

Revision 1.2  2008/05/20 07:44:49  HSL
根据PC仿真根改部分文件,增加部分WCHAR接口,根据状态栏进行相应修改.

Revision 1.1.1.1  2008/03/06 13:29:10  Lingzhaojun
no message

Revision 1.7  2007/12/13 09:12:17  Lingzhaojun
no message

Revision 1.6  2007/12/13 02:28:33  Zhaojun
no message

Revision 1.5  2007/12/11 07:01:42  Lingzhaojun
提交固件升级方案一

Revision 1.4  2007/12/10 09:28:51  Lingzhaojun
no message

Revision 1.3  2007/12/07 10:41:42  Lingzhaojun
提交固件升级初步版本

Revision 1.2  2007/12/06 03:24:57  Lingzhaojun
提交固件升级一部分UI程序

Revision 1.1  2007/11/23 08:04:12  Huangshilin
增加安装接口.

Revision 1.4  2007/11/05 09:53:49  Huangshilin
增加GUI接口,增加应用资源互斥控制.

* huangsl             2007-09-19      for rk27.
*
*********************************************************************/
#include "include.h"
#include    "setup\setup.h"
#include    "..\process\rkbin.h"
#include "System.h"
#include "guictrl\Gui.h"
/*****************************************************************************/
//#define SETUPDEDEBUG
extern WINDOW_PROCREG WinUpdateProcMap[];
extern WINDOW_PROCREG FWDispWinMap[];
char* Setupfile = "C:\\SYSTEM\\BASE.RKW";
extern char * VerNo;
#define DelaySec   2
char* SetupPrint  = NULL;
PIMAGE_PACKDENTRY SetupFilePrint;

#define Updstate_Check  (0)
#define Updstate_Begin  (1)
#define Updstate_Copy  (2)
#define Updstate_Restart (3)
#define Updstate_Max  (4)


typedef enum
{
    UPDATE_SELECT_NONE,
    UPDATE_SELECT_CONFIRM,
    UPDATE_SELECT_CONCEL,
    UPDATE_SELECT_RETURN
}UpdateWinID;



typedef struct
{

    UINT32 UpdatFouce;
    UINT32 UpdateState;
    UINT32 TICK;

}W_Update;

UpdateWinID updatewinID = UPDATE_SELECT_NONE;
extern  MY_FILE   *gUpdateFile;  //文件指针.

#ifdef BOARD
char                    gSetupDefaultFwFileName[ ] = "D:\\SETUP.RKW";
#else
char                    gSetupDefaultFwFileName[ ] = "..\\..\\..\\Resource\\RK27SDK.RKW";
#endif
/*****************************************************************************/
//EXTERN
extern INT32U UpdateActionHandler(void **currAction , WINDOW* win);
extern void *UpdateGetFirstAction(INT32U *Err);   //char* fwFile ,
extern void UpdateCancle(void *lastAction);
extern void *UpdateGetNextAction(void *lastAction);
extern PRK_SWVERSION GetSetUpVersion(void);
extern PSWVERSION_REGKEY GetSwVersion(void);
extern PHWVERSION_REGKEY GetHwVersion(void);
extern void UpdateActionStart(void);
WINDOW* FirmWareWin;



void FWUpdateWin(WINDOW* parent)
{
    FileListItem Item = {0, "FirmWare Update..."};
    W_List *WListObj;
    FirmWareWin = WindowCreateEx(parent, WS_FULLSCREEN | WM_TICK | WES_FileList, WID_SetupWinMain, 0, 0, LCD_W, LCD_H, NULL, BID_Setup, NULL, NULL, FWDispWinMap, NULL);
    WListObj = (W_List *)FirmWareWin->Data;
    WListObj->TitleHeight = 30;
    WListObj->IconBackground = 0;
    WListObj->IconItemSelect.BmpID = 0;
    //WListObj->MaxItemIndex= 9;
    WindowSendMessage(FirmWareWin, WM_ListAddItem, 1, &Item);
    LCD_Update_WT();

    //080630,huangsl,为了防止意外情况,关闭中断.
    //不能采用关闭 IRQ 的形式,原因有2:1.各个TASK的 CPSR是独立的,因此,当切换到 DISP TASK的时候,IRQ又被
    //打开,2.RGB屏的情况下,必须允许中断才能刷屏.此处改为单独屏蔽调 TIMER和USB中断.
    //ENTER_CRITICAL();
#ifdef WD
    WDDeInitialize();
#endif

    Intr_Disable(INTC_TMR2);    // OS TIMER
    Intr_Disable(INTC_TMR0);    // OS TIMER
    Intr_Disable(INTC_UDC);    // USB INT.

#ifdef SETUP
    BL_SetBright(BL_DARK);   //080221,RGB 屏下不关背光会 花屏.
    UpdateActionStart();
#else
#ifndef SETUPDEDEBUG
    SetupMain(0);
    WindowSendMessage(FirmWareWin, WM_COMMAND, 0, (WLPARAM)"Restart!");
    LCD_Update_WT();
    DelayMs_nops(2000);
    ISystemReboot(0);
#endif
#endif
}

#ifdef SETUPDEDEBUG
UINT16 updateflag = 0;
INT32U  FWUpdateWinTick(WINDOW *win ,  WMPARAM wParam, WLPARAM lParam)
{
    FileListItem Itemcopy = {0, "COPYING FILE:"};
    if (updateflag)
    {
        updateflag = 0;
        WindowSendMessage(win, WM_ListAddItem, 1, &Itemcopy);
    }
    else
    {
        updateflag = 1;
        WindowSendMessage(win, WM_ListAddItem, 1, NULL);
    }
}
#endif
INT32U  FWUpdateWinComm(WINDOW *win ,  WMPARAM wParam, WLPARAM lParam)
{
    W_List *WListObj = (W_List *)win->Data;
    FileListItem Item = {0, "                                                "};
    FileListItem Itemcopy = {0, "copy file:"};
    FileListItem ItemMakeDir = {0, "make directory:"};
    if (10 <= WListObj->MaxItemIndex)
        WindowSendMessage(win, WM_ListDeleteItem, 1, NULL);
    if (lParam)
    {
        if (9 <= WListObj->MaxItemIndex)
            WindowSendMessage(win, WM_ListDeleteItem, 1, NULL);
        if (IRES_PACKACT_CRREATFILE == SetupFilePrint->Action)
            WindowSendMessage(win, WM_ListAddItem, 1, &Itemcopy);
        else if (IRES_PACKACT_MKDIR == SetupFilePrint->Action)
            WindowSendMessage(win, WM_ListAddItem, 1, &ItemMakeDir);
        RKmemset(Item.pText, 0, 48);
        RKmemcpy(Item.pText, lParam, RKstrlen((char*)lParam));
        WindowSendMessage(win, WM_ListAddItem, 1, &Item);
    }

}
INT32U  FWUpdateWinPaint(WINDOW *win ,  WMPARAM wParam, WLPARAM lParam)
{
    DrawBmpId(win->x, win->y, win->BmpID);
    return ListWinPaint(win ,  wParam, lParam);
}


void DispVisionInf(UINT16 X, UINT16 Y)
{

    ColorDesc color = {COLOR_BLACK, ColorRG, DSPM_Transp};
    UINT16 SID = SID_SetSys_RkChip, i;
    PRK_SWVERSION pSysvision = GetSetUpVersion();
    PSWVERSION_REGKEY pSwvision = GetSwVersion();


    for (i = 0;i < 9;i++)
    {

        switch (i)
        {
            case 0:
                DrawNumberHex(X + 100, Y, pSysvision->RkChip, Font12X12, &color, 0);
                break;
            case 1:
                DrawNumberHex(X + 100, Y, pSysvision->RkKnlMajor, Font12X12, &color, 0);
                break;
            case 2:
                DrawNumberHex(X + 100, Y, pSysvision->RkKnlMinor, Font12X12, &color, 0);
                break;
            case 3:
                DrawStringEx(X + 100 , Y , 200, pSwvision->DvlpName, Font12X12, &color, 0);
                break;
            case 4:
                DrawNumberHex(X + 100, Y, pSwvision->VerMajor, Font12X12, &color, 0);
                break;
            case 5:
                DrawNumberHex(X + 100, Y, pSwvision->VerMinor, Font12X12, &color, 0);
                break;
            case 6:
                DrawStringEx(X + 100 , Y , 200, pSwvision->ManufacturerName, Font12X12, &color, 0);
                break;
            case 7:
                DrawStringEx(X + 100 , Y , 200, pSwvision->ProductName, Font12X12, &color, 0);
                break;
            case 8:
                break;


        }


        DrawStringIdEx(X, Y, 100, SID, Font12X12, &color, 0);
        Y = Y + 16;
        SID++;
    }


}

/*****************************************************************************/

/*****************************************************************************/

void DispUpdateState(UINT16 X, UINT16 Y, UINT16 STATE)
{

    ColorDesc color = {COLOR_BLACK, ColorRG, DSPM_Transp};
    UINT16 SID = SID_firewaresel, i;

    for (i = 0;i < 4;i++)

⌨️ 快捷键说明

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