Skip to content

Commit a1f1f2a

Browse files
Add target endpoint id to commissioning window opener params
Co-authored-by: Yufeng Wang <yufengwang@google.com>
1 parent 19a774a commit a1f1f2a

File tree

3 files changed

+20
-4
lines changed

3 files changed

+20
-4
lines changed

src/controller/CommissioningWindowOpener.cpp

+9-3
Original file line numberDiff line numberDiff line change
@@ -126,6 +126,10 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindow(const Commissionin
126126
mCommissioningWindowVerifierCallback = nullptr;
127127
mNodeId = params.GetNodeId();
128128
mCommissioningWindowTimeout = params.GetTimeout();
129+
if (params.HasEndpointId())
130+
{
131+
mTargetEndpointId = params.GetEndpointId();
132+
}
129133

130134
if (params.GetReadVIDPIDAttributes())
131135
{
@@ -162,6 +166,10 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindow(const Commissionin
162166
mPBKDFIterations = params.GetIteration();
163167
mCommissioningWindowOption = CommissioningWindowOption::kTokenWithProvidedPIN;
164168
mDiscriminator.SetLongValue(params.GetDiscriminator());
169+
if (params.HasEndpointId())
170+
{
171+
mTargetEndpointId = params.GetEndpointId();
172+
}
165173

166174
mNextStep = Step::kOpenCommissioningWindow;
167175

@@ -173,9 +181,7 @@ CHIP_ERROR CommissioningWindowOpener::OpenCommissioningWindowInternal(Messaging:
173181
{
174182
ChipLogProgress(Controller, "OpenCommissioningWindow for device ID 0x" ChipLogFormatX64, ChipLogValueX64(mNodeId));
175183

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

180186
if (mCommissioningWindowOption != CommissioningWindowOption::kOriginalSetupCode)
181187
{

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
@@ -53,6 +53,14 @@ class CommissioningWindowCommonParams
5353
return static_cast<Derived &>(*this);
5454
}
5555

56+
bool HasEndpointId() const { return mEndpointId.HasValue(); }
57+
EndpointId GetEndpointId() const { return mEndpointId.Value(); }
58+
Derived & SetEndpointId(EndpointId endpointId)
59+
{
60+
mEndpointId = MakeOptional(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+
Optional<EndpointId> mEndpointId = NullOptional;
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)