为什么有些 BLE uuid 没有缩短

问题描述

目前,我正在为 ESP32 开发一个 BLE 应用程序,我想为 BLE 外设执行服务和特征发现。

据我了解蓝牙规范,我知道每个服务和特征都有一个 128 位的 UUID。但是,在许多情况下,这些 UUID 会缩短为 16 位或 32 位 UUID(只要 128 位 UUID 的其余部分与基本 UUID 匹配)。举例说明:

// Base UUID
00000000-0000-1000-8000-00805F9B34FB

// 128-bit
ABCDEFGH-0000-1000-8000-00805F9B34FB

// Corresponding 16-bit
EFGH

// Corresponding 32-bit
ABCDEFGH

当我使用 MacBook 在 BLE 设备上运行服务发现时,我得到以下结果:

discovered services: (
    FE95,"00001204-0000-1000-8000-00805F9B34FB",FEF5,"00001206-0000-1000-8000-00805F9B34FB"
)

我现在的问题是:为什么其中两个服务 UUID 没有缩短?我希望 12041206 也是有效的服务 UUID,因为其他字符类似于基本 UUID。

我怀疑它与“分配的数字”https://btprodspecificationrefs.blob.core.windows.net/assigned-values/16-bit%20UUID%20Numbers%20Document.pdf 有关,但是 12041206 就像 fe96fef5 一样在那里.

上下文: 在开发我的 ESP32 应用程序时,我需要服务 UUID 与我的 MacBook 保持一致,但在我当前的实现中,我将 12041206 作为输出,据我所知是正确的,但不一致 -我的目标是保持一致。

discovered services: (
    FE95,1204,1206
)

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)