From b9e801dac0f0d4e6a320a71fd8cf02f8c6c077e6 Mon Sep 17 00:00:00 2001 From: Song Guo Date: Thu, 7 Dec 2023 13:07:21 +0800 Subject: [PATCH 1/2] [controller] fix 30260 --- src/controller/AutoCommissioner.cpp | 4 ++-- src/controller/CHIPDeviceController.cpp | 23 +++++++++++++++-------- 2 files changed, 17 insertions(+), 10 deletions(-) diff --git a/src/controller/AutoCommissioner.cpp b/src/controller/AutoCommissioner.cpp index 93247c3298b2da..82286e32619f31 100644 --- a/src/controller/AutoCommissioner.cpp +++ b/src/controller/AutoCommissioner.cpp @@ -828,10 +828,10 @@ CHIP_ERROR AutoCommissioner::CommissioningStepFinished(CHIP_ERROR err, Commissio return NOCChainGenerated(report.Get().noc, report.Get().icac, report.Get().rcac, report.Get().ipk, report.Get().adminSubject); case CommissioningStage::kICDGetRegistrationInfo: - // Noting to od. The ICD registation info is handled elsewhere. + // Noting to do. The ICD registation info is handled elsewhere. break; case CommissioningStage::kICDRegistration: - // Noting to od. DevicePairingDelegate will handle this. + // Noting to do. DevicePairingDelegate will handle this. break; case CommissioningStage::kICDSendStayActive: // Nothing to do. diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp index 1713564d589ff4..cba80df10036f2 100644 --- a/src/controller/CHIPDeviceController.cpp +++ b/src/controller/CHIPDeviceController.cpp @@ -1177,18 +1177,25 @@ void DeviceCommissioner::OnICDManagementRegisterClientResponse( void * context, const app::Clusters::IcdManagement::Commands::RegisterClientResponse::DecodableType & data) { DeviceCommissioner * commissioner = static_cast(context); + VerifyOrReturn(commissioner != nullptr, ChipLogProgress(Controller, "Command response callback with null context. Ignoring")); - CommissioningDelegate::CommissioningReport report; - auto pairingDelegate = commissioner->GetPairingDelegate(); - auto deviceBeingCommissioned = commissioner->mDeviceBeingCommissioned; - if (pairingDelegate != nullptr && deviceBeingCommissioned != nullptr) + if (commissioner->mCommissioningStage != CommissioningStage::kICDRegistration) { - pairingDelegate->OnICDRegistrationComplete(deviceBeingCommissioned->GetDeviceId(), data.ICDCounter); - commissioner->CommissioningStageComplete(CHIP_NO_ERROR, report); + return; } - else + + if (commissioner->mDeviceBeingCommissioned == nullptr) + { + return; + } + + if (commissioner->mPairingDelegate != nullptr) { - commissioner->CommissioningStageComplete(CHIP_ERROR_INCORRECT_STATE, report); + CommissioningDelegate::CommissioningReport report; + + commissioner->mPairingDelegate->OnICDRegistrationComplete(commissioner->mDeviceBeingCommissioned->GetDeviceId(), + data.ICDCounter); + commissioner->CommissioningStageComplete(CHIP_NO_ERROR, report); } } From 9528dacbe21473aedbae39786a1a837ce9448a60 Mon Sep 17 00:00:00 2001 From: yunhanw Date: Thu, 7 Dec 2023 10:03:40 -0800 Subject: [PATCH 2/2] address comments --- src/controller/CHIPDeviceController.cpp | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/src/controller/CHIPDeviceController.cpp b/src/controller/CHIPDeviceController.cpp index cba80df10036f2..49591966bd247f 100644 --- a/src/controller/CHIPDeviceController.cpp +++ b/src/controller/CHIPDeviceController.cpp @@ -1191,12 +1191,11 @@ void DeviceCommissioner::OnICDManagementRegisterClientResponse( if (commissioner->mPairingDelegate != nullptr) { - CommissioningDelegate::CommissioningReport report; - commissioner->mPairingDelegate->OnICDRegistrationComplete(commissioner->mDeviceBeingCommissioned->GetDeviceId(), data.ICDCounter); - commissioner->CommissioningStageComplete(CHIP_NO_ERROR, report); } + CommissioningDelegate::CommissioningReport report; + commissioner->CommissioningStageComplete(CHIP_NO_ERROR, report); } bool DeviceCommissioner::ExtendArmFailSafe(DeviceProxy * proxy, CommissioningStage step, uint16_t armFailSafeTimeout,