diff --git a/examples/bluetooth/bluedroid/ble_50/ble_conn_subrating_central/main/main.c b/examples/bluetooth/bluedroid/ble_50/ble_conn_subrating_central/main/main.c index cebe3804e4..2eb6989bb9 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_conn_subrating_central/main/main.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_conn_subrating_central/main/main.c @@ -208,7 +208,11 @@ static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param creat_conn_params.phy_1m_conn_params = &phy_1m_conn_params; creat_conn_params.phy_2m_conn_params = &phy_2m_conn_params; creat_conn_params.phy_coded_conn_params = &phy_coded_conn_params; - esp_ble_gattc_enh_open(gl_profile_tab[PROFILE_A_APP_ID].gattc_if, &creat_conn_params); + if (esp_ble_gattc_enh_open(gl_profile_tab[PROFILE_A_APP_ID].gattc_if, &creat_conn_params) != ESP_OK) + { + connect = false; + ESP_LOGE(TAG, "Failed to open connection"); + } } } break; diff --git a/examples/bluetooth/bluedroid/ble_50/ble_conn_subrating_peripheral/main/main.c b/examples/bluetooth/bluedroid/ble_50/ble_conn_subrating_peripheral/main/main.c index d64e6ff259..355d6a5509 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_conn_subrating_peripheral/main/main.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_conn_subrating_peripheral/main/main.c @@ -51,8 +51,6 @@ } \ } while(0); -static uint16_t conn_handle = 0xFFFF; - uint16_t subrating_handle_table[SUBRATING_IDX_NB]; /* UUIDs */ @@ -249,7 +247,6 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ ESP_LOGI(TAG, "Connected, conn_id %u, remote "ESP_BD_ADDR_STR"", param->connect.conn_id, ESP_BD_ADDR_HEX(param->connect.remote_bda)); gl_profile_tab[PROFILE_A_APP_ID].conn_id = param->connect.conn_id; - conn_handle = param->connect.conn_id; esp_ble_conn_update_params_t conn_params = {0}; memcpy(conn_params.bda, param->connect.remote_bda, sizeof(esp_bd_addr_t)); @@ -267,7 +264,6 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ case ESP_GATTS_DISCONNECT_EVT: ESP_LOGI(TAG, "Disconnected, remote "ESP_BD_ADDR_STR", reason 0x%02x", ESP_BD_ADDR_HEX(param->disconnect.remote_bda), param->disconnect.reason); - conn_handle = 0xFFFF; // Restart extended advertising esp_ble_gap_ext_adv_start(NUM_EXT_ADV, ext_adv); break; diff --git a/examples/bluetooth/bluedroid/ble_50/ble_connection_central_with_cte/main/connection_central_with_cte.c b/examples/bluetooth/bluedroid/ble_50/ble_connection_central_with_cte/main/connection_central_with_cte.c index 985e517e43..a3346407f0 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_connection_central_with_cte/main/connection_central_with_cte.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_connection_central_with_cte/main/connection_central_with_cte.c @@ -316,6 +316,7 @@ static void gattc_profile_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_ ESP_BD_ADDR_HEX(p_data->disconnect.remote_bda), p_data->disconnect.reason); connect = false; get_service = false; + esp_ble_gap_start_ext_scan(EXT_SCAN_DURATION, EXT_SCAN_PERIOD); break; default: break; @@ -476,7 +477,7 @@ static void cte_event_handler(esp_ble_cte_cb_event_t event, esp_ble_cte_cb_param param->conn_iq_rpt.pkt_status, param->conn_iq_rpt.conn_evt_counter, param->conn_iq_rpt.sample_count); ESP_LOG_BUFFER_HEX("i_sample", ¶m->conn_iq_rpt.i_sample[0], param->conn_iq_rpt.sample_count); - ESP_LOG_BUFFER_HEX("q_sample", ¶m->conn_iq_rpt.i_sample[0], param->conn_iq_rpt.sample_count); + ESP_LOG_BUFFER_HEX("q_sample", ¶m->conn_iq_rpt.q_sample[0], param->conn_iq_rpt.sample_count); break; case ESP_BLE_CTE_REQUEST_FAILED_EVT: ESP_LOGI(LOG_TAG, "CTE connection request failed, conn_handle %d reason 0x%x", param->req_failed_evt.conn_handle, param->req_failed_evt.reason); diff --git a/examples/bluetooth/bluedroid/ble_50/ble_pawr_advertiser_conn/main/main.c b/examples/bluetooth/bluedroid/ble_50/ble_pawr_advertiser_conn/main/main.c index d6ba479011..23e7e7b465 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_pawr_advertiser_conn/main/main.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_pawr_advertiser_conn/main/main.c @@ -371,6 +371,7 @@ static void gattc_profile_event_handler(esp_gattc_cb_event_t event, esp_gatt_if_ } case ESP_GATTC_OPEN_EVT: if (p_data->open.status != ESP_GATT_OK) { + is_connected = false; ESP_LOGE(TAG, "GATTC open failed, status %d", p_data->open.status); break; } diff --git a/examples/bluetooth/bluedroid/ble_50/ble_pawr_synchronizer/main/ble_pawr_synchronizer_demo.c b/examples/bluetooth/bluedroid/ble_50/ble_pawr_synchronizer/main/ble_pawr_synchronizer_demo.c index 91e3ef2dcb..e6d1b44e37 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_pawr_synchronizer/main/ble_pawr_synchronizer_demo.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_pawr_synchronizer/main/ble_pawr_synchronizer_demo.c @@ -182,18 +182,28 @@ static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param break; case ESP_GAP_BLE_PERIODIC_ADV_CREATE_SYNC_COMPLETE_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising create sync, status %d", param->period_adv_create_sync.status); + if (param->period_adv_create_sync.status != ESP_BT_STATUS_SUCCESS) { + periodic_sync = false; + } break; case ESP_GAP_BLE_PERIODIC_ADV_SYNC_CANCEL_COMPLETE_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising sync cancel, status %d", param->period_adv_sync_cancel.status); + periodic_sync = false; break; case ESP_GAP_BLE_PERIODIC_ADV_SYNC_TERMINATE_COMPLETE_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising sync terminate, status %d", param->period_adv_sync_term.status); + periodic_sync = false; break; case ESP_GAP_BLE_PERIODIC_ADV_SYNC_LOST_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising sync lost, sync handle %d", param->periodic_adv_sync_lost.sync_handle); + periodic_sync = false; break; case ESP_GAP_BLE_PERIODIC_ADV_SYNC_ESTAB_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising sync establish, status %d", param->periodic_adv_sync_estab.status); + if (param->periodic_adv_sync_estab.status != ESP_BT_STATUS_SUCCESS) { + periodic_sync = false; + break; + } ESP_LOGI(LOG_TAG, "address "ESP_BD_ADDR_STR"", ESP_BD_ADDR_HEX(param->periodic_adv_sync_estab.adv_addr)); ESP_LOGI(LOG_TAG, "sync handle %d sid %d perioic adv interval %d adv phy %d", param->periodic_adv_sync_estab.sync_handle, param->periodic_adv_sync_estab.sid, diff --git a/examples/bluetooth/bluedroid/ble_50/ble_periodic_adv_with_cte/main/periodic_adv_with_cte_demo.c b/examples/bluetooth/bluedroid/ble_50/ble_periodic_adv_with_cte/main/periodic_adv_with_cte_demo.c index 52f5221530..af7019f728 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_periodic_adv_with_cte/main/periodic_adv_with_cte_demo.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_periodic_adv_with_cte/main/periodic_adv_with_cte_demo.c @@ -224,7 +224,11 @@ void app_main(void) return; } - esp_ble_cte_register_callback(cte_event_handler); + ret = esp_ble_cte_register_callback(cte_event_handler); + if (ret != ESP_OK) { + ESP_LOGE(LOG_TAG, "CTE register error, error code = %x", ret); + return; + } vTaskDelay(200 / portTICK_PERIOD_MS); diff --git a/examples/bluetooth/bluedroid/ble_50/ble_periodic_sync_with_cte/main/periodic_sync_with_cte_demo.c b/examples/bluetooth/bluedroid/ble_50/ble_periodic_sync_with_cte/main/periodic_sync_with_cte_demo.c index 78252ad22e..d1cea760bd 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_periodic_sync_with_cte/main/periodic_sync_with_cte_demo.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_periodic_sync_with_cte/main/periodic_sync_with_cte_demo.c @@ -99,18 +99,28 @@ static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param break; case ESP_GAP_BLE_PERIODIC_ADV_CREATE_SYNC_COMPLETE_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising create sync, status %d", param->period_adv_create_sync.status); + if (param->period_adv_create_sync.status != ESP_BT_STATUS_SUCCESS) { + periodic_sync = false; + } break; case ESP_GAP_BLE_PERIODIC_ADV_SYNC_CANCEL_COMPLETE_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising sync cancel, status %d", param->period_adv_sync_cancel.status); + periodic_sync = false; break; case ESP_GAP_BLE_PERIODIC_ADV_SYNC_TERMINATE_COMPLETE_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising sync terminate, status %d", param->period_adv_sync_term.status); + periodic_sync = false; break; case ESP_GAP_BLE_PERIODIC_ADV_SYNC_LOST_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising sync lost, sync handle %d", param->periodic_adv_sync_lost.sync_handle); + periodic_sync = false; break; case ESP_GAP_BLE_PERIODIC_ADV_SYNC_ESTAB_EVT: ESP_LOGI(LOG_TAG, "Periodic advertising sync establish, status %d", param->periodic_adv_sync_estab.status); + if (param->periodic_adv_sync_estab.status != ESP_BT_STATUS_SUCCESS) { + periodic_sync = false; + break; + } ESP_LOGI(LOG_TAG, "address "ESP_BD_ADDR_STR"", ESP_BD_ADDR_HEX(param->periodic_adv_sync_estab.adv_addr)); ESP_LOGI(LOG_TAG, "sync handle %d sid %d perioic adv interval %d adv phy %d", param->periodic_adv_sync_estab.sync_handle, param->periodic_adv_sync_estab.sid, @@ -136,7 +146,9 @@ static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param periodic_adv_sync_params.sid = param->ext_adv_report.params.sid; periodic_adv_sync_params.addr_type = param->ext_adv_report.params.addr_type; memcpy(periodic_adv_sync_params.addr, param->ext_adv_report.params.addr, sizeof(esp_bd_addr_t)); - esp_ble_gap_periodic_adv_create_sync(&periodic_adv_sync_params); + if (esp_ble_gap_periodic_adv_create_sync(&periodic_adv_sync_params) != ESP_OK) { + periodic_sync = false; + } } } break; diff --git a/examples/bluetooth/bluedroid/ble_50/ble_power_control_central/main/main.c b/examples/bluetooth/bluedroid/ble_50/ble_power_control_central/main/main.c index 1d7da9af71..383dc270db 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_power_control_central/main/main.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_power_control_central/main/main.c @@ -249,7 +249,11 @@ static void gap_event_handler(esp_gap_ble_cb_event_t event, esp_ble_gap_cb_param creat_conn_params.phy_1m_conn_params = &phy_1m_conn_params; creat_conn_params.phy_2m_conn_params = &phy_2m_conn_params; creat_conn_params.phy_coded_conn_params = &phy_coded_conn_params; - esp_ble_gattc_enh_open(gl_profile_tab[PROFILE_A_APP_ID].gattc_if, &creat_conn_params); + if (esp_ble_gattc_enh_open(gl_profile_tab[PROFILE_A_APP_ID].gattc_if, &creat_conn_params) != ESP_OK) { + ESP_LOGE(TAG, "open failed, restart scan"); + connect = false; + esp_ble_gap_start_ext_scan(0, 0); + } } } } diff --git a/examples/bluetooth/bluedroid/ble_50/ble_power_control_peripheral/main/main.c b/examples/bluetooth/bluedroid/ble_50/ble_power_control_peripheral/main/main.c index df5fb01772..16b493d195 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_power_control_peripheral/main/main.c +++ b/examples/bluetooth/bluedroid/ble_50/ble_power_control_peripheral/main/main.c @@ -63,7 +63,7 @@ static const uint16_t character_declaration_uuid = ESP_GATT_UUID_CHAR_DECLARE; /* Service UUID - must be a variable, not a macro, to take address */ static const uint16_t power_control_service_uuid = BLE_UUID_POWER_CONTROL_SERVICE_VAL; -static const uint16_t power_level_char_uuid = BLE_UUID_POWER_CONTROL_SERVICE_VAL; +static const uint16_t power_level_char_uuid = BLE_UUID_POWER_LEVEL_CHAR_UUID; /* Characteristic properties */ static const uint8_t char_prop_read = ESP_GATT_CHAR_PROP_BIT_READ; @@ -280,7 +280,7 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ ESP_LOGI(TAG, "Connected, conn_id %u, remote "ESP_BD_ADDR_STR"", param->connect.conn_id, ESP_BD_ADDR_HEX(param->connect.remote_bda)); gl_profile_tab[PROFILE_A_APP_ID].conn_id = param->connect.conn_id; - conn_handle = param->connect.conn_id; + conn_handle = param->connect.conn_handle; esp_ble_conn_update_params_t conn_params = {0}; memcpy(conn_params.bda, param->connect.remote_bda, sizeof(esp_bd_addr_t)); @@ -302,7 +302,10 @@ static void gatts_profile_event_handler(esp_gatts_cb_event_t event, esp_gatt_if_ ESP_BD_ADDR_HEX(param->disconnect.remote_bda), param->disconnect.reason); conn_handle = 0xFFFF; // Restart extended advertising - FUNC_SEND_WAIT_SEM(esp_ble_gap_ext_adv_start(NUM_EXT_ADV, ext_adv), test_sem); + esp_err_t ret = esp_ble_gap_ext_adv_start(NUM_EXT_ADV, ext_adv); + if (ret != ESP_OK) { + ESP_LOGE(TAG, "Failed to restart advertising, error = %d", ret); + } break; case ESP_GATTS_READ_EVT: ESP_LOGI(TAG, "Read event, handle %d", param->read.handle); @@ -408,11 +411,6 @@ void app_main(void) // Create semaphore for extended advertising test_sem = xSemaphoreCreateBinary(); - // Start extended advertising - esp_bd_addr_t addr; - esp_ble_gap_addr_create_static(addr); - ESP_LOGI(TAG, "Device Address: "ESP_BD_ADDR_STR"", ESP_BD_ADDR_HEX(addr)); - // Set extended advertising parameters FUNC_SEND_WAIT_SEM(esp_ble_gap_ext_adv_set_params(EXT_ADV_HANDLE, &ext_adv_params), test_sem); diff --git a/examples/bluetooth/bluedroid/ble_50/ble_power_control_peripheral/main/power_control_service.h b/examples/bluetooth/bluedroid/ble_50/ble_power_control_peripheral/main/power_control_service.h index 5a3ac10ed9..1a85d014b7 100644 --- a/examples/bluetooth/bluedroid/ble_50/ble_power_control_peripheral/main/power_control_service.h +++ b/examples/bluetooth/bluedroid/ble_50/ble_power_control_peripheral/main/power_control_service.h @@ -11,6 +11,8 @@ /* Power Control Service UUIDs */ #define BLE_UUID_POWER_CONTROL_SERVICE_VAL 0xFF01 +#define BLE_UUID_POWER_LEVEL_CHAR_UUID 0xFF02 + /* Attributes State Machine */ enum { IDX_POWER_CONTROL_SVC,