[chip-tool] Add an optional argument for pase-only session establishment for pairing [ethernet|onnetwork|softap] (#23697)
diff --git a/examples/chip-tool/commands/pairing/PairingCommand.cpp b/examples/chip-tool/commands/pairing/PairingCommand.cpp
index b2aec81..9f82700 100644
--- a/examples/chip-tool/commands/pairing/PairingCommand.cpp
+++ b/examples/chip-tool/commands/pairing/PairingCommand.cpp
@@ -109,10 +109,19 @@
CHIP_ERROR PairingCommand::Pair(NodeId remoteId, PeerAddress address)
{
- RendezvousParameters params =
- RendezvousParameters().SetSetupPINCode(mSetupPINCode).SetDiscriminator(mDiscriminator).SetPeerAddress(address);
- CommissioningParameters commissioningParams = GetCommissioningParameters();
- return CurrentCommissioner().PairDevice(remoteId, params, commissioningParams);
+ auto params = RendezvousParameters().SetSetupPINCode(mSetupPINCode).SetDiscriminator(mDiscriminator).SetPeerAddress(address);
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ if (mPaseOnly.ValueOr(false))
+ {
+ err = CurrentCommissioner().EstablishPASEConnection(remoteId, params);
+ }
+ else
+ {
+ auto commissioningParams = GetCommissioningParameters();
+ err = CurrentCommissioner().PairDevice(remoteId, params, commissioningParams);
+ }
+ return err;
}
CHIP_ERROR PairingCommand::PairWithMdns(NodeId remoteId)
@@ -183,7 +192,7 @@
{
ChipLogProgress(chipTool, "Pairing Success");
ChipLogProgress(chipTool, "PASE establishment successful");
- if (mPairingMode == PairingMode::CodePaseOnly)
+ if (mPairingMode == PairingMode::CodePaseOnly || mPaseOnly.ValueOr(false))
{
SetCommandExitStatus(err);
}
diff --git a/examples/chip-tool/commands/pairing/PairingCommand.h b/examples/chip-tool/commands/pairing/PairingCommand.h
index af05ec4..61c7440 100644
--- a/examples/chip-tool/commands/pairing/PairingCommand.h
+++ b/examples/chip-tool/commands/pairing/PairingCommand.h
@@ -89,18 +89,21 @@
break;
case PairingMode::OnNetwork:
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode);
+ AddArgument("pase-only", 0, 1, &mPaseOnly);
break;
case PairingMode::SoftAP:
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode);
AddArgument("discriminator", 0, 4096, &mDiscriminator);
AddArgument("device-remote-ip", &mRemoteAddr);
AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort);
+ AddArgument("pase-only", 0, 1, &mPaseOnly);
break;
case PairingMode::Ethernet:
AddArgument("setup-pin-code", 0, 134217727, &mSetupPINCode);
AddArgument("discriminator", 0, 4096, &mDiscriminator);
AddArgument("device-remote-ip", &mRemoteAddr);
AddArgument("device-remote-port", 0, UINT16_MAX, &mRemotePort);
+ AddArgument("pase-only", 0, 1, &mPaseOnly);
break;
}
@@ -165,6 +168,7 @@
chip::Optional<uint16_t> mTimeout;
chip::Optional<bool> mDiscoverOnce;
chip::Optional<bool> mUseOnlyOnNetworkDiscovery;
+ chip::Optional<bool> mPaseOnly;
uint16_t mRemotePort;
uint16_t mDiscriminator;
uint32_t mSetupPINCode;