Merge branch 'feature/disable_ble_service_change_pr1673' into 'master'

Add option to ena/dis BLE service change registration

See merge request idf/esp-idf!2210
This commit is contained in:
Angus Gratton 2018-04-23 09:15:02 +08:00
commit 088c73bd22
2 changed files with 17 additions and 6 deletions

View File

@ -34,7 +34,7 @@ choice BTDM_CONTROLLER_HCI_MODE_CHOICE
config BTDM_CONTROLLER_HCI_MODE_VHCI config BTDM_CONTROLLER_HCI_MODE_VHCI
bool "VHCI" bool "VHCI"
help help
Normal option. Mostly, choose this VHCI when bluetooth host run on ESP32, too. Normal option. Mostly, choose this VHCI when bluetooth host run on ESP32, too.
config BTDM_CONTROLLER_HCI_MODE_UART_H4 config BTDM_CONTROLLER_HCI_MODE_UART_H4
@ -119,7 +119,7 @@ config A2DP_ENABLE
default n default n
help help
Advanced Audio Distrubution Profile Advanced Audio Distrubution Profile
choice A2DP_ROLE choice A2DP_ROLE
prompt "A2DP ROLE config" prompt "A2DP ROLE config"
depends on A2DP_ENABLE depends on A2DP_ENABLE
@ -150,7 +150,7 @@ config BT_SPP_ENABLED
config GATTS_ENABLE config GATTS_ENABLE
bool "Include GATT server module(GATTS)" bool "Include GATT server module(GATTS)"
depends on BLUEDROID_ENABLED depends on BLUEDROID_ENABLED
default y default y
help help
This option can be disabled when the app work only on gatt client mode This option can be disabled when the app work only on gatt client mode
@ -168,6 +168,15 @@ config BLE_SMP_ENABLE
help help
This option can be close when the app not used the ble security connect. This option can be close when the app not used the ble security connect.
config BLE_ENABLE_SRVCHG_REG
bool "Enable automatic service change notify registration"
depends on BLUEDROID_ENABLED
default y
help
This option enables automatic registration of service change notification
after connect. Be careful, it can may collide with your command sequences
and lead to GATT_BUSY.
config BT_STACK_NO_LOG config BT_STACK_NO_LOG
bool "Close the bluedroid bt stack log print" bool "Close the bluedroid bt stack log print"
depends on BLUEDROID_ENABLED depends on BLUEDROID_ENABLED
@ -180,7 +189,7 @@ config BT_ACL_CONNECTIONS
depends on BLUEDROID_ENABLED depends on BLUEDROID_ENABLED
range 1 7 range 1 7
default 4 default 4
help help
Maximum BT/BLE connection count Maximum BT/BLE connection count
config BT_ALLOCATION_FROM_SPIRAM_FIRST config BT_ALLOCATION_FROM_SPIRAM_FIRST
@ -201,7 +210,7 @@ config SMP_ENABLE
bool bool
depends on BLUEDROID_ENABLED depends on BLUEDROID_ENABLED
default CLASSIC_BT_ENABLED || BLE_SMP_ENABLE default CLASSIC_BT_ENABLED || BLE_SMP_ENABLE
# Memory reserved at start of DRAM for Bluetooth stack # Memory reserved at start of DRAM for Bluetooth stack
config BT_RESERVE_DRAM config BT_RESERVE_DRAM
hex hex

View File

@ -1243,7 +1243,7 @@ void bta_gattc_read_cmpl(tBTA_GATTC_CLCB *p_clcb, tBTA_GATTC_OP_CMPL *p_data)
} else { } else {
cb_data.read.handle = p_clcb->p_q_cmd->api_read.handle; cb_data.read.handle = p_clcb->p_q_cmd->api_read.handle;
} }
if (p_clcb->p_q_cmd->hdr.event != BTA_GATTC_API_READ_MULTI_EVT) { if (p_clcb->p_q_cmd->hdr.event != BTA_GATTC_API_READ_MULTI_EVT) {
event = p_clcb->p_q_cmd->api_read.cmpl_evt; event = p_clcb->p_q_cmd->api_read.cmpl_evt;
} else { } else {
@ -1635,7 +1635,9 @@ static void bta_gattc_conn_cback(tGATT_IF gattc_if, BD_ADDR bda, UINT16 conn_id,
if ((transport == BT_TRANSPORT_LE) && (connected == TRUE) && (p_conn != NULL) \ if ((transport == BT_TRANSPORT_LE) && (connected == TRUE) && (p_conn != NULL) \
&& (p_conn->service_change_ccc_written == FALSE) && (p_conn->ccc_timer_used == FALSE)) { && (p_conn->service_change_ccc_written == FALSE) && (p_conn->ccc_timer_used == FALSE)) {
#ifdef CONFIG_BLE_ENABLE_SRVCHG_REG
result = bta_gattc_register_service_change_notify(conn_id, bda, &start_ccc_timer); result = bta_gattc_register_service_change_notify(conn_id, bda, &start_ccc_timer);
#endif
if (start_ccc_timer == TRUE) { if (start_ccc_timer == TRUE) {
TIMER_LIST_ENT *ccc_timer = &(p_conn->service_change_ccc_timer); TIMER_LIST_ENT *ccc_timer = &(p_conn->service_change_ccc_timer);
/* start a 1000ms timer to wait for service discovery finished */ /* start a 1000ms timer to wait for service discovery finished */