mirror of
https://github.com/h2zero/esp-nimble-cpp.git
synced 2024-11-24 14:10:55 +01:00
fix(NimBLEDevice): clear all before port_deinit to prevent crash
This commit is contained in:
parent
91210b8610
commit
73f0277042
1 changed files with 31 additions and 31 deletions
|
@ -920,6 +920,36 @@ void NimBLEDevice::init(const std::string &deviceName) {
|
||||||
*/
|
*/
|
||||||
/* STATIC */
|
/* STATIC */
|
||||||
void NimBLEDevice::deinit(bool clearAll) {
|
void NimBLEDevice::deinit(bool clearAll) {
|
||||||
|
if(clearAll) {
|
||||||
|
#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
||||||
|
if(NimBLEDevice::m_pServer != nullptr) {
|
||||||
|
delete NimBLEDevice::m_pServer;
|
||||||
|
NimBLEDevice::m_pServer = nullptr;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER)
|
||||||
|
if(NimBLEDevice::m_bleAdvertising != nullptr) {
|
||||||
|
delete NimBLEDevice::m_bleAdvertising;
|
||||||
|
NimBLEDevice::m_bleAdvertising = nullptr;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER)
|
||||||
|
if(NimBLEDevice::m_pScan != nullptr) {
|
||||||
|
delete NimBLEDevice::m_pScan;
|
||||||
|
NimBLEDevice::m_pScan= nullptr;
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
|
||||||
|
#if defined( CONFIG_BT_NIMBLE_ROLE_CENTRAL)
|
||||||
|
for(auto clt : m_pClients) {
|
||||||
|
deleteClient(clt);
|
||||||
|
}
|
||||||
|
#endif
|
||||||
|
m_ignoreList.clear();
|
||||||
|
}
|
||||||
|
|
||||||
int ret = nimble_port_stop();
|
int ret = nimble_port_stop();
|
||||||
if (ret == 0) {
|
if (ret == 0) {
|
||||||
nimble_port_deinit();
|
nimble_port_deinit();
|
||||||
|
@ -933,36 +963,6 @@ void NimBLEDevice::deinit(bool clearAll) {
|
||||||
#endif
|
#endif
|
||||||
initialized = false;
|
initialized = false;
|
||||||
m_synced = false;
|
m_synced = false;
|
||||||
|
|
||||||
if(clearAll) {
|
|
||||||
#if defined(CONFIG_BT_NIMBLE_ROLE_PERIPHERAL)
|
|
||||||
if(NimBLEDevice::m_pServer != nullptr) {
|
|
||||||
delete NimBLEDevice::m_pServer;
|
|
||||||
NimBLEDevice::m_pServer = nullptr;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_BT_NIMBLE_ROLE_BROADCASTER)
|
|
||||||
if(NimBLEDevice::m_bleAdvertising != nullptr) {
|
|
||||||
delete NimBLEDevice::m_bleAdvertising;
|
|
||||||
NimBLEDevice::m_bleAdvertising = nullptr;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined(CONFIG_BT_NIMBLE_ROLE_OBSERVER)
|
|
||||||
if(NimBLEDevice::m_pScan != nullptr) {
|
|
||||||
delete NimBLEDevice::m_pScan;
|
|
||||||
NimBLEDevice::m_pScan= nullptr;
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
|
|
||||||
#if defined( CONFIG_BT_NIMBLE_ROLE_CENTRAL)
|
|
||||||
for(auto clt : m_pClients) {
|
|
||||||
deleteClient(clt);
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
m_ignoreList.clear();
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
} // deinit
|
} // deinit
|
||||||
|
|
||||||
|
@ -1243,4 +1243,4 @@ void nimble_cpp_assert(const char *file, unsigned line) {
|
||||||
}
|
}
|
||||||
#endif // CONFIG_NIMBLE_CPP_DEBUG_ASSERT_ENABLED
|
#endif // CONFIG_NIMBLE_CPP_DEBUG_ASSERT_ENABLED
|
||||||
|
|
||||||
#endif // CONFIG_BT_ENABLED
|
#endif // CONFIG_BT_ENABLED
|
||||||
|
|
Loading…
Reference in a new issue