mirror of
https://github.com/espressif/esp-idf.git
synced 2025-08-02 12:14:32 +02:00
Merge branch 'bugfix/btdm_gattc_discover_refresh_cache_#11077' into 'master'
component/bt: fixed the discover primary service not correct if server changes s… …ervice during disconnect period. See merge request !761
This commit is contained in:
@@ -482,5 +482,22 @@ esp_gatt_status_t esp_ble_gattc_unregister_for_notify (esp_gatt_if_t gattc_if,
|
|||||||
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
|
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
esp_err_t esp_ble_gattc_cache_refresh(esp_bd_addr_t remote_bda)
|
||||||
|
{
|
||||||
|
btc_msg_t msg;
|
||||||
|
btc_ble_gattc_args_t arg;
|
||||||
|
|
||||||
|
if (esp_bluedroid_get_status() != ESP_BLUEDROID_STATUS_ENABLED) {
|
||||||
|
return ESP_ERR_INVALID_STATE;
|
||||||
|
}
|
||||||
|
|
||||||
|
msg.sig = BTC_SIG_API_CALL;
|
||||||
|
msg.pid = BTC_PID_GATTC;
|
||||||
|
msg.act = BTC_GATTC_ACT_CACHE_REFRESH;
|
||||||
|
memcpy(arg.cache_refresh.remote_bda, remote_bda, sizeof(esp_bd_addr_t));
|
||||||
|
|
||||||
|
return (btc_transfer_context(&msg, &arg, sizeof(btc_ble_gattc_args_t), NULL) == BT_STATUS_SUCCESS ? ESP_OK : ESP_FAIL);
|
||||||
|
}
|
||||||
|
|
||||||
#endif ///GATTC_INCLUDED == TRUE
|
#endif ///GATTC_INCLUDED == TRUE
|
||||||
|
|
||||||
|
@@ -629,6 +629,19 @@ esp_gatt_status_t esp_ble_gattc_unregister_for_notify (esp_gatt_if_t gattc_if,
|
|||||||
esp_gatt_srvc_id_t *srvc_id,
|
esp_gatt_srvc_id_t *srvc_id,
|
||||||
esp_gatt_id_t *char_id);
|
esp_gatt_id_t *char_id);
|
||||||
|
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @brief Refresh the server cache store in the gattc stack of the remote device
|
||||||
|
*
|
||||||
|
* @param[in] remote_bda: remote device BD address.
|
||||||
|
*
|
||||||
|
* @return
|
||||||
|
* - ESP_OK: success
|
||||||
|
* - other: failed
|
||||||
|
*
|
||||||
|
*/
|
||||||
|
esp_err_t esp_ble_gattc_cache_refresh(esp_bd_addr_t remote_bda);
|
||||||
|
|
||||||
#ifdef __cplusplus
|
#ifdef __cplusplus
|
||||||
}
|
}
|
||||||
#endif
|
#endif
|
||||||
|
@@ -551,6 +551,9 @@ void btc_gattc_call_handler(btc_msg_t *msg)
|
|||||||
case BTC_GATTC_ACT_UNREG_FOR_NOTIFY:
|
case BTC_GATTC_ACT_UNREG_FOR_NOTIFY:
|
||||||
btc_gattc_unreg_for_notify(arg);
|
btc_gattc_unreg_for_notify(arg);
|
||||||
break;
|
break;
|
||||||
|
case BTC_GATTC_ACT_CACHE_REFRESH:
|
||||||
|
BTA_GATTC_Refresh(arg->cache_refresh.remote_bda);
|
||||||
|
break;
|
||||||
default:
|
default:
|
||||||
LOG_ERROR("%s: Unhandled event (%d)!\n", __FUNCTION__, msg->act);
|
LOG_ERROR("%s: Unhandled event (%d)!\n", __FUNCTION__, msg->act);
|
||||||
break;
|
break;
|
||||||
|
@@ -41,7 +41,8 @@ typedef enum {
|
|||||||
BTC_GATTC_ACT_PREPARE_WRITE_CHAR_DESCR,
|
BTC_GATTC_ACT_PREPARE_WRITE_CHAR_DESCR,
|
||||||
BTC_GATTC_ACT_EXECUTE_WRITE,
|
BTC_GATTC_ACT_EXECUTE_WRITE,
|
||||||
BTC_GATTC_ACT_REG_FOR_NOTIFY,
|
BTC_GATTC_ACT_REG_FOR_NOTIFY,
|
||||||
BTC_GATTC_ACT_UNREG_FOR_NOTIFY
|
BTC_GATTC_ACT_UNREG_FOR_NOTIFY,
|
||||||
|
BTC_GATTC_ACT_CACHE_REFRESH,
|
||||||
} btc_gattc_act_t;
|
} btc_gattc_act_t;
|
||||||
|
|
||||||
/* btc_ble_gattc_args_t */
|
/* btc_ble_gattc_args_t */
|
||||||
@@ -186,6 +187,10 @@ typedef union {
|
|||||||
esp_gatt_srvc_id_t service_id;
|
esp_gatt_srvc_id_t service_id;
|
||||||
esp_gatt_id_t char_id;
|
esp_gatt_id_t char_id;
|
||||||
} unreg_for_notify;
|
} unreg_for_notify;
|
||||||
|
//BTC_GATTC_ACT_CACHE_REFRESH,
|
||||||
|
struct cache_refresh_arg {
|
||||||
|
esp_bd_addr_t remote_bda;
|
||||||
|
} cache_refresh;
|
||||||
} btc_ble_gattc_args_t;
|
} btc_ble_gattc_args_t;
|
||||||
|
|
||||||
void btc_gattc_call_handler(btc_msg_t *msg);
|
void btc_gattc_call_handler(btc_msg_t *msg);
|
||||||
|
Reference in New Issue
Block a user