Skip to content

Commit 8a1c7aa

Browse files
authored
Remove privilege-constants.h in favor of using access/Privilege.h (project-chip#32408)
* Start consolidating privilege constants * Update mappings * Updated names * Code now compiles * RequiredPrivilege should be just a namespace * Fix darwin types as well * Apparently without inline we get duplicate definitions. fixed * Undo parts of a bad merge * Apparently deps are needed * Cleanup again * Remove invalid todo ... this does not apply anymore now * Restyle
1 parent 23a76a9 commit 8a1c7aa

File tree

12 files changed

+257
-332
lines changed

12 files changed

+257
-332
lines changed

scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/access.h

+120-120
Large diffs are not rendered by default.

scripts/tools/zap/tests/outputs/lighting-app/app-templates/access.h

+61-61
Large diffs are not rendered by default.

src/app/BUILD.gn

-2
Original file line numberDiff line numberDiff line change
@@ -171,7 +171,6 @@ static_library("interaction-model") {
171171
"PendingResponseTrackerImpl.h",
172172
"ReadClient.h", # TODO: cpp is only included conditionally. Needs logic
173173
# fixing
174-
"RequiredPrivilege.cpp",
175174
"RequiredPrivilege.h",
176175
"StatusResponse.cpp",
177176
"StatusResponse.h",
@@ -231,7 +230,6 @@ static_library("interaction-model") {
231230
"dynamic_server/AccessControl.cpp",
232231
"dynamic_server/AccessControl.h",
233232
"dynamic_server/DynamicDispatcher.cpp",
234-
"util/privilege-constants.h",
235233
"util/privilege-storage.cpp",
236234
"util/privilege-storage.h",
237235
]

src/app/RequiredPrivilege.cpp

-27
This file was deleted.

src/app/RequiredPrivilege.h

+17-40
Original file line numberDiff line numberDiff line change
@@ -31,49 +31,26 @@
3131

3232
namespace chip {
3333
namespace app {
34-
35-
class RequiredPrivilege
34+
namespace RequiredPrivilege {
35+
inline chip::Access::Privilege ForReadAttribute(const ConcreteAttributePath & path)
3636
{
37-
using Privilege = Access::Privilege;
38-
39-
static constexpr Privilege kPrivilegeMapper[] = { Privilege::kView, Privilege::kOperate, Privilege::kManage,
40-
Privilege::kAdminister };
41-
42-
static_assert(ArraySize(kPrivilegeMapper) > kMatterAccessPrivilegeView &&
43-
kPrivilegeMapper[kMatterAccessPrivilegeView] == Privilege::kView,
44-
"Must map privilege correctly");
45-
static_assert(ArraySize(kPrivilegeMapper) > kMatterAccessPrivilegeOperate &&
46-
kPrivilegeMapper[kMatterAccessPrivilegeOperate] == Privilege::kOperate,
47-
"Must map privilege correctly");
48-
static_assert(ArraySize(kPrivilegeMapper) > kMatterAccessPrivilegeManage &&
49-
kPrivilegeMapper[kMatterAccessPrivilegeManage] == Privilege::kManage,
50-
"Must map privilege correctly");
51-
static_assert(ArraySize(kPrivilegeMapper) > kMatterAccessPrivilegeAdminister &&
52-
kPrivilegeMapper[kMatterAccessPrivilegeAdminister] == Privilege::kAdminister,
53-
"Must map privilege correctly");
54-
static_assert(ArraySize(kPrivilegeMapper) > kMatterAccessPrivilegeMaxValue, "Must map all privileges");
55-
56-
public:
57-
static Privilege ForReadAttribute(const ConcreteAttributePath & path)
58-
{
59-
return kPrivilegeMapper[MatterGetAccessPrivilegeForReadAttribute(path.mClusterId, path.mAttributeId)];
60-
}
37+
return MatterGetAccessPrivilegeForReadAttribute(path.mClusterId, path.mAttributeId);
38+
}
6139

62-
static Privilege ForWriteAttribute(const ConcreteAttributePath & path)
63-
{
64-
return kPrivilegeMapper[MatterGetAccessPrivilegeForWriteAttribute(path.mClusterId, path.mAttributeId)];
65-
}
66-
67-
static Privilege ForInvokeCommand(const ConcreteCommandPath & path)
68-
{
69-
return kPrivilegeMapper[MatterGetAccessPrivilegeForInvokeCommand(path.mClusterId, path.mCommandId)];
70-
}
40+
inline chip::Access::Privilege ForWriteAttribute(const ConcreteAttributePath & path)
41+
{
42+
return MatterGetAccessPrivilegeForWriteAttribute(path.mClusterId, path.mAttributeId);
43+
}
7144

72-
static Privilege ForReadEvent(const ConcreteEventPath & path)
73-
{
74-
return kPrivilegeMapper[MatterGetAccessPrivilegeForReadEvent(path.mClusterId, path.mEventId)];
75-
}
76-
};
45+
inline chip::Access::Privilege ForInvokeCommand(const ConcreteCommandPath & path)
46+
{
47+
return MatterGetAccessPrivilegeForInvokeCommand(path.mClusterId, path.mCommandId);
48+
}
7749

50+
inline chip::Access::Privilege ForReadEvent(const ConcreteEventPath & path)
51+
{
52+
return MatterGetAccessPrivilegeForReadEvent(path.mClusterId, path.mEventId);
53+
}
54+
} // namespace RequiredPrivilege
7855
} // namespace app
7956
} // namespace chip

src/app/chip_data_model.gni

+2
Original file line numberDiff line numberDiff line change
@@ -123,6 +123,7 @@ template("chip_data_model") {
123123
deps = [
124124
":${_data_model_name}_codegen_generate",
125125
":${_data_model_name}_zapgen_generate",
126+
"${chip_root}/src/access",
126127
"${chip_root}/src/lib/core:chip_config_header",
127128
]
128129
}
@@ -398,6 +399,7 @@ template("chip_data_model") {
398399
public_deps += [
399400
":${_data_model_name}_codegen",
400401
":${_data_model_name}_zapgen",
402+
"${chip_root}/src/access",
401403
"${chip_root}/src/app",
402404
"${chip_root}/src/app/common:attribute-type",
403405
"${chip_root}/src/app/common:cluster-objects",

src/app/tests/integration/RequiredPrivilegeStubs.cpp

+8-8
Original file line numberDiff line numberDiff line change
@@ -17,22 +17,22 @@
1717

1818
#include <app/util/privilege-storage.h>
1919

20-
int MatterGetAccessPrivilegeForReadAttribute(chip::ClusterId cluster, chip::AttributeId attribute)
20+
chip::Access::Privilege MatterGetAccessPrivilegeForReadAttribute(chip::ClusterId cluster, chip::AttributeId attribute)
2121
{
22-
return kMatterAccessPrivilegeAdminister;
22+
return chip::Access::Privilege::kAdminister;
2323
}
2424

25-
int MatterGetAccessPrivilegeForWriteAttribute(chip::ClusterId cluster, chip::AttributeId attribute)
25+
chip::Access::Privilege MatterGetAccessPrivilegeForWriteAttribute(chip::ClusterId cluster, chip::AttributeId attribute)
2626
{
27-
return kMatterAccessPrivilegeAdminister;
27+
return chip::Access::Privilege::kAdminister;
2828
}
2929

30-
int MatterGetAccessPrivilegeForInvokeCommand(chip::ClusterId cluster, chip::CommandId command)
30+
chip::Access::Privilege MatterGetAccessPrivilegeForInvokeCommand(chip::ClusterId cluster, chip::CommandId command)
3131
{
32-
return kMatterAccessPrivilegeAdminister;
32+
return chip::Access::Privilege::kAdminister;
3333
}
3434

35-
int MatterGetAccessPrivilegeForReadEvent(chip::ClusterId cluster, chip::EventId event)
35+
chip::Access::Privilege MatterGetAccessPrivilegeForReadEvent(chip::ClusterId cluster, chip::EventId event)
3636
{
37-
return kMatterAccessPrivilegeAdminister;
37+
return chip::Access::Privilege::kAdminister;
3838
}

src/app/util/privilege-constants.h

-23
This file was deleted.

src/app/util/privilege-storage.cpp

+20-22
Original file line numberDiff line numberDiff line change
@@ -25,8 +25,6 @@
2525

2626
#include <lib/support/CodeUtils.h>
2727

28-
#include <cstdint>
29-
3028
using chip::AttributeId;
3129
using chip::ClusterId;
3230
using chip::CommandId;
@@ -36,47 +34,47 @@ namespace {
3634

3735
#ifdef GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER
3836
namespace GeneratedAccessReadAttribute {
39-
constexpr ClusterId kCluster[] = GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER;
40-
constexpr AttributeId kAttribute[] = GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE;
41-
constexpr uint8_t kPrivilege[] = GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE;
37+
constexpr ClusterId kCluster[] = GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER;
38+
constexpr AttributeId kAttribute[] = GENERATED_ACCESS_READ_ATTRIBUTE__ATTRIBUTE;
39+
constexpr chip::Access::Privilege kPrivilege[] = GENERATED_ACCESS_READ_ATTRIBUTE__PRIVILEGE;
4240
static_assert(ArraySize(kCluster) == ArraySize(kAttribute) && ArraySize(kAttribute) == ArraySize(kPrivilege),
4341
"Generated parallel arrays must be same size");
4442
} // namespace GeneratedAccessReadAttribute
4543
#endif
4644

4745
#ifdef GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER
4846
namespace GeneratedAccessWriteAttribute {
49-
constexpr ClusterId kCluster[] = GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER;
50-
constexpr AttributeId kAttribute[] = GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE;
51-
constexpr uint8_t kPrivilege[] = GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE;
47+
constexpr ClusterId kCluster[] = GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER;
48+
constexpr AttributeId kAttribute[] = GENERATED_ACCESS_WRITE_ATTRIBUTE__ATTRIBUTE;
49+
constexpr chip::Access::Privilege kPrivilege[] = GENERATED_ACCESS_WRITE_ATTRIBUTE__PRIVILEGE;
5250
static_assert(ArraySize(kCluster) == ArraySize(kAttribute) && ArraySize(kAttribute) == ArraySize(kPrivilege),
5351
"Generated parallel arrays must be same size");
5452
} // namespace GeneratedAccessWriteAttribute
5553
#endif
5654

5755
#ifdef GENERATED_ACCESS_INVOKE_COMMAND__CLUSTER
5856
namespace GeneratedAccessInvokeCommand {
59-
constexpr ClusterId kCluster[] = GENERATED_ACCESS_INVOKE_COMMAND__CLUSTER;
60-
constexpr CommandId kCommand[] = GENERATED_ACCESS_INVOKE_COMMAND__COMMAND;
61-
constexpr uint8_t kPrivilege[] = GENERATED_ACCESS_INVOKE_COMMAND__PRIVILEGE;
57+
constexpr ClusterId kCluster[] = GENERATED_ACCESS_INVOKE_COMMAND__CLUSTER;
58+
constexpr CommandId kCommand[] = GENERATED_ACCESS_INVOKE_COMMAND__COMMAND;
59+
constexpr chip::Access::Privilege kPrivilege[] = GENERATED_ACCESS_INVOKE_COMMAND__PRIVILEGE;
6260
static_assert(ArraySize(kCluster) == ArraySize(kCommand) && ArraySize(kCommand) == ArraySize(kPrivilege),
6361
"Generated parallel arrays must be same size");
6462
} // namespace GeneratedAccessInvokeCommand
6563
#endif
6664

6765
#ifdef GENERATED_ACCESS_READ_EVENT__CLUSTER
6866
namespace GeneratedAccessReadEvent {
69-
constexpr ClusterId kCluster[] = GENERATED_ACCESS_READ_EVENT__CLUSTER;
70-
constexpr EventId kEvent[] = GENERATED_ACCESS_READ_EVENT__EVENT;
71-
constexpr uint8_t kPrivilege[] = GENERATED_ACCESS_READ_EVENT__PRIVILEGE;
67+
constexpr ClusterId kCluster[] = GENERATED_ACCESS_READ_EVENT__CLUSTER;
68+
constexpr EventId kEvent[] = GENERATED_ACCESS_READ_EVENT__EVENT;
69+
constexpr chip::Access::Privilege kPrivilege[] = GENERATED_ACCESS_READ_EVENT__PRIVILEGE;
7270
static_assert(ArraySize(kCluster) == ArraySize(kEvent) && ArraySize(kEvent) == ArraySize(kPrivilege),
7371
"Generated parallel arrays must be same size");
7472
} // namespace GeneratedAccessReadEvent
7573
#endif
7674

7775
} // anonymous namespace
7876

79-
int MatterGetAccessPrivilegeForReadAttribute(ClusterId cluster, AttributeId attribute)
77+
chip::Access::Privilege MatterGetAccessPrivilegeForReadAttribute(ClusterId cluster, AttributeId attribute)
8078
{
8179
#ifdef GENERATED_ACCESS_READ_ATTRIBUTE__CLUSTER
8280
using namespace GeneratedAccessReadAttribute;
@@ -88,10 +86,10 @@ int MatterGetAccessPrivilegeForReadAttribute(ClusterId cluster, AttributeId attr
8886
}
8987
}
9088
#endif
91-
return kMatterAccessPrivilegeView;
89+
return chip::Access::Privilege::kView;
9290
}
9391

94-
int MatterGetAccessPrivilegeForWriteAttribute(ClusterId cluster, AttributeId attribute)
92+
chip::Access::Privilege MatterGetAccessPrivilegeForWriteAttribute(ClusterId cluster, AttributeId attribute)
9593
{
9694
#ifdef GENERATED_ACCESS_WRITE_ATTRIBUTE__CLUSTER
9795
using namespace GeneratedAccessWriteAttribute;
@@ -103,10 +101,10 @@ int MatterGetAccessPrivilegeForWriteAttribute(ClusterId cluster, AttributeId att
103101
}
104102
}
105103
#endif
106-
return kMatterAccessPrivilegeOperate;
104+
return chip::Access::Privilege::kOperate;
107105
}
108106

109-
int MatterGetAccessPrivilegeForInvokeCommand(ClusterId cluster, CommandId command)
107+
chip::Access::Privilege MatterGetAccessPrivilegeForInvokeCommand(ClusterId cluster, CommandId command)
110108
{
111109
#ifdef GENERATED_ACCESS_INVOKE_COMMAND__CLUSTER
112110
using namespace GeneratedAccessInvokeCommand;
@@ -118,10 +116,10 @@ int MatterGetAccessPrivilegeForInvokeCommand(ClusterId cluster, CommandId comman
118116
}
119117
}
120118
#endif
121-
return kMatterAccessPrivilegeOperate;
119+
return chip::Access::Privilege::kOperate;
122120
}
123121

124-
int MatterGetAccessPrivilegeForReadEvent(ClusterId cluster, EventId event)
122+
chip::Access::Privilege MatterGetAccessPrivilegeForReadEvent(ClusterId cluster, EventId event)
125123
{
126124
#ifdef GENERATED_ACCESS_READ_EVENT__CLUSTER
127125
using namespace GeneratedAccessReadEvent;
@@ -133,5 +131,5 @@ int MatterGetAccessPrivilegeForReadEvent(ClusterId cluster, EventId event)
133131
}
134132
}
135133
#endif
136-
return kMatterAccessPrivilegeView;
134+
return chip::Access::Privilege::kView;
137135
}

src/app/util/privilege-storage.h

+5-5
Original file line numberDiff line numberDiff line change
@@ -16,10 +16,10 @@
1616
*/
1717
#pragma once
1818

19-
#include <app/util/privilege-constants.h>
19+
#include <access/Privilege.h>
2020
#include <lib/core/DataModelTypes.h>
2121

22-
int MatterGetAccessPrivilegeForReadAttribute(chip::ClusterId cluster, chip::AttributeId attribute);
23-
int MatterGetAccessPrivilegeForWriteAttribute(chip::ClusterId cluster, chip::AttributeId attribute);
24-
int MatterGetAccessPrivilegeForInvokeCommand(chip::ClusterId cluster, chip::CommandId command);
25-
int MatterGetAccessPrivilegeForReadEvent(chip::ClusterId cluster, chip::EventId event);
22+
chip::Access::Privilege MatterGetAccessPrivilegeForReadAttribute(chip::ClusterId cluster, chip::AttributeId attribute);
23+
chip::Access::Privilege MatterGetAccessPrivilegeForWriteAttribute(chip::ClusterId cluster, chip::AttributeId attribute);
24+
chip::Access::Privilege MatterGetAccessPrivilegeForInvokeCommand(chip::ClusterId cluster, chip::CommandId command);
25+
chip::Access::Privilege MatterGetAccessPrivilegeForReadEvent(chip::ClusterId cluster, chip::EventId event);

src/app/zap-templates/templates/app/access.zapt

+11-11
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@
33
// Prevent multiple inclusion
44
#pragma once
55

6-
#include <app/util/privilege-constants.h>
6+
#include <access/Privilege.h>
77

88
// Prevent changing generated format
99
// clang-format off
@@ -89,11 +89,11 @@
8989
{{#if (isStrEqual role "view")}}
9090
/* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
9191
{{else if (isStrEqual role "operate")}}
92-
kMatterAccessPrivilegeOperate, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
92+
chip::Access::Privilege::kOperate, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
9393
{{else if (isStrEqual role "manage")}}
94-
kMatterAccessPrivilegeManage, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
94+
chip::Access::Privilege::kManage, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
9595
{{else if (isStrEqual role "administer")}}
96-
kMatterAccessPrivilegeAdminister, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
96+
chip::Access::Privilege::kAdminister, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
9797
{{else}}
9898
ERROR: access has unrecognized role/privilege [ Cluster: {{parent.parent.name}}, Attribute: {{parent.name}} ]
9999
{{/if}}
@@ -192,9 +192,9 @@
192192
{{else if (isStrEqual role "operate")}}
193193
/* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
194194
{{else if (isStrEqual role "manage")}}
195-
kMatterAccessPrivilegeManage, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
195+
chip::Access::Privilege::kManage, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
196196
{{else if (isStrEqual role "administer")}}
197-
kMatterAccessPrivilegeAdminister, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
197+
chip::Access::Privilege::kAdminister, /* Cluster: {{parent.parent.name}}, Attribute: {{parent.name}}, Privilege: {{role}} */ \
198198
{{else}}
199199
ERROR: access has unrecognized role/privilege [ Cluster: {{parent.parent.name}}, Attribute: {{parent.name}} ]
200200
{{/if}}
@@ -293,9 +293,9 @@
293293
{{else if (isStrEqual role "operate")}}
294294
/* Cluster: {{parent.parent.name}}, Command: {{parent.commandName}}, Privilege: {{role}} */ \
295295
{{else if (isStrEqual role "manage")}}
296-
kMatterAccessPrivilegeManage, /* Cluster: {{parent.parent.name}}, Command: {{parent.commandName}}, Privilege: {{role}} */ \
296+
chip::Access::Privilege::kManage, /* Cluster: {{parent.parent.name}}, Command: {{parent.commandName}}, Privilege: {{role}} */ \
297297
{{else if (isStrEqual role "administer")}}
298-
kMatterAccessPrivilegeAdminister, /* Cluster: {{parent.parent.name}}, Command: {{parent.commandName}}, Privilege: {{role}} */ \
298+
chip::Access::Privilege::kAdminister, /* Cluster: {{parent.parent.name}}, Command: {{parent.commandName}}, Privilege: {{role}} */ \
299299
{{else}}
300300
ERROR: access has unrecognized role/privilege [ Cluster: {{parent.parent.name}}, Command: {{parent.commandName}} ]
301301
{{/if}}
@@ -392,11 +392,11 @@
392392
{{#if (isStrEqual role "view")}}
393393
/* Cluster: {{parent.parent.name}}, Event: {{parent.name}}, Privilege: {{role}} */ \
394394
{{else if (isStrEqual role "operate")}}
395-
kMatterAccessPrivilegeOperate, /* Cluster: {{parent.parent.name}}, Event: {{parent.name}}, Privilege: {{role}} */ \
395+
chip::Access::Privilege::kOperate, /* Cluster: {{parent.parent.name}}, Event: {{parent.name}}, Privilege: {{role}} */ \
396396
{{else if (isStrEqual role "manage")}}
397-
kMatterAccessPrivilegeManage, /* Cluster: {{parent.parent.name}}, Event: {{parent.name}}, Privilege: {{role}} */ \
397+
chip::Access::Privilege::kManage, /* Cluster: {{parent.parent.name}}, Event: {{parent.name}}, Privilege: {{role}} */ \
398398
{{else if (isStrEqual role "administer")}}
399-
kMatterAccessPrivilegeAdminister, /* Cluster: {{parent.parent.name}}, Event: {{parent.name}}, Privilege: {{role}} */ \
399+
chip::Access::Privilege::kAdminister, /* Cluster: {{parent.parent.name}}, Event: {{parent.name}}, Privilege: {{role}} */ \
400400
{{else}}
401401
ERROR: access has unrecognized role/privilege [ Cluster: {{parent.parent.name}}, Event: {{parent.name}} ]
402402
{{/if}}

0 commit comments

Comments
 (0)