This thread has been locked.

If you have a related question, please click the "Ask a related question" button in the top right corner. The newly created question will be automatically linked to this question.

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

在论坛里找到VV大神 给  www.deyisupport.com/.../236687.aspx 回复的 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,  是两分钟,   那能不是设置更小的值?

x 出现错误。请重试或与管理员联系。