5252
5353#ifdef CONFIG_OPENTHREAD
5454#include < platform/OpenThread/GenericNetworkCommissioningThreadDriver.h>
55+ #include < openthread.h>
5556#endif
5657
5758#include < app/InteractionModelEngine.h>
@@ -194,6 +195,18 @@ CHIP_ERROR InitNetworkingStack()
194195 return error;
195196}
196197
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+
197210#elif defined(CONFIG_CHIP_WIFI)
198211
199212CHIP_ERROR InitNetworkingStack ()
@@ -205,7 +218,7 @@ CHIP_ERROR InitNetworkingStack()
205218 return CHIP_NO_ERROR;
206219}
207220#else
208- #error "No valid L2 network backend selected");
221+ #error "No valid networking backend selected");
209222#endif /* CONFIG_OPENTHREAD */
210223
211224#define VerifyInitResultOrReturn (ec, msg ) \
@@ -238,7 +251,7 @@ void DoInitChipServer(intptr_t /* unused */)
238251 VerifyInitResultOrReturn (sInitResult , " Custom pre server initialization failed" );
239252 }
240253
241- /* Initialize L2 networking backend. */
254+ /* Initialize networking backend. */
242255 sInitResult = InitNetworkingStack ();
243256 VerifyInitResultOrReturn (sInitResult , " Cannot initialize IPv6 networking stack" );
244257
@@ -291,6 +304,15 @@ void DoInitChipServer(intptr_t /* unused */)
291304 /* The default CommissionableDataProvider is set internally in the GenericConfigurationManagerImpl::Init(). */
292305#endif
293306
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+
294316#ifdef CONFIG_NCS_SAMPLE_MATTER_SETTINGS_SHELL
295317 VerifyOrReturn (Nrf::PersistentStorageShell::Init (),
296318 LOG_ERR (" Matter settings shell has been enabled, but it cannot be initialized." ));
0 commit comments