diff --git a/.github/workflows/cirque.yaml b/.github/workflows/cirque.yaml index c86dbd4f3f2773..efe59fa442289b 100644 --- a/.github/workflows/cirque.yaml +++ b/.github/workflows/cirque.yaml @@ -15,7 +15,8 @@ name: Cirque on: - workflow_dispatch: + push: + pull_request: jobs: cirque: diff --git a/scripts/tests/cirque_tests.sh b/scripts/tests/cirque_tests.sh index 1f1e441fd98bea..ae252602d771e6 100755 --- a/scripts/tests/cirque_tests.sh +++ b/scripts/tests/cirque_tests.sh @@ -35,8 +35,6 @@ OT_SIMULATION_CACHE="$CIRQUE_CACHE_PATH/ot-simulation.tgz" # Append test name here to add more tests for run_all_tests CIRQUE_TESTS=( "EchoTest" - "InteractionModelTest" - "OnOffClusterTest" "MobileDeviceTest" ) diff --git a/src/app/util/CHIPDeviceCallbacksMgr.cpp b/src/app/util/CHIPDeviceCallbacksMgr.cpp index 2ab066edf54897..d6fc84b0ae3b98 100644 --- a/src/app/util/CHIPDeviceCallbacksMgr.cpp +++ b/src/app/util/CHIPDeviceCallbacksMgr.cpp @@ -77,6 +77,14 @@ CHIP_ERROR CHIPDeviceCallbacksMgr::AddResponseCallback(NodeId nodeId, uint8_t se return CHIP_NO_ERROR; } +CHIP_ERROR CHIPDeviceCallbacksMgr::CancelResponseCallback(NodeId nodeId, uint8_t sequenceNumber) +{ + ResponseCallbackInfo info = { nodeId, sequenceNumber }; + CancelCallback(info, mResponsesSuccess); + CancelCallback(info, mResponsesFailure); + return CHIP_NO_ERROR; +} + CHIP_ERROR CHIPDeviceCallbacksMgr::GetResponseCallback(NodeId nodeId, uint8_t sequenceNumber, Callback::Cancelable ** onSuccessCallback, Callback::Cancelable ** onFailureCallback) diff --git a/src/app/util/CHIPDeviceCallbacksMgr.h b/src/app/util/CHIPDeviceCallbacksMgr.h index 7783d6fa130877..a7a1c77542081a 100644 --- a/src/app/util/CHIPDeviceCallbacksMgr.h +++ b/src/app/util/CHIPDeviceCallbacksMgr.h @@ -49,6 +49,7 @@ class DLL_EXPORT CHIPDeviceCallbacksMgr CHIP_ERROR AddResponseCallback(NodeId nodeId, uint8_t sequenceNumber, Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + CHIP_ERROR CancelResponseCallback(NodeId nodeId, uint8_t sequenceNumber); CHIP_ERROR GetResponseCallback(NodeId nodeId, uint8_t sequenceNumber, Callback::Cancelable ** onSuccessCallback, Callback::Cancelable ** onFailureCallback); diff --git a/src/controller/CHIPCluster.cpp b/src/controller/CHIPCluster.cpp index 96f3e372c8d3ae..09ce93bf3ffa8f 100644 --- a/src/controller/CHIPCluster.cpp +++ b/src/controller/CHIPCluster.cpp @@ -52,18 +52,19 @@ CHIP_ERROR ClusterBase::SendCommand(uint8_t seqNum, chip::System::PacketBufferHa VerifyOrExit(mDevice != nullptr, err = CHIP_ERROR_INCORRECT_STATE); VerifyOrExit(!payload.IsNull(), err = CHIP_ERROR_INTERNAL); - err = mDevice->SendMessage(Protocols::TempZCL::Id, 0, std::move(payload)); - SuccessOrExit(err); - if (onSuccessCallback != nullptr || onFailureCallback != nullptr) { mDevice->AddResponseHandler(seqNum, onSuccessCallback, onFailureCallback); } + err = mDevice->SendMessage(Protocols::TempZCL::Id, 0, std::move(payload)); + SuccessOrExit(err); + exit: if (err != CHIP_NO_ERROR) { ChipLogError(Controller, "Failed in sending cluster command. Err %d", err); + mDevice->CancelResponseHandler(seqNum); } return err; diff --git a/src/controller/CHIPDevice.cpp b/src/controller/CHIPDevice.cpp index 22bae09e725854..b8f2822f1f479e 100644 --- a/src/controller/CHIPDevice.cpp +++ b/src/controller/CHIPDevice.cpp @@ -399,6 +399,11 @@ void Device::AddResponseHandler(uint8_t seqNum, Callback::Cancelable * onSuccess mCallbacksMgr.AddResponseCallback(mDeviceId, seqNum, onSuccessCallback, onFailureCallback); } +void Device::CancelResponseHandler(uint8_t seqNum) +{ + mCallbacksMgr.CancelResponseCallback(mDeviceId, seqNum); +} + void Device::AddReportHandler(EndpointId endpoint, ClusterId cluster, AttributeId attribute, Callback::Cancelable * onReportCallback) { diff --git a/src/controller/CHIPDevice.h b/src/controller/CHIPDevice.h index 916b5d072f5d8d..83033234c836ec 100644 --- a/src/controller/CHIPDevice.h +++ b/src/controller/CHIPDevice.h @@ -307,6 +307,7 @@ class DLL_EXPORT Device uint8_t GetNextSequenceNumber() { return mSequenceNumber++; }; void AddResponseHandler(uint8_t seqNum, Callback::Cancelable * onSuccessCallback, Callback::Cancelable * onFailureCallback); + void CancelResponseHandler(uint8_t seqNum); void AddReportHandler(EndpointId endpoint, ClusterId cluster, AttributeId attribute, Callback::Cancelable * onReportCallback); private: