diff --git a/src/NimBLEDevice.cpp b/src/NimBLEDevice.cpp index 06cb7865..db3f9d9d 100644 --- a/src/NimBLEDevice.cpp +++ b/src/NimBLEDevice.cpp @@ -95,6 +95,8 @@ bool NimBLEDevice::m_initialized{false}; uint32_t NimBLEDevice::m_passkey{123456}; bool NimBLEDevice::m_synced{false}; ble_gap_event_listener NimBLEDevice::m_listener{}; +std::string NimBLEDevice::m_deviceName{}; +bool NimBLEDevice::m_deviceNameSet{false}; std::vector NimBLEDevice::m_whiteList{}; uint8_t NimBLEDevice::m_ownAddrType{BLE_OWN_ADDR_PUBLIC}; @@ -1326,6 +1328,8 @@ bool NimBLEDevice::setDeviceName(const std::string& deviceName) { return false; } # endif + m_deviceName = deviceName; + m_deviceNameSet = true; return true; } // setDeviceName diff --git a/src/NimBLEDevice.h b/src/NimBLEDevice.h index fb64c83d..98ef8b77 100644 --- a/src/NimBLEDevice.h +++ b/src/NimBLEDevice.h @@ -219,6 +219,8 @@ class NimBLEDevice { static uint32_t m_passkey; static ble_gap_event_listener m_listener; static uint8_t m_ownAddrType; + static std::string m_deviceName; + static bool m_deviceNameSet; static std::vector m_whiteList; static NimBLEDeviceCallbacks* m_pDeviceCallbacks; static NimBLEDeviceCallbacks defaultDeviceCallbacks; diff --git a/src/NimBLEServer.cpp b/src/NimBLEServer.cpp index 1cab58ed..6c8616a9 100644 --- a/src/NimBLEServer.cpp +++ b/src/NimBLEServer.cpp @@ -891,6 +891,10 @@ bool NimBLEServer::resetGATT() { ble_gatts_reset(); ble_svc_gap_init(); + if (NimBLEDevice::m_deviceNameSet && !NimBLEDevice::setDeviceName(NimBLEDevice::m_deviceName)) { + return false; + } + ble_svc_gatt_init(); for (auto svcIt = m_svcVec.begin(); svcIt != m_svcVec.end();) {