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

📄 guithread.c

📁 瑞星微公司RK27XX系列芯片的SDK开发包
💻 C
字号:
/* Copyright (C) 2006 ROCK-CHIPS FUZHOU . All Rights Reserved. */
/*
File    : base\system\tasks\guitask.c
Desc    : 定义 GUI TASK 的主代码。

Author  : huangsl
Date    : 206-04-06
Notes   :


$Log: GuiThread.c,v $
Revision 1.6  2008/06/19 04:43:27  Administrator
代码整理!

Revision 1.5  2008/06/04 06:32:42  HSL
增加函数声明,去除警告.

Revision 1.4  2008/05/26 03:33:51  HSL
修改 DISPtask,兼容 RGB屏和MCU屏.

Revision 1.3  2008/05/23 08:47:15  Administrator
修改插入USB时闪屏!

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

Revision 1.1.1.1  2008/05/07 04:15:08  Administrator
no message

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

Revision 1.25  2007/12/12 08:05:07  Lingzhaojun
no message

Revision 1.24  2007/12/12 03:01:33  Huangshilin
增加 MlcRefreshHook.

Revision 1.23  2007/12/11 12:59:46  Huangshilin
no message

Revision 1.22  2007/12/11 12:20:34  Huangzufang
video提交

Revision 1.21  2007/12/11 09:18:58  Huangshilin
把视频 6M buffer改为静态,修改 GUI 于该 BUFFER 复用,修改 窗口系统
部分 BUG.

Revision 1.20  2007/12/06 05:16:22  Huangshilin
增加 视频静态buffer和GUI 复用.修改窗口系统.

Revision 1.19  2007/11/29 13:13:22  Hanjiang
no message

Revision 1.18  2007/11/28 14:03:11  Hanjiang
no message

Revision 1.16  2007/11/27 14:01:35  Huangshilin
修改 音频刷屏噪音,系统反应慢的 BUG.

Revision 1.15  2007/11/23 07:32:09  Huangshilin
no message

Revision 1.14  2007/11/17 02:22:03  Lingzhaojun
去除编译警告

Revision 1.13  2007/11/16 09:49:57  Lingzhaojun
修改USB状态显示

Revision 1.12  2007/11/15 07:36:10  Lingzhaojun
提交电池充电界面

Revision 1.11  2007/11/10 04:59:24  Huangshilin
USB连接,LCD BUFFER.

Revision 1.10  2007/11/07 09:10:40  Huangshilin
增加部分接口和 TOP 应用支持.

Revision 1.9  2007/11/02 13:44:13  Hanjiang
no message

Revision 1.8  2007/11/02 03:10:01  Huangzufang
增加RTC

Revision 1.7  2007/10/31 03:24:18  Lingzhaojun
no message

Revision 1.6  2007/10/31 03:05:53  Lingzhaojun
提交USB链接界面

Revision 1.5  2007/10/30 08:03:16  Huangshilin
修改 概率性 DATA ABORT 的 BUG.

Revision 1.4  2007/10/20 04:46:31  Huangshilin
for RK2700

Revision 1.3  2007/10/11 04:08:11  Huangshilin
System\os

Revision 1.2  2007/10/08 02:55:50  Lingzhaojun
添加版本自动注释脚本

* huangsl          2006/04/06   根据统一格式 建立文件。
*
* huangsl          2006/04/07   增加按键消息。
*
* huangsl          2006/04/08   移动位置,从 base\gui 文件夹移到 base\system\tasks
*                               文件夹
* huangsl          2006/05/28   去除 USB TASK ,增加 GUI 对USB 插拔消息的响应。
*
* huangsl          2006/07/10   增加 TICK 和 关机处理函数。
*
* dengxj           2006/09/18   MP3移植修改
*/

/**************************************************************************************/
#include "include.h"
#include "rockmsg.h"


#include "sysGlobal.h"

#include "register\register.h"

#if defined(BOARD)
#include "rtc\hwapi_rtc.h"
#include "hw_api.h"
#include "usb.h"
#endif

#include    "hw_interrupt.h"
#include    "hw_timer.h"



/***************************************************************************/
//PROCHANDLE      gGuiWindowProc=NULL;
/*****************************************************************************/
//EXTERN
extern void UHInitializeLast(void);
extern void OSTimeTick(void);
extern  UINT32 AniPowerOff(void);
extern  void CreatChargeBigWin(void);
extern  void CloseChargeBigWin(void);
extern void USBWindowClose(void);
extern UINT32 GetUSBInsert(void);
extern BOOLEAN SysIdleGetState(UINT16 ID);
extern void SysResetState(void);

/*-----------------------------------------------------------------------*/
extern void WindowUpdateResetFreq(void);
extern void DoSysShutDownReq(void);
extern BOOLEAN AudioPlaying(void);
void SysStateCheck(void);
extern WINDOW              *WinUSBCon;
extern UINT16 PowerOffCharging;
/*-----------------------------------------------------------------------*/

/*---------------------------------------------------------------------------*/
/*
Name    :   DoGuiTickInd
Desc    :   响应 TICK消息,进行诸如 背光,待机等的控制。
Param   :
Return  :
Global  :
Note    :   函数内部不能加任何编译开关。
Author  :
Log     :

* huangsl          2006/07/10   create,add earphone decting.
*
*/
/*----------------------------------------------------------------------------*/
void DoGuiTickInd(void)
{
    SysStateCheck();
#if defined( BOARD )
    //TaskBarStateCheck();  //080512,huangsl,修改后的状态栏取消此接口.
    if (FALSE == AudioPlaying())
        MlcRefreshHook();
#endif
#if 0
    if (gGuiWindowUpdateTick > 0)
    {
        if (--gGuiWindowUpdateTick == 0)
        {
            WindowUpdateResetFreq();
        }
    }
#endif
}


/*---------------------------------------------------------------------------*/
/*
Name    :   DoGuiTickInd
Desc    :   响应 TICK消息,进行诸如 背光,待机等的控制。
Param   :
Return  :
Global  :
Note    :   函数内部不能加任何编译开关。
Author  :
Log     :

* huangsl          2006/07/10   create,add earphone decting.
*
*/
/*----------------------------------------------------------------------------*/
#if (TASK_HELLO_EN > 0 )

void DoHelloInd(void* msg)
{
    INT32U      *pInt = (INT32U*)msg;
    TR("GUI Received Msg ,msg=0x%x", (int32u)msg);
    if (!MALLOC_NULL(msg))
    {
        TR("LEAK MEMO!,ptr=0x%x", msg);
    }
    //Win_SendMessage(focusWindow,WM_DESTROY , (INT16U)ALLGU_HelloResp ,msg );
}
#endif


#if (TASK_HELLO_EN > 0 )
void DoETActiveReq(void* msg)
{
    INT32U      *pInt = (INT32U*)MALLOC(sizeof(INT32U) * 512);
    RockOSSendMsg(MBDISP ,  MS_GUAL_HelloInd , (void*) 0);
    RockOSSendMsg(MBTIMER ,  MS_GUAL_HelloInd , (void*) 1);
    RockOSSendMsg(MBAUDIO ,  MS_GUAL_HelloInd , (void*) 2);
    RockOSSendMsg(MBVIDEO,  MS_GUAL_HelloInd , (void*) 3);
#ifdef WD
    if (pInt != NULL)
    {
        *pInt = 4;
    }
    else
    {
        pInt = (INT32U*)4;
    }
    RockOSSendMsg(MBWD,  MS_GUAL_HelloInd , (void*) pInt);
#endif
}
#endif


/*********************************************************************************
Name        :   DoSysInitInd
Desc        :   GUI 系统初始化.
Param       :   无。
Return      :   无
Global      :   无.
Note        :   局部需要 依靠系统 功能的 驱动 可以在这个函数里面初始化,比如
                WD,USB等。此时 所有的系统函数都已经 准备 OK。

Author      :   HUANGSL
Log         :
* 070924    huangsl     增加 USB 初始化.
*********************************************************************************/

void DoSysInitInd(void)
{
//    SysLoadResource( );
    TR("SYSTEM INIT!" , "");


    if (NULL == ProcStartAppGuidEx(GUID_EXE_DESKTOP , NULL , INVALID_PHANDLE , NULL , NULL))
    {
        TR("START WINDOWS FAILED!", "");
        //    return ;    //LCD LOGIC BUFFER BE NULL.
        // 继续 启动 ,以便 错误的情况下能够启动 USB.
    }




    DISPUPDATE_DISABLE();
    //系统运行之后的 硬件初始化.
    UHInitializeLast();

    //LCD 初始化之后才能启动刷屏.
    DISPUPDATE_ENABLE();
//    TR("UHInitializeLast!","");

    Timer_PowerOnInit(SCNF_TIMER_OS , 5);
    Intr_RegISR(INTC_TMR2 , OSTimeTick);

}




/*********************************************************************************
Name        :   GuiTaskMsgHandle
Desc        :   系统默认的 GUI消息 处理函数。
Param       :   无。
Return      :   无
Global      :   无.
Note        :   只处理系统消息,不涉及应用消息.应用消息由各个应用相应的线程来处理。
                对于已经处理的消息,一定要返回 TRUE,未处理的消息,返回 FALSE.

Author      :   HUANGSL
Log         :
* 070924    huangsl     增加 对 MS_ISRGU_USBCableInd 消息的处理。
*********************************************************************************/
extern WINDOW *WinUSBCon;
extern UINT8       volatile UsbConnected;
BOOLEAN GuiTaskMsgHandle(ROCK_MSG_ID id, void *msg)
{
    switch (id)
    {
        case MS_TMGU_SecondInd:     /* 每秒计时消息 */
            {
                gSysSecondCnt++;
                DoGuiTickInd();
//**************************************************************
                if ((UsbConnected == 1) && (WinUSBCon == NULL))
                {
                    // 需要关闭其他应用。
                    PMU_EnterModule(PMU_BLON);
                    //LcdWakeup();
                    IdleProcDisableAll();
                    if (SysIdleGetState(SYS_LCD_OFF))
                    {
                        SysResetState();
                    }
                    if (NULL == ProcStartAppGuidEx(GUID_EXE_USB , NULL ,
                                                   ProcGetProcGuid(GUID_EXE_DESKTOP), NULL , NULL))
                    {
                        CreatChargeBigWin();
                    }
                }

                if ((UsbConnected == 0))
                {
#if defined( BOARD )
                    if (!GetUSBInsert()) //拔出 USB线
                        CloseChargeBigWin();
#endif
                }
//**************************************************************
            }
            break;

        case MS_SYGU_SysInitInd:    //sys init -->GUI INIT
            {
                DoSysInitInd();
            }
            break;

        case MS_ALGU_SysShutDownReq:
            {
                DoSysShutDownReq();
            }
            break;

#if defined(WD) && (0)  //for test wd
        case WDALL_PingReq:
            break;
#endif



        case MS_ISRGU_USBCableInd:

            break;
#if (TASK_HELLO_EN > 0 )
        case MS_ETGU_ActiveETReq:
            {
                DoETActiveReq(msg);
            }
            break;
#endif

#if (TASK_HELLO_EN > 0 )
        case MS_ALGU_HelloResp:
            DoHelloInd(msg);
            break;
#endif

            ///TEST BUI MAILBOX.
        case MS_TSGU_Gui0Mbox:
            TR("Gui0Mbox ,msg=%d" , (INT32U)msg);
            break;
        case MS_TSGU_GuiMbox:
            TR("GuiMbox ,msg=%d" , (INT32U)msg);
            break;


        default:
            return FALSE;   /* NOT HANDLE */
    }
    return TRUE;
}

/*************************************************************************************/
/*------------------------------------------------------------------*/


⌨️ 快捷键说明

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