📄 guithread.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 + -