component/bt: fixed the discover primary service not correct if server changes service during disconnect period.

This commit is contained in:
Yulong 2017-05-16 09:10:37 -04:00
parent 1e0710f1b2
commit 00cdf62ce7
3 changed files with 26 additions and 1 deletions

View File

@ -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_gatt_status_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

View File

@ -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;

View File

@ -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);