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

ZIGBEE3.0 beacon request问题

IT大神们

  你好!

    我在SampleLight的路由工程中添加NWK_AUTO_POLL编译选项后,在代码中添加ZDApp_StartJoiningCycle()后,也不能让节点发出beacon request,请问如何处理?谢谢!

yuanfeng luo:

有木有大神回一下呀?难道我的问题太简单了?

VV:

3.0协议栈,入网的启动时由BDB来控制的,你可以看下关于按键的处理。

BLE-Liang:

回复 yuanfeng luo:

请问入网的问题解决了吗

miffy:

回复 BLE-Liang:

zigbee 3.0的入网似乎是有些问题的,同样的设备和固件,多刷几次,不是每次都能成功组网,两边用的都是bdb提供的API

BLE-Liang:

回复 miffy:

你是怎么写设备入网的呢

miffy:

回复 BLE-Liang:

1、

bdb_RegisterCommissioningStatusCB注册回调函数,在函数里面处理BDB_COMMISSIONING_SUCCESS消息;

收到消息后:调用bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | bdbCommissioningModeMsg->bdbRemainingCommissioningModes);

2、

程序初始化完毕,直接调用如下实现组网,同时会调用 NLME_PermitJoiningRequest(0xFF),两边设备流程是一样的:

bdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_FORMATION | BDB_COMMISSIONING_MODE_NWK_STEERING | BDB_COMMISSIONING_MODE_FINDING_BINDING | BDB_COMMISSIONING_MODE_INITIATOR_TL);

BLE-Liang:

回复 miffy:

为什么你的bdb_StartCommissioning要把所有的commissioning mode或者 state都往里面填写了呢

miffy:

回复 BLE-Liang:

Z-Stack给的所有参考设计里面都是如此给的,不过一定要注册回调函数bdb_RegisterCommissioningStatusCB( zclSampleLight_ProcessCommissioningStatus ); ,不然只有beacon request,没有Device announce的

static void zclSampleLight_ProcessCommissioningStatus(bdbCommissioningModeMsg_t *bdbCommissioningModeMsg)
{switch(bdbCommissioningModeMsg->bdbCommissioningMode){case BDB_COMMISSIONING_FORMATION:if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS){//After formation, perform nwk steering again plus the remaining commissioning modes that has not been process yetbdb_StartCommissioning(BDB_COMMISSIONING_MODE_NWK_STEERING | bdbCommissioningModeMsg->bdbRemainingCommissioningModes);}else{//Want to try other channels?//try with bdb_setChannelAttribute}break;case BDB_COMMISSIONING_NWK_STEERING:if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS){//YOUR JOB://We are on the nwk, what now?}else{//See the possible errors for nwk steering procedure//No suitable networks found//Want to try other channels?//try with bdb_setChannelAttribute}break;case BDB_COMMISSIONING_FINDING_BINDING:if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_SUCCESS){//YOUR JOB:}else{//YOUR JOB://retry?, wait for user interaction?}break;case BDB_COMMISSIONING_INITIALIZATION://Initialization notification can only be successful. Failure on initialization//only happens for ZED and is notified as BDB_COMMISSIONING_PARENT_LOST notification//YOUR JOB://We are on a network, what now?break;
#if ZG_BUILD_ENDDEVICE_TYPEcase BDB_COMMISSIONING_PARENT_LOST:if(bdbCommissioningModeMsg->bdbCommissioningStatus == BDB_COMMISSIONING_NETWORK_RESTORED){//We did recover from losing parent}else{//Parent not found, attempt to rejoin again after a fixed delayosal_start_timerEx(zclSampleLight_TaskID, SAMPLEAPP_END_DEVICE_REJOIN_EVT, SAMPLEAPP_END_DEVICE_REJOIN_DELAY);}break;
#endif}UI_UpdateComissioningStatus(bdbCommissioningModeMsg);
}

MarS:

回复 miffy:

请问  bdb 是不是 取代了之前 的ZDApp 的code?

miffy:

回复 MarS:

应该是这样的,不过不是很清楚,Z-Stack 3.0提供的bdb接口,实现了早期协议栈的诸如建立网络,加入网络等等操作,@VV 是不是这样

赞(0)
未经允许不得转载:TI中文支持网 » ZIGBEE3.0 beacon request问题
分享到: 更多 (0)