Skip to content

Commit 34462f1

Browse files
samadDotDevyufengwangcabzbarsky-apple
authored
Add target endpoint to CommissioningWindowOpener (project-chip#34425)
* Add target endpoint id to commissioning window opener params Co-authored-by: Yufeng Wang <yufengwang@google.com> * Set endpoint id in fabric-admin app * Set root endpoint id by default in commissioning window params Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> --------- Co-authored-by: Yufeng Wang <yufengwang@google.com> Co-authored-by: Boris Zbarsky <bzbarsky@apple.com>
1 parent 335ac96 commit 34462f1

File tree

4 files changed

+16
-4
lines changed

4 files changed

+16
-4
lines changed

examples/fabric-admin/commands/pairing/OpenCommissioningWindowCommand.cpp

+2
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ CHIP_ERROR OpenCommissioningWindowCommand::RunCommand()
3838
VerifyOrReturnError(mSalt.HasValue(), CHIP_ERROR_INVALID_ARGUMENT);
3939
return mWindowOpener->OpenCommissioningWindow(Controller::CommissioningWindowVerifierParams()
4040
.SetNodeId(mNodeId)
41+
.SetEndpointId(mEndpointId)
4142
.SetTimeout(mCommissioningWindowTimeout)
4243
.SetIteration(mIteration)
4344
.SetDiscriminator(mDiscriminator)
@@ -50,6 +51,7 @@ CHIP_ERROR OpenCommissioningWindowCommand::RunCommand()
5051
SetupPayload ignored;
5152
return mWindowOpener->OpenCommissioningWindow(Controller::CommissioningWindowPasscodeParams()
5253
.SetNodeId(mNodeId)
54+
.SetEndpointId(mEndpointId)
5355
.SetTimeout(mCommissioningWindowTimeout)
5456
.SetIteration(mIteration)
5557
.SetDiscriminator(mDiscriminator)

src/controller/CommissioningWindowOpener.cpp

+3-3
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,7 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindow(const Commissionin
126126
mCommissioningWindowVerifierCallback = nullptr;
127127
mNodeId = params.GetNodeId();
128128
mCommissioningWindowTimeout = params.GetTimeout();
129+
mTargetEndpointId = params.GetEndpointId();
129130

130131
if (params.GetReadVIDPIDAttributes())
131132
{
@@ -162,6 +163,7 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindow(const Commissionin
162163
mPBKDFIterations = params.GetIteration();
163164
mCommissioningWindowOption = CommissioningWindowOption::kTokenWithProvidedPIN;
164165
mDiscriminator.SetLongValue(params.GetDiscriminator());
166+
mTargetEndpointId = params.GetEndpointId();
165167

166168
mNextStep = Step::kOpenCommissioningWindow;
167169

@@ -173,9 +175,7 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindowInternal(Messaging:
173175
{
174176
ChipLogProgress(Controller, "OpenCommissioningWindow for device ID 0x" ChipLogFormatX64, ChipLogValueX64(mNodeId));
175177

176-
constexpr EndpointId kAdministratorCommissioningClusterEndpoint = 0;
177-
178-
ClusterBase cluster(exchangeMgr, sessionHandle, kAdministratorCommissioningClusterEndpoint);
178+
ClusterBase cluster(exchangeMgr, sessionHandle, mTargetEndpointId);
179179

180180
if (mCommissioningWindowOption != CommissioningWindowOption::kOriginalSetupCode)
181181
{

src/controller/CommissioningWindowOpener.h

+2-1
Original file line numberDiff line numberDiff line change
@@ -165,7 +165,8 @@ class CommissioningWindowOpener
165165
Callback::Callback<OnOpenBasicCommissioningWindow> * mBasicCommissioningWindowCallback = nullptr;
166166
SetupPayload mSetupPayload;
167167
SetupDiscriminator mDiscriminator{};
168-
NodeId mNodeId = kUndefinedNodeId;
168+
NodeId mNodeId = kUndefinedNodeId;
169+
EndpointId mTargetEndpointId = kRootEndpointId; // Default endpoint for Administrator Commissioning Cluster
169170
System::Clock::Seconds16 mCommissioningWindowTimeout = System::Clock::kZero;
170171
CommissioningWindowOption mCommissioningWindowOption = CommissioningWindowOption::kOriginalSetupCode;
171172
Crypto::Spake2pVerifier mVerifier; // Used for non-basic commissioning.

src/controller/CommissioningWindowParams.h

+9
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@
1919

2020
#include <lib/core/CHIPCallback.h>
2121
#include <lib/core/CHIPError.h>
22+
#include <lib/core/DataModelTypes.h>
2223
#include <lib/core/NodeId.h>
2324
#include <lib/core/Optional.h>
2425
#include <lib/support/Span.h>
@@ -53,6 +54,13 @@ class CommissioningWindowCommonParams
5354
return static_cast<Derived &>(*this);
5455
}
5556

57+
EndpointId GetEndpointId() const { return mEndpointId; }
58+
Derived & SetEndpointId(EndpointId endpointId)
59+
{
60+
mEndpointId = endpointId;
61+
return static_cast<Derived &>(*this);
62+
}
63+
5664
System::Clock::Seconds16 GetTimeout() const { return mTimeout; }
5765
// The duration for which the commissioning window should remain open.
5866
Derived & SetTimeout(System::Clock::Seconds16 timeout)
@@ -82,6 +90,7 @@ class CommissioningWindowCommonParams
8290

8391
private:
8492
NodeId mNodeId = kUndefinedNodeId;
93+
EndpointId mEndpointId = kRootEndpointId; // Default endpoint for Administrator Commissioning Cluster
8594
System::Clock::Seconds16 mTimeout = System::Clock::Seconds16(300); // Defaulting
8695
uint32_t mIteration = 1000; // Defaulting
8796
Optional<uint16_t> mDiscriminator = NullOptional; // Using optional type to avoid picking a sentinnel in valid range

0 commit comments

Comments
 (0)