ADK4.1 GATT server怎么搭建
本帖最后由 于嗟鸠兮 于 2018-2-6 08:39 编辑做了几天了,一直没能成功搭建GATT server。我能搭建一部分的,就是手机连接蓝牙后能看到我自己创建的GATT server,但是就是无法读写,在手机读或者写时,蓝牙这边没看到具体的事件触发。我渴望在座的大神给予指点。
附图是手机写0xaabbcc给蓝牙,说明蓝牙收到了,但我不知道如何获取这些数据或者这些事件在哪触发的。 xx_server_ext_msg_handler 是 GATT manager 调用的。
1. 检查一下HANDLE_BE2800_SERVICE 和HANDLE_BE2800_SERVICE_END 的值。 HANDLE_BE2800_SERVICE应该是30.
2. 在 handleBe2800Access 函数中 switch(access_ind->handle)需要用HANDLE_BE2800_SERVICEx 而不是HANDLE_BE2800_SERVICE. log 里ACCESS_RSP
result = 1 (gatt_status_invalid_handle).
3. 尽量把#include 放在.c文件里, 把蓝牙设备名和地址都改了,手机会记住设备上的服务。改动会导致访问使用无效句柄。改地址会刷新手机记录。 如果还不行就需要调试了。 smagi 发表于 2018-2-5 23:41
把蓝牙设备名和地址都改了,手机会记住设备上的服务。改动会导致访问使用无效句柄。改地址会刷新手机记录。
感谢回答。如我刚才补发的图,其实是蓝牙收到手机的内容了,但我不知道该在哪里得到这些数据或者说这些事件在哪触发的。 smagi 发表于 2018-2-5 23:42
如果还不行就需要调试了。
感谢回答。我已经用我所知道的方式进行调试了,但还是没能做出来。 那是你的server注册的问题了,注册GATT Server 需要更改app-handler.看看其他的服务源码就知道了 smagi 发表于 2018-2-6 08:57
那是你的server注册的问题了,注册GATT Server 需要更改app-handler.看看其他的服务源码就知道了
我是根据GATT_BATTERY_SERVER来写的 Log 里的 handle值是 0x1e, 30.看看 gatt-db.h 你的server handle 值对不对? 不会Server 的UUID 重复了吧? 详细请参考 http://blog.csdn.net/wzz4420381/article/details/78359481