TI中文支持网
TI专业的中文技术问题搜集分享网站

CC2530: zigbee3.0.1协议中关于终端设备主动/被动离网的问题

Part Number:CC2530

使用的API是NLME_LeaveReq();

代码如下

NLME_LeaveReq_t req;
unsigned char tempExadd[8];
APSME_LookupExtAddr(EndDev.SAddr[ID],tempExadd);//终端的MAC地址
req.extAddr = tempExadd;
req.removeChildren = FALSE;
req.rejoin = TRUE;
req.silent = FALSE;NLME_LeaveReq(&req);

协调器在调用后,终端的下一次数据发送协调器不会返回Ack。(在抓包中没有看到协调器广播离网指令,只能观察到协调器不返回终端发送消息对应的ACK)

而后在协调器打开网络许可后,终端设备无法加入,表现为   终端:Asscioation Request  协调器 Asscioation Response  终端不断Data Request 协调器没有进一步回应

qh h:

请问一下,如果协调器要手动完全清除某一个子设备的相关信息,使得子设备在调用bdb_resetLocalAction() 后可以再次入网

应当去清除什么位置的什么数据?

,

Kevin Qiu1:

需要清除NV信息,然后复位设备

zgWriteStartupOptions(ZG_STARTUP_SET, ZCD_STARTOPT_DEFAULT_NETWORK_STATE);SystemReset();

,

qh h:

标题问题细化

1.关于离网API  NLME_LeaveReq(); 协调器设备调用使子设备离网,返回SUCCESS,但是并没有发出对应的离网指令

如果由子设备调用使自身离网,可以向协调器发送离网指令并成功离网

2.子设备成功使自身离网后,再次加入该网络时,子设备会不断Data Request

若将协调器Reset,子设备可以重新入网。

请问这是在接收到Leave命令后需要进行什么手动清除操作吗?

,

Kevin Qiu1:

应该是Permit Join没有打开,导致无法重新入网

,

qh h:

Permit Join已打开,并非该原因

我将协议栈更新为3.0.2后发生了以下变化

1.协调器调用NLME_LeaveReq()后可以向子设备发布消息使其离网

且离网后子设备的重连也很顺利(重复20次均成功),即该贴的问题已解决

2.ztack3.0.2新问题:在子设备入网后在不断的Data Request,但是协调器没有回应

大约6秒后子设备发送Leave离开网络

程序是从3.0.1直接移植而来的,在3.0.1中并没有出现该现象

 0407.data.zip

,

qh h:

问题在于#define INT_HEAP_LEN  3072

移植后没第一时间裁剪协议栈所以协调器可以成功发送离网指令

将堆栈缩小后协调器无法发送离网指令

终端对于堆栈的占用较小因此在缩减后依旧可以继续发送离网指令

,

Kevin Qiu1:

谢谢反馈

赞(0)
未经允许不得转载:TI中文支持网 » CC2530: zigbee3.0.1协议中关于终端设备主动/被动离网的问题
分享到: 更多 (0)