微波EDA网,见证研发工程师的成长!
首页 > 研发问答 > 无线和射频 > TI Zigbee设计交流 > 如何重置集中器的某个源路由项

如何重置集中器的某个源路由项

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

Hello world,

    我在100个节点的源路由测试中,发现某个源路由项出现错误, rtgSrcTable[MAX_RTG_SRC_ENTRIES]中,我想要重置这个出现问题的表项,但不知道官方有什么API可以操作?

UP

没有这样的API

最多手动初始化

rtgSrcTable[idx].dstAddress = INVALID_NODE_ADDR;
rtgSrcTable[idx].relayCount = 0;
rtgSrcTable[idx].relayList = NULL;
rtgSrcTable[idx].expiryTime = 0;

谢谢VV,这个方式还是有效果的。

另外想请问下ZDO_ManytoOneFailureIndicationCB有发起MTO请求,2.5.1版本协议栈升级后每次MTO失败回调就发送MTO请求,这样是否会太频繁?

实际100个节点测试中经常收到这个失败的回调,因此我担心MTO请求过于频繁,会加重网络负担。

挂机了一下午,发现现在没有可用内存了,AF发数据,AF_DATA_CONFIRM_CMD返回0x1A(MAC_NO_RESOURCES),以及有的直接返回0x10(afStatus_MEM_FAIL)。

怀疑是不是relayList这边内存没释放,想问下这个链表指针是动态申请的吗?我用osal_mem_free(rtgSrcTable[i].relayList);一调用就出问题。

relayList直接赋值NULL,会不会有问题?

不会一直发送,在收到MTO failure以后,会调用MTO req , 在这个函数里面有做逻辑的。你可以测试下!

在释放前做下判断

if ( rtgSrcTable[i].relayList )
{
osal_mem_free( rtgSrcTable[i].relayList );
rtgSrcTable[i].relayList = NULL;
}

谢谢VV,关于relaylist的指针确实是我大意了,对于全局指针在释放后没有置为NULL,现在已经改正。

关于MTO REQ还想确认下,比如100ms以内收到两次MTO failure,是否会发两次MTO req?

应该是1000ms

你可以改下下面这个参数

// The time limited to one MTO RReq (Concentrator Announce) in milliseconds.
CONST uint16 gMTO_RREQ_LIMIT_TIME = MTO_RREQ_LIMIT_TIME;

多谢VV,这下全理顺啦^_^

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

网站地图

Top