低功耗蓝牙:使用BlueZ堆栈作为外围设备(具有自定义服务和特性)
我试图在Linux机器上使用BlueZ堆栈来创建具有自定义服务和特征的GATT服务器。最终目标是使用任何中央设备(例如iOS或Android设备)连接到GATT服务器,发现服务和特征,并操纵特征中的数据。
例:
- 具有1个服务的外围设备,其中包含3个特征。
- 服务uuid = 0xFFFF
- Char 1 uuid = 0xAAAA,属性=可读
- 字符2 uuid = 0xBBBB,属性=可读可写
- Char 3 uuid = 0xCCCC,属性=可通知
从中央设备,我应该看到外围设备,连接到外围设备,然后发现一项具有三个特征(0xAAAA,0xBBBB,0xCCCC)的服务(0xFFFF)。然后,我应该能够读取0xAAAA的值,读取和写入0xBBBB的值,并在0xCCCC上启用通知。
请注意,我知道也存在类似的问题,但这仅说明了如何将外围设备用作广告商。另一个已解决的问题说明了如何创建GATT服务器,但没有说明如何使用特性的属性(例如,可读性,可通知性等),或者也许我遗漏了一些东西。
先感谢您。
回答:
您可以在示例/目录下查看gatt-example的实践或已定义的配置文件,例如alert /
server.c。基本上,您只需要按照现有代码使用gatt_service_add()函数注册服务即可。例如 :
gatt_service_add(adapter, GATT_PRIM_SVC_UUID, 0xFFFF, /* Char 1 */
GATT_OPT_CHR_UUID16, 0xAAAA,
GATT_OPT_CHR_PROPS, ATT_CHAR_PROPER_READ,
GATT_OPT_CHR_VALUE_CB, ATTRIB_READ, read_func_callback,
/* Char 2 Define here */
...
/* Char 3 Define here */
...
GATT_OPT_INVALID);
}
另外,我忘记了细节,但是为了使警报服务器正常工作,您需要在配置期间通过添加“ –enable-maintainer-mode”和“ –enable-
experimental”来启用实验性(和维护者模式?)
要运行,请运行带有-n和-d选项的已编译“ bluetoothd”进行调试(也可以使用-
E启用实验性服务)。您可能需要在运行蓝牙后再次重置适配器。然后,您可以使用gatttool(也可以在远程设备上运行蓝牙)从远程设备进行连接。
以上是 低功耗蓝牙:使用BlueZ堆栈作为外围设备(具有自定义服务和特性) 的全部内容, 来源链接: utcz.com/qa/405369.html