8个帖子/ 0新
最后一篇
zhouchen
离线
最后一次露面:6个月1周前
加入:2015年9月25日01:45
DA14585数据长度测试异常

我用的是DA14585的SDK 6.0.10运行工程为app_ble_profile往字符服务UUID为3777,也就是字符服务long值里面写入数据,数据长度小于或等于20个字节,写入都是正常的,但是当写入的字符大于20byte,数据无法写入且异常断开连接,后蓝牙进入广播状态.DA14585蓝牙协议为5.0且长值的字符长度默认设置为50个字节。按道理不会受限20个字节,附件为测试及用BPA600抓得数据包。

设备:
cyibin.
离线
最后一次露面:2个月1周前
职员
加入:2017-12-14 02:48
你好,

你好,

即使写入数据长度超过50个,也不应该断开的。请将你的抓包文件打包上传

zhouchen
离线
最后一次露面:6个月1周前
加入:2015年9月25日01:45
嗨CYibin:

嗨CYibin:
文件打包上传不了。上传文件只支持PDF和拉链格式,所以我只传了抓包的DPF文档,我用的测试代码是6.0.10SDK默认的app_ble_profile工程,没做任何修改,你把程序下进去用lightblue就可以测试验证出来。

cyibin.
离线
最后一次露面:2个月1周前
职员
加入:2017-12-14 02:48
你好,

你好,

这个问题在580的SDK中不存在;

对比SDK5.0.4和SDK6.0.10,可发现SDK6.0.10提供的接口中,对于gattc_write_req_ind事件结构体,少了一个最后的标志位成员,即585无法处理分包数据写请求。

解决该问题的办法是把MTU改大比如,长值特征数据长度最大值是50的话,可把MTU配置为53.如下:

static const结构gapm_configuration user_gapm_conf = {
///设备角色:中央,外围设备,观察员,转播或所有角色。(@see枚举gap_role)
。角色= GAP_ROLE_PERIPHERAL,

///最大MTU。必须被设置为23,如果使用传统的配对,65如果使用安全连接,
///更多,如果需要的应用程序
.max_mtu = 53,

zhouchen
离线
最后一次露面:6个月1周前
加入:2015年9月25日01:45
好的,我先试试。

好的,我先试试。

zhouchen
离线
最后一次露面:6个月1周前
加入:2015年9月25日01:45
试过之后我发现,这样改是可以的,不过对比580跟585

试过之后我发现,这样改是可以的,不过对比580跟585580一次最多可以写526个字节,585这样改可以支持到180多个字节。

cyibin.
离线
最后一次露面:2个月1周前
职员
加入:2017-12-14 02:48
580一次最多可以写526bytes,跟手机APP

580一次最多可以写526bytes,跟手机APP的实现有关系;理论上,你可以“一次”发送无尽长度的数据,APP可将这些数据分包(L2CAP层次以上的分包)发送给580。

585使用BLE 4.2协议的数据扩展包的话,一次(真正的一次,一个L2CAP包)可发送251-3 = 248bytes的数据,使用方式,可参考DSPS例程

cyibin.
离线
最后一次露面:2个月1周前
职员
加入:2017-12-14 02:48
你好,

你好,

发送超过20个字节的数据时,手机端发送prepare_write_request事件,但一直等不到prepare_write_respone事件而断开,我需要跟SDK确认一下这个事件的处理情况。