用 c++实现 bluez 对于 31 个字节蓝牙广播限制的问题

241 天前
 dy416394356y78
各位大佬好,现遇到一个问题,恳请大家指一条明路

我的需求:我的板子开机后会蓝牙广播,app 接收广播后可以直接识别该板子的型号,目前已经广播的数据有标志位,UUID 和蓝牙广播名字,已经占用了 29 字节,我查到蓝牙广播限制 31 个字节,我直接拼接在数据后面广播,nRF 会直接报 none ,即能扫描到但是没有数据

目前我的蓝牙模块是 4.1 的 hci ,不支持拓展数据
查到网上可以使用分包,或者加入扫描数据中,但是这样都无法在广播的时候,接收方就立刻收到数据进行识别,分包需要收到两个包,而加入扫描数据需要收到广播建立连接后才可以

还有没有什么别的办法?

感谢。
1902 次点击
所在节点    C++
1 条回复
yolee599
241 天前
没有办法,协议栈标准就是这么定的,你一个设备改了,其他设备也无法用啊。
你除了可以使用 adv 还可以使用 scan_resp ,这样就有 31*2 个字节可以用了。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/1107538

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX