关于ZStack-CC2530-2.3.0-1.4.0中simpleApp例子的 终端节点入网以及绑定操作(四)

来源:互联网 发布:圆点矩阵 编辑:程序博客网 时间:2024/04/29 23:41

上一节看到,协调器向终端节点发送匹配描述符响应,由于终端节点在sapi注册了匹配描述符响应事件,因此,我们可以sapi层看到对此事件的处理:在sapi层找到:

 

UINT16 SAPI_ProcessEvent( byte task_id, UINT16 events )
{
  osal_event_hdr_t *pMsg;
  afIncomingMSGPacket_t *pMSGpkt;
  afDataConfirm_t *pDataConfirm;

  if ( events & SYS_EVENT_MSG)
  {
    pMsg =(osal_event_hdr_t *) osal_msg_receive( task_id );
    while ( pMsg)
    {
     switch ( pMsg->event )
     {
       case ZDO_CB_MSG:
         SAPI_ProcessZDOMsgs( (zdoIncomingMsg_t *)pMsg);//sapi层处理ZDO消息的函数
         break;

 

进入SAPI_ProcessZDOMsgs函数中找到:

 

void SAPI_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg )
{
  switch ( inMsg->clusterID )
  {
    caseNWK_addr_rsp:
     {
       // Send find device callback to application
       ZDO_NwkIEEEAddrResp_t *pNwkAddrRsp = ZDO_ParseAddrRsp( inMsg);
       SAPI_FindDeviceConfirm( ZB_IEEE_SEARCH,(uint8*)&pNwkAddrRsp->nwkAddr,pNwkAddrRsp->extAddr );
     }
     break;

    caseMatch_Desc_rsp: //以下是对匹配描述符响应事件的处理
     {
       zAddrType_t dstAddr;
       ZDO_ActiveEndpointRsp_t *pRsp = ZDO_ParseEPListRsp( inMsg );

       if ( sapi_bindInProgress != 0xffff )
       {
         // 创建一个绑定表

         dstAddr.addrMode = Addr16Bit;
         dstAddr.addr.shortAddr = pRsp->nwkAddr;

         if ( APSME_BindRequest(sapi_epDesc.simpleDesc->EndPoint,
                    sapi_bindInProgress, &dstAddr,pRsp->epList[0] ) == ZSuccess )
         {
           osal_stop_timerEx(sapi_TaskID, ZB_BIND_TIMER);
           osal_start_timerEx( ZDAppTaskID, ZDO_NWK_UPDATE_NV, 250 );

           // 寻找IEEE长地址

           ZDP_IEEEAddrReq( pRsp->nwkAddr,ZDP_ADDR_REQTYPE_SINGLE, 0, 0 );
#if defined ( MT_SAPI_CB_FUNC )
           zb_MTCallbackBindConfirm( sapi_bindInProgress, ZB_SUCCESS );
#endif             
           // 向应用层发送绑定确认

#if ( SAPI_CB_FUNC )
           zb_BindConfirm( sapi_bindInProgress, ZB_SUCCESS );
#endif
           sapi_bindInProgress = 0xffff;
         }
       }
     }
     break;
  }
}

 

到此为止,终端节点入网以及绑定操作已经完成。。