CC26x2R1笔记(11)蓝牙丢包问题(GATT_WriteNoRsp发送返回0x16:blePending)
发送间隔:24ms
发送包长度:20字节
问题:
1:主机通过GATT_WriteNoRsp向从机写入数据,当写速率过快时,就会出现blePending
原因:这是由于出现前面设置的缓存区小和连接间隔太大等参数导致的
解决:
1:将这两个调至成这个,放在ti_ble_config.h,MAX_NUM_PDU和MAX_PDU_SIZE
定义6个Tx缓冲区,每个缓冲区251字节。用户应用程序应该根据自身堆栈情况进行分配。如果没有足够的堆栈,可以通过减少MAX_NUM_PDU,这样可能导致吞吐量的损失。实际使用中的最坏情况是MAX_NUM_PDU和MAX_PDU_SIZE的乘积。设计人员应该根据设备的可用内存来平衡这些参数。
#define MAX_NUM_PDU 6
#define MAX_PDU_SIZE 251
我们配置L2CAP MAX_PDU_SIZE 为255, ATT_MTU 最大 为251 读写特征值最大长度应该ATT_MTU-3=248;
//source\ti\blestack\profiles\simple_profile\simple_gatt_profile.h SIMPLEPROFILE_CHAR5_LEN Line 85
#define SIMPLEPROFILE_CHAR5_LEN 248
2:简单粗暴将连接间隔调小些
注意,在实际情况下更高的连接间隔有着明显的缺点:由于射频干扰导致的连接事件将大大降低吞吐量。因此用户需要根据所需吞吐量进行权衡。当连接间隔大于100ms后,吞吐量将不会增加。
将原来的8001.25ms,修改成241.24ms
将最小的连接间隔“修改成7.5ms
![在这里插入图片描述](https://img-blog.csdnimg.cn/20200714193709775.png?x-oss-process=image/watermark,type_ZmFuZ3poZW5naGVpdGk,shadow_10,text_aHR0cHM6Ly9ibG9nLmNzZG4ubmV0L3poaV9BbGFud3U=,size_16,color_FFFFFF,t_70
bool center_Gatt_Write(uint8 char_type,uint8 *p_data,uint16_t len){attWriteReq_t req;// uint8_t charVals[4] = { 0x00, 0x55, 0xAA, 0xFF }; // Should be consistent with// those in scMenuGattWriteuint8 conndle_index=mac_find_connHandle(stu_other.COMMDEV_mac);if(conndle_index==10) return false;req.pValue = GATT_bm_alloc(connList[conndle_index].connHandle, ATT_WRITE_REQ,len,NULL);//sizeof(charVals) , NULL);if ( req.pValue != NULL ){if(char_type==1)req.handle = connList[conndle_index].FFX2_Handle;// req.handle = connList[get_currt_conn_num()-1].FFX2_Handle;elsereq.handle = connList[conndle_index].FFX4_Handle;req.len = len;memcpy(req.pValue,p_data,len);req.sig = 0;req.cmd = 1;//0;// status = GATT_WriteCharValue(connList[conndle_index].connHandle, &req, get_selfEntity());//0;status_gatt=GATT_WriteNoRsp(connList[conndle_index].connHandle, &req);if(status_gatt != SUCCESS){GATT_bm_free((gattMsg_t *)&req, ATT_WRITE_REQ);return false;}}return (true);}
可以加入QQ群:687360507
与大伙沟通交流,技术在于分享而进步
CC26x2R1笔记(11)蓝牙丢包问题(GATT_WriteNoRsp发送返回0x16:blePending)相关推荐
- android蓝牙丢包重传,华为TE Desktop Mobile软终端引领市场
[IT168厂商动态] 华为自从2013年推出TE30以后,随着视讯行业的迅猛发展与客户对视讯要求的不断提高,华为继续推出了TE40.TE50.TE60三款全新的高清视频会议终端,能全方位覆盖从中小型 ...
- CC2640蓝牙丢包问题(notify发送返回0x16:blePending)
发送间隔:24ms 发送包长度:20字节 从机 Notification发送方式有两种,用户根据自身要求选择: (1)调用GATT_Notification( uint16 connHandle, a ...
- Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析
Android IOS WebRTC 音视频开发总结(八十七)-- WebRTC中丢包重传NACK实现分析 本文主要介绍WebRTC中丢包重传NACK的实现,作者:weizhenwei ,文章最早发表 ...
- UDP sendto频率过快导致发送丢包
sendto频率过快导致发送丢包 - 逸蒙 - 博客园 编写一个转发模块,虽然没有要求一转多时要达到多少路(不采用组播的情况下,单纯的一路转成多路),但是本着物尽其用的原则,尽可能测试一下极限. 网络 ...
- tcp 粘包 丢包 解决方案
1.分析tcp粘包和丢包的原因 发送数据的时候有 发送缓冲区senBuff, 接收数据的时候有 接收缓冲区recvBuff, 假如接收数据方一直不recv, 则recvBuff就会堆满, 这个时候 ...
- 用了TCP协议,就一定不会丢包嘛?
表面上我是个技术博主. 但没想到今天成了个情感博主. 我是没想到有一天,我会通过技术知识,来挽救粉丝即将破碎的感情. 掏心窝子的说.这件事情多少是沾点功德无量了. 事情是这样的. 最近就有个读者加了我 ...
- 用了TCP协议,就一定不会丢包吗?
表面上我是个技术博主. 但没想到今天成了个情感博主. 我是没想到有一天,我会通过技术知识,来挽救粉丝即将破碎的感情. 掏心窝子的说.这件事情多少是沾点功德无量了. 事情是这样的. 最近就有个读者加了我 ...
- tcp三次握手丢包后会发生什么
测试工具 本片文章会用到以下工具来学习tcp三次握手: tcpdump,一个运行在用户态的应用程序,它本质上是通过调用 libpcap 库的各种 api 来实现数据包的抓取功能.数据包到达网卡后,经过 ...
- 用了 TCP 协议,就一定不会丢包吗?
她说她男朋友也是个程序员,异地恋,也关注了我,天天研究什么 TCP,UDP 网络.一研究就是一晚上,一晚上都不回她消息的那种. 话里有话,懂. 不出意外的出了意外,她发出了灵魂拷问 "你们程 ...
最新文章
- java微信群自动回复_微信自动回复机器人选哪个好?参考这四点
- flux读取不到数据_spring-webflux两种开发模式,获取不到使用ajax的post提交的数据?...
- 18 | 为什么这些SQL语句逻辑相同,性能却差异巨大?
- 配置token_Nginx常用的配置
- asp.net html table,在ASP.NET中利用HtmlTable动态创建表格 | 学步园
- jvm--3.内存管理
- JAVA(1)-----JAVA基础知识
- 网络运维在经济危机中茁壮成长
- 今天,我们考大学是为了什么?
- clear java_方法clear()在Java中做什么?
- 快速傅里叶变换(FFT):蝶形算法(CT蝴蝶、GS蝴蝶)
- linux中tailf命令详解,linux tailf命令详解
- android MediaPlayer m3u8 播放
- FSR402传感器简介
- Python办公自动化实战 01 | Python优势与自动化思维让你的工作化繁为简
- 使用高德地图自定义marker、infowindow
- html页面使用地图,前端PC端使用地图步骤(高德)
- 工欲善其事,必先利其器-程序员工具推荐
- 撰写合格的REST API
- 好用的读书笔记app精选
热门文章
- 许昌 地图。满屏的饭馆。
- [luogu 4168] [Violet]蒲公英 {离散化+分块}
- 如何成为一位 hacker
- 数据可视化:揭开“智慧校园”新篇章,助力新时代教育信息化
- AWS EC2常见问题
- 解决谷歌注册表删除不干净,造成安装或者升级不了谷歌浏览器
- 用VB6+GDI+开发交互式CAD系统
- 【MATLAB数学建模算法代码(六)之遗传算法】
- Python Wechaty 微信聊天机器人 padlocal协议搭建指南
- android locales本地化(整理)