Other Parts Discussed in Thread: SYSCONFIG, LP-EM-CC2340R5
器件型号: CC2340R5
主题中讨论的其他器件: SysConfig、
大家好、在使用 CC2340R53 作为协调器的调试过程中、我遇到了一些问题。 我使用的 SDK 是 8_40 版本:
1.要启动网络加入、请使用 zb_zdo_mgmt_permit_joining_req。 从数据包捕获中可以看出、捕获的数据包中存在管理许可加入请求消息、但节点无法加入网络。 我发现 Beacon 数据包中的关联许可为 0、即 0。
我将 bdb_start_top_level_commissioning (ZB_BDB_network_steering) 替换为这种模式、能够让节点加入网络、但时间固定在 180 秒。 我想自己定义时间。
case ZB_BDB_SIGNAL_DEVICE_FIRST_START:
LOG_COMMON_LN(LOG_DEBUG, "FIRST_START: start steering" );
buf = zb_buf_get_out();
if (!buf)
{
LOG_COMMON_LN(LOG_DEBUG, "no buffer available" );
break;
}
req_param = ZB_BUF_GET_PARAM(buf, zb_zdo_mgmt_permit_joining_req_param_t);
req_param->dest_addr = 0xfffc;
req_param->permit_duration = 0;//0xff also gave it a try.
req_param->tc_significance = 1;
zb_zdo_mgmt_permit_joining_req(buf, permit_joining_cb);
break;
2.我已将.sycfg 文件中的所有通道设置为启用。 此外、我使用以下函数来配置通道。 但是、在使用监听器捕获数据包时、我注意到协调器通道仍设置为通道 11。
zb_set_network_coordinator_role(0x01000000);
zb_set_bdb_primary_channel_set(0x01000000);
zb_set_bdb_secondary_channel_set(0x01000000);
3.我用协调器调用 bdb_start_top_level_commissioning(ZB_BDB_network_steering );使一个节点能够加入我的协调器的网络(节点程序是另一个应用程序)。 加入后、数据包捕获显示设备公告、但大约 20 秒后、数据包捕获显示协调器发送休假数据包、导致节点离开网络。
我注意到了 ZB_ZDO_SIGNAL_DEVICE_authorized 信号、类型和状态都为 1、即类型为 ZB_ZDO_authorization_type_R21_TCLK、状态为 ZB_ZDO_TCLK_authorization_timeout。 休假是否是由身份验证失败引起的? 有什么解决方案吗?
case ZB_ZDO_SIGNAL_DEVICE_AUTHORIZED:
{
zb_ieee_addr_t ieee_addr;
zb_zdo_signal_device_authorized_params_t *device_authorized_params = ZB_ZDO_SIGNAL_GET_PARAMS(sg_p, zb_zdo_signal_device_authorized_params_t);
zb_uint16_t short_addr = device_authorized_params->short_addr;
zb_ret_t ret = zb_address_ieee_by_short(short_addr, ieee_addr);
zb_int8_t type = device_authorized_params->authorization_type;
zb_int8_t status = device_authorized_params->authorization_status;
atServer_printfln("short addr:%04X, ieee_addr:%02X%02X%02X%02X%02X%02X%02X%02X\r\n type: %d ,status:%d", \
short_addr, \
ieee_addr[7], ieee_addr[6], ieee_addr[5], ieee_addr[4], ieee_addr[3], ieee_addr[2], ieee_addr[1], ieee_addr[0],type,status);
LOG_COMMON_LN(LOG_DEBUG, "ZB_ZDO_SIGNAL_DEVICE_AUTHORIZED" );
break;
}