zoukankan      html  css  js  c++  java
  • ZigBee HA示例程序分析

    ZigBee协议栈中自带的HomeAutomation例程,虽然也是操作灯泡,但是,是通过ZCL来统一处理的,符合HA profile规范,互连互操作性较好。下面就简要分析以下ZCL的使用。

    在任务数组中,多定义了zcl层。

    Technorati 标签:
    //OSAL_SampleSw.c
    const pTaskEventHandlerFn tasksArr[] = {
      macEventLoop,
      nwk_event_loop,
      Hal_ProcessEvent,
    #if defined( MT_TASK )
      MT_ProcessEvent,
    #endif
      APS_event_loop,
    #if defined ( ZIGBEE_FRAGMENTATION )
      APSF_ProcessEvent,
    #endif
      ZDApp_event_loop,
    #if defined ( ZIGBEE_FREQ_AGILITY ) || defined ( ZIGBEE_PANID_CONFLICT )
      ZDNwkMgr_event_loop,
    #endif
      zcl_event_loop,
      zclSampleSw_event_loop
    };

    既然是zcl的事件循环,那就肯定有zcl的初始化函数如下:

    //ZCL.c
    void zcl_Init( uint8 task_id )
    {
      zcl_TaskID = task_id;
    
      plugins = (zclLibPlugin_t  *)NULL;
      attrList = (zclAttrRecsList *)NULL;
      clusterOptionList = (zclClusterOptionList *)NULL;
    }

    ZCL层仅仅是指定一个任务号,初始化ZCL的一些全局变量。

    要符合HA规范,那么,在填充本地端点描述符时,就要符合相应的要求。其中最重要的是这句话

    epDesc->task_id = &zcl_TaskID;   // all messages get sent to ZCL first

    这表明,符合HA profile规范的设备,在接收数据时,首先会经过ZCL层的处理。

     

    对于一些常用的命令,ZCL已经绑定好命令与其响应回调函数的关系,在通用族库里面已经定义好。

    每一个簇包含簇ID和对应的属性。

     

    处理收到的数据包ZCL_INCOMING_MSG:

            zclSampleSw_ProcessIncomingMsg,通过commandID来进行不同的处理。

     

    处理ZDO的消息函数ZDO_CB_MSG:

           给任务指定End_Device_Bind_rsp 和Match_Desc_rsp 的响应。

            ZDO_RegisterForZDOMsg( zclSampleSw_TaskID, End_Device_Bind_rsp );
                 ZDO_RegisterForZDOMsg( zclSampleSw_TaskID, Match_Desc_rsp )

            zclSampleSw_ProcessZDOMsgs,该函数处理在初始化时绑定的ZDO消息请求与响应函数。

     

    处理键盘的响应函数KEY_CHANGE:

        zclSampleSw_HandleKeys

               SW_1按键:按下会发送一个切换灯状态的命令
                    SW_2按键: 启动终端设备绑定请求,ZDP_EndDeviceBindReq 
                     SW_4按键:协调器按下SW_4,允许绑定请求。ZDP_MatchDescReq

  • 相关阅读:
    (转)Hibernate框架基础——在Hibernate中java对象的状态
    (转)Hibernate框架基础——cascade属性
    (转)Hibernate框架基础——多对多关联关系映射
    (转)Hibernate框架基础——一对多关联关系映射
    (转)Hibernate框架基础——映射集合属性
    (转)Hibernate框架基础——映射主键属性
    (转)Hibernate框架基础——映射普通属性
    (转)Eclipse在线配置Hibernate Tools
    人物志---川航8633事件
    日常英语---200204(moderately)
  • 原文地址:https://www.cnblogs.com/cherishui/p/4290243.html
Copyright © 2011-2022 走看看