- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在 Bluez 源中扩展 plugin/gatt_example.c 以尝试 BLE 通知功能
没有成功。我正在使用 Bluez 源中包含的示例电池服务。它有 1
具有 READ 和 NOTIFY 属性的特性。我添加了 dbus 方法来调用 attrib_db_update() 以从蓝牙守护程序外部更新特征值。
现在,我可以连接哪个客户端(带有 Android 4.3 和 iPhone(LightBlue 免费应用程序)的 Nexus4)
并开始通知(设置描述符 CCC 通知标志)。
(注意:ccc 描述符字符有默认的 auth 权限,所以从 iPhone 修改 CCC
(开始通知)将使 bluez 返回错误:未授权权限。由于我打算稍后处理授权,我暂时将默认权限更改为无,iPhone 可以设置 CCC 通知标志)。
问题是即使客户端(Android 或 iOS)已经开始通知,调用 attrib_db_update() 并没有让 bluez 向客户端发送任何通知(使用 hcidump 进行监控,没有数据包发送到客户端)。
问题:在 attrib_db_update() 旁边是否需要任何步骤来使 bluez 向客户端发送通知?我感谢任何指向示例源的链接。附注。我使用 bluez 作为外设 + gatt 服务器配置(就像 plugin/gatt_example.c 中的电池服务),反之亦然。
谢谢。
=== 更新(我不知道评论格式是如何工作的...所以我在这里添加更新。)
关于配置文件/警报示例:
是的,我已经在提出问题之前检查了个人资料/警报。
另一个问题是我无法运行这些示例(这是我首先提出问题的一个原因)。
配置文件/警报/server.c:
attio_connected_cb() 是一个回调函数,由 server.c 中的 filter_devices_notify() 注册。
它使用 btd_device_add_attio_callback()(来自 src/device.c)。
进一步检查 src/device.c,它看起来像是检查 device->attrib 是否存在以执行(首先插入队列然后执行回调)回调或只是插入队列直到设备连接?。
调试它,即使我已经连接了设备,它看起来 device->attrib 也是空的。
对于那些有兴趣运行/调试示例警报配置文件的人(因为没有文档 :( )。
如果(第 564 行左右)注释掉以下内容,我们对这些检查不感兴趣...
/*
if (!g_str_equal(alert->srv, sender)) {
DBG("发件人 %s 未在类别 %s 中注册", 发件人,
类别);
返回 btd_error_invalid_args(msg);
}
*/
运行蓝牙:例如。 bluetoothd -n -d -p alert 连接您的设备直到 startNotify
从其他控制台注册警报:
dbus-send --system --dest=org.bluez --type=method_call "/org/bluez""org.bluez.Alert1.RegisterAlert"string:"simple"objpath:"/org/bluez/AlertAgent1"
创建新警报:
dbus-send --system --dest=org.bluez --type=method_call "/org/bluez""org.bluez.Alert1.NewAlert"string:"simple"uint16:"1"string:"test"
我得到了以下蓝牙日志:
bluetoothd[1928]: src/attrib-server.c:attrib_db_update() handle=0x001c
bluetoothd[1928]: src/attrib-server.c:attrib_db_update() handle=0x0021
bluetoothd[1928]:profiles/alert/server.c:register_alert() RegisterAlert("simple", "/org/bluez/AlertAgent1")
bluetoothd[1928]: src/attrib-server.c:attrib_db_update() handle=0x001e
bluetoothd[1928]: src/device.c:btd_device_add_attio_callback() 0x1b6e718 注册 ATT 连接回调
bluetoothd[1928]: src/device.c:device_set_auto_connect() 10:68:3F:E1:4E:F2 自动连接:1
bluetoothd[1928]: src/adapter.c:adapter_connect_list_add()/org/bluez/hci0/dev_10_68_3F_E1_4E_F2 添加到 BlueZ 5.14 的 connect_list
bluetoothd[1928]: src/adapter.c:trigger_passive_scanning()
bluetoothd[1928]: src/device.c:btd_device_add_attio_callback() device->attrib = false
bluetoothd[1928]: src/device.c:btd_device_add_attio_callback() cfunc = true
bluetoothd[1928]: src/device.c:btd_device_add_attio_callback() 没有空闲
bluetoothd[1928]:profiles/alert/server.c:new_alert() NewAlert("simple", 1, "simple")
bluetoothd[1928]: src/adapter.c:passive_scanning_complete() 状态 0x03
bluetoothd[1928]:开始扫描返回参数的大小错误
备注:在 device.c 中添加一些调试输出。似乎 device->attrib 是空的。并且自动连接(为什么 gatt 服务器/外设必须连接到中央?)由于未知原因失败。
最佳答案
编辑:我已成功使用代码中的 test-alert python 脚本运行警报示例。
我直接联系了开发商并询问。原来在运行 bluez 作为外设时有一个错误,所以他在邮件列表上创建了几个补丁。
http://marc.info/?l=linux-bluetooth&m=139092431515560&w=2
应用补丁后,运行服务器并尝试使用 test-alert :
test-alert -w -r email -u email 30
关于bluetooth - 如何使用 Bluez 发送低功耗蓝牙 GATT 通知?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19044810/
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能 卷积神经网络(CNN)通过从原始数据中自动学习层次特征表示,在图像识别任务中取得了巨大成功。虽然
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能 血压的测量和预测是心脏病患者和有心脏问题的人的一个重要条件,应该保持持续的控制。在这项研究中,基
具体的软硬件实现点击 http://mcu-ai.com/ MCU-AI技术网页_MCU-AI人工智能 心血管疾病是最严重的死亡原因之一,每年在全世界造成严重的生命损失。持续监测血压似乎是最可行的选择
大家好,我是痞子衡,是正经搞技术的痞子。今天痞子衡给大家介绍的是 恩智浦MCX系列MCU的新品MCXN947 。 自 2015 年恩智浦和飞思卡尔合并成新恩智浦之后,关于它们各
我正在开发一个应用程序,该应用程序接受语音输入,并将该输入与 list 中的已知项目进行匹配。 list 中的每个项目都有一个别名列表,以便长标题的项目可以与较短的名称相匹配。 例如: class P
两个双模蓝牙设备连接时,必须使用EDR,不能并联使用LE。然后必须通过 EDR 链路传输 BT 低功耗 GATT 配置文件。这是我从规范中读到的内容。 但是 iOS EDR 堆栈(在没有 MFi 许可
我正在尝试为 S3 开发蓝牙 4.0 应用程序。问题是,手机的行为就像它甚至没有蓝牙 4.0。它不会发现 4.0 设备,并且无法通过 4.0 设备发现。我在手机设置和应用程序中都尝试过,使用 Broa
我正在寻找一种与 Adafruit bluefruit LE(nRF8001 芯片组)板进行交互的方法,在 Windows 桌面应用程序中使用 c#(据我所知,我无法使用 Windows.Device
我是一名优秀的程序员,十分优秀!