0.前言
本系列主要是为了说明跟蓝牙服务相关的话题。首先以QCA4020板上注册的AIOS为例说明这个问题。
1.查看QCA4020板上已有的服务
在服务端使用
RegisterAIOS注册了AIOS服务之后,那么客户端就可以使用
DiscoverServices来查找设备上的已经有的服务,得到的结果如下:
BLE: Service 0x0001 - 0x0001, UUID: 1801
BLE: Service 0x0002 - 0x0014, UUID: 180A
BLE: Service 0x0015 - 0x001D, UUID: 1800
BLE: Service 0x001E - 0x0020, UUID: 1804
BLE: Service 0x0021 - 0x0033, UUID: 1815
但是怎么知道这些service对应的是哪些具体的服务呢?
2.查找服务
打开如下网址:
https://www.bluetooth.com/specifications/gatt/services
注意,通过UUID,可以在网页中的表中查看
Generic Attribute org.bluetooth.service.generic_attribute 0x1801 GSS
Device Informa
tion org.bluetooth.service.device_information 0x180A GSS
Generic Access org.bluetooth.service.generic_access 0x1800 GSS
Tx Power org.bluetooth.service.tx_power 0x1804 GSS
Automation IO org.bluetooth.service.automation_io 0x1815 GSS
从这些值我们可以看出,UUID1815对应的是我们的AIOS。
3.源码
demo里面是使用DiscoverServices函数来实现GATT服务发现操作的。
从代码来看,主要是调用了API:qapi_BLE_GATT_Start_service_Discovery来真正实现这个操作。
发现服务操作共有以下几个步骤:
(1)获取连接的设备的信息
(2)调用API qapi_BLE_GATT_Start_service_Discovery在连接设备上获取服务,即连接设备是服务端,当前设备是客户端。