@@ -49,7 +49,7 @@ namespace CommissionerControl {
49
49
void CommissionerControlDelegate::ResetDelegateState ()
50
50
{
51
51
// Reset the step to the initial state
52
- mNextStep = Step::kAcceptCommissioningApproval ;
52
+ mNextStep = Step::kIdle ;
53
53
54
54
// Reset identifiers and product information
55
55
mRequestId = 0 ;
@@ -71,7 +71,7 @@ void CommissionerControlDelegate::ResetDelegateState()
71
71
72
72
CHIP_ERROR CommissionerControlDelegate::HandleCommissioningApprovalRequest (const CommissioningApprovalRequest & request)
73
73
{
74
- VerifyOrReturnError (mNextStep == Step::kAcceptCommissioningApproval , CHIP_ERROR_BUSY );
74
+ VerifyOrReturnError (mNextStep == Step::kIdle , CHIP_ERROR_INCORRECT_STATE );
75
75
76
76
CommissionerControl::Events::CommissioningRequestResult::Type result;
77
77
result.requestId = request.requestId ;
@@ -113,7 +113,14 @@ CHIP_ERROR CommissionerControlDelegate::HandleCommissioningApprovalRequest(const
113
113
114
114
CHIP_ERROR err = CommissionerControlServer::Instance ().GenerateCommissioningRequestResultEvent (result);
115
115
116
- mNextStep = (err == CHIP_NO_ERROR) ? Step::kWaitCommissionNodeRequest : Step::kAcceptCommissioningApproval ;
116
+ if (err == CHIP_NO_ERROR)
117
+ {
118
+ mNextStep = Step::kWaitCommissionNodeRequest ;
119
+ }
120
+ else
121
+ {
122
+ ResetDelegateState ();
123
+ }
117
124
118
125
return err;
119
126
}
@@ -162,22 +169,29 @@ CHIP_ERROR CommissionerControlDelegate::GetCommissioningWindowParams(Commissioni
162
169
CHIP_ERROR CommissionerControlDelegate::HandleCommissionNode (const CommissioningWindowParams & params,
163
170
const Optional<ByteSpan> & ipAddress, const Optional<uint16_t > & port)
164
171
{
172
+ CHIP_ERROR err = CHIP_NO_ERROR;
173
+
165
174
ChipLogProgress (NotSpecified, " CommissionerControlDelegate::HandleCommissionNode" );
166
175
167
176
VerifyOrReturnError (mNextStep == Step::kStartCommissionNode , CHIP_ERROR_INCORRECT_STATE);
168
177
169
178
#if defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE
170
- return CommissionNode (Controller::CommissioningWindowPasscodeParams ()
171
- .SetSetupPIN (kSetupPinCode )
172
- .SetTimeout (params.commissioningTimeout )
173
- .SetDiscriminator (params.discriminator )
174
- .SetIteration (params.iterations )
175
- .SetSalt (params.salt ),
176
- mVendorId , mProductId );
179
+ err = CommissionNode (Controller::CommissioningWindowPasscodeParams ()
180
+ .SetSetupPIN (kSetupPinCode )
181
+ .SetTimeout (params.commissioningTimeout )
182
+ .SetDiscriminator (params.discriminator )
183
+ .SetIteration (params.iterations )
184
+ .SetSalt (params.salt ),
185
+ mVendorId , mProductId );
177
186
#else
178
187
ChipLogProgress (NotSpecified, " Failed to reverse commission bridge: PW_RPC_FABRIC_BRIDGE_SERVICE not defined" );
179
- return CHIP_ERROR_NOT_IMPLEMENTED;
188
+ err = CHIP_ERROR_NOT_IMPLEMENTED;
180
189
#endif // defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE
190
+
191
+ // Reset the delegate's state to prepare for a new commissioning sequence.
192
+ ResetDelegateState ();
193
+
194
+ return err;
181
195
}
182
196
183
197
} // namespace CommissionerControl
0 commit comments