你好,
我在开发时,遇到一些问题,想咨询一下,寻求解决办法。
1、加密密匙,在ZSTACK中,设置了-DSECURE=1,并且zgPreConfigKeys = TRUE,等待协调器创建网络后,我读取NV中的ZCD_NV_PRECFGKEY,但是它并不是我在f8wConfig.cfg预配置的DEFAULT_KEY,请问一下这加密还涉及到哪里没配置好呢?
2、我将协调器设置了加密DSECURE=1,而路由器DSECURE=0,发现路由器还是可以找到网络并且加入进去,只是他们之间的通信不正确,再问,这入网是不需密匙吗?还是说入网的密匙是其他的?
3、TCLinkKey,这个是不是入网密匙?另外有没有一份文档讲解ZSTACK中的各个密匙的?我在看ZSTACK代码中,看到过好几个关于密匙的,各个都分不清具体是做什么用的,现在一下子又找不出来问。
4、关于AF_DEFAULT_RADIUS,默认是BEACON_MAX_DEPTH的两倍,BEACON_MAX_DEPTH这个值我能不能设置大一点?项目中需要在一个很大的面积中布置大概400个节点,如果默认的BEACON_MAX_DEPTH值0x0F,不知道够不够呢?另外AF_DEFAULT_RADIUS这个跳数只有一个字节的数值,会不会满足不了一些大型的应用呢?
5、当我使用AF_ACK_REQUEST这个选项时,协议栈在等待目标节点的APS层应答,这个等待时间是怎样得出来的呢?如果我的跳数很大,也就是传输距离很大时,会不会应答包还在返回途中,等待确认包的节点就已经超时了从而误判了是发送失败呢?
6、关联表与邻居表,关联表是不是存放着有父子关系的节点的信息?邻居表,一直搞不明白怎样才算是邻居,是不是附近跳数为1的相邻的节点都算是邻居?一直找不到邻居表的实际作用是什么。邻居表的大小、关联表的大小、NWK_MAX_DEVICES,这三者之间的联系是什么?
因为这段时间做的项目,遇到了不少疑问以及问题,有些是实际遇到的问题,有些是疑问,也都直接问了,希望能针对我上面的疑问和问题一一解答一下,尽量避免我投产后才发现问题,在此,先谢谢了。急待回复。
wenjie lin5:
有没有能帮忙解答一下呢,急呀,项目等着呀,万分感谢
VV:
1,NV功能是否有打开,你断点调试到static uint8 zgPreconfigKeyInit( uint8 setDefault )函数中,看是否有把Key写进去。
2,请上传整个入网过程的抓包数据。告诉我下你使用的协议栈版本,我这边可以做下实验。
3,当设置了-DSECURE=1,节点间通信的使用的Key我们称只为你NWK Key。当zgPreConfigKeys = TRUE时候,也就是节点间的Key是预先设置好的,所以之后的相互通信就直接用配置好的key,也就是NWK Key对数据进行加密和解密了。当zgPreConfigKeys = FALSE时候,也就是节点上Key没有预先配置好的,所以需要节点在入网的时候,有父设备把NWK Key传输给入网的设备,那么这个NWK Key在传输过程中,有可能会被其他的设备监听到,所以需要对这个NWK Key再进行加密,这个加密的Key就是TCLinkKey,所以你看所有设备的TCLinkKey都是一样且固定的。
4,主要看的400个节点的实际布局情况,如果范围不是非常大的话,这个半径和深度应该足够了。
5, 一般每一跳的传输时间大概在20~30ms,所以你可以估计下这个APS传回来的时间。
6,关联表存在父节点和子节点的信息。邻居表是直接收到其他节点的数据,可以理解为一跳范围以内的。所以邻居表包含关联表。NWK_MAX_DEVICES是指一个设备最多可以接收多少个直接的子设备。