微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > z-stack-home 1.21 child aging如何使用?

z-stack-home 1.21 child aging如何使用?

时间:10-02 整理:3721RD 点击:

在论坛里找到VV大神 给  http://www.deyisupport.com/question_answer/wireless_connectivity/zigbee/f/104/p/85924/236687.aspx#236687 回复的 home1.22的 但是里面有些东西 在 home1.21 里并没有, @VV  求大神讲解下  在home1.21 如何实用child aging!

Z-Stack Home 1.2.1 和 Z-Stack Home 1.2.2

对Child Aging功能的实现原理是一样的。

只不过Z-Stack Home 1.2.1里面,父设备对于end device来说,他的timeout时间是在父设备上实现固定的。

// Child table Management timeout values
CONST uint16 gKEEPALIVE_TIMEOUT_MAX = KEEPALIVE_TIMEOUT_MAX;
CONST uint16 gTIMEOUT_COUNTER_MAX = TIMEOUT_COUNTER_MAX;

以上两个变量主要用来判断,end device连续多久没有poll 了,然后就删除它。

其实这种做法是不合适的,因为用户在开发产品的时候,不是所有的产品poll rate都是一样的。比方说对于门磁 poll rate可能是0,对于door lock可能是10000.

那么poll rate不同,父设备对于子设备的统计方式也不一样了。

这也是为什么Z-Stack Home 1.2.2里面,需要子设备在入网以后告诉父设备自己的poll rate是多少。

void ZDApp_AnnounceNewAddress( void )
{
#if defined ( ZIGBEEPRO )
// Turn off data request hold
APSME_HoldDataRequests( 0 );
#endif

ZDP_DeviceAnnce( NLME_GetShortAddr(), NLME_GetExtAddr(),
ZDO_Config_Node_Descriptor.CapabilityFlags, 0 );

#if defined ( ZIGBEEPRO )
// Setup the timeout
APSME_HoldDataRequests( ZDAPP_HOLD_DATA_REQUESTS_TIMEOUT );
#endif

if ( ZSTACK_END_DEVICE_BUILD )
{
if ( zgChildAgingEnable == TRUE )
{
uint8 coordExtAddr[Z_EXTADDR_LEN];

// Send the message to parent
NLME_GetCoordExtAddr( coordExtAddr );
NLME_SendEndDevTimeoutReq( NLME_GetCoordShortAddr(), coordExtAddr,
zgEndDeviceTimeoutValue,
zgEndDeviceConfiguration );
}
}
}

父设备在收到这个消息以后,就会处理,把对该节点的timeout时间修改过来了。

void NLME_ProcessEndDevTimeoutReq( NLDE_FrameFormat_t *ff )

关于这个timeout的时间,  1.21 默认是60  也就是61分钟, 最小设置1,  是两分钟,   那能不是设置更小的值?

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top