Ver Fonte

component/bt: Fix bug of disconnected fail during pairing

baohongde há 8 anos atrás
pai
commit
1de63e9d90
1 ficheiros alterados com 7 adições e 3 exclusões
  1. 7 3
      components/bt/bluedroid/stack/smp/smp_l2c.c

+ 7 - 3
components/bt/bluedroid/stack/smp/smp_l2c.c

@@ -69,8 +69,12 @@ void smp_l2cap_if_init (void)
     fixed_reg.pL2CA_FixedTxComplete_Cb = smp_tx_complete_callback;
 
     fixed_reg.pL2CA_FixedCong_Cb = NULL;    /* do not handle congestion on this channel */
-    fixed_reg.default_idle_tout  = 60;      /* set 60 seconds timeout, 0xffff default idle timeout */
-
+    fixed_reg.default_idle_tout  = 0;       /* set 0 seconds timeout, 0xffff default idle timeout.
+                                            This timeout is used to wait for the end of the pairing
+                                            and then make a disconnect request, setting a larger value
+                                            will cause the disconnect event to go back up for a long time.
+                                            Set to 0 will be disconnected directly, and it will come up
+                                            pairing failure, so it will not cause adverse effects. */
     L2CA_RegisterFixedChannel (L2CAP_SMP_CID, &fixed_reg);
 #if (CLASSIC_BT_INCLUDED == TRUE)
     fixed_reg.pL2CA_FixedConn_Cb = smp_br_connect_callback;
@@ -158,7 +162,7 @@ static void smp_data_received(UINT16 channel, BD_ADDR bd_addr, BT_HDR *p_buf)
 
     /* reject the pairing request if there is an on-going SMP pairing */
     if (SMP_OPCODE_PAIRING_REQ == cmd || SMP_OPCODE_SEC_REQ == cmd) {
-        if ((p_cb->state == SMP_STATE_IDLE) && (p_cb->br_state == SMP_BR_STATE_IDLE) && 
+        if ((p_cb->state == SMP_STATE_IDLE) && (p_cb->br_state == SMP_BR_STATE_IDLE) &&
             !(p_cb->flags & SMP_PAIR_FLAGS_WE_STARTED_DD)) {
             p_cb->role = L2CA_GetBleConnRole(bd_addr);
             memcpy(&p_cb->pairing_bda[0], bd_addr, BD_ADDR_LEN);