2929#include < app/reporting/reporting.h>
3030#include < app/server-cluster/AttributeListBuilder.h>
3131#include < app/server-cluster/DefaultServerCluster.h>
32- #include < app/server/Server.h>
3332#include < clusters/NetworkCommissioning/AttributeIds.h>
3433#include < clusters/NetworkCommissioning/CommandIds.h>
3534#include < clusters/NetworkCommissioning/Commands.h>
4645#include < optional>
4746#include < platform/CHIPDeviceConfig.h>
4847#include < platform/ConnectivityManager.h>
49- #include < platform/DeviceControlServer.h>
50- #include < platform/PlatformManager.h>
5148#include < platform/internal/DeviceNetworkInfo.h>
5249#include < protocols/interaction_model/StatusCode.h>
5350#include < tracing/macros.h>
@@ -150,10 +147,8 @@ void FillDebugTextAndNetworkIndex(Commands::NetworkConfigResponse::Type & respon
150147 }
151148}
152149
153- std::optional<ActionReturnStatus> EnsureFailsafeIsArmed (FabricIndex fabricIndex)
150+ std::optional<ActionReturnStatus> EnsureFailsafeIsArmed (FailSafeContext & failSafeContext, FabricIndex fabricIndex)
154151{
155- auto & failSafeContext = chip::Server::GetInstance ().GetFailSafeContext ();
156-
157152 if (!failSafeContext.IsFailSafeArmed (fabricIndex))
158153 {
159154 return Protocols::InteractionModel::Status::FailsafeRequired;
@@ -166,35 +161,31 @@ std::optional<ActionReturnStatus> EnsureFailsafeIsArmed(FabricIndex fabricIndex)
166161// / is not armed for the given fabric index.
167162// /
168163// / This just wraps EnsureFailsafeIsArmed with a one-liner for check & return.
169- #define RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (fabricIndex ) \
170- if (std::optional<ActionReturnStatus> status = EnsureFailsafeIsArmed(fabricIndex); status.has_value()) \
164+ #define RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (failSafeContext, fabricIndex ) \
165+ if (std::optional<ActionReturnStatus> status = EnsureFailsafeIsArmed(failSafeContext, fabricIndex); status.has_value()) \
171166 { \
172167 return status; \
173168 } \
174169 (void ) 0
175170} // namespace
176171
177- NetworkCommissioningCluster::NetworkCommissioningCluster (EndpointId endpointId, WiFiDriver * driver, BreadCrumbTracker & tracker ) :
172+ NetworkCommissioningCluster::NetworkCommissioningCluster (EndpointId endpointId, WiFiDriver * driver, const Context & context ) :
178173 DefaultServerCluster ({ endpointId, NetworkCommissioning::Id }), mEndpointId (endpointId), mFeatureFlags (WiFiFeatures(driver)),
179- mpWirelessDriver (driver), mpBaseDriver(driver), mBreadcrumbTracker (tracker )
174+ mpWirelessDriver (driver), mpBaseDriver(driver), mClusterContext (context )
180175{
181176 mpDriver.Set <WiFiDriver *>(driver);
182177}
183178
184- NetworkCommissioningCluster::NetworkCommissioningCluster (EndpointId endpointId, ThreadDriver * driver,
185- BreadCrumbTracker & tracker) :
186- DefaultServerCluster ({ endpointId, NetworkCommissioning::Id }),
187- mEndpointId (endpointId), mFeatureFlags (Feature::kThreadNetworkInterface ), mpWirelessDriver(driver), mpBaseDriver(driver),
188- mBreadcrumbTracker (tracker)
179+ NetworkCommissioningCluster::NetworkCommissioningCluster (EndpointId endpointId, ThreadDriver * driver, const Context & context) :
180+ DefaultServerCluster ({ endpointId, NetworkCommissioning::Id }), mEndpointId (endpointId),
181+ mFeatureFlags (Feature::kThreadNetworkInterface ), mpWirelessDriver(driver), mpBaseDriver(driver), mClusterContext (context)
189182{
190183 mpDriver.Set <ThreadDriver *>(driver);
191184}
192185
193- NetworkCommissioningCluster::NetworkCommissioningCluster (EndpointId endpointId, EthernetDriver * driver,
194- BreadCrumbTracker & tracker) :
195- DefaultServerCluster ({ endpointId, NetworkCommissioning::Id }),
196- mEndpointId (endpointId), mFeatureFlags (Feature::kEthernetNetworkInterface ), mpWirelessDriver(nullptr ), mpBaseDriver(driver),
197- mBreadcrumbTracker (tracker)
186+ NetworkCommissioningCluster::NetworkCommissioningCluster (EndpointId endpointId, EthernetDriver * driver, const Context & context) :
187+ DefaultServerCluster ({ endpointId, NetworkCommissioning::Id }), mEndpointId (endpointId),
188+ mFeatureFlags (Feature::kEthernetNetworkInterface ), mpWirelessDriver(nullptr ), mpBaseDriver(driver), mClusterContext (context)
198189{}
199190
200191#if CHIP_DEVICE_CONFIG_SUPPORTS_CONCURRENT_CONNECTION
@@ -203,7 +194,7 @@ NetworkCommissioningCluster::NetworkInstanceList NetworkCommissioningCluster::sI
203194
204195CHIP_ERROR NetworkCommissioningCluster::Init ()
205196{
206- ReturnErrorOnFailure (DeviceLayer::PlatformMgrImpl () .AddEventHandler (OnPlatformEventHandler, reinterpret_cast <intptr_t >(this )));
197+ ReturnErrorOnFailure (mClusterContext . platformManager .AddEventHandler (OnPlatformEventHandler, reinterpret_cast <intptr_t >(this )));
207198 ReturnErrorOnFailure (mpBaseDriver->Init (this ));
208199 mLastNetworkingStatusValue .SetNull ();
209200 mLastConnectErrorValue .SetNull ();
@@ -378,7 +369,7 @@ NetworkCommissioningCluster::HandleAddOrUpdateWiFiNetwork(CommandHandler & handl
378369#if CHIP_DEVICE_CONFIG_ENABLE_WIFI_STATION || CHIP_DEVICE_CONFIG_ENABLE_WIFI_AP
379370 MATTER_TRACE_SCOPE (" HandleAddOrUpdateWiFiNetwork" , " NetworkCommissioning" );
380371
381- RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (handler.GetAccessingFabricIndex ());
372+ RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (mClusterContext . failSafeContext , handler.GetAccessingFabricIndex ());
382373
383374 if (req.ssid .empty () || req.ssid .size () > DeviceLayer::Internal::kMaxWiFiSSIDLength )
384375 {
@@ -566,7 +557,7 @@ NetworkCommissioningCluster::HandleAddOrUpdateThreadNetwork(CommandHandler & han
566557
567558 MATTER_TRACE_SCOPE (" HandleAddOrUpdateThreadNetwork" , " NetworkCommissioning" );
568559
569- RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (handler.GetAccessingFabricIndex ());
560+ RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (mClusterContext . failSafeContext , handler.GetAccessingFabricIndex ());
570561
571562 Commands::NetworkConfigResponse::Type response;
572563 DebugTextStorage debugTextBuffer;
@@ -590,7 +581,7 @@ NetworkCommissioningCluster::HandleAddOrUpdateThreadNetwork(CommandHandler & han
590581void NetworkCommissioningCluster::UpdateBreadcrumb (const Optional<uint64_t > & breadcrumb)
591582{
592583 VerifyOrReturn (breadcrumb.HasValue ());
593- mBreadcrumbTracker .SetBreadCrumb (breadcrumb.Value ());
584+ mClusterContext . breadcrumbTracker .SetBreadCrumb (breadcrumb.Value ());
594585}
595586
596587void NetworkCommissioningCluster::CommitSavedBreadcrumb ()
@@ -607,7 +598,7 @@ NetworkCommissioningCluster::HandleRemoveNetwork(CommandHandler & handler, const
607598{
608599 MATTER_TRACE_SCOPE (" HandleRemoveNetwork" , " NetworkCommissioning" );
609600
610- RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (handler.GetAccessingFabricIndex ());
601+ RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (mClusterContext . failSafeContext , handler.GetAccessingFabricIndex ());
611602
612603 Commands::NetworkConfigResponse::Type response;
613604 DebugTextStorage debugTextBuffer;
@@ -642,7 +633,7 @@ NetworkCommissioningCluster::HandleConnectNetwork(CommandHandler & handler, cons
642633 return Protocols::InteractionModel::Status::ConstraintError;
643634 }
644635
645- RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (handler.GetAccessingFabricIndex ());
636+ RETURN_ERROR_STATUS_IF_FAILSAFE_NOT_ARMED (mClusterContext . failSafeContext , handler.GetAccessingFabricIndex ());
646637
647638 mConnectingNetworkIDLen = static_cast <uint8_t >(req.networkID .size ());
648639 memcpy (mConnectingNetworkID , req.networkID .data (), mConnectingNetworkIDLen );
@@ -837,7 +828,7 @@ void NetworkCommissioningCluster::OnResult(Status commissioningError, CharSpan d
837828 }
838829 if (commissioningError == Status::kSuccess )
839830 {
840- TEMPORARY_RETURN_IGNORED DeviceLayer::DeviceControlServer::DeviceControlSvr () .PostConnectedToOperationalNetworkEvent (
831+ TEMPORARY_RETURN_IGNORED mClusterContext . deviceControlServer .PostConnectedToOperationalNetworkEvent (
841832 ByteSpan (mLastNetworkID , mLastNetworkIDLen ));
842833 SetLastConnectErrorValue (NullNullable);
843834 }
0 commit comments