Jieli-Tech / fw-AC63_BT_SDK

Firmware for Generic Bluetooth SDK(AC63 series), Support AC631N/AC635N/AC636N/AC637N/AC632N, compatible with AC69 series without audio support.
Apache License 2.0
167 stars 97 forks source link

Ble连接问题 #177

Closed alittleray closed 1 year ago

alittleray commented 2 years ago

芯片:AC6329C SDK:2.0 使用场景描述:安卓 App搜索到设备之后,主动连接,并发送鉴权(登录)信息,从连接到鉴权超时为5秒,如果超过5秒,认为登录超时,设备会主动断开连接。设备提供两个特性,一个Write用于App向设备发送消息,另外一个Notify用于设备向App发送消息。 App连接设备之后,先获取Service,然后获取特性,然后打开Indicate特性,这些操作间隔100ms。 设备连接参数如下: static const struct conn_update_param_t trans_connection_param_table[] = { {8, 16, 10, 300},// {8, 24, 10, 300},// {16, 24, 10, 400}, };

问题描述:会有很小几率出现一种连接时间过长的问题,导致登录超时;而且一旦出现一次连接时间过长,那么后面就反复连接时间过长;从而导致手机App搜索不到设备,必须手动停止搜索,等一会才可以搜索到设备的情况。日志如下: #M}ANS]con_latency = 0

[00:07:29.565][BLE_TRANS]cnn_timeout = 500

[00:07:29.574][BLE_TRANS]server_state: handle=50,03

[+XLOG:[0 0:7:29.590][d][xpfles]--->xpf les connect step, rssi:189/-128 [+XLOG:[0 0:7:29.610][d][xpfles]step7N9n^H鳬PPIPPIPP# [00:07:30.723][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:30.751][Info]: [GATT_SERVER]conn_update_handle = 0050

[00:07:30.763][Info]: [GATT_SERVER]conn_update_interval = 6

[00:07:30.775][Info]: [GATT_SERVER]conn_update_latency = 0

[00:07:30.787][Info]: [GATT_SERVER]conn_update_timeout = 500

[00:07:30.799][BLE_TRANS]conn_param update_complete:0050

[00:07:30.811][BLE_TRANS]update_interval = 6

[00:07:30.821][BLE_TRANS]update_latency = 0

[00:07:30.830][BLE_TRANS]update_timeout = 500 # [00:07:31.082][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:31.108][Info]: [GATT_SERVER]conn_update_handle = 0050

[00:07:31.121][Info]: [GATT_SERVER]conn_update_interval = 36

[00:07:31.133][Info]: [GATT_SERVER]conn_update_latency = 0

[00:07:31.144][Info]: [GATT_SERVER]conn_update_timeout = 500

[00:07:31.156][BLE_TRANS]conn_param update_complete:0050

[00:07:31.167][BLE_TRANS]update_interval = 36 I [00:07:31.178][BLE_TRANS]update_latency = 0

[00:07:31.188][BLE_TRANS]update_timeout = 500 PP [00:07:31.397][BLE_TRANS]write_callback,conn_handle =0050,att_handle =0009,trans_mode:0,buffer=00210a3b,size=2,offset:0

[00:07:31.420][Info]: [GATT_SERVER]connection_update_request: 0050: -8-16-10-300-

[00:07:31.436][BLE_TRANS] ------write ccc:0009,02

[00:07:31.447][BLE_TRANS]server_state: handle=50,21

[00:07:31.457]gap send conn param 2222[+XLOG:[0 0:7:31.460][d][xpfles]--->xpf les notify indicate step, rssi:190/-128 [+XLOG:[0 0:7:31.480][d][xpfles]step 3->33 [00:07:31.577][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:31.589][Info]: [GATT_SERVER]-update_rsp:0050, 00

[00:07:31.600][Info]: [GATT_SERVER]remoter accept

IPP#IPP$# [00:07:32.266][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:32.293][Info]: [GATT_SERVER]conn_update_handle = 0050

[00:07:32.305][Info]: [GATT_SERVER]conn_update_interval = 12

[00:07:32.317][Info]: [GATT_SERVER]conn_update_latency = 10

[00:07:32.329][Info]: [GATT_SERVER]conn_update_timeout = 300

[00:07:32.341][BLE_TRANS]conn_param update_complete:0050

[00:07:32.353][BLE_TRANS]update_interval = 12

[00:07:32.363][BLE_TRANS]update_latency = 10

[00:07:32.373][BLE_TRANS]update_timeout = 300 $IPPI$P$P [00:07:33.376][BLE_TRANS]write_callback,conn_handle =0050,att_handle =0009,trans_mode:0,buffer=00210a3b,size=2,offset:0

[00:07:33.399][BLE_TRANS] ------write ccc:0009,02 [+XLOG:[0 0:7:33.470][d][xpfles]tx data len=0 and should hb, ind send hbInfo [+XLOG:[0 0:7:33.490][d][xpfles]indicate send success, rslt:0, tms:453490, len:4 [00:07:33.511][Info]: [GATT_SERVER]ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE:conn_handle= 0050,att_handle= 0008

[+XLOG:[0 0:7:33.530][d][xpfles]indicate send, task:btstack, start@453490, complete@453530, elp:40 IPP$$$IPP[+XLOG:[#0 0:7:34.600][d][bleclnt]conn@449590 elp>5000, login tmo [00:07:34.617][BLE_TRANS]trans_disconnect [00:07:34.625][Info]: [GATT_COMM]>>>send disconnect= 0050

[+XLOG:[0 0:7:34.630][d][net]xpf les manual dis callback,set u32LoginTms=0 [+XLOG:[0 0:7:34.650][d][bleclnt]conn@449590 elp>5000, login tmo [00:07:34.668][BLE_TRANS]trans_disconnect [00:07:34.676][Info]: [GATT_COMM]>>>busy,wait disconnect= 0050

I [00:07:34.691]att disconn [00:07:34.696][Info]: [GATT_COMM]just_handle=0050,type= 0

PP [00:07:34.708][Info]: [GATT_SERVER]HCI_EVENT_DISCONNECTION_COMPLETE:conn_handle= 0050, reason= 16

[00:07:34.729][BLE_TRANS]disconnect_handle:0050,reason= 16

[00:07:34.741][BLE_TRANS]server_state: handle=50,05

[00:07:34.798][BLE_TRANS]server_state: handle=00,20

[00:07:34.810]init rf_osc:0 PLL_comp:0 [+XLOG:[0 0:7:34.820][d][net]xpf les manual dis callback,set u32LoginTms=0 [+XLOG:[0 0:7:34.830][d][xpfles]--->xpf les adv step [+XLOG:[0 0:7:34.840][d][xpfles]step 33->32 IPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPP [00:07:46.228][Info]: [GATT_SERVER]HCI_SUBEVENT_LE_CONNECTION_COMPLETE:conn_handle= 0050,rssi= -64

[00:07:46.248][Info]: [GATT_SERVER]conn_interval = 36

[00:07:46.259][Info]: [GATT_SERVER]conn_latency = 0

[00:07:46.269][Info]: [GATT_SERVER]conn_timeout = 500

[00:07:46.279][BLE_TRANS]connection_handle:0050

[00:07:46.288][BLE_TRANS]connection_handle:0050, rssi= -61

[00:07:46.300][BLE_TRANS]peer_address_info: 01 BC 55 99 22 39 61 [00:07:46.313][BLE_TRANS]con_interval = 36

[00:07:46.322][BLE_TRANS]con_latency = 0

[00:07:46.331][BLE_TRANS]cnn_timeout = 500

[00:07:46.341][BLE_TRANS]server_state: handle=50,03

[+XLOG:[0 0:7:46.360][d][xpfles]--->xpf les connect step, rssi:195/-128 [+XLOG:[0 0:7:46.380][d][xpfles]step 32->3 IPPIPP# [00:07:47.553][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:47.580][Info]: [GATT_SERVER]conn_update_handle = 0050

[00:07:47.593][Info]: [GATT_SERVER]conn_update_interval = 6

[00:07:47.604][Info]: [GATT_SERVER]conn_update_latency = 0

[00:07:47.616][Info]: [GATT_SERVER]conn_update_timeout = 500

[00:07:47.628][BLE_TRANS]conn_param update_complete:0050

[00:07:47.640][BLE_TRANS]update_interval = 6

[00:07:47.650][BLE_TRANS]update_latency = 0

[00:07:47.660][BLE_TRANS]update_timeout = 500 IPP# [00:07:47.912][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:47.938][Info]: [GATT_SERVER]conn_update_handle = 0050

[00:07:47.950][Info]: [GATT_SERVER]conn_update_interval = 36

[00:07:47.963][Info]: [GATT_SERVER]conn_update_latency = 0

[00:07:47.974][Info]: [GATT_SERVER]conn_update_timeout = 500

[00:07:47.986][BLE_TRANS]conn_param update_complete:0050

[00:07:47.997][BLE_TRANS]update_interval = 36

[00:07:48.007][BLE_TRANS]update_latency = 0

[00:07:48.017][BLE_TRANS]update_timeout = 500

[00:07:48.183][BLE_TRANS]write_callback,conn_handle =0050,att_handle =0009,trans_mode:0,buffer=00210a3b,size=2,offset:0 I [00:07:48.206][Info]: [GATT_SERVER]connection_update_request: 0050: -8-16-10-300-

P [00:07:48.222][BLE_TRANS] ------write ccc:0009,02 P [00:07:48.233][BLE_TRANS]server_state: handle=50,21

[00:07:48.244]gap send conn param 2222[+XLOG:[0 0:7:48.250][d][xpfles]--->xpf les notify indicate step, rssi:192/-128 [+XLOG:[0 0:7:48.260][d][xpfles]step 3->33 [00:07:48.407][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:48.419][Info]: [GATT_SERVER]-update_rsp:0050, 00

[00:07:48.430][Info]: [GATT_SERVER]remoter accept

IPP

[00:07:49.006][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:49.033][Info]: [GATT_SERVER]conn_update_handle = 0050

[00:07:49.045][Info]: [GATT_SERVER]conn_update_interval = 12

[00:07:49.057][Info]: [GATT_SERVER]conn_update_latency = 10

[00:07:49.069][Info]: [GATT_SERVER]conn_update_timeout = 300

$ [00:07:49.082][BLE_TRANS]conn_param update_complete:0050

[00:07:49.093][BLE_TRANS]update_interval = 12

[00:07:49.103][BLE_TRANS]update_latency = 10

[00:07:49.113][BLE_TRANS]update_timeout = 300 IPP$IPP$$$$ [00:07:50.161][BLE_TRANS]write_callback,conn_handle =0050,att_handle =0009,trans_mode:0,buffer=00210a3b,size=2,offset:0

[00:07:50.184][BLE_TRANS] ------write ccc:0009,02 IPP[+XLOG:[0 0:7:50.260][d][xpfles]tx data len=0 and should hb, ind send hbInfo [+XLOG:[0 0:7:50.280][d][xpfles]indicate send success, rslt:0, tms:470280, len:4 [00:07:50.312][Info]: [GATT_SERVER]ATT_EVENT_HANDLE_VALUE_INDICATION_COMPLETE:conn_handle= 0050,att_handle= 0008

[+XLOG:[0 0:7:50.330][d][xpfles]indicate send, task:btstack, start@470280, complete@470330, elp:50 IPPIPP[+XLOG:[0 0:7:51.370][d][bleclnt]conn@466360 elp>5000, login tmo [00:07:51.388][BLE_TRANS]trans_disconnect [00:07:51.396][Info]: [GATT_COMM]>>>send disconnect= 0050

$[+XLOG:[0 0:7:51.410][d][net]xpf les manual dis cal$lback,set u32LoginTms=0

[+XLOG:[0 0:7:51.420][d][bleclnt]conn@466360 elp>5000, login tmo [00:07:51.440][BLE_TRANS]trans_disconnect [00:07:51.448][Info]: [GATT_COMM]>>>busy,wait disconnect= 0050

[+XLOG:[0 0:7:51.46 [00:07:51.466]att disconn [00:07:51.471][Info]: [GATT_COMM]just_handle=0050,type= 0

[00:07:51.484][Info]: [GATT_SERVER]HCI_EVENT_DISCONNECTION_COMPLETE:conn_handle= 0050, reason= 16

[00:07:51.504][BLE_TRANS]disconnect_handle:0050,reason= 16

[00:07:51.517][BLE_TRANS]server_state: handle=50,05

[00:07:51.573][BLE_TRANS]server_state: handle=00,20

[00:07:51.586]init rf_osc:0 PLL_comp:0 0][d][net]xpf les manual dis callback,set u32LoginTms=0 [+XLOG:[0 0:7:51.600][d][xpfles]--->xpf les adv step [+XLOG:[0 0:7:51.610][d][xpfles]step 33->32 IPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPIPPI