Add a controller factory to vend controllers per Fabric (#9872)
* Add a controller factory to vend controllers per Fabric
* Remove the UDP port from CHIPDeviceController and CHIPDevice
* fix style
diff --git a/src/controller/python/ChipDeviceController-ScriptBinding.cpp b/src/controller/python/ChipDeviceController-ScriptBinding.cpp
index 69053b8..fc99cc8 100644
--- a/src/controller/python/ChipDeviceController-ScriptBinding.cpp
+++ b/src/controller/python/ChipDeviceController-ScriptBinding.cpp
@@ -51,6 +51,7 @@
#include <app/server/Mdns.h>
#include <controller/CHIPDevice.h>
#include <controller/CHIPDeviceController.h>
+#include <controller/CHIPDeviceControllerFactory.h>
#include <controller/ExampleOperationalCredentialsIssuer.h>
#include <credentials/DeviceAttestationVerifier.h>
#include <credentials/examples/DeviceAttestationVerifierExample.h>
@@ -205,19 +206,21 @@
nocSpan);
VerifyOrReturnError(err == CHIP_NO_ERROR, err.AsInteger());
- CommissionerInitParams initParams;
- initParams.storageDelegate = &sStorageDelegate;
- initParams.mDeviceAddressUpdateDelegate = &sDeviceAddressUpdateDelegate;
+ FactoryInitParams factoryParams;
+ factoryParams.storageDelegate = &sStorageDelegate;
+ factoryParams.imDelegate = &PythonInteractionModelDelegate::Instance();
+
+ SetupParams initParams;
+ initParams.deviceAddressUpdateDelegate = &sDeviceAddressUpdateDelegate;
initParams.pairingDelegate = &sPairingDelegate;
initParams.operationalCredentialsDelegate = &sOperationalCredentialsIssuer;
- initParams.imDelegate = &PythonInteractionModelDelegate::Instance();
initParams.ephemeralKeypair = &ephemeralKey;
initParams.controllerRCAC = rcacSpan;
initParams.controllerICAC = icacSpan;
initParams.controllerNOC = nocSpan;
- (*outDevCtrl)->SetUdpListenPort(0);
- err = (*outDevCtrl)->Init(initParams);
+ ReturnErrorOnFailure(DeviceControllerFactory::GetInstance().Init(factoryParams).AsInteger());
+ err = DeviceControllerFactory::GetInstance().SetupCommissioner(initParams, **outDevCtrl);
VerifyOrReturnError(err == CHIP_NO_ERROR, err.AsInteger());
#if CHIP_DEVICE_CONFIG_ENABLE_COMMISSIONER_DISCOVERY
chip::app::MdnsServer::Instance().StartServer(chip::Mdns::CommissioningMode::kDisabled);