请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
器件型号:CC2652P
当设备加入网络时、ZDP 设备通告命令将通过网络广播到所有设备。 这是网络管理器设备的重要信息。
但是 、当许多设备加入网络时、广播消息很容易就会发送失败。 因此应用层应该有机会重试发送 ZDP 设备通告命令。
void (*pZdoAnnounceNewAddrFailureCB)(uint8_t status) = NULL;
/*********************************************************************
* @fn ZDApp_AnnounceNewAddress()
*
* @brief Send Device Announce and hold all transmissions for
* new address timeout.
*
* @param none
*
* @return none
*/
void ZDApp_AnnounceNewAddress( void )
{
// Turn off data request hold
APSME_HoldDataRequests( 0 );
// new function to send ZDP Device Announce with AF confirm callback
afStatus_t status = ZDP_DeviceAnnceEx( NLME_GetShortAddr(), NLME_GetExtAddr(),
ZDO_Config_Node_Descriptor.CapabilityFlags, 0, ZDO_AnnounceNewAddrConfirmCB, NULL );
// Trigger callback when Device Announce sent failed, add by luoyiming 2021-05-08
if( status != ZSuccess && pZdoAnnounceNewAddrFailureCB )
{
pZdoAnnounceNewAddrFailureCB( status );
}
// Setup the timeout
APSME_HoldDataRequests( ZDAPP_HOLD_DATA_REQUESTS_TIMEOUT );
if ( ZSTACK_END_DEVICE_BUILD )
{
if ( zgChildAgingEnable == TRUE )
{
uint8_t coordExtAddr[Z_EXTADDR_LEN];
// Send the message to parent
NLME_GetCoordExtAddr( coordExtAddr );
NLME_SendEndDevTimeoutReq( NLME_GetCoordShortAddr(), coordExtAddr,
zgEndDeviceTimeoutValue,
zgEndDeviceConfiguration );
}
}
}
/*********************************************************************
* @fn ZDO_AnnounceNewAddrConfirmCB
*
* @brief Send Device Announce confirm callback
*
* @param same with pfnAfCnfCB in af.h
*
* @return none
*/
void ZDO_AnnounceNewAddrConfirmCB( uint8_t status, uint8_t endpoint, uint8_t transID, uint16_t clusterID, void* cnfParam )
{
// Trigger callback when Device Announce sent failed, add by luoyiming 2021-05-08
if( status != ZSuccess && pZdoAnnounceNewAddrFailureCB )
{
pZdoAnnounceNewAddrFailureCB( status );
}
}