- 1、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。。
- 2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 3、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
- 4、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
- 5、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们。
- 6、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
- 7、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
HYPERLINK javascript:; Z-Stack1.4.3-1.2.1中SampleApp中重要函数解析 (2010-11-30 10:26)
分类: HYPERLINK /space.php?uido=blogfrmd=0classid=85305view=meZigBee 技术学习
在上几篇文章中我们分析了,整个OSAL的流程,还有添加自己的任务,以及如何运行到自己定义的任务。这一篇文章主要是分析一下,自己定义的任务中要完成的功能,需要的事件函数是怎样的。
这个例子就是一个简单的点对点的数据发送,其中涉及到较少的网络配置,其中最主要的两个函数是SampleApp_ProcessEvent(uint8 task_id,uint16 events),和SampleApp_Init(taskID),一个是任务的处理函数,一个是初始化函数。SampleApp_Init(taskID)这个函数在前面的文章中也已经分析过了,现在主要关注一下SampleApp_ProcessEvent(uint8 task_id,uint16 events)函数的实现。
每个应用任务都通过SampleApp_ProcessEvent()函数来处理任务中的事件。一旦SampleApp_TaskID任务的某个OSAL 事件发生,那么就可以通过调用SampleApp_ProcessEvent()函数来处理。在SampleApp_ProcessEvent()中有一个事件处理循环,循环检测是哪个事件发生。
/*********************************************************************
* @fnSampleApp_ProcessEvent
*
* @brief Generic Application Task event processor. This function
* is called to process all events for the task. Events
* include timers, messages and any other user defined events.
* 这个函数被用来调用处理所有的事件,事件有定时器消息用户自己定义的
* @paramtask_id - The OSAL assigned task ID.任务ID号
* @param events - events to process. This is a bit map and can
* contain more than one event. 处理的事件,这是一个位图
*
* @return none
*/
uint16 SampleApp_ProcessEvent( uint8 task_id, uint16 events )
{
afIncomingMSGPacket_t *MSGpkt;
//系统事件号 SYS_EVENT_MSG = 0x8000
if ( events SYS_EVENT_MSG )
{
//检索收到的命令,没有收到返回NULL
MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( SampleApp_TaskID );
while ( MSGpkt ) //如果不为空时,判断消息的类型
{
switch ( MSGpkt-hdr.event ) //这里是判断SYS_EVENT_MSG事件类型,不同的SYS_EVENT_MSG类型需要不同的处理。
{
/* Received when a key is pressed这里判断是否是键盘事件,如果键盘事件就调用键盘处理函数。如果一个OSAL任务已经被登记组侧,那么任何键盘事件都将接受一个KEY_CHANGE事件信息。可能有如下几种方式得到键盘事件信息1)、HAL检测到键盘按下(中断或者查询检测)2)、HAL的OSAL任务检测到一个键盘状态改变调用回叫函数产生3)、OSAL键盘改变回叫函数发送一个OSAL系统事件信息(KEY_CHANGE)。*/
case KEY_CHANGE:
SampleApp_HandleKeys( ((keyChange_t *)MSGpkt)-state, ((keyChange_t *)MSGpkt)-keys );
break;
// Received when a messages is received (OTA) for this endpoint 收到信息事件
case AF_INCOMING_MSG_CMD:
SampleApp_MessageMSGCB( MSGpkt ); //执
您可能关注的文档
最近下载
- [职高 对口升学 8套] 2024年重庆高职分类考试 电子技术类 综合理论测试 考前冲刺模拟卷(含答案).pdf VIP
- 工作考勤每日签到表的模板.doc VIP
- 2023-2024学年贵州黔东南九年级数学第一学期期末水平检测试卷.docx VIP
- 上海市六年级上册期末测试道德与法治试卷.pdf VIP
- 2025年冷链物流数字化供应链智能化应用报告.docx VIP
- 2026天津市及各区卫健委招聘历年题库信息汇总最新.docx VIP
- WM-S8-002 -1.4_人机界面标准.pdf VIP
- 重庆三峡学院2020-2021学年度《生物化学》期末考试试卷含标准答案.docx
- 最新版啤酒酿造废水处理项目可行性研究报告.pdf VIP
- 数学作业纸模板.doc VIP
原创力文档


文档评论(0)