Page 1 of 1

idf 4.3.1蓝牙驱动函数代码报错, 写的极不合理

Posted: Fri Dec 03, 2021 7:26 am
by fland@126.com
编译出错:
D:/ESP32/esp-idf-4.3.1/components/bt/host/bluedroid/stack/smp/smp_act.c: In function 'smp_fast_conn_param':
D:/ESP32/esp-idf-4.3.1/components/bt/host/bluedroid/stack/smp/smp_act.c:1548:5: error: 'else' without a previous 'if'
else {
^~~~

检查源代码是下面这样的,看来这个程序员水平不咋的。
  1. /*******************************************************************************
  2. ** Function     smp_fast_conn_param
  3. ** Description  apply default connection parameter for pairing process
  4. *******************************************************************************/
  5. void smp_fast_conn_param(tSMP_CB *p_cb, tSMP_INT_DATA *p_data)
  6. {
  7. #if (BT_MULTI_CONNECTION_ENBALE == FALSE)
  8.     if(p_cb->role == BTM_ROLE_MASTER) {
  9.         L2CA_EnableUpdateBleConnParams(p_cb->pairing_bda, FALSE);
  10.     }
  11. #endif
  12. #if (SMP_SLAVE_CON_PARAMS_UPD_ENABLE == TRUE)
  13.     else {
  14.         tBTM_SEC_DEV_REC    *p_rec = btm_find_dev (p_cb->pairing_bda);
  15.         if(p_rec && p_rec->ble.skip_update_conn_param) {
  16.             //do nothing
  17.             return;
  18.         }
  19.         /* Disable L2CAP connection parameter updates while bonding since
  20.         some peripherals are not able to revert to fast connection parameters
  21.         during the start of service discovery. Connection paramter updates
  22.         get enabled again once service discovery completes. */
  23.         #if (BT_MULTI_CONNECTION_ENBALE == FALSE)
  24.         L2CA_EnableUpdateBleConnParams(p_cb->pairing_bda, FALSE);
  25.         #endif
  26.     }
  27. #endif
  28. }

Re: idf 4.3.1蓝牙驱动函数代码报错, 写的极不合理

Posted: Fri Dec 03, 2021 8:23 am
by fland@126.com
应该这样:
  1. void smp_fast_conn_param(tSMP_CB *p_cb, tSMP_INT_DATA *p_data)
  2. {
  3. #if (BT_MULTI_CONNECTION_ENBALE == FALSE)
  4.     if(p_cb->role == BTM_ROLE_MASTER) {
  5.         L2CA_EnableUpdateBleConnParams(p_cb->pairing_bda, FALSE);
  6.     }
  7. #if (SMP_SLAVE_CON_PARAMS_UPD_ENABLE == TRUE)
  8.     else {
  9.         tBTM_SEC_DEV_REC    *p_rec = btm_find_dev (p_cb->pairing_bda);
  10.         if(p_rec && p_rec->ble.skip_update_conn_param) {
  11.             //do nothing
  12.             return;
  13.         }
  14.         /* Disable L2CAP connection parameter updates while bonding since
  15.         some peripherals are not able to revert to fast connection parameters
  16.         during the start of service discovery. Connection paramter updates
  17.         get enabled again once service discovery completes. */
  18.         #if (BT_MULTI_CONNECTION_ENBALE == FALSE)
  19.         L2CA_EnableUpdateBleConnParams(p_cb->pairing_bda, FALSE);
  20.         #endif
  21.     }
  22. #endif
  23. #endif
  24. }

Re: idf 4.3.1蓝牙驱动函数代码报错, 写的极不合理

Posted: Fri Dec 03, 2021 10:04 am
by ESP_ICY
感谢指正,请把这个问题反馈在https://github.com/espressif/esp-idf/issues