3535#include < lib/core/CHIPError.h>
3636#include < lib/core/CHIPPersistentStorageDelegate.h>
3737#include < lib/core/DataModelTypes.h>
38+ #include < lib/support/CodeUtils.h>
3839#include < lib/support/Span.h>
3940#include < platform/CHIPDeviceLayer.h>
4041#include < platform/KeyValueStoreManager.h>
4142#include < platform/PlatformManager.h>
4243#include < stdint.h>
4344#include < transport/TransportMgr.h>
44- #include " support/CodeUtils.h"
4545
4646#if CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY
4747#include < controller/CommissionerDiscoveryController.h>
@@ -73,7 +73,9 @@ class auto_fabric_remover : private chip::Controller::CurrentFabricRemover {
7373 auto_fabric_remover (chip::Controller::DeviceController *controller, remove_fabric_callback callback)
7474 : chip::Controller::CurrentFabricRemover(controller)
7575 , m_matter_callback(on_remove_current_fabric, this )
76- , m_remove_fabric_callback(callback) {}
76+ , m_remove_fabric_callback(callback)
77+ {
78+ }
7779
7880private:
7981 static void on_remove_current_fabric (void *context, chip::NodeId remote_node, CHIP_ERROR status)
@@ -88,6 +90,42 @@ class auto_fabric_remover : private chip::Controller::CurrentFabricRemover {
8890 remove_fabric_callback m_remove_fabric_callback;
8991};
9092
93+ class controller_check_in_delegate : public chip ::app::DefaultCheckInDelegate {
94+ public:
95+ using check_in_complete_callback = void (*)(const chip::app::ICDClientInfo &clientInfo);
96+ using key_refresh_done_callback = void (*)(const chip::app::RefreshKeySender *refreshKeySender, CHIP_ERROR error);
97+ CHIP_ERROR Init (chip::app::ICDClientStorage *storage, chip::app::InteractionModelEngine *engine)
98+ {
99+ return chip::app::DefaultCheckInDelegate::Init (storage, engine);
100+ }
101+
102+ void SetICDDelegateCallback (check_in_complete_callback check_in_complete_cb,
103+ key_refresh_done_callback key_refresh_done_cb)
104+ {
105+ m_check_in_complete_cb = check_in_complete_cb;
106+ m_key_refresh_done_cb = key_refresh_done_cb;
107+ }
108+
109+ void OnCheckInComplete (const chip::app::ICDClientInfo &clientInfo) override
110+ {
111+ if (m_check_in_complete_cb) {
112+ m_check_in_complete_cb (clientInfo);
113+ }
114+ }
115+
116+ void OnKeyRefreshDone (chip::app::RefreshKeySender *refreshKeySender, CHIP_ERROR error) override
117+ {
118+ if (m_key_refresh_done_cb) {
119+ m_key_refresh_done_cb (refreshKeySender, error);
120+ }
121+ chip::app::DefaultCheckInDelegate::OnKeyRefreshDone (refreshKeySender, error);
122+ }
123+
124+ private:
125+ check_in_complete_callback m_check_in_complete_cb;
126+ key_refresh_done_callback m_key_refresh_done_cb;
127+ };
128+
91129class matter_controller_client {
92130public:
93131 class controller_storage_delegate : public chip ::PersistentStorageDelegate {
@@ -133,6 +171,11 @@ class matter_controller_client {
133171
134172 esp_err_t init (NodeId node_id, FabricId fabric_id, uint16_t listen_port);
135173 chip::app::DefaultICDClientStorage &get_icd_client_storage () { return m_icd_client_storage; }
174+ void set_icd_client_callback (controller_check_in_delegate::check_in_complete_callback check_in_complete_cb,
175+ controller_check_in_delegate::key_refresh_done_callback key_refresh_done_cb)
176+ {
177+ m_icd_check_in_delegate.SetICDDelegateCallback (check_in_complete_cb, key_refresh_done_cb);
178+ }
136179
137180#ifdef CONFIG_ESP_MATTER_COMMISSIONER_ENABLE
138181 esp_err_t setup_commissioner ();
@@ -227,7 +270,7 @@ class matter_controller_client {
227270 NodeId m_controller_node_id;
228271 FabricId m_controller_fabric_id;
229272 chip::app::DefaultICDClientStorage m_icd_client_storage;
230- chip::app::DefaultCheckInDelegate m_icd_check_in_delegate;
273+ controller_check_in_delegate m_icd_check_in_delegate;
231274 chip::app::CheckInHandler m_check_in_handler;
232275
233276#ifdef CONFIG_ESP_MATTER_COMMISSIONER_ENABLE
0 commit comments