- 已编辑
使用手机作为provisioner,把一个支持PB-GATT和PB-ADV方式的device配网的过程中,device发送的unprovisioning device beacon是个广播包还是GATT包?
- 如果是广播包,手机仅支持GATT,如何识别广播包
- 如果是GATT包,为啥我抓到的报文type是ADV_NONCONN_IND
使用手机作为provisioner,把一个支持PB-GATT和PB-ADV方式的device配网的过程中,device发送的unprovisioning device beacon是个广播包还是GATT包?
Wireless-Tech
1、应用层同时使用了PB-ADV和PB-GATT,是否两种广播都会发送
2、“不管是什么样的unprovisioned设备,在未入网前都是发的广播包”--所以说这个广播包和PB-ADV的广播包不一样,它是BLE的包(不是mesh的包)所以手机APP能够扫描到吗?
ynynleslie 1、应用层同时使用了PB-ADV和PB-GATT,是否两种广播都会发送
这个spec没有规定,取决于各家的实现。但是一般只会发一种,因为对于provisioner而言,只要接收到数据就行,它不会去理论是用的是PB-GATT还j是PB-ADV;所以对于同时打开的这种情况,一般是以可连接可扫描非定向广播为主。你要了解PB的意思,指的是配网过程用的是GATT还是ADV。前者,你需要发送可连接可扫描非定向广播,因为接下来的数据传输需要建立连接,而后者是不可连接不可扫描非定向广播,其不用建立连接。
ynynleslie “不管是什么样的unprovisioned设备,在未入网前都是发的广播包”--所以说这个广播包和PB-ADV的广播包不一样,它是BLE的包(不是mesh的包)所以手机APP能够扫描到吗?
MESH是建立在BLE上的,都是BLE广播包。入网后的Mesh包实质就是不可连接不可扫描非定向广播
Wireless-Tech 多谢,再请问下为什么手机只支持PB-GATT,不支持PB-ADV?
Wireless-Tech 既然都是BLE的广播包,那么手机都能接收到。现在看现象是设备发送了PB-ADV的unprovisioning device beacon(抓包来看),从日志来看是发送PB-GATT的包(但没抓到包),基于以上手机的nRF Mesh app可以扫描到设备,并通过APP操作发起连接,配网过程中使用的也是GATT的方式。
--那么问题来了,手机收到的PB-ADV的包怎么也能解析出来是个mesh设备呢,不是不支持PB-ADV吗?
ynynleslie 那么问题来了,手机收到的PB-ADV的包怎么也能解析出来是个mesh设备呢,不是不支持PB-ADV吗?
我看你是限入pbagtt和pbadv的死循环了,它们仅仅是表明你当前设备在入网时是使用广播通道还是数据通道入网。但是入网之后,mesh的所有节点都是走广播通道,跟手机连的mesh节点通过广播收到之后,再把这个数千据通过数据通道告诉手机。
至于你面说的,手机理论上是可以处理,但是手机的蓝牙协议栈没有加入mesh的功能,也没有手机厂商做,所以在mesh的场景,手机只收数据通道的数据。
Wireless-Tech 确实有点懵,他两入网时和入网后的方式我清楚了。还有个入网前设备发送的PB-ADV的beacon帧,手机为什么能解析呢?
是不是因为不管是PB-ADV还是PB-GATT的unprovisioning device beacon帧解析格式都是一样的?
ynynleslie 在未入网且未配网前,没有PB-ADV,PB-GATT之分。都是广播包,都是 unprovisioning device beacon, 都是不可连接不可扫描广播包,只不过PB-GATT被使能之后,它还会发可连接可扫描的广播包用于建立连接。
Wireless-Tech 大概明白了,不过用Ellisys抓包的时候只能抓到不可连接的beacon,没有抓到可连接的beacon(实际上应该发了的),这是为什么?
ynynleslie 那你要看看你是否打开PB-GATT的功能
Wireless-Tech 两个都打开了
ynynleslie 那不可能,可能是哪里搞错了,如果你手机能连的话,把ellisys发出来看看
Wireless-Tech 不知道咋搞的,上传图片文件报error
ynynleslie 直接弄 ZIP 的格式
Wireless-Tech 上传ZIP也error
图片上传测试
换个浏览器吧