Bluedroid L2CAP 链路限制总结
来源:互联网 发布:淘宝最牛卖家骂人 店名 编辑:程序博客网 时间:2024/05/21 16:56
问题现象:
蓝牙性能极限测试,连接3条Classic和4条BLE后,无法再连接更多的classic或ble设备,提示连接失败。
LOG分析
10-12 19:46:10.113 4512 4560 I BluetoothBondStateMachine: bondStateChangeCallback: Status: 0 Address: D8:68:69:F6:4F:CB(Designer Mouse) newState: 210-12 19:46:10.113 4512 4580 I bt_att : GATT_Connect gatt_if=310-12 19:46:10.113 4512 4580 D bt_att : gatt_get_ch_state: ch_state=010-12 19:46:10.113 4512 4580 D bt_att : gatt_set_ch_state: old=0 new=210-12 19:46:10.113 4512 4580 I bt_l2cap: L2CA_ConnectFixedChnl() CID: 0x0004 BDA: d86869f64fcb10-12 19:46:10.113 4512 4580 W bt_l2cap: L2CA_ConnectFixedChnl(0x0004) - no LCB10-12 19:46:10.113 4512 4580 E bt_att : gatt_connect failed10-12 19:46:10.113 4512 4560 I bt_btif : btif_dm_upstreams_cback ev: BTA_DM_AUTH_CMPL_EVT10-12 19:46:10.113 4512 4580 E bt_btif : Connection open failure
连接新设备时,GATT发起SDP操作,需要建立l2cap channel。Bluetooth 协议栈分配lcb。由于lcb分配失败,导致l2cap channel建立失败,整个连接断开。
Code 分析
** Description Connect an fixed signalling channel to a remote device.BOOLEAN L2CA_ConnectFixedChnl (UINT16 fixed_cid, BD_ADDR rem_bda) { // No link. Get an LCB and start link establishment if ((p_lcb = l2cu_allocate_lcb (rem_bda, FALSE, transport)) == NULL) { L2CAP_TRACE_WARNING ("%s(0x%04x) - no LCB", __func__, fixed_cid); return FALSE; }}tL2C_LCB *l2cu_allocate_lcb (BD_ADDR p_bd_addr, BOOLEAN is_bonding, tBT_TRANSPORT transport){ for (xx = 0; xx < MAX_L2CAP_LINKS; xx++, p_lcb++) { } /* If here, no free LCB found */ return (NULL);}/* The maximum number of simultaneous links that L2CAP can support. */#ifndef MAX_ACL_CONNECTIONS#define MAX_L2CAP_LINKS 7#else#define MAX_L2CAP_LINKS MAX_ACL_CONNECTIONS#endif
Android Bluedroid 对可用L2CAP最大支持为7个。超过7个将不再分配。
Android M 与Android N都有相同的链路上线设置,均为7个。
BUG 总结
由于Android源生设计,规定同时支持的L2CAP最大link数为7。测试过程中,已经连接7个设备(3 classic和4个ble)。7条linck均正在被使用,所以无法与新设备进行连接。如果连接中途有设备断连,l2cap将释放占用的link,这样后续才能有新设备可连接。
0 0
- Bluedroid L2CAP 链路限制总结
- BlueDroid代码分析之L2CAP
- bluedroid末期总结
- bluedroid移植(中期总结)
- Logical Link Control and Adaptation Protocol (L2CAP) 逻辑链路控制及适配协议
- CC2640R2F BLE5.0 蓝牙协议栈逻辑链路控制和适配层协议(L2CAP)
- Bluedroid 筆記
- BlueDroid介绍
- BlueDroid介绍
- bluedroid 框架
- BlueDroid介绍
- BlueDroid介绍
- BlueDroid介绍
- BlueDroid介绍
- BlueDroid介绍
- 蓝牙L2CAP【CID分配】【L2CAP层图解】
- js 限制输入总结
- 访问限制符总结
- iOS客户端校验https网络请求证书
- 基于WebRTC实现页面浏览器视频通话-原理及实现demo
- SourceTree的使用
- 【openjudge 计算概论(A)】[ 函数与字符串练习(2)]
- 牛客网刷题之整数中1出现的次数(从1到n整数中1出现的次数)
- Bluedroid L2CAP 链路限制总结
- GIT里程碑
- 测试驱动开发搜集
- XMLHttpRequest对象及其使用
- volley
- MySQL GRANT REVOKE用法
- 第八周项目1-建立顺序串算法库
- 第四周项目3(3)-判断单链表是否递增
- 第8周项目3-顺序串算法