自建绑定表被zstack 删除 的问题?
时间:10-02
整理:3721RD
点击:
有两个设备, 一个是协调器灯, 一个是终端设备开关。
想实现 开关入网后 自动在本地端建立绑定表(协调器的EP 是固定的), 代码放置在应用层的loop ZDO_STATE_CHANGE 中
if(zclSampleswitch_NwkState == DEV_END_DEVICE) { 建立 自定义绑定表 static uint16 BindClusterIds[] = { ZCL_CLUSTER_ID_GEN_ON_OFF }; zAddrType_t ZC_DstAddr; ZC_DstAddr.addrMode = Addr16Bit; ZC_DstAddr.addr.shortAddr = 0x0000; bindAddEntry( SAMPLEswitch_ENDPOINT,&ZC_DstAddr, SAMPLELIGHT_ENDPOINT,1, BindClusterIds ); }
但是多次试验发现, 如果 自定义的绑定 是在收到 transport key 前建立, 那么 收到transport key 之后 就会被擦除, 用该绑定地址发消息 是发不出去的
如果做个延时,尽量等收到transport key 之后 再建立 绑定表, 那么后续就可以用该绑定地址发消息~~~~
请问 zstack中 收到transport key 是否会自动删除 所有的绑定表信息~~~?具体在代码哪里? 能否修改?
还是必须延时 处理?
这个还没遇到过,坐等VV解答了!
估计 只有两个可能,
1. 要么zstack 的flash 有问题 ?
2,要么接收到transport key 之后 设备对绑定表进行了初始化 ~~~
我就是这么使用的,没有问题呀。没有收到KEY的验证,设备状态还是处于DEV_END_DEVICE_UNAUTH。
秘钥ok,才会到DEV_END_DEVICE。
所以在ZDO_STATE_CHANGE后面新建一个绑定条目即可。
需要打开NV。