From 625293ee95f3d35f818c6c76ac4d86cffd14894b Mon Sep 17 00:00:00 2001 From: Song Guo <songguo@google.com> Date: Sat, 6 Apr 2024 13:21:54 +0000 Subject: [PATCH 1/6] [chip-tool] Create ChipToolCheckInDelegate --- examples/chip-tool/BUILD.gn | 2 + .../chip-tool/commands/common/CHIPCommand.cpp | 13 ++- .../chip-tool/commands/common/CHIPCommand.h | 8 +- .../common/ChipToolCheckInDelegate.cpp | 94 +++++++++++++++++++ .../commands/common/ChipToolCheckInDelegate.h | 76 +++++++++++++++ 5 files changed, 190 insertions(+), 3 deletions(-) create mode 100644 examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp create mode 100644 examples/chip-tool/commands/common/ChipToolCheckInDelegate.h diff --git a/examples/chip-tool/BUILD.gn b/examples/chip-tool/BUILD.gn index 10d03c02ee295d..7c5fe3dafa0e45 100644 --- a/examples/chip-tool/BUILD.gn +++ b/examples/chip-tool/BUILD.gn @@ -58,6 +58,8 @@ static_library("chip-tool-utils") { "commands/common/BDXDiagnosticLogsServerDelegate.cpp", "commands/common/CHIPCommand.cpp", "commands/common/CHIPCommand.h", + "commands/common/ChipToolCheckInDelegate.cpp", + "commands/common/ChipToolCheckInDelegate.h", "commands/common/Command.cpp", "commands/common/Command.h", "commands/common/Commands.cpp", diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp index c35eb11836d6c8..650175e11e9505 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.cpp +++ b/examples/chip-tool/commands/common/CHIPCommand.cpp @@ -18,6 +18,7 @@ #include "CHIPCommand.h" +#include <commands/common/ChipToolCheckInDelegate.h> #include <controller/CHIPDeviceControllerFactory.h> #include <credentials/attestation_verifier/FileAttestationTrustStore.h> #include <lib/core/CHIPConfig.h> @@ -52,7 +53,7 @@ chip::Credentials::GroupDataProviderImpl CHIPCommand::sGroupDataProvider{ kMaxGr // All fabrics share the same ICD client storage. chip::app::DefaultICDClientStorage CHIPCommand::sICDClientStorage; chip::Crypto::RawKeySessionKeystore CHIPCommand::sSessionKeystore; -chip::app::DefaultCheckInDelegate CHIPCommand::sCheckInDelegate; +ChipToolCheckInDelegate CHIPCommand::sCheckInDelegate; chip::app::CheckInHandler CHIPCommand::sCheckInHandler; namespace { @@ -653,3 +654,13 @@ void CHIPCommand::ExecuteDeferredCleanups(intptr_t ignored) } sDeferredCleanups.clear(); } + +void CHIPCommand::RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler) +{ + sCheckInDelegate.RegisterOnCheckInCompleteCallback(handler); +} + +void CHIPCommand::UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler) +{ + sCheckInDelegate.UnregisterOnCheckInCompleteCallback(handler); +} diff --git a/examples/chip-tool/commands/common/CHIPCommand.h b/examples/chip-tool/commands/common/CHIPCommand.h index 50ab851d284502..484791095c2110 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.h +++ b/examples/chip-tool/commands/common/CHIPCommand.h @@ -28,8 +28,8 @@ #include <TracingCommandLineArgument.h> #include <app/icd/client/CheckInHandler.h> -#include <app/icd/client/DefaultCheckInDelegate.h> #include <app/icd/client/DefaultICDClientStorage.h> +#include <commands/common/ChipToolCheckInDelegate.h> #include <commands/common/CredentialIssuerCommands.h> #include <commands/example/ExampleCredentialIssuerCommands.h> #include <credentials/GroupDataProviderImpl.h> @@ -164,7 +164,7 @@ class CHIPCommand : public Command static chip::Credentials::GroupDataProviderImpl sGroupDataProvider; static chip::app::DefaultICDClientStorage sICDClientStorage; - static chip::app::DefaultCheckInDelegate sCheckInDelegate; + static ChipToolCheckInDelegate sCheckInDelegate; static chip::app::CheckInHandler sCheckInHandler; CredentialIssuerCommands * mCredIssuerCmds; @@ -180,6 +180,10 @@ class CHIPCommand : public Command ChipDeviceCommissioner & GetCommissioner(std::string identity); + static void RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler); + + static void UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler); + private: CHIP_ERROR MaybeSetUpStack(); void MaybeTearDownStack(); diff --git a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp new file mode 100644 index 00000000000000..96fcf2f1790e79 --- /dev/null +++ b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp @@ -0,0 +1,94 @@ +/* + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * 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 "ChipToolCheckInDelegate.h" + +#include <app/icd/client/RefreshKeySender.h> +#include <crypto/CHIPCryptoPAL.h> +#include <lib/support/CodeUtils.h> +#include <lib/support/logging/CHIPLogging.h> + +using namespace chip; +using namespace chip::app; + +CHIP_ERROR ChipToolCheckInDelegate::Init(ICDClientStorage * storage, InteractionModelEngine * engine) +{ + VerifyOrReturnError(storage != nullptr, CHIP_ERROR_INVALID_ARGUMENT); + VerifyOrReturnError(mpStorage == nullptr, CHIP_ERROR_INCORRECT_STATE); + mpStorage = storage; + mpImEngine = engine; + return CHIP_NO_ERROR; +} + +void ChipToolCheckInDelegate::OnCheckInComplete(const ICDClientInfo & clientInfo) +{ + ChipLogProgress( + ICD, "Check In Message processing complete: start_counter=%" PRIu32 " offset=%" PRIu32 " nodeid=" ChipLogFormatScopedNodeId, + clientInfo.start_icd_counter, clientInfo.offset, ChipLogValueScopedNodeId(clientInfo.peer_node)); + for (auto handler : mCheckInCompleteCallbacks) + { + handler->OnCheckInComplete(clientInfo); + } +} + +RefreshKeySender * ChipToolCheckInDelegate::OnKeyRefreshNeeded(ICDClientInfo & clientInfo, ICDClientStorage * clientStorage) +{ + CHIP_ERROR err = CHIP_NO_ERROR; + RefreshKeySender::RefreshKeyBuffer newKey; + + err = Crypto::DRBG_get_bytes(newKey.Bytes(), newKey.Capacity()); + if (err != CHIP_NO_ERROR) + { + ChipLogError(ICD, "Generation of new key failed: %" CHIP_ERROR_FORMAT, err.Format()); + return nullptr; + } + + auto refreshKeySender = Platform::New<RefreshKeySender>(this, clientInfo, clientStorage, mpImEngine, newKey); + if (refreshKeySender == nullptr) + { + return nullptr; + } + return refreshKeySender; +} + +void ChipToolCheckInDelegate::OnKeyRefreshDone(RefreshKeySender * refreshKeySender, CHIP_ERROR error) +{ + if (error == CHIP_NO_ERROR) + { + ChipLogProgress(ICD, "Re-registration with new key completed successfully"); + } + else + { + ChipLogError(ICD, "Re-registration with new key failed with error : %" CHIP_ERROR_FORMAT, error.Format()); + // The callee can take corrective action based on the error received. + } + if (refreshKeySender != nullptr) + { + Platform::Delete(refreshKeySender); + refreshKeySender = nullptr; + } +} + +void ChipToolCheckInDelegate::RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler) +{ + chip::DeviceLayer::SystemLayer().ScheduleLambda([this, handler]() { mCheckInCompleteCallbacks.insert(handler); }); +} + +void ChipToolCheckInDelegate::UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler) +{ + chip::DeviceLayer::SystemLayer().ScheduleLambda([this, handler]() { mCheckInCompleteCallbacks.insert(handler); }); +} diff --git a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h new file mode 100644 index 00000000000000..b32356ab23b148 --- /dev/null +++ b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h @@ -0,0 +1,76 @@ +/* + * + * Copyright (c) 2024 Project CHIP Authors + * All rights reserved. + * + * 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 <set> + +#include <app/InteractionModelEngine.h> +#include <app/icd/client/CheckInDelegate.h> +#include <app/icd/client/ICDClientStorage.h> + +class CheckInCompleteCallback +{ +public: + virtual ~CheckInCompleteCallback() {} + + /** + * @brief Callback used to let the application know that a check-in message was received and validated. + * + * The callback will be executed in CHIP main loop. Implementations avoid blocking in this callback. + * + * @param[in] clientInfo - ICDClientInfo object representing the state associated with the + * node that sent the check-in message. + */ + virtual void OnCheckInComplete(const chip::app::ICDClientInfo & clientInfo); +}; + +class ChipToolCheckInDelegate : public chip::app::CheckInDelegate +{ +public: + virtual ~ChipToolCheckInDelegate() {} + CHIP_ERROR Init(chip::app::ICDClientStorage * storage, chip::app::InteractionModelEngine * engine); + void OnCheckInComplete(const chip::app::ICDClientInfo & clientInfo) override; + chip::app::RefreshKeySender * OnKeyRefreshNeeded(chip::app::ICDClientInfo & clientInfo, + chip::app::ICDClientStorage * clientStorage) override; + void OnKeyRefreshDone(chip::app::RefreshKeySender * refreshKeySender, CHIP_ERROR error) override; + + /** + * @brief Reigsters a callback when the check-in completes. + * + * The registeration will be processed inside CHIP main loop. + * + * @param[in] handler - A pointer to CheckInCompleteCallback to register. + */ + void RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler); + + /** + * @brief Unreigsters a callback when the check-in completes. + * + * The unregisteration will be processed inside CHIP main loop. + * + * @param[in] handler - A pointer to CheckInCompleteCallback to unregister. + */ + void UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler); + +private: + chip::app::ICDClientStorage * mpStorage = nullptr; + chip::app::InteractionModelEngine * mpImEngine = nullptr; + + std::set<CheckInCompleteCallback *> mCheckInCompleteCallbacks; +}; From 7762024501b1ab35d27886eb9404c597e710d920 Mon Sep 17 00:00:00 2001 From: Song Guo <songguo@google.com> Date: Sun, 21 Apr 2024 12:44:59 +0000 Subject: [PATCH 2/6] remove overdesign callback --- .../chip-tool/commands/common/CHIPCommand.cpp | 8 ++++---- .../chip-tool/commands/common/CHIPCommand.h | 4 ++-- .../common/ChipToolCheckInDelegate.cpp | 13 ++++++------ .../commands/common/ChipToolCheckInDelegate.h | 20 +++++++++---------- 4 files changed, 22 insertions(+), 23 deletions(-) diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp index 650175e11e9505..8e894f75fdcd77 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.cpp +++ b/examples/chip-tool/commands/common/CHIPCommand.cpp @@ -655,12 +655,12 @@ void CHIPCommand::ExecuteDeferredCleanups(intptr_t ignored) sDeferredCleanups.clear(); } -void CHIPCommand::RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler) +void CHIPCommand::SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler) { - sCheckInDelegate.RegisterOnCheckInCompleteCallback(handler); + sCheckInDelegate.SetOnCheckInCompleteCallback(handler); } -void CHIPCommand::UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler) +void CHIPCommand::UnsetOnCheckInCompleteCallback() { - sCheckInDelegate.UnregisterOnCheckInCompleteCallback(handler); + sCheckInDelegate.UnsetOnCheckInCompleteCallback(); } diff --git a/examples/chip-tool/commands/common/CHIPCommand.h b/examples/chip-tool/commands/common/CHIPCommand.h index 484791095c2110..548a27a373868e 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.h +++ b/examples/chip-tool/commands/common/CHIPCommand.h @@ -180,9 +180,9 @@ class CHIPCommand : public Command ChipDeviceCommissioner & GetCommissioner(std::string identity); - static void RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler); + static void SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler); - static void UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler); + static void UnsetOnCheckInCompleteCallback(); private: CHIP_ERROR MaybeSetUpStack(); diff --git a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp index 96fcf2f1790e79..aad1883b9ad112 100644 --- a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp +++ b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp @@ -29,6 +29,7 @@ CHIP_ERROR ChipToolCheckInDelegate::Init(ICDClientStorage * storage, Interaction { VerifyOrReturnError(storage != nullptr, CHIP_ERROR_INVALID_ARGUMENT); VerifyOrReturnError(mpStorage == nullptr, CHIP_ERROR_INCORRECT_STATE); + VerifyOrReturnError(engine != nullptr, CHIP_ERROR_INVALID_ARGUMENT); mpStorage = storage; mpImEngine = engine; return CHIP_NO_ERROR; @@ -39,9 +40,9 @@ void ChipToolCheckInDelegate::OnCheckInComplete(const ICDClientInfo & clientInfo ChipLogProgress( ICD, "Check In Message processing complete: start_counter=%" PRIu32 " offset=%" PRIu32 " nodeid=" ChipLogFormatScopedNodeId, clientInfo.start_icd_counter, clientInfo.offset, ChipLogValueScopedNodeId(clientInfo.peer_node)); - for (auto handler : mCheckInCompleteCallbacks) + if (mpCheckInCompleteCallbacks != nullptr) { - handler->OnCheckInComplete(clientInfo); + mpCheckInCompleteCallbacks->OnCheckInComplete(clientInfo); } } @@ -83,12 +84,12 @@ void ChipToolCheckInDelegate::OnKeyRefreshDone(RefreshKeySender * refreshKeySend } } -void ChipToolCheckInDelegate::RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler) +void ChipToolCheckInDelegate::SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler) { - chip::DeviceLayer::SystemLayer().ScheduleLambda([this, handler]() { mCheckInCompleteCallbacks.insert(handler); }); + mpCheckInCompleteCallbacks = handler; } -void ChipToolCheckInDelegate::UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler) +void ChipToolCheckInDelegate::UnsetOnCheckInCompleteCallback() { - chip::DeviceLayer::SystemLayer().ScheduleLambda([this, handler]() { mCheckInCompleteCallbacks.insert(handler); }); + mpCheckInCompleteCallbacks = nullptr; } diff --git a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h index b32356ab23b148..ed93812eb56d67 100644 --- a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h +++ b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h @@ -32,7 +32,7 @@ class CheckInCompleteCallback /** * @brief Callback used to let the application know that a check-in message was received and validated. * - * The callback will be executed in CHIP main loop. Implementations avoid blocking in this callback. + * The callback will be executed in CHIP main loop. Implementations should avoid blocking operations in this callback. * * @param[in] clientInfo - ICDClientInfo object representing the state associated with the * node that sent the check-in message. @@ -51,26 +51,24 @@ class ChipToolCheckInDelegate : public chip::app::CheckInDelegate void OnKeyRefreshDone(chip::app::RefreshKeySender * refreshKeySender, CHIP_ERROR error) override; /** - * @brief Reigsters a callback when the check-in completes. + * @brief Sets a callback for when the Check-In processing completes. * - * The registeration will be processed inside CHIP main loop. + * This method does not consider the race condition that the callback is changed during OnCheckInComplete. * - * @param[in] handler - A pointer to CheckInCompleteCallback to register. + * @param[in] handler - A pointer to the CheckInCompleteCallback to register. */ - void RegisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler); + void SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler); /** - * @brief Unreigsters a callback when the check-in completes. + * @brief Unsets the callback for when the Check-In processing completes. * - * The unregisteration will be processed inside CHIP main loop. - * - * @param[in] handler - A pointer to CheckInCompleteCallback to unregister. + * This method does not consider the race condition that the callback is changed during OnCheckInComplete. */ - void UnregisterOnCheckInCompleteCallback(CheckInCompleteCallback * handler); + void UnsetOnCheckInCompleteCallback(); private: chip::app::ICDClientStorage * mpStorage = nullptr; chip::app::InteractionModelEngine * mpImEngine = nullptr; - std::set<CheckInCompleteCallback *> mCheckInCompleteCallbacks; + CheckInCompleteCallback * mpCheckInCompleteCallbacks; }; From b67a457a509b9f883195d11f87861aaaf8586080 Mon Sep 17 00:00:00 2001 From: yunhanw-google <yunhanw@google.com> Date: Fri, 26 Apr 2024 10:16:39 -0700 Subject: [PATCH 3/6] Update examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> --- .../chip-tool/commands/common/ChipToolCheckInDelegate.cpp | 7 +------ 1 file changed, 1 insertion(+), 6 deletions(-) diff --git a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp index aad1883b9ad112..4c8a6813069ef0 100644 --- a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp +++ b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp @@ -58,12 +58,7 @@ RefreshKeySender * ChipToolCheckInDelegate::OnKeyRefreshNeeded(ICDClientInfo & c return nullptr; } - auto refreshKeySender = Platform::New<RefreshKeySender>(this, clientInfo, clientStorage, mpImEngine, newKey); - if (refreshKeySender == nullptr) - { - return nullptr; - } - return refreshKeySender; + return Platform::New<RefreshKeySender>(this, clientInfo, clientStorage, mpImEngine, newKey); } void ChipToolCheckInDelegate::OnKeyRefreshDone(RefreshKeySender * refreshKeySender, CHIP_ERROR error) From 8ebadd4b5db5b12b24bed259519f8908b04cccee Mon Sep 17 00:00:00 2001 From: yunhanw-google <yunhanw@google.com> Date: Fri, 26 Apr 2024 10:16:58 -0700 Subject: [PATCH 4/6] Update examples/chip-tool/commands/common/ChipToolCheckInDelegate.h Co-authored-by: Boris Zbarsky <bzbarsky@apple.com> --- examples/chip-tool/commands/common/ChipToolCheckInDelegate.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h index ed93812eb56d67..ba7829b5a89184 100644 --- a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h +++ b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h @@ -37,7 +37,7 @@ class CheckInCompleteCallback * @param[in] clientInfo - ICDClientInfo object representing the state associated with the * node that sent the check-in message. */ - virtual void OnCheckInComplete(const chip::app::ICDClientInfo & clientInfo); + virtual void OnCheckInComplete(const chip::app::ICDClientInfo & clientInfo) = 0; }; class ChipToolCheckInDelegate : public chip::app::CheckInDelegate From 6c051bcb36c28ea356e36b6179f8354939374daa Mon Sep 17 00:00:00 2001 From: yunhanw <yunhanw@google.com> Date: Fri, 26 Apr 2024 10:36:13 -0700 Subject: [PATCH 5/6] remove unnecessary check-in delegate since the ChipToolCheckInDelegate is enough for chip-tool icd usage --- .../chip-tool/commands/common/CHIPCommand.cpp | 9 ----- .../chip-tool/commands/common/CHIPCommand.h | 4 --- .../common/ChipToolCheckInDelegate.cpp | 14 -------- .../commands/common/ChipToolCheckInDelegate.h | 34 ------------------- 4 files changed, 61 deletions(-) diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp index 8e894f75fdcd77..cc1f498ebaf07e 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.cpp +++ b/examples/chip-tool/commands/common/CHIPCommand.cpp @@ -655,12 +655,3 @@ void CHIPCommand::ExecuteDeferredCleanups(intptr_t ignored) sDeferredCleanups.clear(); } -void CHIPCommand::SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler) -{ - sCheckInDelegate.SetOnCheckInCompleteCallback(handler); -} - -void CHIPCommand::UnsetOnCheckInCompleteCallback() -{ - sCheckInDelegate.UnsetOnCheckInCompleteCallback(); -} diff --git a/examples/chip-tool/commands/common/CHIPCommand.h b/examples/chip-tool/commands/common/CHIPCommand.h index 548a27a373868e..38e4811eadf361 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.h +++ b/examples/chip-tool/commands/common/CHIPCommand.h @@ -180,10 +180,6 @@ class CHIPCommand : public Command ChipDeviceCommissioner & GetCommissioner(std::string identity); - static void SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler); - - static void UnsetOnCheckInCompleteCallback(); - private: CHIP_ERROR MaybeSetUpStack(); void MaybeTearDownStack(); diff --git a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp index 4c8a6813069ef0..1aa2f6ea705a67 100644 --- a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp +++ b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp @@ -40,10 +40,6 @@ void ChipToolCheckInDelegate::OnCheckInComplete(const ICDClientInfo & clientInfo ChipLogProgress( ICD, "Check In Message processing complete: start_counter=%" PRIu32 " offset=%" PRIu32 " nodeid=" ChipLogFormatScopedNodeId, clientInfo.start_icd_counter, clientInfo.offset, ChipLogValueScopedNodeId(clientInfo.peer_node)); - if (mpCheckInCompleteCallbacks != nullptr) - { - mpCheckInCompleteCallbacks->OnCheckInComplete(clientInfo); - } } RefreshKeySender * ChipToolCheckInDelegate::OnKeyRefreshNeeded(ICDClientInfo & clientInfo, ICDClientStorage * clientStorage) @@ -78,13 +74,3 @@ void ChipToolCheckInDelegate::OnKeyRefreshDone(RefreshKeySender * refreshKeySend refreshKeySender = nullptr; } } - -void ChipToolCheckInDelegate::SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler) -{ - mpCheckInCompleteCallbacks = handler; -} - -void ChipToolCheckInDelegate::UnsetOnCheckInCompleteCallback() -{ - mpCheckInCompleteCallbacks = nullptr; -} diff --git a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h index ba7829b5a89184..d0e456ae885dc5 100644 --- a/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h +++ b/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h @@ -24,22 +24,6 @@ #include <app/icd/client/CheckInDelegate.h> #include <app/icd/client/ICDClientStorage.h> -class CheckInCompleteCallback -{ -public: - virtual ~CheckInCompleteCallback() {} - - /** - * @brief Callback used to let the application know that a check-in message was received and validated. - * - * The callback will be executed in CHIP main loop. Implementations should avoid blocking operations in this callback. - * - * @param[in] clientInfo - ICDClientInfo object representing the state associated with the - * node that sent the check-in message. - */ - virtual void OnCheckInComplete(const chip::app::ICDClientInfo & clientInfo) = 0; -}; - class ChipToolCheckInDelegate : public chip::app::CheckInDelegate { public: @@ -50,25 +34,7 @@ class ChipToolCheckInDelegate : public chip::app::CheckInDelegate chip::app::ICDClientStorage * clientStorage) override; void OnKeyRefreshDone(chip::app::RefreshKeySender * refreshKeySender, CHIP_ERROR error) override; - /** - * @brief Sets a callback for when the Check-In processing completes. - * - * This method does not consider the race condition that the callback is changed during OnCheckInComplete. - * - * @param[in] handler - A pointer to the CheckInCompleteCallback to register. - */ - void SetOnCheckInCompleteCallback(CheckInCompleteCallback * handler); - - /** - * @brief Unsets the callback for when the Check-In processing completes. - * - * This method does not consider the race condition that the callback is changed during OnCheckInComplete. - */ - void UnsetOnCheckInCompleteCallback(); - private: chip::app::ICDClientStorage * mpStorage = nullptr; chip::app::InteractionModelEngine * mpImEngine = nullptr; - - CheckInCompleteCallback * mpCheckInCompleteCallbacks; }; From 5f673c31d1b4f4e738e90050bbb3be3291a50c42 Mon Sep 17 00:00:00 2001 From: Song Guo <songguo@google.com> Date: Thu, 2 May 2024 05:59:52 +0000 Subject: [PATCH 6/6] Fix build and style --- examples/chip-tool/commands/common/CHIPCommand.cpp | 1 - examples/darwin-framework-tool/BUILD.gn | 2 ++ examples/tv-casting-app/tv-casting-common/BUILD.gn | 2 ++ 3 files changed, 4 insertions(+), 1 deletion(-) diff --git a/examples/chip-tool/commands/common/CHIPCommand.cpp b/examples/chip-tool/commands/common/CHIPCommand.cpp index cc1f498ebaf07e..8bf82abe14fbd7 100644 --- a/examples/chip-tool/commands/common/CHIPCommand.cpp +++ b/examples/chip-tool/commands/common/CHIPCommand.cpp @@ -654,4 +654,3 @@ void CHIPCommand::ExecuteDeferredCleanups(intptr_t ignored) } sDeferredCleanups.clear(); } - diff --git a/examples/darwin-framework-tool/BUILD.gn b/examples/darwin-framework-tool/BUILD.gn index 665dccf4848df4..a4859c4c68f363 100644 --- a/examples/darwin-framework-tool/BUILD.gn +++ b/examples/darwin-framework-tool/BUILD.gn @@ -170,6 +170,8 @@ config("config") { executable("darwin-framework-tool") { sources = [ + "${chip_root}/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp", + "${chip_root}/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h", "${chip_root}/examples/chip-tool/commands/common/Command.cpp", "${chip_root}/examples/chip-tool/commands/common/Command.h", "${chip_root}/examples/chip-tool/commands/common/Commands.cpp", diff --git a/examples/tv-casting-app/tv-casting-common/BUILD.gn b/examples/tv-casting-app/tv-casting-common/BUILD.gn index 72f14fb7bffeee..52e5481e97c296 100644 --- a/examples/tv-casting-app/tv-casting-common/BUILD.gn +++ b/examples/tv-casting-app/tv-casting-common/BUILD.gn @@ -38,6 +38,8 @@ chip_data_model("tv-casting-common") { "${chip_root}/examples/chip-tool/commands/clusters/ModelCommand.h", "${chip_root}/examples/chip-tool/commands/common/BDXDiagnosticLogsServerDelegate.cpp", "${chip_root}/examples/chip-tool/commands/common/CHIPCommand.h", + "${chip_root}/examples/chip-tool/commands/common/ChipToolCheckInDelegate.cpp", + "${chip_root}/examples/chip-tool/commands/common/ChipToolCheckInDelegate.h", "${chip_root}/examples/chip-tool/commands/common/Command.cpp", "${chip_root}/examples/chip-tool/commands/common/Command.h", "${chip_root}/examples/chip-tool/commands/common/Commands.cpp",