RPC: SetPairingState open CommissioningWindow (#23622)
If the commissioning window isn't already open open a basic one
when SetPairingState is true. Similarily close the commissioining
window if SetPairingState is false.
diff --git a/examples/common/pigweed/rpc_services/Device.h b/examples/common/pigweed/rpc_services/Device.h
index 65bc249..758ecc9 100644
--- a/examples/common/pigweed/rpc_services/Device.h
+++ b/examples/common/pigweed/rpc_services/Device.h
@@ -270,14 +270,22 @@
virtual pw::Status SetPairingState(const chip_rpc_PairingState & request, pw_protobuf_Empty & response)
{
- if (request.pairing_enabled)
+ if (request.pairing_enabled && !chip::Server::GetInstance().GetCommissioningWindowManager().IsCommissioningWindowOpen())
{
- DeviceLayer::ConnectivityMgr().SetBLEAdvertisingEnabled(true);
- DeviceLayer::ConnectivityMgr().SetBLEAdvertisingMode(DeviceLayer::ConnectivityMgr().kFastAdvertising);
+ DeviceLayer::StackLock lock;
+ chip::ChipError err = chip::Server::GetInstance().GetCommissioningWindowManager().OpenBasicCommissioningWindow();
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(NotSpecified, "RPC SetPairingState failed to open commissioning window: %" CHIP_ERROR_FORMAT,
+ err.Format());
+ return pw::Status::Internal();
+ }
}
- else
+ else if (!request.pairing_enabled &&
+ chip::Server::GetInstance().GetCommissioningWindowManager().IsCommissioningWindowOpen())
{
- DeviceLayer::ConnectivityMgr().SetBLEAdvertisingEnabled(false);
+ DeviceLayer::StackLock lock;
+ chip::Server::GetInstance().GetCommissioningWindowManager().CloseCommissioningWindow();
}
return pw::OkStatus();
}