蓝牙低功耗:使用BlueZ堆栈作为外设(具有自定义服务和特性)

 飘香的风中栀子 发布于 2023-01-30 16:46

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

例:

具有1项服务的外围设备,包含3个特征.

服务uuid​​ = 0xFFFF

Char 1 uuid = 0xAAAA,属性=可读

Char 2 uuid = 0xBBBB,properties =可读写

Char 3 uuid = 0xCCCC,properties = notifiable

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

请注意,我知道存在类似的问题,但它只解释了如何将外围设备用作广告客户.另一个解决的问题解释了如何创建GATT服务器,但没有解释如何使用特征的属性(例如可读,可通知等),或者我可能缺少某些东西.

先感谢您.

1 个回答
  • 您可以在profile/directory.c下查看gatt-example practice或定义的配置文件,例如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从远程设备连接(也可以在远程设备上运行蓝牙).

    2023-01-30 16:48 回答
撰写答案
今天,你开发时遇到什么问题呢?
立即提问
热门标签
PHP1.CN | 中国最专业的PHP中文社区 | PNG素材下载 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有