/****************************************************************************** * @fn SAPI_BindConfirm * * @brief The SAPI_BindConfirm callback is called by the ZigBee stack * after a bind operation completes. * * @param commandId - The command ID of the binding being confirmed. * status - The status of the bind operation. * allowBind - TRUE if the bind operation was initiated by a call * to zb_AllowBindRespones. FALSE if the operation * was initiated by a call to ZB_BindDevice * * @return none */ void SAPI_BindConfirm( uint16 commandId, uint8 status ) { #if defined ( MT_SAPI_CB_FUNC ) /* First check if MT has subscribed for this callback. If so , pass it as a event to MonitorTest and return control to calling function after that */ if ( SAPICB_CHECK( SPI_CB_SAPI_BIND_CNF ) ) { zb_MTCallbackBindConfirm( commandId, status ); } else #endif //MT_SAPI_CB_FUNC { zb_BindConfirm( commandId, status ); } }
/********************************************************************* * @fn SAPI_ProcessZDOMsgs() * * @brief Process response messages * * @param none * * @return none */ void SAPI_ProcessZDOMsgs( zdoIncomingMsg_t *inMsg ) { switch ( inMsg->clusterID ) { case NWK_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; case Match_Desc_rsp: { zAddrType_t dstAddr; ZDO_ActiveEndpointRsp_t *pRsp = ZDO_ParseEPListRsp( inMsg ); if ( sapi_bindInProgress != 0xffff ) { // Create a binding table entry 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 ); // Find IEEE addr ZDP_IEEEAddrReq( pRsp->nwkAddr, ZDP_ADDR_REQTYPE_SINGLE, 0, 0 ); #if defined ( MT_SAPI_CB_FUNC ) zb_MTCallbackBindConfirm( sapi_bindInProgress, ZB_SUCCESS ); #endif // Send bind confirm callback to application #if ( SAPI_CB_FUNC ) zb_BindConfirm( sapi_bindInProgress, ZB_SUCCESS ); #endif sapi_bindInProgress = 0xffff; } } } break; } }