diff --git a/examples/chip-tool/commands/pairing/PairingCommand.cpp b/examples/chip-tool/commands/pairing/PairingCommand.cpp index b2aec812597a88..9f827004d087f4 100644 --- a/examples/chip-tool/commands/pairing/PairingCommand.cpp +++ b/examples/chip-tool/commands/pairing/PairingCommand.cpp @@ -109,10 +109,19 @@ CHIP_ERROR PairingCommand::PairWithCode(NodeId remoteId) 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 @@ void PairingCommand::OnPairingComplete(CHIP_ERROR err) { 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 af05ec42d17f81..61c7440ad9963e 100644 --- a/examples/chip-tool/commands/pairing/PairingCommand.h +++ b/examples/chip-tool/commands/pairing/PairingCommand.h @@ -89,18 +89,21 @@ class PairingCommand : public CHIPCommand, 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 @@ class PairingCommand : public CHIPCommand, chip::Optional mTimeout; chip::Optional mDiscoverOnce; chip::Optional mUseOnlyOnNetworkDiscovery; + chip::Optional mPaseOnly; uint16_t mRemotePort; uint16_t mDiscriminator; uint32_t mSetupPINCode;