📄 oskernel.c
字号:
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* 谢永良 2005-03-31 创建 */
/****************************************************************************/
static INT _GuiModelHandleEvent(UINT uEvent, UINT uParam)
{
APGUI_STRUCT_MODEL *pGui;
INT nRet;
/*
#ifdef __ED928__ //只在668机中需要将TIMER转给DESKTOP处理
if(uEvent == EVENT_TIMER &&(uParam == ELP_BL_TIMER_ID || uParam == ELP_DISP_TIMER_ID))
{
if(g_pDesktopGuiModel != NULL)
{
pGui = (APGUI_STRUCT_MODEL*)g_pDesktopGuiModel;
nRet = pGui->fpHandleFunc( pGui, uEvent, uParam );
}
}
else
{
#endif
*/
// 依次将消息发给AP和其控件进行处理
pGui = (APGUI_STRUCT_MODEL*)g_pCurrGuiModel;
nRet = 0;
while( pGui->uReserveMark != 0 )
{
// Dennyhan added: Special to EVENT_IME
if ( (uEvent==EVENT_IME)
&& ( ( (IMEGUI_STRUCT*)pGui)->uCurrentIme != NULL ) )
{
IMeManager( (IMEGUI_STRUCT*)pGui, &uEvent, &uParam);
nRet=TRUE;
break;
}
nRet = pGui->fpHandleFunc( pGui, uEvent, uParam );
if ( nRet )
break;
pGui++;
}
/*
#ifdef __ED928__ //只在668机中需要将TIMER转给DESKTOP处理
}
#endif
*/
return nRet;
}
/****************************************************************************/
// 设置优先事件处理函数
FPHANDLEEVENT KnlSetEventPrevHandle( FPHANDLEEVENT fpProc)
{
FPHANDLEEVENT fpOld;
fpOld = (FPHANDLEEVENT)g_fpKernelEventPrev;
g_fpKernelEventPrev = fpProc;
return fpOld;
}
// 设置事后事件处理函数
FPHANDLEEVENT KnlSetEventBehindHandle( FPHANDLEEVENT fpProc)
{
FPHANDLEEVENT fpOld;
fpOld = g_fpKernelEventPrev;
g_fpKernelEventBehind = fpProc;
return fpOld;
}
//获取DESKTOP GUI 的指针
APGUI_STRUCT **KnlGetDesktopGui(VOID)
{
return &g_pDesktopGuiModel;
}
/****************************************************************************/
/* FUNCTION: APGUI_STRUCT_MODEL* GetApHandle(VOID) */
/* DESCRIPTION:取得当前AP模板句柄 */
/* INPUTS: */
/* OUTPUTS: NONE */
/* RETURN: Ap模板句柄 */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* gaolinhui 2006-01-12 创建 */
/****************************************************************************/
APGUI_STRUCT_MODEL* GetApHandle(VOID)
{
return (APGUI_STRUCT_MODEL*)g_pCurrGuiModel;
}
//============================================================================
//
// the following is used for pen of ED135
//
//============================================================================
//============================================================================
//
// the following is used for for Alarm Event
//
//============================================================================
/*************************************************************************
Function : AlarmEventCallBack
Description: send EV_ALARM to gui queue when alarm interupt active,
make sure the queue is exist.
DATE AUTHOR VERSION REMARKS
==========================================================================
2006-01-23 gaolinhui 1.0 create
2006.1.24 Dennyhan 1.01 changed void-> static void
**************************************************************************/
static void AlarmEventCallBack(void)
{
TimeType time;
DateType date;
UINT32 dwEVParam;
// get current time
TimGetTime(&time);
TimGetDate(&date);
/*闹铃消息参数说明: 年(bit20 - bit31)
月(bit16 - bit19)
日(bit11 - bit15)
时(bit6 - bit10)
分(bit0 - bit5)
*/
dwEVParam = (date.wYear<<20) + (date.byMonth<<16)
+(date.byDay<<11) + (time.byHour<<6) + time.byMinute;
//发送一个闹铃消息
MsgPost((APGUI_STRUCT_MODEL*)NULL, EVENT_ALARM, (UINT)dwEVParam);
}
//===================================================
// DennyHan Added for USB Key
// // It is reserved by now
//==========
//---------------------------------------------------
VOID GetOsKnlMsg(UINT *pEvent,UINT *pMsg)
{
UINT aEvent[2];
UNSIGNED dwRetLen;
*pEvent=0;
*pMsg=0;
if (NU_Receive_From_Queue(&g_quEventQueue, aEvent, EVENT_SIZE, &dwRetLen, NU_NO_SUSPEND) == NU_SUCCESS )
{
if ( dwRetLen == 2 )
{
*pEvent=aEvent[0];
*pMsg = aEvent[1];
}
}
}
//===========================================================================
/****************************************************************************/
/* FUNCTION: UINT OsGuiHelpSet(UINT uParam, INT nLevel) */
/* FUNCTION: UINT OsGuiHelpGet(INT nLevel) */
/* FUNCTION: UINT SetGuiHelp(UINT uParam) */
/* FUNCTION: UINT GetGuiHelp(VOID) */
/* FUNCTION: INT GetGuiHelpLevel(VOID) */
/* FUNCTION: INT IncGuiHelpLevel(VOID) */
/* FUNCTION: INT DecGuiHelpLevel(VOID) */
/* DESCRIPTION:Help ID or String */
/* INPUTS: NONE */
/* OUTPUTS: NONE */
/* RETURN: NONE */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* DennyHan 2006-02-21 First Issue */
/****************************************************************************/
// For Help
#define OSGUI_MAX_HELP (GUI_BUFFER_COUNT+2)
static UINT g_aGuiHelpPool[OSGUI_MAX_HELP];
static INT g_uGuiHelpNum;
BOOL OsGuiHelpInitialize(VOID)
{
memset(g_aGuiHelpPool,0,sizeof(g_aGuiHelpPool));
g_uGuiHelpNum = 0 ;
return TRUE;
}
// Set Current Help Resorce
UINT OsGuiHelpSet(UINT uParam, INT nLevel)
{
UINT uRet = 0;
if ( (nLevel < OSGUI_MAX_HELP) && (nLevel >=0) )
{
uRet = g_aGuiHelpPool[nLevel];
g_aGuiHelpPool[nLevel] = uParam;
}
return uRet;
}
// Get Current Help Resorce
UINT OsGuiHelpGet(INT nLevel)
{
UINT uRet = 0;
if ( (nLevel < OSGUI_MAX_HELP)
&&(nLevel >=0) )
{
uRet = g_aGuiHelpPool[nLevel];
}
return uRet;
}
// Set Current Help Resorce
UINT SetGuiHelp(UINT uParam)
{
return OsGuiHelpSet(uParam, g_uGuiHelpNum);
}
// Get Current Help Resorce
UINT GetGuiHelp(VOID)
{
return OsGuiHelpGet(g_uGuiHelpNum);
}
// Get Current Help Level
INT GetGuiHelpLevel(VOID)
{
return g_uGuiHelpNum;
}
// Inc Curretn Help Level
INT IncGuiHelpLevel(VOID)
{
INT uRet = -1;
if ( (g_uGuiHelpNum < OSGUI_MAX_HELP)
&&(g_uGuiHelpNum >=0) )
{
g_uGuiHelpNum++;
SetGuiHelp(0);
}
return uRet;
}
// Dec Curretn Help Level
INT DecGuiHelpLevel(VOID)
{
UINT uRet = -1;
if ( (g_uGuiHelpNum < OSGUI_MAX_HELP)
&&(g_uGuiHelpNum >=0) )
{
SetGuiHelp(0);
g_uGuiHelpNum--;
}
return uRet;
}
//================================================================================
// for DrawCurrentAp();
// DrawFullScreenAp(); : Not Fixed
// Only FullScreenAp(); :Fixed
//===========================================================================
/****************************************************************************/
/* static UINT _GuiFlagGet(UINT uPos) */
/* static VOID _GuiFlagSet(UINT uStPos, UINT uEndPos, UINT uValue) */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* DennyHan 2006-02-21 First Issue */
/****************************************************************************/
#ifdef GUI_INIT_DRAW_FG_EN
static UINT8 g_aGuiInitDrawFlag[GUI_BUFFER_COUNT+1];
/****************************************************************************/
/* FUNCTION: VOID _GuiFlagClr(UINT uStPos, UINT uEndPos) */
/* DESCRIPTION:GUI Flag Clear Flag */
/* INPUTS: uStPos: Starting GUI Model Count */
/* uStPos: Ending GUI Model Count */
/* OUTPUTS: NONE */
/* RETURN: NONE */
/****************************************************************************/
/* NAME DATE REMARKS */
/* ========== ============ ==============================================*/
/* DennyHan 2006-05-24 */
/****************************************************************************/
static VOID _GuiFlagSet(UINT uStPos, UINT uEndPos, UINT uValue)
{
if ((INT)uStPos<0)
{
uStPos = 0;
}
if ( uEndPos >= (sizeof(g_aGuiInitDrawFlag)/sizeof(UINT8)) )
{// if Overflow
uEndPos = (sizeof(g_aGuiInitDrawFlag)/sizeof(UINT8))-1;
}
while( (uStPos) <= uEndPos)
{
g_aGuiInitDrawFlag[uStPos] = uValue;
uStPos++;
}
}
static UINT _GuiFlagGet(UINT uPos)
{
if ( uPos >= (sizeof(g_aGuiInitDrawFlag)/sizeof(UINT8)) )
{// if Overflow
return 0;
}
return g_aGuiInitDrawFlag[uPos];
}
#endif
//====================== End of the file ====================================
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -