From b465eaff488be7596fb2bfd78dc7129be4f18a5f Mon Sep 17 00:00:00 2001 From: shchen-Lab Date: Wed, 9 Aug 2023 15:39:27 +0800 Subject: [PATCH] Refactor BLE ManagerImpl ShutDown Function --- .../bouffalolab/common/BLEManagerImpl.cpp | 19 ++++++++++++++++++- .../bouffalolab/common/BLEManagerImpl.h | 1 + 2 files changed, 19 insertions(+), 1 deletion(-) diff --git a/src/platform/bouffalolab/common/BLEManagerImpl.cpp b/src/platform/bouffalolab/common/BLEManagerImpl.cpp index b9e9565d17e800..ac31a3eb2aee30 100644 --- a/src/platform/bouffalolab/common/BLEManagerImpl.cpp +++ b/src/platform/bouffalolab/common/BLEManagerImpl.cpp @@ -148,8 +148,11 @@ CHIP_ERROR BLEManagerImpl::_Init() void BLEManagerImpl::_Shutdown() { - bt_disable(); + // Release BLE Stack resources + mFlags.Set(Flags::kChipoBleShutDown); + } + void BLEManagerImpl::DriveBLEState(intptr_t arg) { BLEMgrImpl().DriveBLEState(); @@ -461,6 +464,20 @@ CHIP_ERROR BLEManagerImpl::HandleGAPDisconnect(const ChipDeviceEvent * event) ChipDeviceEvent disconnectEvent; disconnectEvent.Type = DeviceEventType::kCHIPoBLEConnectionClosed; ReturnErrorOnFailure(PlatformMgr().PostEvent(&disconnectEvent)); + + if (mFlags.Has(Flags::kChipoBleShutDown)) + { + int ret = bt_disable(); + if(ret) + { + ChipLogError(DeviceLayer, "CHIPoBLE Shutdown faild =%d",ret); + } + else + { + mFlags.Clear(Flags::kChipoBleShutDown); + } + return CHIP_NO_ERROR; + } // Force a reconfiguration of advertising in case we switched to non-connectable mode when // the BLE connection was established. mFlags.Set(Flags::kAdvertisingRefreshNeeded); diff --git a/src/platform/bouffalolab/common/BLEManagerImpl.h b/src/platform/bouffalolab/common/BLEManagerImpl.h index 54dfe7fb081928..561513e9067266 100644 --- a/src/platform/bouffalolab/common/BLEManagerImpl.h +++ b/src/platform/bouffalolab/common/BLEManagerImpl.h @@ -85,6 +85,7 @@ class BLEManagerImpl final : public BLEManager, private BleLayer, private BlePla kAdvertisingRefreshNeeded = 0x0010, /**< The advertising state/configuration has changed, but the SoftDevice has yet to be updated. */ kChipoBleGattServiceRegister = 0x0020, /**< The system has currently CHIPoBLE GATT service registered. */ + kChipoBleShutDown= 0x0040, /**< The system has disable ble stack. */ }; struct ServiceData;