Do not disable BLE if a fabric has not been provisioned on the device (#9933)
* Check if a fabric has been provisioned before disabling BLE
* Update src/app/server/Server.cpp
Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
* check for network configuration as well
Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
diff --git a/src/app/server/Server.cpp b/src/app/server/Server.cpp
index 51ce340..0d41fcb 100644
--- a/src/app/server/Server.cpp
+++ b/src/app/server/Server.cpp
@@ -135,10 +135,11 @@
ChipLogProgress(AppServer, "Rendezvous and secure pairing skipped");
SuccessOrExit(err = AddTestCommissioning());
}
- else if (DeviceLayer::ConnectivityMgr().IsWiFiStationProvisioned() || DeviceLayer::ConnectivityMgr().IsThreadProvisioned())
+ else if ((DeviceLayer::ConnectivityMgr().IsWiFiStationProvisioned() || DeviceLayer::ConnectivityMgr().IsThreadProvisioned()) &&
+ (GetFabricTable().FabricCount() != 0))
{
- // If the network is already provisioned, proactively disable BLE advertisement.
- ChipLogProgress(AppServer, "Network already provisioned. Disabling BLE advertisement");
+ // The device is already commissioned, proactively disable BLE advertisement.
+ ChipLogProgress(AppServer, "Fabric already commissioned. Disabling BLE advertisement");
chip::DeviceLayer::ConnectivityMgr().SetBLEAdvertisingEnabled(false);
}
else