Skip to content

Commit ca1a6be

Browse files
committed
Issue 37140 - new getters and setters
1 parent 326ca35 commit ca1a6be

File tree

2 files changed

+46
-26
lines changed

2 files changed

+46
-26
lines changed

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

+42-22
Original file line numberDiff line numberDiff line change
@@ -95,34 +95,48 @@ struct AttributeEntry
9595
AttributeId attributeId;
9696

9797
// Constructor
98-
constexpr AttributeEntry() : attributeId(0), mask{ 0, kNoPrivilege, kNoPrivilege } {}
98+
constexpr AttributeEntry(AttributeId id = 0,
99+
std::underlying_type_t<AttributeQualityFlags> attrQualityFlags = 0,
100+
std::underlying_type_t<Access::Privilege> readPriv = kNoPrivilege,
101+
std::underlying_type_t<Access::Privilege> writePriv = kNoPrivilege
102+
) : attributeId(id), mask{ attrQualityFlags, readPriv, writePriv } {}
99103

100-
101-
void SetReadPrivilege(Access::Privilege r)
104+
105+
106+
// Overload assignment operator for mask.readPrivilege
107+
AttributeEntry& operator=(Access::Privilege value)
102108
{
103109
// Static ASSERT to check size of readPrivilege type vs entry parameter.
104110
static_assert(sizeof(std::underlying_type_t<Access::Privilege>) >=
105-
sizeof(chip::to_underlying(r)),
106-
"Size of readPrivilege is not able to accomodate parameter (r).");
111+
sizeof(chip::to_underlying(value)),
112+
"Size of readPrivilege is not able to accomodate parameter (value).");
107113

108-
mask.readPrivilege = chip::to_underlying(r);
114+
this->mask.readPrivilege = chip::to_underlying(value);
115+
return *this;
109116
}
110117

111-
Access::Privilege GetReadPrivilege() const
112-
{
113-
return static_cast< Access::Privilege >(mask.readPrivilege);
114-
}
115118

116-
void SetWritePrivilege(Access::Privilege w)
119+
// Overload assignment operator for mask.writePrivilege
120+
AttributeEntry& operator=(std::underlying_type_t<Access::Privilege> value)
117121
{
118122
// Static ASSERT to check size of writePrivilege type vs entry parameter.
119123
static_assert(sizeof(std::underlying_type_t<Access::Privilege>) >=
120-
sizeof(chip::to_underlying(w)),
121-
"Size of writePrivilege is not able to accomodate parameter (w).");
124+
sizeof(value),
125+
"Size of writePrivilege is not able to accomodate parameter (value).");
122126

123-
mask.writePrivilege = chip::to_underlying(w);
127+
this->mask.writePrivilege = value;
128+
return *this;
124129
}
125130

131+
132+
// Getter for mask.readPrivilege
133+
Access::Privilege GetReadPrivilege() const
134+
{
135+
return static_cast< Access::Privilege >(mask.readPrivilege);
136+
}
137+
138+
139+
// Getter for mask.writePrivilege
126140
Access::Privilege GetWritePrivilege() const
127141
{
128142
return static_cast< Access::Privilege >(mask.writePrivilege);
@@ -186,25 +200,31 @@ enum class CommandQualityFlags : uint32_t
186200

187201
struct AcceptedCommandEntry
188202
{
189-
CommandId commandId;
190203

204+
CommandId commandId;
191205

192206
// Constructor
193-
constexpr AcceptedCommandEntry() : commandId(0),
194-
mask{ 0, chip::to_underlying(Access::Privilege::kOperate) } {}
207+
constexpr AcceptedCommandEntry(CommandId id = 0,
208+
std::underlying_type_t<CommandQualityFlags> cmdQualityFlags = 0,
209+
std::underlying_type_t<Access::Privilege> invokePriv = kNoPrivilege
210+
) : commandId(id), mask{ cmdQualityFlags, invokePriv } {}
195211

196212

197-
void SetInvokePrivilege(Access::Privilege i)
213+
214+
// Overload assignment operator for mask.invokePrivilege
215+
AcceptedCommandEntry& operator=(Access::Privilege value)
198216
{
199217
// Static ASSERT to check size of invokePrivilege type vs entry parameter.
200218
static_assert(sizeof(std::underlying_type_t<Access::Privilege>) >=
201-
sizeof(chip::to_underlying(i)),
202-
"Size of invokePrivilege is not able to accomodate parameter (i).");
219+
sizeof(chip::to_underlying(value)),
220+
"Size of invokePrivilege is not able to accomodate parameter (value).");
203221

204-
mask.invokePrivilege = chip::to_underlying(i);
222+
this->mask.invokePrivilege = chip::to_underlying(value);
223+
return *this;
205224
}
206-
225+
207226

227+
// Getter for mask.invokePrivilege
208228
Access::Privilege GetInvokePrivilege() const
209229
{
210230
return static_cast< Access::Privilege >(mask.invokePrivilege);

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

+4-4
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.SetInvokePrivilege( RequiredPrivilege::ForInvokeCommand(path) );
61+
entry = RequiredPrivilege::ForInvokeCommand(path);
6262
entry.SetFlags(DataModel::CommandQualityFlags::kTimed, CommandNeedsTimedInvoke(path.mClusterId, commandId));
6363
entry.SetFlags(DataModel::CommandQualityFlags::kFabricScoped, CommandIsFabricScoped(path.mClusterId, commandId));
6464
entry.SetFlags(DataModel::CommandQualityFlags::kLargeMessage, CommandHasLargePayload(path.mClusterId, commandId));
@@ -99,10 +99,10 @@ DataModel::AttributeEntry AttributeEntryFrom(const ConcreteClusterPath & cluster
9999
const ConcreteAttributePath attributePath(clusterPath.mEndpointId, clusterPath.mClusterId, attribute.attributeId);
100100

101101
entry.attributeId = attribute.attributeId;
102-
entry.SetReadPrivilege(RequiredPrivilege::ForReadAttribute(attributePath));
102+
entry = RequiredPrivilege::ForReadAttribute(attributePath);
103103
if (!attribute.IsReadOnly())
104104
{
105-
entry.SetWritePrivilege(RequiredPrivilege::ForWriteAttribute(attributePath));
105+
entry = chip::to_underlying(RequiredPrivilege::ForWriteAttribute(attributePath));
106106
}
107107

108108
entry.SetFlags(DataModel::AttributeQualityFlags::kListAttribute, (attribute.attributeType == ZCL_ARRAY_ATTRIBUTE_TYPE));
@@ -294,7 +294,7 @@ CHIP_ERROR CodegenDataModelProvider::Attributes(const ConcreteClusterPath & path
294294
// - fixed value (no such flag exists, so this is not a quality flag we set/track)
295295
DataModel::AttributeEntry globalListEntry;
296296

297-
globalListEntry.SetReadPrivilege(Access::Privilege::kView);
297+
globalListEntry = Access::Privilege::kView;
298298
globalListEntry.SetFlags(DataModel::AttributeQualityFlags::kListAttribute);
299299

300300
for (auto & attribute : GlobalAttributesNotInMetadata)

0 commit comments

Comments
 (0)