From 82a80005b9ade531a385a77daa9d16ac5390c6fd Mon Sep 17 00:00:00 2001 From: Hrishikesh Dhayagude Date: Wed, 3 Apr 2019 15:45:34 +0530 Subject: [PATCH] Unified Provisioning: Miscellaneous fixes in BLE 1. Pass the correct conn_id to protocomm_req_handle In transport_simple_ble_write(), passing param->exec_write.conn_id would be invalid. Instead param->write.conn_id should be passed Similar change in transport_simple_ble_exec_write() to use param->exec_write.conn_id 2. simple_ble_start() assumes that the mode is BLE only and enables Bluetooth controller accordingly. For, cases having BT + BLE like Alexa (Provisioning over BLE + Audio over classic BT), this assumption should be removed. --- components/protocomm/src/simple_ble/simple_ble.c | 7 +++++++ components/protocomm/src/transports/protocomm_ble.c | 4 ++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/components/protocomm/src/simple_ble/simple_ble.c b/components/protocomm/src/simple_ble/simple_ble.c index f29f1a348..61f65021b 100644 --- a/components/protocomm/src/simple_ble/simple_ble.c +++ b/components/protocomm/src/simple_ble/simple_ble.c @@ -189,7 +189,14 @@ esp_err_t simple_ble_start(simple_ble_cfg_t *cfg) return ret; } +#ifdef CONFIG_BTDM_CONTROLLER_MODE_BTDM + ret = esp_bt_controller_enable(ESP_BT_MODE_BTDM); +#elif defined CONFIG_BTDM_CONTROLLER_MODE_BLE_ONLY ret = esp_bt_controller_enable(ESP_BT_MODE_BLE); +#else + ESP_LOGE(TAG, "Configuration mismatch. Select BLE Only or BTDM mode from menuconfig"); + return ESP_FAIL; +#endif if (ret) { ESP_LOGE(TAG, "%s enable controller failed %d", __func__, ret); return ret; diff --git a/components/protocomm/src/transports/protocomm_ble.c b/components/protocomm/src/transports/protocomm_ble.c index 3a1f11287..5e65aa95d 100644 --- a/components/protocomm/src/transports/protocomm_ble.c +++ b/components/protocomm/src/transports/protocomm_ble.c @@ -201,7 +201,7 @@ static void transport_simple_ble_write(esp_gatts_cb_event_t event, esp_gatt_if_t ret = protocomm_req_handle(protoble_internal->pc_ble, handle_to_handler(param->write.handle), - param->exec_write.conn_id, + param->write.conn_id, param->write.value, param->write.len, &outbuf, &outlen); @@ -246,7 +246,7 @@ static void transport_simple_ble_exec_write(esp_gatts_cb_event_t event, esp_gatt if (err != ESP_OK) { ESP_LOGE(TAG, "Invalid content received, killing connection"); - esp_ble_gatts_close(gatts_if, param->write.conn_id); + esp_ble_gatts_close(gatts_if, param->exec_write.conn_id); } else { hexdump("Response from exec write", outbuf, outlen); esp_ble_gatts_set_attr_value(prepare_write_env.handle, outlen, outbuf);