Skip to content

Commit cec2fd9

Browse files
committed
Move MatterCommissionerControlPluginServerInitCallback from application to SDK
1 parent cb40cbd commit cec2fd9

File tree

4 files changed

+28
-24
lines changed

4 files changed

+28
-24
lines changed

examples/fabric-bridge-app/fabric-bridge-common/src/ZCLCallbacks.cpp

-11
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,6 @@
2020
#include <app-common/zap-generated/cluster-objects.h>
2121
#include <app-common/zap-generated/ids/Attributes.h>
2222
#include <app-common/zap-generated/ids/Clusters.h>
23-
#include <app/clusters/commissioner-control-server/commissioner-control-server.h>
2423
#include <lib/support/ZclString.h>
2524

2625
using namespace ::chip;
@@ -91,13 +90,3 @@ Protocols::InteractionModel::Status emberAfExternalAttributeWriteCallback(Endpoi
9190

9291
return ret;
9392
}
94-
95-
void MatterCommissionerControlPluginServerInitCallback()
96-
{
97-
ChipLogProgress(Zcl, "MatterCommissionerControlPluginServerInitCallback");
98-
99-
BitMask<CommissionerControl::SupportedDeviceCategoryBitmap> supportedDeviceCategories;
100-
supportedDeviceCategories.SetField(CommissionerControl::SupportedDeviceCategoryBitmap::kFabricSynchronization, 1);
101-
CommissionerControl::CommissionerControlServer::Instance().SetSupportedDeviceCategoriesValue(kRootEndpointId,
102-
supportedDeviceCategories);
103-
}

examples/fabric-bridge-app/linux/main.cpp

+13
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,7 @@
2323
#include "DeviceManager.h"
2424

2525
#include <app/AttributeAccessInterfaceRegistry.h>
26+
#include <app/clusters/commissioner-control-server/commissioner-control-server.h>
2627

2728
#if defined(PW_RPC_FABRIC_BRIDGE_SERVICE) && PW_RPC_FABRIC_BRIDGE_SERVICE
2829
#include "RpcClient.h"
@@ -167,6 +168,18 @@ void ApplicationInit()
167168
pollingThread.detach();
168169

169170
DeviceMgr().Init();
171+
172+
ChipLogProgress(Zcl, "Initialize SupportedDeviceCategories of Commissioner Control Cluster for this device.");
173+
174+
BitMask<CommissionerControl::SupportedDeviceCategoryBitmap> supportedDeviceCategories;
175+
supportedDeviceCategories.SetField(CommissionerControl::SupportedDeviceCategoryBitmap::kFabricSynchronization, 1);
176+
Protocols::InteractionModel::Status status =
177+
CommissionerControl::CommissionerControlServer::Instance().SetSupportedDeviceCategoriesValue(kRootEndpointId,
178+
supportedDeviceCategories);
179+
if (status != Protocols::InteractionModel::Status::Success)
180+
{
181+
ChipLogError(NotSpecified, "Failed to set SupportedDeviceCategories: %d", static_cast<int>(status));
182+
}
170183
}
171184

172185
void ApplicationShutdown()

src/app/clusters/commissioner-control-server/commissioner-control-server.cpp

+14-12
Original file line numberDiff line numberDiff line change
@@ -38,14 +38,6 @@ using chip::Protocols::InteractionModel::Status;
3838

3939
namespace {
4040

41-
NodeId getNodeId(const app::CommandHandler * commandObj)
42-
{
43-
VerifyOrDie(commandObj);
44-
auto descriptor = commandObj->GetSubjectDescriptor();
45-
46-
return descriptor.subject;
47-
}
48-
4941
void AddReverseOpenCommissioningWindowResponse(CommandHandler * commandObj, const ConcreteCommandPath & path,
5042
const Clusters::CommissionerControl::CommissioningWindowParams & params)
5143
{
@@ -128,7 +120,8 @@ CommissionerControlServer::SetSupportedDeviceCategoriesValue(EndpointId endpoint
128120
return status;
129121
}
130122

131-
CHIP_ERROR CommissionerControlServer::GenerateCommissioningRequestResultEvent(const Events::CommissioningRequestResult::Type & result)
123+
CHIP_ERROR
124+
CommissionerControlServer::GenerateCommissioningRequestResultEvent(const Events::CommissioningRequestResult::Type & result)
132125
{
133126
EventNumber eventNumber;
134127
CHIP_ERROR error = LogEvent(result, kRootEndpointId, eventNumber);
@@ -154,7 +147,8 @@ bool emberAfCommissionerControlClusterRequestCommissioningApprovalCallback(
154147

155148
ChipLogProgress(Zcl, "Received command to request commissioning approval");
156149

157-
auto sourceNodeId = getNodeId(commandObj);
150+
auto descriptor = commandObj->GetSubjectDescriptor();
151+
auto sourceNodeId = descriptor.subject;
158152
auto fabricIndex = commandObj->GetAccessingFabricIndex();
159153
auto requestId = commandData.requestId;
160154
auto vendorId = commandData.vendorId;
@@ -197,7 +191,8 @@ bool emberAfCommissionerControlClusterCommissionNodeCallback(
197191

198192
ChipLogProgress(Zcl, "Received command to commission node");
199193

200-
auto sourceNodeId = getNodeId(commandObj);
194+
auto descriptor = commandObj->GetSubjectDescriptor();
195+
auto sourceNodeId = descriptor.subject;
201196
auto requestId = commandData.requestId;
202197

203198
auto info = std::make_unique<Clusters::CommissionerControl::CommissionNodeInfo>();
@@ -210,7 +205,9 @@ bool emberAfCommissionerControlClusterCommissionNodeCallback(
210205
VerifyOrExit(sourceNodeId != kUndefinedNodeId, err = CHIP_ERROR_WRONG_NODE_ID);
211206
VerifyOrExit(delegate != nullptr, err = CHIP_ERROR_INCORRECT_STATE);
212207

213-
// Handle commissioning approval request
208+
// Handle commissioning approval request, the ipAddress assigned from commandData need to be stored in
209+
// CommissionerControl::Delegate which ensure that the backing buffer of ipAddress has a valid lifespan until the deferred task
210+
// is executed.
214211
err = delegate->ValidateCommissionNodeCommand(sourceNodeId, requestId, info->params);
215212
SuccessOrExit(err == CHIP_NO_ERROR);
216213

@@ -229,3 +226,8 @@ bool emberAfCommissionerControlClusterCommissionNodeCallback(
229226

230227
return true;
231228
}
229+
230+
void MatterCommissionerControlPluginServerInitCallback()
231+
{
232+
ChipLogProgress(Zcl, "Initiating Commissioner Control cluster.");
233+
}

src/app/clusters/commissioner-control-server/commissioner-control-server.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -82,7 +82,7 @@ class CommissionerControlServer
8282
* @brief
8383
* Called after the server return SUCCESS to a correctly formatted RequestCommissioningApproval command.
8484
*/
85-
CHIP_ERROR EmitCommissioningRequestResultEvent(const Events::CommissioningRequestResult::Type & result);
85+
CHIP_ERROR GenerateCommissioningRequestResultEvent(const Events::CommissioningRequestResult::Type & result);
8686

8787
private:
8888
CommissionerControlServer() = default;

0 commit comments

Comments
 (0)