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