@@ -116,12 +116,47 @@ static size_t hex_string_to_binary(const char * hex_string, uint8_t * buf, size_
116
116
117
117
void Esp32AppServer::DeInitBLEIfCommissioned (void )
118
118
{
119
- #ifdef CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING
119
+ #if CONFIG_BT_ENABLED && CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING
120
120
if (chip::Server::GetInstance ().GetFabricTable ().FabricCount () > 0 )
121
121
{
122
- chip::DeviceLayer::Internal::BLEMgr ().Shutdown ();
122
+ esp_err_t err = ESP_OK;
123
+
124
+ #if CONFIG_BT_NIMBLE_ENABLED
125
+ if (!ble_hs_is_enabled ())
126
+ {
127
+ ESP_LOGI (TAG, " BLE already deinited" );
128
+ return ;
129
+ }
130
+ if (nimble_port_stop () != 0 )
131
+ {
132
+ ESP_LOGE (TAG, " nimble_port_stop() failed" );
133
+ return ;
134
+ }
135
+ vTaskDelay (100 );
136
+ nimble_port_deinit ();
137
+
138
+ #if ESP_IDF_VERSION < ESP_IDF_VERSION_VAL(5, 0, 0)
139
+ err = esp_nimble_hci_and_controller_deinit ();
140
+ #endif
141
+ #endif /* CONFIG_BT_NIMBLE_ENABLED */
142
+
143
+ #if CONFIG_IDF_TARGET_ESP32
144
+ err |= esp_bt_mem_release (ESP_BT_MODE_BTDM);
145
+ #elif CONFIG_IDF_TARGET_ESP32C2 || CONFIG_IDF_TARGET_ESP32C3 || CONFIG_IDF_TARGET_ESP32S3 || CONFIG_IDF_TARGET_ESP32H2 || \
146
+ CONFIG_IDF_TARGET_ESP32C6
147
+ err |= esp_bt_mem_release (ESP_BT_MODE_BLE);
148
+ #endif
149
+
150
+ if (err != ESP_OK)
151
+ {
152
+ ESP_LOGE (TAG, " BLE deinit failed" );
153
+ }
154
+ else
155
+ {
156
+ ESP_LOGI (TAG, " BLE deinit successful and memory reclaimed" );
157
+ }
123
158
}
124
- #endif /* CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING */
159
+ #endif /* CONFIG_BT_ENABLED && CONFIG_USE_BLE_ONLY_FOR_COMMISSIONING */
125
160
}
126
161
127
162
void Esp32AppServer::Init (AppDelegate * sAppDelegate )
@@ -132,7 +167,7 @@ void Esp32AppServer::Init(AppDelegate * sAppDelegate)
132
167
if (hex_string_to_binary (CONFIG_TEST_EVENT_TRIGGER_ENABLE_KEY, sTestEventTriggerEnableKey ,
133
168
sizeof (sTestEventTriggerEnableKey )) == 0 )
134
169
{
135
- ChipLogError (DeviceLayer , " Failed to convert the EnableKey string to octstr type value" );
170
+ ESP_LOGE (TAG , " Failed to convert the EnableKey string to octstr type value" );
136
171
memset (sTestEventTriggerEnableKey , 0 , sizeof (sTestEventTriggerEnableKey ));
137
172
}
138
173
static SimpleTestEventTriggerDelegate sTestEventTriggerDelegate {};
@@ -159,7 +194,7 @@ void Esp32AppServer::Init(AppDelegate * sAppDelegate)
159
194
if (chip::DeviceLayer::ConnectivityMgr ().IsThreadProvisioned () &&
160
195
(chip::Server::GetInstance ().GetFabricTable ().FabricCount () != 0 ))
161
196
{
162
- ChipLogProgress (DeviceLayer , " Thread has been provisioned, publish the dns service now" );
197
+ ESP_LOGI (TAG , " Thread has been provisioned, publish the dns service now" );
163
198
chip::app::DnssdServer::Instance ().StartServer ();
164
199
}
165
200
#endif
0 commit comments