多个或单个 BLE 服务

Posted

技术标签:

【中文标题】多个或单个 BLE 服务【英文标题】:Multiple or Single BLE Services 【发布时间】:2015-08-31 20:58:52 【问题描述】:

如果有的话,拥有多个 BLE services 的价值是什么?与只是将所有 characteristics 扔到一个服务中?

我正在使用我们自己制造的(外围)设备构建 BLE 接口。我正在使用STMicro BlueNRG-ms 芯片。我的第一个原型使用了 9 个characteristics,很好地组织成 4 个services。现在编写它的应用程序方面,我发现单独的服务只会创建更多我必须映射的UUIDs,并且似乎并没有真正增加任何价值。这 9 个特性都是独一无二的,所以我没有从单独的服务中获得任何真正需要的命名空间。

【问题讨论】:

【参考方案1】:

您通常会针对一组相关特征使用单一服务。

Bluetooth SIG 为常见场景定义了number of service specifications,并且外围设备将经常使用实现其中的一个或多个,并且可能实现它自己的“私有”服务。

假设我为参加狂欢的人准备了一个特殊的外围设备。它有一个心率监测器和温度监测器来跟踪健康状况,还有一组彩色 LED 可以制作有趣的图案。它可以实现

Device Information Service。 Battery Service Heart Rate Service Health Thermometer Service 以及公开特性以控制 LED 的私人服务

使用标准服务意味着其他应用程序可以访问我的外围设备的此功能。在没有可用的标准服务的情况下,通常使用私有服务(尽管我可以创建一个“封闭的”外围设备并为其他功能使用私有服务)。

现在,假设我创建了版本 2,它也有一个噪音制造器。我可以添加另一个具有噪音制造者特征的私人服务,而不是更改我原来的私人服务。这样我就不需要更改我的原始代码并且可以保持它更加模块化。我还可以在我的代码中仅通过发现的服务来判断我拥有的是 v1 还是 v2。

最后,您提供的服务和您宣传的服务可能不同。通常,您会宣传“主要”服务(在示例中这将是我的私人服务),以便您可以轻松发现正确类型的外围设备。连接到外围设备后,您可以发现它提供的其他服务(电池、心率等)

【讨论】:

【参考方案2】:

跨多个服务分解特征的唯一优势是获得逻辑分组。

【讨论】:

以上是关于多个或单个 BLE 服务的主要内容,如果未能解决你的问题,请参考以下文章

BLE 设备相同的 UUID 用于多个服务

Android / iOS 蓝牙低功耗 (BLE) 与多个服务通信

从单个服务多次调用多个微服务的最佳方法或设计模式是啥?

Android BLE 蓝牙编程

为每个 IIS 应用程序部署单个或多个 WCF 服务?

Zephyr BLE:一个 GATT 客户端可以连接到多个 GATT 服务器吗