Skip to content

Commit 9afcf78

Browse files
committed
Issue 37140 - new getters and setters
1 parent 0e284c5 commit 9afcf78

File tree

3 files changed

+26
-5
lines changed

3 files changed

+26
-5
lines changed

src/app/InteractionModelEngine.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -1745,7 +1745,7 @@ Protocols::InteractionModel::Status InteractionModelEngine::CheckCommandAccess(c
17451745
.requestType = Access::RequestType::kCommandInvokeRequest,
17461746
.entityId = aRequest.path.mCommandId };
17471747

1748-
CHIP_ERROR err = Access::GetAccessControl().Check(*aRequest.subjectDescriptor, requestPath, entry.invokePrivilege);
1748+
CHIP_ERROR err = Access::GetAccessControl().Check(*aRequest.subjectDescriptor, requestPath, entry.GetInvokePrivilege());
17491749
if (err != CHIP_NO_ERROR)
17501750
{
17511751
if ((err != CHIP_ERROR_ACCESS_DENIED) && (err != CHIP_ERROR_ACCESS_RESTRICTED_BY_ARL))

src/app/data-model-provider/MetadataTypes.h

+24-3
Original file line numberDiff line numberDiff line change
@@ -99,13 +99,15 @@ struct AttributeEntry
9999
BitFlags<AttributeQualityFlags> flags;
100100

101101

102+
// Constructor
103+
AttributeEntry() : readPrivilege(0), writePrivilege(0) {}
102104

103105
void SetReadPrivilege(Access::Privilege r)
104106
{
105107
readPrivilege = chip::to_underlying(r);
106108
}
107109

108-
Access::Privilege GetReadPrivilege()
110+
Access::Privilege GetReadPrivilege() const
109111
{
110112
return static_cast< Access::Privilege >(readPrivilege);
111113
}
@@ -115,7 +117,7 @@ struct AttributeEntry
115117
writePrivilege = chip::to_underlying(w);
116118
}
117119

118-
Access::Privilege GetWritePrivilege()
120+
Access::Privilege GetWritePrivilege() const
119121
{
120122
return static_cast< Access::Privilege >(writePrivilege);
121123
}
@@ -148,7 +150,26 @@ struct AcceptedCommandEntry
148150
// TODO: this can be more compact (use some flags for privilege)
149151
// to make this compact, add a compact enum and make flags/invokePrivilege getters (to still be type safe)
150152
BitFlags<CommandQualityFlags> flags;
151-
Access::Privilege invokePrivilege = Access::Privilege::kOperate;
153+
154+
155+
// Constructor
156+
AcceptedCommandEntry() :
157+
invokePrivilege(chip::to_underlying(Access::Privilege::kOperate)) {}
158+
159+
160+
Access::Privilege GetInvokePrivilege() const
161+
{
162+
return static_cast< Access::Privilege >(invokePrivilege);
163+
}
164+
165+
void SetInvokePrivilege(Access::Privilege i)
166+
{
167+
invokePrivilege = chip::to_underlying(i);
168+
}
169+
170+
171+
private:
172+
std::underlying_type_t<Access::Privilege> invokePrivilege : 5 ;
152173
};
153174

154175
/// Represents a device type that resides on an endpoint

src/data-model-providers/codegen/CodegenDataModelProvider.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -58,7 +58,7 @@ DataModel::AcceptedCommandEntry AcceptedCommandEntryFor(const ConcreteCommandPat
5858
DataModel::AcceptedCommandEntry entry;
5959

6060
entry.commandId = path.mCommandId;
61-
entry.invokePrivilege = RequiredPrivilege::ForInvokeCommand(path);
61+
entry.SetInvokePrivilege( RequiredPrivilege::ForInvokeCommand(path) );
6262
entry.flags.Set(DataModel::CommandQualityFlags::kTimed, CommandNeedsTimedInvoke(path.mClusterId, commandId));
6363
entry.flags.Set(DataModel::CommandQualityFlags::kFabricScoped, CommandIsFabricScoped(path.mClusterId, commandId));
6464
entry.flags.Set(DataModel::CommandQualityFlags::kLargeMessage, CommandHasLargePayload(path.mClusterId, commandId));

0 commit comments

Comments
 (0)