1
1
/*
2
- * SPDX-FileCopyrightText: 2023 Espressif Systems (Shanghai) CO LTD
2
+ * SPDX-FileCopyrightText: 2023-2024 Espressif Systems (Shanghai) CO LTD
3
3
*
4
4
* SPDX-License-Identifier: Apache-2.0
5
5
*/
@@ -80,6 +80,21 @@ static void handle_ot_role_change(otInstance* instance)
80
80
s_previous_role = role ;
81
81
}
82
82
83
+ static void handle_ot_dataset_change (esp_openthread_dataset_type_t type , otInstance * instance )
84
+ {
85
+ esp_openthread_dataset_changed_event_t event_data ;
86
+ event_data .type = type ;
87
+ memset (& event_data .new_dataset , 0 , sizeof (event_data .new_dataset ));
88
+ if (type == OPENTHREAD_ACTIVE_DATASET ) {
89
+ (void )otDatasetGetActive (instance , & event_data .new_dataset );
90
+ } else if (type == OPENTHREAD_PENDING_DATASET ) {
91
+ (void )otDatasetGetPending (instance , & event_data .new_dataset );
92
+ }
93
+ if (esp_event_post (OPENTHREAD_EVENT , OPENTHREAD_EVENT_DATASET_CHANGED , & event_data , sizeof (event_data ), 0 ) != ESP_OK ) {
94
+ ESP_LOGE (TAG , "Failed to post dataset changed event" );
95
+ }
96
+ }
97
+
83
98
static void ot_state_change_callback (otChangedFlags changed_flags , void * ctx )
84
99
{
85
100
OT_UNUSED_VARIABLE (ctx );
@@ -99,6 +114,14 @@ static void ot_state_change_callback(otChangedFlags changed_flags, void* ctx)
99
114
if (changed_flags & OT_CHANGED_THREAD_NETIF_STATE ) {
100
115
handle_ot_netif_state_change (instance );
101
116
}
117
+
118
+ if (changed_flags & OT_CHANGED_ACTIVE_DATASET ) {
119
+ handle_ot_dataset_change (OPENTHREAD_ACTIVE_DATASET , instance );
120
+ }
121
+
122
+ if (changed_flags & OT_CHANGED_PENDING_DATASET ) {
123
+ handle_ot_dataset_change (OPENTHREAD_PENDING_DATASET , instance );
124
+ }
102
125
}
103
126
104
127
esp_err_t esp_openthread_state_event_init (otInstance * instance )
0 commit comments