找回密码
 立即注册

使用微信账号登录

只需一步,快速开始

查看: 12697|回复: 14

[CSR8系列] 解决安卓无法CSR8670 BLE的方法

[复制链接]
连续签到天数:1天
签到总天数:32天
签到总奖励:232金币
发表于 2015-11-25 17:32:39 | 显示全部楼层 |阅读模式
最新调试CSR8670 BLE的时间发现IOS设备可以连接,但是安卓设备无法连接。

同事在调试几天后发现安卓端连接改成自动连接就可以与BLE连接并且发现服务。


因为安卓调试软件也可以连接其他的BLE设备,肯定与设备的配置也有关系,我这边也一直在研究CSR8670这边的问题。
调试是基于官方sink程序
为了发现程序跑到哪一步我将BLE的调试打开在xIDE 下的DEBUG输出发现了问题点,IOS在连接和配置成自动连接的安卓程序在讲求时请求ID都是
GATT_INIT_CFM [0]
而用BLE调试软件发现却是
GATT: Unhandled MSG[5802]
很明显是android发了一个消息请求而sink程序没有处理,通过ADK库中的gatt.h文件查找到0x5802对应的消息是GATT_CONNECT_IND,
其对应的结构体是GATT_CONNECT_IND_T,它的注释:
  1. /*!
  2.     \brief GATT Connection Indication

  3.     This message is received when a remote device tries to make a GATT
  4.     connection. This will be sent to the task which initiated the GATT library.

  5.      The GattConnectResponse() function must be called to accept or decline the
  6.      connection. Only after this is done, can the connection be used.
  7. */
复制代码
也就是远程设备在请求GATT连接,而且必须使用GattConnectResponse()函数去应答。
因此在gatt_message_handler函数里面添加上处理它的代码
  1. void gatt_message_handler( Task task, MessageId id, Message message )
复制代码
之后编译运行,发现BLE调试助手可以连接成功了,但是服务没有出来,然后我断开BLE调试助手再连接,这下服务也跟着出来了,读写也都没问题。

但是在用其他BLE软件调试还是有问题,大概找对方向了,之后再找原因吧。如果有大神知道也请告知!


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?立即注册  

×
楼主热帖
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
连续签到天数:1天
签到总天数:32天
签到总奖励:232金币
 楼主| 发表于 2015-11-25 17:35:14 | 显示全部楼层
  1. void gatt_message_handler( Task task, MessageId id, Message message )
  2. {
  3.     GATT_DEBUG(("gatt_message_handler id=[%x]\n", id));
  4.     switch(id)
  5.     {
  6.         case GATT_CONNECT_IND:
  7.         {
  8.             GATT_CONNECT_IND_T *gci;
  9.             GATT_DEBUG(("GATT_CONNECT_IND flag:[%x]\n", ((GATT_CONNECT_IND_T*)message)->flags));
  10.             gci = (GATT_CONNECT_IND_T*)message;
  11.             GattConnectResponse(&theSink.rundata->gatt.task, gci->cid, gci->flags, TRUE);
  12.         }
  13.         break;
复制代码


gatt_message_handler那段代码没出来,重新发出来
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:146天
签到总奖励:3066金币
发表于 2015-11-25 20:37:43 | 显示全部楼层
表示关注,我也遇到同样的问题。
安卓端设置成自动连接就可以与8670 的 BLE连接且能发现服务了?
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:145天
签到总奖励:1014金币
发表于 2015-11-25 23:32:09 | 显示全部楼层
多連幾次,應該又不能連了。
一下正常,一下又不行了。
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:32天
签到总奖励:232金币
 楼主| 发表于 2015-11-26 11:02:29 | 显示全部楼层
GeorgeChang 发表于 2015-11-25 23:32
多連幾次,應該又不能連了。
一下正常,一下又不行了。

我也是这样的,还是有其他问题,也在找原因。
不过比起之前一直连不上还是好一些了。
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:146天
签到总奖励:3066金币
发表于 2015-11-26 14:33:12 | 显示全部楼层
xmxqiyan 发表于 2015-11-26 11:02
我也是这样的,还是有其他问题,也在找原因。
不过比起之前一直连不上还是好一些了。

你不是说安卓端设置成自动连接就可以连接了?
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:32天
签到总奖励:232金币
 楼主| 发表于 2015-11-26 14:39:56 | 显示全部楼层
hyf200888 发表于 2015-11-26 14:33
你不是说安卓端设置成自动连接就可以连接了?

我对安卓app开发不是很熟悉,那是我同事说的,也可能是我没描述好,反正是里面的一个参数改一下就OK,今天我又调试了CSR的程序,你参考一下:

http://www.52bluetooth.com/thread-6344-1-1.html
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:4天
签到总奖励:22金币
发表于 2015-12-22 12:28:00 | 显示全部楼层
努力学习中,MARK
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:6天
签到总奖励:33金币
发表于 2015-12-22 16:04:21 | 显示全部楼层
安卓BLE的方式与IOS的BLE方式是不同的,要想连接到安卓的BLE,需要发送SDP的BLE数据。
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

连续签到天数:1天
签到总天数:214天
签到总奖励:1390金币
发表于 2016-4-5 15:32:09 | 显示全部楼层
安卓手机无法连接的解决,不错ble学习资料
积分商城 - 让您的金币更有价值!||官方Q群 - 让您的沟通更加及时!
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册  

本版积分规则

小黑屋|手机版|我爱蓝牙网 - 52Bluetooth

GMT+8, 2024-4-26 18:08 , Processed in 0.178639 second(s), 21 queries , Gzip On, MemCached On.

Powered by Discuz! X3.5

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表