From e342c15ae97dd107ea1995c0841e86b5a0ad579a Mon Sep 17 00:00:00 2001 From: WanqQixiang Date: Wed, 2 Apr 2025 16:48:36 +0800 Subject: [PATCH] esp_matter: Make Test Event Trigger Delegate configurable --- components/esp_matter/esp_matter_core.cpp | 2 + .../esp_matter_test_event_trigger.cpp | 38 +++++++++++++++++ .../esp_matter_test_event_trigger.h | 41 +++++++++++++++++++ 3 files changed, 81 insertions(+) create mode 100644 components/esp_matter/esp_matter_test_event_trigger.cpp create mode 100644 components/esp_matter/esp_matter_test_event_trigger.h diff --git a/components/esp_matter/esp_matter_core.cpp b/components/esp_matter/esp_matter_core.cpp index 22294591d..3a88c20b8 100644 --- a/components/esp_matter/esp_matter_core.cpp +++ b/components/esp_matter/esp_matter_core.cpp @@ -16,6 +16,7 @@ #include #include #include +#include #include #include @@ -719,6 +720,7 @@ static void esp_matter_chip_init_task(intptr_t context) initParams.InitializeStaticResourcesBeforeServerInit(); initParams.appDelegate = &s_app_delegate; + initParams.testEventTriggerDelegate = test_event_trigger::get_delegate(); #ifdef CONFIG_ESP_MATTER_ENABLE_DATA_MODEL // Group data provider injection for dynamic data model diff --git a/components/esp_matter/esp_matter_test_event_trigger.cpp b/components/esp_matter/esp_matter_test_event_trigger.cpp new file mode 100644 index 000000000..5fd1ae962 --- /dev/null +++ b/components/esp_matter/esp_matter_test_event_trigger.cpp @@ -0,0 +1,38 @@ +// Copyright 2025 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#include +#include + +namespace esp_matter { +namespace test_event_trigger { + +static chip::TestEventTriggerDelegate *s_test_event_trigger = nullptr; + +esp_err_t set_delegate(chip::TestEventTriggerDelegate *test_event_trigger_delegate) +{ + if (esp_matter::is_started()) { + return ESP_ERR_INVALID_STATE; + } + s_test_event_trigger = test_event_trigger_delegate; + return ESP_OK; +} + +chip::TestEventTriggerDelegate *get_delegate() +{ + return s_test_event_trigger; +} + +} // namespace test_event_trigger +} // namespace esp_matter diff --git a/components/esp_matter/esp_matter_test_event_trigger.h b/components/esp_matter/esp_matter_test_event_trigger.h new file mode 100644 index 000000000..db6c66a4e --- /dev/null +++ b/components/esp_matter/esp_matter_test_event_trigger.h @@ -0,0 +1,41 @@ +// Copyright 2025 Espressif Systems (Shanghai) PTE LTD +// +// Licensed under the Apache License, Version 2.0 (the "License"); +// you may not use this file except in compliance with the License. +// You may obtain a copy of the License at +// +// http://www.apache.org/licenses/LICENSE-2.0 +// +// Unless required by applicable law or agreed to in writing, software +// distributed under the License is distributed on an "AS IS" BASIS, +// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +// See the License for the specific language governing permissions and +// limitations under the License. + +#pragma once + +#include + +#include + +namespace esp_matter { +namespace test_event_trigger { + +/** Set TestEventTriggerDelegate which can be triggered by TestEventTrigger command of GeneralDiagnostics cluster + * + * Note: This function should be called before esp_matter::start() + * + * @param[in] test_event_trigger_delegate TestEventTriggerDelegate + * + * @return ESP_OK on success + * ESP_ERR_INVALID_STATE when calling the function after esp_matter::start() + */ +esp_err_t set_delegate(chip::TestEventTriggerDelegate *test_event_trigger_delegate); + +/** Get TestEventTriggerDelegate which can be triggered by TestEventTrigger command of GeneralDiagnostics cluster + * + * @return TestEventTriggerDelegate set by set_delegate() + */ +chip::TestEventTriggerDelegate *get_delegate(); +} // namespace test_event_trigger +} // namespace esp_matter