Skip to content

Navigation Menu

Sign in
Appearance settings

Search code, repositories, users, issues, pull requests...

Provide feedback

We read every piece of feedback, and take your input very seriously.

Saved searches

Use saved searches to filter your results more quickly

Appearance settings

Commit cec3fca

Browse filesBrowse files
rgot-orgme-no-dev
authored andcommitted
Fix BluetoothSerial crash when restart (#3471)
* Update esp32-hal-bt.c BluetoothSerial crash when restart: this is because the BT controller remains in state ESP_BT_CONTROLLER_STATUS_INITED instead of state ESP_BT_CONTROLLER_STATUS_IDLE after the end() method. in file esp_bt.h it is specified > @brief Enable BT controller. > Due to a known issue, you cannot call esp_bt_controller_enable() a second time > to change the controller mode dynamically. To change controller mode, call > esp_bt_controller_disable() and then call esp_bt_controller_enable() with the new mode. after **esp_bt_controller_disable()** the controller remains in state INITED so we do call the **esp_bt_controller_deinit()** function to put the controller into state IDLE. i have modified the **esp32-hal-bt.c** file line 57 and next (i have insert the esp_bt_controller_deinit() function so the controller go into Idle state) ```c++ bool btStop(){ if(esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_IDLE){ log_i("bt stopped"); return true; } if(esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_ENABLED){ log_i("bt enabled"); if (esp_bt_controller_disable()) { log_e("BT Disable failed"); return false; } while(esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_ENABLED); } if(esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_INITED){ log_i("inited"); if (esp_bt_controller_deinit()) { log_e("BT deint failed"); return false; } while (esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_INITED); return true; } log_e("BT Stop failed"); return false; } ``` * Update esp32-hal-bt.c remove while to avoid infinite loop
1 parent dac493f commit cec3fca
Copy full SHA for cec3fca

File tree

Expand file treeCollapse file tree

1 file changed

+8
-0
lines changed
Filter options
Expand file treeCollapse file tree

1 file changed

+8
-0
lines changed

‎cores/esp32/esp32-hal-bt.c

Copy file name to clipboardExpand all lines: cores/esp32/esp32-hal-bt.c
+8Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -65,6 +65,14 @@ bool btStop(){
6565
while(esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_ENABLED);
6666
}
6767
if(esp_bt_controller_get_status() == ESP_BT_CONTROLLER_STATUS_INITED){
68+
if (esp_bt_controller_deinit()) {
69+
log_e("BT deint failed");
70+
return false;
71+
}
72+
vTaskDelay(1);
73+
if (esp_bt_controller_get_status() != ESP_BT_CONTROLLER_STATUS_IDLE) {
74+
return false;
75+
}
6876
return true;
6977
}
7078
log_e("BT Stop failed");

0 commit comments

Comments
0 (0)
Morty Proxy This is a proxified and sanitized view of the page, visit original site.