@@ -74,7 +74,7 @@ void BridgePollingThread()
74
74
#if defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE
75
75
else if (ch == ' o' )
76
76
{
77
- CHIP_ERROR err = OpenCommissioningWindow (0x1234 );
77
+ CHIP_ERROR err = OpenCommissioningWindow (0x1234 , 300 , 3840 , 1000 , chip::NullOptional, chip::NullOptional );
78
78
if (err != CHIP_NO_ERROR)
79
79
{
80
80
ChipLogError (NotSpecified, " Failed to call OpenCommissioningWindow RPC: %" CHIP_ERROR_FORMAT, err.Format ());
@@ -129,26 +129,45 @@ void AdministratorCommissioningCommandHandler::InvokeCommand(HandlerContext & ha
129
129
}
130
130
131
131
handlerContext.SetCommandHandled ();
132
- Status status = Status::Success;
132
+
133
+ uint16_t commissioningTimeout;
134
+ uint16_t discriminator;
135
+ uint32_t iterations;
136
+ chip::Optional<chip::ByteSpan> salt;
137
+ chip::Optional<chip::ByteSpan> verifier;
138
+ Device * device = nullptr ;
139
+ Status status = Status::Failure;
140
+
141
+ Commands::OpenCommissioningWindow::DecodableType commandData;
142
+ CHIP_ERROR tlvError = DataModel::Decode (handlerContext.mPayload , commandData);
143
+ SuccessOrExit (tlvError);
144
+
145
+ commissioningTimeout = commandData.commissioningTimeout ;
146
+ discriminator = commandData.discriminator ;
147
+ iterations = commandData.iterations ;
148
+ salt = chip::Optional<chip::ByteSpan>(commandData.salt );
149
+ verifier = chip::Optional<chip::ByteSpan>(commandData.PAKEPasscodeVerifier );
133
150
134
151
#if defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE
135
- Device * device = DeviceMgr ().GetDevice (endpointId);
152
+ device = DeviceMgr ().GetDevice (endpointId);
136
153
137
154
// TODO: issues:#33784, need to make OpenCommissioningWindow synchronous
138
- if (device != nullptr && OpenCommissioningWindow (device->GetNodeId ()) == CHIP_NO_ERROR)
155
+ if (device != nullptr &&
156
+ OpenCommissioningWindow (device->GetNodeId (), commissioningTimeout, discriminator, iterations, salt, verifier) ==
157
+ CHIP_NO_ERROR)
139
158
{
140
159
ChipLogProgress (NotSpecified, " Commissioning window is now open" );
160
+ status = Status::Success;
141
161
}
142
162
else
143
163
{
144
- status = Status::Failure;
145
164
ChipLogProgress (NotSpecified, " Commissioning window is failed to open" );
146
165
}
147
166
#else
148
- status = Status::Failure;
149
167
ChipLogProgress (NotSpecified, " Commissioning window failed to open: PW_RPC_FABRIC_BRIDGE_SERVICE not defined" );
150
168
#endif // defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE
151
169
170
+ exit :
152
171
handlerContext.mCommandHandler .AddStatus (handlerContext.mRequestPath , status);
153
172
}
154
173
0 commit comments