TI中文支持网
TI专业的中文技术问题咨询交流网站

在使用CC2640R2F的过程中,服务发现失败

SDK:4.3版本。开发环境:CCS。协议版本:ble5stack。

根据ble5_simple_peripheral_cc2640r2lp_app修改的程序,作为单连接的从机设备,使用手机在发现服务的过程中出现了发现服务失败的问题,请协助分析一下

Viki Shi:

这是对方设置的问题,看下面解释:

Attribute permissions,Attribute的权限属性,权限属性不会直接在空口包中体现,而是隐含在ATT命令的操作结果中。假设一个attribute read属性设为open(即读操作不需要任何权限),那么client去读这个attribute时server将直接返回attribute的值;如果这个attribute read属性设为authentication(即需要配对才能访问),如果client没有与server配对而直接去访问这个attribute,那么server会返回一个错误码:告诉client你的权限不够,此时client会对server发起配对请求,以满足这个attribute的读属性要求,从而在第二次读操作时server将把相应的数据返回给client。目前主要有如下四种权限属性:

Open,直接可以读或者写

No Access,禁止读或者写

Authentication,需要配对才能读或者写,由于配对有多种类型,因此authentication又衍生多种子类型,比如带不带MITM,有没有LESC

Authorization,跟open一样,不过server返回attribute的值之前需要应用先授权,也就是说应用可以在回调函数里面去修改读或者写的原始值。

Signed,签名后才能读或者写,这个用得比较少。

babober:

回复 Viki Shi:

但是我在设置的时候,并没有把这个服务下的权限设置为需要匹配或者认证的模式。这个情况很特殊,只出现在某些特定型号的手机上,在反复连接几次之后才会出现APP不能读出服务。

Viki Shi:

回复 babober:

按照描述,怀疑是手机的问题,建议查一下手机的蓝牙部分,是不是有什么特殊要求

babober:

回复 Viki Shi:

根据抓包的结果来看,是因为CC2640R2F在回复手机的过程中数据格式错误导致的,错误码是这个 :Error Code: Insufficient Resources (0x11)。请问你们之前有遇到过类似的问题吗

Viki Shi:

回复 babober:

资源不足的话,建议如下设置:
1、优化flash/RAM的使用:dev.ti.com/…/creating-a-custom-bluetooth-low-energy-application.html
2、检查heap的使用情况 及HeapMgr的使用情况:dev.ti.com/…/debugging-index.html

babober:

回复 Viki Shi:

 我们也查看了蓝牙手册Core_V5.0,看到有这个错误,但是并没有看见详细的说明,针对这个资源不足的问题,有如下疑问:

1.Insufficient Resource资源不足这个错误是如何产生的?资源不足具体指的是什么,是芯片的flash、RAM不足或者是对方手机的资源不足?是否有对这个问题详细的解释说明。

2.若确认是资源不足的问题,那么为什么只存在于某些特定的手机型号,目前测试来看主要是华为手机存在此问题,并且当华为手机连接出现不能获取服务列表的时候,不断电的情况下别的手机仍然可以正常连接获取服务,不会出现此问题。

babober:

回复 Viki Shi:

 这是我的flash和ram的使用情况

Viki Shi:

回复 babober:

1、没有详细说明,一般是设备方的资源不足
2、建议按照上面的方式排查

babober:

回复 Viki Shi:

按照这个逻辑来说,也就是使用华为手机的时候会占用更多的资源?而别的手机就不会?

Viki Shi:

回复 babober:

目前看来是这样,是不是有多次读取或读取过于频繁等操作?

赞(0)
未经允许不得转载:TI中文支持网 » 在使用CC2640R2F的过程中,服务发现失败
分享到: 更多 (0)