gpt4 book ai didi

linux - 低功耗蓝牙 : Use BlueZ stack as a peripheral (with custom services and characteristics)

转载 作者:IT王子 更新时间:2023-10-28 23:59:31 27 4
gpt4 key购买 nike

我正在尝试在 Linux 机器上使用 BlueZ 堆栈来创建具有自定义服务和特征的 GATT 服务器。最终目标是使用任何中央设备(例如 iOS 或 Android 设备)连接到 GATT 服务器,发现服务和特征,并操作特征中的数据。

例子:

  • 具有 1 个服务的外围设备,其中包含 3 个特征。
  • 服务 uuid = 0xFFFF
  • 字符 1 uuid = 0xAAAA,属性 = 可读
  • Char 2 uuid = 0xBBBB, properties = readable & writable
  • Char 3 uuid = 0xCCCC, properties = notifiable

从中央设备,我应该看到外围设备,连接到它并发现一个具有三个特征(0xAAAA、0xBBBB、0xCCCC)的服务(0xFFFF)。然后我应该能够读取 0xAAAA 的值,读取和写入 0xBBBB 的值,并在 0xCCCC 上启用通知。

请注意,我知道 similar question存在,但它只解释了如何将外围设备用作广告商。 Another solved question解释了如何创建 GATT 服务器,但没有解释如何使用特性的属性(例如可读、可通知等),或者我可能遗漏了一些东西。

提前致谢。

最佳答案

可以看到gatt-example实践,或者在profile/目录下定义的profile,比如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 用于启用实验服务)。运行 bluetoothd 后,您可能需要再次重置适配器。然后您可以使用 gatttool 从远程设备连接(也可以使用在远程设备上运行的蓝牙)。

关于linux - 低功耗蓝牙 : Use BlueZ stack as a peripheral (with custom services and characteristics),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21428446/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com