- 3
- 0
- 约9.85千字
- 约 7页
- 2019-09-26 发布于江苏
- 举报
Z-Stack1.4.3-1.2.1中SampleApp中重要函数解析
在上几篇文章中我们分析了,整个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()中有一个事件处理循环,循环检测是哪个事件发生。
/*********************************************************************
?* @fn????? SampleApp_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.
?*?????? 这个函数被用来调用处理所有的事件,事件有 定时器 消息 用户自己定义的
?* @param?? task_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
您可能关注的文档
- SCD缓慢渐变维度.docx
- SCD配置工具说明文档.doc
- SCI—EI收录的中国期刊.doc
- SCI投稿修稿询问状态常用EMAIL.docx
- SCI收录中文期刊.doc
- SCI收录的地质学科期刊.doc
- SCL-90(症状自评量表).docx
- SCL-90焦虑自测量表.docx
- SCSI接口知识介绍.doc
- SCVNET运行维护手册(四川)-含防火墙权限-20060704--Fixed.doc
- 伟明环保-市场前景及投资研究报告-境内业务稳健运行,印尼市场贡献边际增量.pdf
- 桂东县法院系统招聘考试真题2025.pdf
- 贵州省黔南布依族2026年中考三模物理试题及答案.pdf
- 贵州省黔南州2026年中考语文二模试卷附答案.pdf
- 贵州省铜仁市2026年中考语文二模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套完整答案详解.docx
- 贵州省毕节市2026年中考语文一模试卷附答案.pdf
- 贵州省贵阳市南明区2026年中考语文一模试卷附答案.pdf
- 2026上半年安徽事业单位联考合肥市庐江县招聘36人备考题库及一套参考答案详解.docx
- 贵州省贵阳市白云区2026年中考二模物理试题附答案.pdf
原创力文档

文档评论(0)