Skip to content

Commit 6825f89

Browse files
committed
Merge branch 'controller/add_icd_callback' into 'main'
esp_matter_controller: Add API to register callbacks for ICD client Closes CON-1925 See merge request app-frameworks/esp-matter!1410
2 parents ccad0a9 + 97f9351 commit 6825f89

File tree

1 file changed

+46
-3
lines changed

1 file changed

+46
-3
lines changed

components/esp_matter_controller/core/esp_matter_controller_client.h

Lines changed: 46 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,13 +35,13 @@
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

7880
private:
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+
91129
class matter_controller_client {
92130
public:
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

Comments
 (0)