蓝牙网关未收到蓝牙设备数据的问题定位

发布时间: 2022-07-14 16:00:46 作者: 大象笔记

排查思路

最终还是咨询官方技术支持得到了解决。

原因是,我只填写了服务的 UUID,而没有修改默认的特性 UUID,导致获取的是无效的 handle 及 cccd 值,即 ffff。

在获取了有效的 handle 及 cccd 之后,填入测试工具,就能收到真实的蓝牙数据了。

CCCD 是什么

CCCD 全称是 Client Characteristic Configuration Descriptor。

Characteristic 我倒是知道,一个 Service 有 N 个 Characteristic。 但是 Descriptor 是啥呢?

一个 characteristic 包含三种条目:

有时候 client 不想监听 characteristic notify 或者 indicate 过来的数据,那么就可以使用 CCCD 来关闭 characteristic 的 notify 或者 indicate 功能,如果 client 又需要监听 characteristic 的 notify 或者 indicate,俺么它可以重新使能 CCCD 来打开相关操作,总结一下,当 characteristic 具有 notify 或者 indicate 操作功能时,那么必须添加 CCCD,以方便 client 来使能或者禁止 notify 功能

参考:

这里的“使能”是 enable 的意思。。。

handle 是什么

前面提到的 characteristic descriptor, value, declaration 每个都是一个 attribute。 而每个 attribute 的唯一标识就是一个 attribute handle。

我是一名山东烟台的开发者,联系作者