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