ZigBee第一天 任务处理函数_ProcessEvent

//任务处理函数
UINT16 GenericApp_ProcessEvent( byte task_id, UINT16 events )
{
  //定义应用层数据包
  afIncomingMSGPacket_t *MSGpkt;

//如果系统消息到来
  if ( events & SYS_EVENT_MSG )
  {
    //接收数据包
    MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID );
   
    //如果数据包不为空
    while ( MSGpkt )
    {

   //判断消息类型
        switch ( MSGpkt->hdr.event )
        {

     //处理在初始化中注册的消息
          case ZDO_CB_MSG:
              SAPI_ProcessZDOMsgs( (zdoIncomingMsg_t *)pMsg );
              break;

     //按键消息
          case KEY_CHANGE:
              //调用按键处理函数
              GenericApp_HandleKeys( ((keyChange_t *)MSGpkt)->state, ((keyChange_t *)MSGpkt)->keys );
              break;

     //数据发送后返回信息处理函数

     case AF_DATA_CONFIRM_CMD:
              // This message is received as a confirmation of a data packet sent.
              // The status is of ZStatus_t type [defined in ZComDef.h]
              // The message fields are defined in AF.h
              pDataConfirm = (afDataConfirm_t *) pMsg;
              SAPI_SendDataConfirm( pDataConfirm->transID, pDataConfirm->hdr.status );
              break;

     //接收数据事件
          case AF_INCOMING_MSG_CMD:
              //调接收数据的处理函数
              GenericApp_MessageMSGCB( MSGpkt );
              break;

      //网络状态发生变化事件
          case ZDO_STATE_CHANGE:
              //获取网络状态
              GenericApp_NwkState = (devStates_t)(MSGpkt->hdr.status);
              //判断网络类型
              if ( (GenericApp_NwkState == DEV_ZB_COORD)
                  || (GenericApp_NwkState == DEV_ROUTER)
                  || (GenericApp_NwkState == DEV_END_DEVICE) )
              {
           
              }
              break;
         
          default:
              break;
      }

//释放存储区
      osal_msg_deallocate( (uint8 *)MSGpkt );

//判断操作系统层是否有未处理的数据包,继续处理缓冲区中的包
      MSGpkt = (afIncomingMSGPacket_t *)osal_msg_receive( GenericApp_TaskID );
    }

// 返回未处理的任务
    return (events ^ SYS_EVENT_MSG);
  }

// Discard unknown events
  return 0;
}

时间: 2024-10-12 10:07:52

ZigBee第一天 任务处理函数_ProcessEvent的相关文章

jQuery框架分析第一章: 第一个匿名函数

我的jQuery版本为1.7* 这个版本代码比之前的版本优化了很多,结构也清晰了不少,就用最新的吧. 打开jQuery源代码 首先你能看到所有代码被一个 (function(window,undefined){ })(window) 这是个什么东西.. 首先,这是一个匿名函数(不懂?那就先去谷歌下吧): 其次,这是一个自调用匿名函数: 这段代码做了三件事 第一件:创建一个只给jQuery用的空间,我们估且就叫 “私有空间”,与C++的命名空间很相似,为了保证jQuery不与其他JavaScrip

C的第一课printf函数的基本用法

printf函数: printf()函数是格式化输出函数, 一般用于向标准输出设备按规定格式输出信息. printf()函数的调用格式为: printf("<格式化字符串>", <参量表>). #include <stdio.h> /* printf函数 printf("<格式化字符串>", <参量表>) */ int main() { int i=8,j=6; int *p=NULL; char *nam

进阶 第一课:函数

1. 函数的基本概念 2. 参数 <=> 抽象 3. 参数分为 可选参数 和 必选参数 ''' 1)可选参数 是有默认值的 2)必选参数 是没有默认值的 默认值和没有默认值的区别在于 " = " ''' def func_name(): return 1 print func_name() 输入结果: 1 # 要有良好的习惯,函数要有返回值,否则可以看下面的例子,如果不写return,则函数默认返回的是None def func_t(): print 1 print fun

工作第一周Oracle函数总结

1. Oracle 行转列和列转行 最常见的行转列,主要原理利用decode函数.聚合函数(sum()  Max()).结合group by分组实现的 MAX(DECODE(SW.SBBL, '1', SW.SBBL, NULL)) AS SBBL_01, MAX(DECODE(SW.SBBL, '2', SW.SBBL, NULL)) AS SBBL_02, 说明: SW.SBBL中值为1或2,现在将其转化为2列.如果是1就以SBBL_01为列名,这一列的值为1.如果是2就以SBBL_02为列

javascript运动系列第一篇——运动函数

× 目录 [1]简单运动 [2]定时器管理 [3]分享到效果[4]移入移出[5]运动函数[6]透明度[7]多值[8]多物体 前面的话 除了拖拽以外,运动也是javascript动画的一个基本操作.通过CSS属性transition和animation可以实现运动.但是,要进行更精细地操作,javascript运动是必不可少的.本文将详细介绍javascript运动 简单运动 让一个元素在页面中运动起来很简单,设置定时器,改变定位元素的left或top值即可 <button id="btn&

第一阶段 11函数

函数 (一)函数的定义 函数就是定义在类中具有特定功能的一段独立的小程序 函数也称为方法 函数的格式 修饰符 返回值类型 函数名(参数类型 形式参数1,形式参数2....){ 执行语句; return 返回值; } 返回值类型:函数运行后的结果的数据类型 参数类型:是形式参数的数据类型 形式参数:是一个变量,用于存储调用函数时传递给函数的实际参数 实际参数:传递给形式参数的具体数值 return,用于结束函数 返回值:该函数运算后的结果,该结果会返回给调用者 (二)函数的特点 定义函数可以将功能

第一阶段 高等数学——函数

1.函数 ⑴.函数的定义:如果当变量x在其变化范围内任意取定一个数值时,量y按照一定的法则f总有确定的数值与它对应,则称y是x的函数.变量x的变化范围叫做这个函数的定义域.通常x叫做自变量,y叫做函数值(或因变量),变量y的变化范围叫做这个函数的值域.注:为了表明y是x的函数,我们用记号y=f(x).y=F(x)等等来表示.这里的字母"f"."F"表示y与x之间的对应法则即函数关系,它们是可以任意采用不同的字母来表示的.如果自变量在定义域内任取一个确定的值时,函数只

OC第一天-NSLog函数的使用方法

同一个url对应多个视图函数,取第一个视图函数有效

# -*- coding: utf-8 -*- from flask import Flask app = Flask(__name__) @app.route('/') def index(): return "hello flask" @app.route('/post_only',methods=["POST","GET"]) def post_only(): return "post only page" @app.r