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.

[参考译文] CC2538:开发人员如何管理 Z-Stack 3.0.2的 TCLK 列表?

Guru**** 2540980 points
Other Parts Discussed in Thread: Z-STACK

请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

https://e2e.ti.com/support/wireless-connectivity/zigbee-thread-group/zigbee-and-thread/f/zigbee-thread-forum/771924/cc2538-how-do-developers-manage-the-tclk-list-of-the-z-stack-3-0-2

器件型号:CC2538
Thread 中讨论的其他器件:Z-stack
协议栈: Z-Stack 3.0.2
协调器处理器: CC2538
终端处理器: CC2530
1、问题描述:
  Z-Stack 3.0.2如何管理 TCLK 列表? (TCLK 列表范围:ZCD_NV_TCLK_Table_start~ZCD_NV_TCLK_Table_end)
   我测试了协调器在"exchang key"过程后将器件的"TCLK key"存储在 TCLK 列表中、但当器件使用"leave "命令退出网络时、协调器不会删除器件的"TCLK key"。
  这是否会使 TCLK 列表完整、并且无法添加新的 Zigbee 3.0器件?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    ZDUP_LeaveUpdate 设置 req.status = APSMT_UD_DEVICE_LEFT、如果重新加入为 false、则向 TC 发送 APSMP_UpdateDeviceReq。 但是、ZDSecMgrUpdateDeviceInd 不会擦除 TCLK 条目、例如 APSME_UD_standard_unsecured_join 或 APSME_UD_standard_trust_center_rejoin、并且 ZDO_UPDATE_DEVICE_IND 案例中没有其他操作会清除已离开的器件的 NV。 我已将此问题提交给软件开发团队、以便他们可以确认并推荐修复方法。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    似乎我们在 CC26x2和 CC13x2 SDK/Z-Stack 上也遇到了同样的问题、对吧?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ryan Brown1。
    感谢你的答复。
    如果您有任何更新、请更新此帖子! 谢谢!
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您是正确的 YK、每个 TI Zigbee 3.0堆栈都会受到影响。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    希望这可以很快在所有 Zigbee 3.0堆栈上修复。
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    仍在研究错误解决路径。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好、Ryan Brown1。
    此问题是否已得到解决?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jesse、

    SimpleLink CC13x2/CC26x2 SDK 的 ZigBee 合规性测试吸收了大量资源、因此该问题的解决方案尚未实现、下一个 SDK 版本(v3.10)中也不会修复。

    此致、
    Ryan
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    请评估在 ZD_Sec_mgr.c 中将以下内容添加到 ZDSecMgrUpdateDeviceInd 的末尾:

    #if (ZG_BUIING_Coordinator_TYPE)
    找到 uint8;
    uint16 keyNvIndex、index;
    APSMG_TCLKDevEntry_t TCLKDevEntry;
    
    keyNvIndex = APSMT_SearchTCLinkKeyEntry (device.extAddr、&found、&TCLKDevEntry);
    
    //如果找到并验证了它,则通过擦除密钥条目允许它以新状态加入
    if ((found = true)&&(TCLKDevEntry.keyAttributes = ZG_Verified_key))
    {
    TCLKDevEntry.keyAttributes = ZG_DEFAULT_KEY;
    //将班次增加一个。 验证种子的最大位移、即15
    TCLKDevEntry.SeedShift_IcIndex++;
    TCLKDevEntry.SeedShift_IcIndex &= 0x0F;
    
    TCLKDevEntry.rxFrmCntr = 0;
    TCLKDevEntry.txFrmCntr = 0;
    
    index = keyNvIndex - ZCD_NV_TCLK_Table_start;
    TCLinkKeyFrmCntr[index].rxFrmCntr = 0;
    TCLinkKeyFrmCntr[index].txFrmCntr = 0;
    
    //更新条目
    OSAL_NV_WRITE (keyNvIndex、0、sizeof (APSME_TCLKDevEntry_t)、&TCLKDevEntry);
    }
    
    BDB_TCAddJoiningDevice (device.parentAddr、device.extAddr);
    #endif
    }
    
    ZDSecMgrDeviceJoin(&device );}
    
    否则
    {
    //删除已离开网络
    #if 的器件的 TCLK NV 条目(ZG_BUIK_Coordinator_type)
    找到 uint8;
    uint16 keyNvIndex、index;
    APSMG_TCLKDevEntry_t TCLKDevEntry;
    
    keyNvIndex = APSMT_SearchTCLinkKeyEntry (device.extAddr、&found、&TCLKDevEntry);
    
    //如果找到并已验证,则擦除密钥条目
    if ((found = true)&&(TCLKDevEntry.keyAttributes = ZG_Verified_key))
    {
    map_osal_memset (&TCLKDevEntry、0、sizeof (APSME_TCLKDevEntry_t));
    TCLKDevEntry.keyAttributes = ZG_DEFAULT_KEY;
    
    index = keyNvIndex - ZCD_NV_TCLK_Table_start;
    TCLinkKeyFrmCntr[index].rxFrmCntr = 0;
    TCLinkKeyFrmCntr[index].txFrmCntr = 0;
    
    //更新条目
    OSAL_NV_WRITE (keyNvIndex、0、sizeof (APSME_TCLKDevEntry_t)、&TCLKDevEntry);
    }
    #endif
    }
    

    此致、
    Ryan

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    非常感谢、Ryan Brown。
    这与我的解决方案相同! 应该将 map_osal_memset 更改为 osal_memset?
  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。

    您好、Ryan Brown。
    我发现我还删除了 ZDO_RegisterForZdoCB (ZDO_leave_ind_CBID、&LeaveInd)回调函数中的 TCLK;我认为需要在这里添加它、 对吧?

  • 请注意,本文内容源自机器翻译,可能存在语法或其它翻译错误,仅供参考。如需获取准确内容,请参阅链接中的英语原文或自行翻译。
    您好 Jesse、

    map_osal_memset 定义为 osal_memset、因此两者都可以、但"map_"是应用程序内部的正确用法。 ZDSecMgrUpdateDeviceInd 将通过 ZC TC 上的 ZDRApp_LeaveUpdate 在本地访问、因此不需要进一步更改。

    此致、
    Ryan