BLE 设备相同的 UUID 用于多个服务
Posted
技术标签:
【中文标题】BLE 设备相同的 UUID 用于多个服务【英文标题】:BLE Device same UUID for multiple services 【发布时间】:2015-09-07 17:01:17 【问题描述】:参考 v4.0 Vol 3 Part G 第 3.1 节
一个设备或更高级别的规范可能有多个服务定义,并且可能有多个具有相同服务 UUID 的服务定义。
我正在为连接到特定外围设备的 iPhone (Central) 进行一些开发。 iPhone 连接的外围设备也在野外扫描信标(ADV_NONCONN_IND,而不是 iBeacon),并修改本地托管的 GATT 服务器以提供代表每个信标的服务。
我是否应该为每个在 GATT 服务器上表示为服务的信标随机生成一个 UUID?我知道规范说一个设备可以有多个具有相同 UUID 的服务定义,但我质疑 iPhone API 是否能够区分在同一个 UUID 下有多个服务定义。 (我担心核心蓝牙中的某种内部扁平化措施)
我想判断是否是这种情况的唯一真正方法是将一个简单的示例放在一起,看看 iPhone 是否会向我显示具有相同 UUID 的多个服务。在我们的例子中,UUID 只是另一个需要跟踪的唯一标识符,因为我们有很多其他可以索引的属性。
如果有这方面的专家,我很想听听关于这件事的一些见解!这是一次学习尝试!
谢谢,
布莱斯·雅各布斯
【问题讨论】:
【参考方案1】:具有相同 UUID 的服务可以通过 GATT 服务器中的不同句柄来区分。这些服务可以被视为一种服务类型的多个实例。
【讨论】:
谢谢!我想我在看 UUID 时的观点是,当句柄在这种情况下更合适时,我应该将它们都视为唯一的。 我很困惑如果我有相同的 UUID 例如一个服务 UUID 有两种类型的特征 Tx UUID(wirtewithoutResponse and write) 和 Rx UUID (Notify) 并且 Tx 和 Rx 都有句柄号。然后如何使用它们来获取不同命令的值。以上是关于BLE 设备相同的 UUID 用于多个服务的主要内容,如果未能解决你的问题,请参考以下文章
使用基于广告服务 UUID 的扫描过滤器扫描 BLE 外围设备
连接BLE设备后,我怎么知道都有哪些服务可用,我只知道打印uuid但我想知道服务的名称