当前位置: 首页 > 知识库问答 >
问题:

蓝牙GATT服务uuid概述

裴钧
2023-03-14

我正在考虑为一个定制应用程序实现一些GATT服务,但我现在正忙于研究。我知道服务UUID不是随机的,有些部分定义得很好,有些部分仍然让我困惑。

E、 g.设备信息服务的广告名称似乎是0000180a xxx,我可以在中找到“180a”https://www.bluetooth.com/specifications/gatt/services/,但子字段“型号字符串”的id为00002a24 xxx,这是一个完全不同的前缀,在同一列表中也没有定义,而是在这里定义:https://www.bluetooth.com/specifications/gatt/characteristics/.如何获得所有这些前缀的列表?

我用xxx标记的部分似乎与我的手机找到的随机设备相同。是否有关于uuid应该如何构建的概述,以及我可以为自己的GATT服务使用哪些“安全”前缀?

共有1个答案

锺星洲
2023-03-14

在蓝牙中,通过UUID识别属性类型、GATT服务类型、特征类型和描述符类型以及其他常量。

UUID只不过是标识符,128位标识符。一个给定的128位值表示一个给定的对象。使用128位随机值可以使双方自行生成标识符的冲突机会降到最低,而无需中央注册表。

蓝牙标准定义的UUID受到特殊处理,因为它们通常在规范的各种协议中使用。它们围绕蓝牙基本UUID(xxxxxxxx-0000-1000-8000-00805F9B34FB)分组,共享96个公共位。(见核心规范3.B.2.5.1)

在各种协议部分中,标准UUID可以以短形式传输,跳过公共位,因此只能在空中使用16或32位。这是一个实现细节,具体到整个堆栈中的一些协议。正因为如此,标准定义的UUID通常被称为短UUID。

除了标准的UUID,任何实现者都可以自由地从128位随机生成自己的UUID,并在需要的任何地方使用它们。自定义UUID不得使用蓝牙基础UUID(并且不能以短形式编码,但您不应该关心这个)。

在实现标准服务和特性时使用标准UUID。

切勿将基于蓝牙UUIDUUID用于自定义目的。

在开发定制服务和属性时,从示例代码、供应商SDK或其他任何地方的代码中重用现有UUID(或部分UUID)不是一个好主意。你真的应该再生你的。

规范并没有为自定义UUID定义任何分组方案(您称之为前缀),但一些供应商确实鼓励对自定义UUID进行分组,其方式是生成一个96位的自定义基本UUID,并由此发出递增值,就像蓝牙一样。这是不标准的,不会带来协议优化。

 类似资料:
  • 我正在尝试构建一个使用蓝牙的android应用程序。在教程中,他们使用128位UUID,但我只有16位UUID。我必须使用服务UUID和蓝牙基础创建一个新的128位UUID。 例子: 警报通知服务UUID(16bit)= 通过组合这两个UUID,我们收到。。。 警报通知服务UUID(128bit)= 有没有合适的方法?

  • 从蓝牙android API获取android辅助蓝牙gatt服务。 下面是我们获取ble服务的代码: 甚至尝试以独占方式获取辅助服务,但它返回空对象: 有人可以指出任何指针如何在Android中搜索辅助服务。

  • 首先,BLE外设模拟器的源代码对于任何研究Web蓝牙的人来说都是一个巨大的资源。 有一份经批准的关贸总协定服务清单。 当我修改Android源代码以使用自定义的GATT服务(只需在Android代码中指定自己的UUID即可轻松完成)时,从网页到运行GATT服务器的Android应用程序的配对失败。 Web蓝牙留档确实声明,“如果设备通告的服务UUID与服务UUID集有非空交集,请添加设备以产生结果

  • 1.1. 蓝牙相关代码目录: 1.2. 更新代码后如果发生编译通不过或者运行时错误的情况: 1.3. 如果模组相同,只是迁移平台: 1.4. 如果模组切换,则还需要增加的步骤: 1.5. 如果厂商需要定义自己的 BLE 的 UUID: 1.6. 如何确认蓝牙服务已经正常: 1.1. 蓝牙相关代码目录: buildroot/package/aml_brcm_bsa:博通模组厂商提供的代码包,主要是m

  • 运行后,Android部分返回connection be success(BluetoothGattCallback::onConnectionStateChange的参数为STATE_CONNECTED),但是linux中的程序(btgatt-server)没有得到任何响应,仍然阻止等待接受。(第485行)。 我还使用了另一个示例代码:l2cap-ble.c,结果完全相同。 有人能帮我吗?我的目

  • 我正在与Bluez一起使用带有USB蓝牙加密狗的TinyCore linux盒。我们使用示例gatt服务器添加电池服务以发送降低的电池电量。使用蓝牙,我们的控制器(USB蓝牙加密狗)的信息显示服务: 我们的目标是在Android应用程序上阅读此内容,但在我们的自定义应用程序和示例BLE扫描应用程序中,我们看到的唯一服务是00001800(通用访问配置文件)和00001801(通用属性配置文件)。