52
52
53
53
#ifdef CONFIG_OPENTHREAD
54
54
#include < platform/OpenThread/GenericNetworkCommissioningThreadDriver.h>
55
+ #include < openthread.h>
55
56
#endif
56
57
57
58
#include < app/InteractionModelEngine.h>
@@ -194,6 +195,18 @@ CHIP_ERROR InitNetworkingStack()
194
195
return error;
195
196
}
196
197
198
+ #if CHIP_SYSTEM_CONFIG_USE_OPENTHREAD_ENDPOINT
199
+ void LockOpenThreadTask (void )
200
+ {
201
+ chip::DeviceLayer::ThreadStackMgr ().LockThreadStack ();
202
+ }
203
+
204
+ void UnlockOpenThreadTask (void )
205
+ {
206
+ chip::DeviceLayer::ThreadStackMgr ().UnlockThreadStack ();
207
+ }
208
+ #endif /* CHIP_SYSTEM_CONFIG_USE_OPENTHREAD_ENDPOINT */
209
+
197
210
#elif defined(CONFIG_CHIP_WIFI)
198
211
199
212
CHIP_ERROR InitNetworkingStack ()
@@ -205,7 +218,7 @@ CHIP_ERROR InitNetworkingStack()
205
218
return CHIP_NO_ERROR;
206
219
}
207
220
#else
208
- #error "No valid L2 network backend selected");
221
+ #error "No valid networking backend selected");
209
222
#endif /* CONFIG_OPENTHREAD */
210
223
211
224
#define VerifyInitResultOrReturn (ec, msg ) \
@@ -238,7 +251,7 @@ void DoInitChipServer(intptr_t /* unused */)
238
251
VerifyInitResultOrReturn (sInitResult , " Custom pre server initialization failed" );
239
252
}
240
253
241
- /* Initialize L2 networking backend. */
254
+ /* Initialize networking backend. */
242
255
sInitResult = InitNetworkingStack ();
243
256
VerifyInitResultOrReturn (sInitResult , " Cannot initialize IPv6 networking stack" );
244
257
@@ -291,6 +304,15 @@ void DoInitChipServer(intptr_t /* unused */)
291
304
/* The default CommissionableDataProvider is set internally in the GenericConfigurationManagerImpl::Init(). */
292
305
#endif
293
306
307
+ #if CHIP_SYSTEM_CONFIG_USE_OPENTHREAD_ENDPOINT
308
+ // Set up OpenThread configuration when OpenThread is included
309
+ chip::Inet::EndPointStateOpenThread::OpenThreadEndpointInitParam nativeParams;
310
+ nativeParams.lockCb = LockOpenThreadTask;
311
+ nativeParams.unlockCb = UnlockOpenThreadTask;
312
+ nativeParams.openThreadInstancePtr = chip::DeviceLayer::ThreadStackMgrImpl ().OTInstance ();
313
+ sLocalInitData .mServerInitParams ->endpointNativeParams = static_cast <void *>(&nativeParams);
314
+ #endif /* CHIP_SYSTEM_CONFIG_USE_OPENTHREAD_ENDPOINT */
315
+
294
316
#ifdef CONFIG_NCS_SAMPLE_MATTER_SETTINGS_SHELL
295
317
VerifyOrReturn (Nrf::PersistentStorageShell::Init (),
296
318
LOG_ERR (" Matter settings shell has been enabled, but it cannot be initialized." ));
0 commit comments