是的,2字节的网络地址是用户自己配置的,作为用户对网络的管理的一部分。
蓝牙Mesh手册5.2.1中:“中心节点的网络地址通常为0x0001,也可以自行分配,注意网络地址的范围为0x0001~0x7FFF”。
6.1.3中:“订阅地址可使用的范围为0xC000~0xFEFF。除此之外还有发送消息时可使用的四种特殊地址:0xFFFC-所有代理节点、0xFFFD-所有朋友节点、0xFFFE-所有使能中继功能节点、 0xFFFF-所有节点”
是的,2字节的网络地址是用户自己配置的,作为用户对网络的管理的一部分。
蓝牙Mesh手册5.2.1中:“中心节点的网络地址通常为0x0001,也可以自行分配,注意网络地址的范围为0x0001~0x7FFF”。
6.1.3中:“订阅地址可使用的范围为0xC000~0xFEFF。除此之外还有发送消息时可使用的四种特殊地址:0xFFFC-所有代理节点、0xFFFD-所有朋友节点、0xFFFE-所有使能中继功能节点、 0xFFFF-所有节点”
好的,谢谢
您好,大佬,我出现了新问题,并且没有找到reason 13是什么原因。
Reason13是指手机那边终止了连接。
Noti的错误是上电之后就出现的吗,还是自行添加发送什么数据报的错?
是我发送配网指令A1,显示配网完成;或者删除节点指令A2,显示删除节点完成,目前这两种情况之后,就会出现这个Noti 错误。
出现13那个原因,当我点击增加节点的时候,一直扫描,没有任何的东西出现,我只点击APP右上角的 连接 时,会扫描到T这个节点,再点击T,就是直接出现APP闪退。
大佬,给看看啥问题,给点思路。
连接之后出现的问题,可能是由于手机上存在的配网信息与单片机FLASH中的配网信息不一致。“连接”走的是BLE协议栈中的功能,连接上后传输消息用的是mesh网络信息。
尝试在烧写程序时清除DataFlash,调试配网的话可以在工程中将FLASH存储功能关闭。已配网节点不会再次广播配网信息,点“添加配网”不会扫到。
一开始烧写程序时,就点击了清除DataFlash,工程中将FLASH存储功能也关闭了,还是原来的程序,今天我调试的时候,点击增加节点,能扫描到T,但是点击T时,就下图1的填写密钥等信息页面就保持2~3秒就跳回原来的只有T节点(图2)的页面。
提前祝您端午节快乐!
我这边测试没有这种情况。我会向软件开发人员反馈一下。
有修改例程吗,是否更改了单片机对指令的回包?
没有修改例程。
您好,用的是self_provisioner_vendor配合adv_vendor使用,中心节点配网器已经连上了一个节点,再连另外一个的时候,返回输出link close :reason 0。这个是什么意思呢。
还有self_provisioner_vendor程序中有测试节点程序,他只输出一个节点的测试信息吗。还是说会输出配网成功在网内的所有节点呢。
reason 0表示没有出错,配网正常。
下面的末尾是ADDR2的串口打印,表示配网器向一个节点发送了一则消息,该节点在配网器管理节点的相关结构体数组的下标为1,网络地址为0x0002。代码位置如下图。
如果,我想给我所有的节点发送一则消息,也让配网器返回所有节点串口打印,那我是不是把下边程序的app_nodes[1]改成 app_nodes[1 + CONFIG_MESH_PROV_NODE_COUNT_DEF]。
// 测试任务事件处理
if(events & APP_NODE_TEST_EVT)
{
if(app_nodes[1].node_addr)
{
uint8_t status;
APP_DBG("app_nodes[1] ADDR %x", app_nodes[1].node_addr);
uint8 data[4] = {0, 1, 2, 3};
status = vendor_model_cli_send(app_nodes[1].node_addr, data, 4); // 调用自定义模型客户端的透传函数发送数据
if(status)
APP_DBG("trans failed %d", status);
}
tmos_start_task(App_TaskID, APP_NODE_TEST_EVT, 6400);
return (events ^ APP_NODE_TEST_EVT);
}
还有一个问题,我发现我单个节点的地址是a,b,e,但是进行节点测试任务的时候怎么还是返回的ADDR 2呢。