Linux   发布时间:2022-04-01  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了linux – 蓝牙低功耗:使用BlueZ堆栈作为外设(具有定制服务和特性)大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。

概述

我试图在 Linux机器上使用BlueZ堆栈来创建具有自定义服务和特性的GATT服务器.最终目标是使用任何中央设备(例如iOS或 Android设备)连接到GATT服务器,发现服务和特性,并操纵特征中的数据. 例: >具有1个服务的外设,其中包含3个特性. >服务uuid​​ = 0xFFFF > Char 1 uuid = 0xAAAA,properties =可读 > Char 2 uuid
我试图在 Linux机器上使用BlueZ堆栈来创建具有自定义服务和特性的GATT服务器.最终目标是使用任何中央设备(例如iOS或 Android设备)连接到GATT服务器,发现服务和特性,并操纵特征中的数据.

例:

>具有1个服务的外设,其中包含3个特性.
>服务uuid​​ = 0xFFFF
> Char 1 uuid = 0xAAAA,properties =可读
> Char 2 uuid = 0xbbbb,properties = readable&写
> Char 3 uuid = 0xCCCC,properties =通知

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

请注意,我知道similar question存在,但它只解释了如何使用外设作为广告客户. Another solved question解释了如何创建GATT服务器,但不解释如何使用特性的属性(例如可读,可通知等),或者也许我缺少某些东西.

先谢谢你.

解决方法

您可以在配置文件/目录(如alert / server.C)下查看gatt-example做法或定义的配置文件.基本上,您只需要使用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(也可以在远程设备上运行的bluetoothd)从远程设备连接.

大佬总结

以上是大佬教程为你收集整理的linux – 蓝牙低功耗:使用BlueZ堆栈作为外设(具有定制服务和特性)全部内容,希望文章能够帮你解决linux – 蓝牙低功耗:使用BlueZ堆栈作为外设(具有定制服务和特性)所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。