📄 windows.c
字号:
/****************************************Copyright (c)***********************************
*
* (c) Copyright 2006-2008, hui lian. luo, china, zj. hz
* All Rights Reserved
*
* 深圳市英蓓特信息技术有限公司
* http://www.embedinfo.com
* 博格达科技有限公司
* http://www.bogodtech.com
*
*--------------文件信息------------------------------------------------------------------
* 文 件 名: windows.c
* 创 建 人: 罗辉联(wyuyun@hotmail.com, lhlzjut@hotmail.com)
* 创建日期: 2007年11月10日
* 描 述: mmi任务相关函数,OS组件创建
* 技术顾问: 楼东武(副教授) 浙江大学信电系
*
*---------- 版本信息---------------------------------------------------------------------
* 版 本: V1.1
* 说 明:
*
*----------------------------------------------------------------------------------------
****************************************************************************************/
#include "config.h"
/********************************* 全局变量定义 ****************************************/
OS_EVENT *MmiMsgMbox; /* 定义MMI消息队列控制块 */
INT8U GUI_Windows = MMI_WIN_MAIN;
INT8U Interface;
/*
*****************************************************************************************
** mmi_create_msg_mbox
**
** 功能描述: 创建一个空的邮箱消息
** 参 数: None
** 返 回 值: None
** 作 者: 罗辉联
** 日 期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**--------------------------------------------------------------------------------------
****************************************************************************************
*/
void mmi_create_msg_mbox(void)
{
MmiMsgMbox = OSMboxCreate((void*)0);
}
/*
****************************************************************************************
** mmi_send_msg
**
** 功能描述: MMI 发送邮箱消息(虚拟键消息)
** 参 数: windows: 要发向的窗口
** val : 消息值
** mParam : 参数1
** wParam : 参数2
** 作 者: 罗辉联
** 日 期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**---------------------------------------------------------------------------------------
*****************************************************************************************
*/
void mmi_send_msg(INT16U windows, INT16U val,INT32U mParam,INT32U wParam)
{
INT8U err;
MMI_MSG_T* pmsg = (void *)0;
pmsg = (MMI_MSG_T *)mem_malloc_sixteen(sizeof(MMI_MSG_T));
pmsg->type = MMI_MSG;
pmsg->win = (MMI_GUI_T)windows;
pmsg->value = val;
pmsg->mParam = mParam;
pmsg->mParam = wParam;
err = OSMboxPost(MmiMsgMbox, (void *)pmsg);
if(err != OS_NO_ERR)
{
printf("Send msg to mmi mbox is err type: %d\n", err);
return;
}
}
/*
****************************************************************************************
** mmi_send_key
**
** 功能描述: MMI 发送邮箱消息(键盘消息)
** 参 数: windows: 要发向的窗口
** key_val: 需要发送的键值
** 作 者: 罗辉联
** 日 期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**--------------------------------------------------------------------------------------
****************************************************************************************
*/
void mmi_send_key(INT16U windows,INT16U key_val)
{
INT8U err;
MMI_MSG_T* pmsg = (void *)0;
pmsg = (MMI_MSG_T *)mem_malloc_sixteen(sizeof(MMI_MSG_T));
pmsg->type = MMI_KEY;
pmsg->win = (MMI_GUI_T)windows;
pmsg->value = key_val;
pmsg->mParam = 0;
pmsg->mParam = 0;
err = OSMboxPost(MmiMsgMbox, (void *)pmsg);
if(err != OS_NO_ERR)
{
printf("Send msg to mmi mbox is err type: %d\n", err);
return;
}
}
/*
****************************************************************************************
** mmi_task_core
**
** 功能描述: MMI任务入口,窗口消息接收及其处理
** 参 数: pdata
** 作 者: 罗辉联
** 日 期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**--------------------------------------------------------------------------------------
****************************************************************************************
*/
void mmi_task_core(void *pdata)
{
INT8U err;
MMI_MSG_T *MboxResp = (void*)0;
pdata = pdata; /* 避免编译警告 */
printf("Mmi task start runing!\n");
while(1)
{ /* 等待消息 */
MboxResp = (MMI_MSG_T *)OSMboxPend(MmiMsgMbox, 0, &err);
if(err == OS_NO_ERR)
{
switch(MboxResp->win)
{
case MMI_WIN_MAIN:
if(MMI_WIN_MAIN == GUI_Windows)
win_main(MboxResp->type,MboxResp->value,MboxResp->mParam, MboxResp->wParam);
break;
default:
break;
}
}
else
{
printf("It is fail when receive mmi mbox Type: %d\n",err);
}
mem_free_sixteen(MboxResp);
}
}
/*
****************************************************************************************
** win_main
**
** 功能描述: 启动界面窗口
** 参 数: type : 消息类型
** val : 消息值
** mParam : 参数1
** wParam : 参数2
** 作 者: 罗辉联
** 日 期: 2008年1月7日
**---------------------------------------------------------------------------------------
** 修 改 人:
** 日 期:
**--------------------------------------------------------------------------------------
****************************************************************************************
*/
void win_main(INT8U type,INT16U value,INT32U mParam, INT32U wParam)
{
if(type == MMI_KEY)
{
switch(value)
{
case 1:
printf("You already hit TEMP: %d!\n",value);
break;
case 2:
printf("You already hit WAKE UP: %d!\n",value);
break;
case 3:
printf("You already hit KEY1: %d!\n",value);
break;
case 4:
printf("You already hit KEY2: %d!\n",value);
break;
case 5:
printf("You already hit KEY3: %d!\n",value);
break;
case 6:
printf("You already hit KEY4: %d!\n",value);
break;
default:
break;
}
}
else if(type == MMI_MSG)
{
printf("uart value: %d\n",value);
}
}
/************************************** end of file *************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -