Part Number:CC2530
Ztack协议栈版本号为3.0.2
在协调器复位后,第一次打开入网许可至结束的区间内,设备均可以正常入网、退网、再次入网
在协调器网络关闭后,再次打开网络,设备无法成功入网
其次,在ZDObject.c,ZDO_ProcessMgmtPermitJoinReq( zdoIncomingMsg_t *inMsg )中
每次有设备入网均会执行函数ZDO_ProcessMgmtPermitJoinReq( zdoIncomingMsg_t *inMsg )
该函数内会刷新网络开放时间,stat = (byte) NLME_PermitJoiningRequest( duration )
请问这么设计的目的是什么,如果我将该行注释掉,不刷新网络开放时间会如何?
以下为抓包结果
流程:第一次网络开放–>设备入网–>网络关闭–>设备退网–>第二次网络开放–>设备入网失败
第二次打开网络失败.zip
Cherry Zhou:
您好我们已收到您的问题并升级到英文论坛寻求帮助,如有答复将尽快回复您。谢谢!
,
qh h:
补充:如果我这边周期调用NLME_PermitJoiningRequest( duration )刷新网络开放时间,设备可以保持入网
只有在第一次网络关闭后,第二次打开才会入网失败。
问题可能出在第二次打开入网许可需要做什么额外的操作?
请问一下,我这类问题有没有相关的手册可以查询解答?
,
YiKai Chen:
设备退网后,你设备有做factory reset擦除NV內的网路資訊嗎?
,
qh h:
子设备吗,调用的是bdb_resetLocalAction()而后reset
第一次开放网络未关闭前,反复入网都是可以的
,
YiKai Chen:
對,我說的是子设备,請問你用原始sample ligh/switch做測試會有這樣的狀況嗎?
,
qh h:
也会出现这个状况
基于原始的代码
1.UI_相关部分移除
2.在zclSampleSw_Init()末尾添加
bdb_StartCommissioning( BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING );NLME_PermitJoiningRequest(60);osal_start_timerEx(zclSampleSw_TaskID, SAMPLEAPP_LCD_AUTO_UPDATE_EVT, 500000);
3.在zclSampleSw_event_loop()中添加
if ( events & SAMPLEAPP_LCD_AUTO_UPDATE_EVT ){NLME_PermitJoiningRequest(60);return ( events ^ SAMPLEAPP_LCD_AUTO_UPDATE_EVT );}
500秒后,第二次打开网络,入网失败
均是在第一次网络开放期间,同一设备可以反复入网,在第二次网络开放期间,没有设备可以入网
,
YiKai Chen:
你的SampleSw是當coordinator還是device?
,
qh h:
ztack3.0.2 SampleSW coordinate
,
YiKai Chen:
SampleSW當coordinator照理不應該在zclSampleSw_Init內都使用bdb_StartCommissioning( BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING ),這是coordinator沒有組網前才這樣調用,如果已經組網過了,應該直接調用bdb_StartCommissioning(0),建議你調整一下這部份再試試
,
qh h:
尝试了,设备无法入网,子设备Beacon Request没有收到Coordinator的Beacon
SampleSW作为Coordinator启动,第一步应当也是建立网络吧。我是通过刷FLASH重新测试的,所以每次都是重新组网
请问如果Coordinator在reset前已经完成了组网,在reset后该如何查看以便于我去调用组网/bdb_StartCommissioning(0)
,
YiKai Chen:
qh h said:通过刷FLASH重新测试的,所以每次都是重新组网
如果是這樣確實就要用bdb_StartCommissioning( BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_FINDING_BINDING ),但是接著不應該直接調用NLME_PermitJoiningRequest,應該是要等組網完成後再去permit join