Skip to content

Commit 8b6ce9b

Browse files
closure cluster grouped commands implementation (project-chip#72825)
* closure control and dimension changes * adding groupcast to closure example * adding groupcast gn arg for closure * [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci * enable access feature in closure example * remvong access feature * PR comments --------- Co-authored-by: pre-commit-ci[bot] <66853113+pre-commit-ci[bot]@users.noreply.github.com>
1 parent bb0a75d commit 8b6ce9b

18 files changed

Lines changed: 991 additions & 167 deletions

examples/closure-app/closure-common/closure-app.matter

Lines changed: 134 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1969,6 +1969,116 @@ cluster IcdManagement = 70 {
19691969
command StayActiveRequest(StayActiveRequestRequest): StayActiveResponse = 3;
19701970
}
19711971

1972+
/** The Groupcast cluster manages the content of the node-wide multicast Group membership that is part of the underlying interaction layer. */
1973+
provisional cluster Groupcast = 101 {
1974+
revision 1;
1975+
1976+
enum GroupcastTestResultEnum : enum8 {
1977+
kSuccess = 0;
1978+
kGeneralError = 1;
1979+
kMessageReplay = 2;
1980+
kFailedAuth = 3;
1981+
kNoAvailableKey = 4;
1982+
kSendFailure = 5;
1983+
}
1984+
1985+
enum GroupcastTestingEnum : enum8 {
1986+
kDisableTesting = 0;
1987+
kEnableListenerTesting = 1;
1988+
kEnableSenderTesting = 2;
1989+
}
1990+
1991+
enum MulticastAddrPolicyEnum : enum8 {
1992+
kIanaAddr = 0;
1993+
kPerGroup = 1;
1994+
}
1995+
1996+
bitmap Feature : bitmap32 {
1997+
kListener = 0x1;
1998+
kSender = 0x2;
1999+
kPerGroup = 0x4;
2000+
}
2001+
2002+
fabric_scoped struct MembershipStruct {
2003+
group_id groupID = 0;
2004+
optional endpoint_no endpoints[] = 1;
2005+
fabric_sensitive int16u keySetID = 2;
2006+
optional boolean hasAuxiliaryACL = 3;
2007+
MulticastAddrPolicyEnum mcastAddrPolicy = 4;
2008+
fabric_idx fabricIndex = 254;
2009+
}
2010+
2011+
provisional fabric_sensitive info event access(read: administer) GroupcastTesting = 0 {
2012+
optional octet_string sourceIpAddress = 0;
2013+
optional octet_string destinationIpAddress = 1;
2014+
optional group_id groupID = 2;
2015+
optional endpoint_no endpointID = 3;
2016+
optional cluster_id clusterID = 4;
2017+
optional int32u elementID = 5;
2018+
optional boolean accessAllowed = 6;
2019+
GroupcastTestResultEnum groupcastTestResult = 7;
2020+
fabric_idx fabricIndex = 254;
2021+
}
2022+
2023+
provisional readonly attribute MembershipStruct membership[] = 0;
2024+
provisional readonly attribute int16u maxMembershipCount = 1;
2025+
provisional readonly attribute int16u maxMcastAddrCount = 2;
2026+
provisional readonly attribute int16u usedMcastAddrCount = 3;
2027+
provisional readonly attribute fabric_idx fabricUnderTest = 4;
2028+
readonly attribute command_id generatedCommandList[] = 65528;
2029+
readonly attribute command_id acceptedCommandList[] = 65529;
2030+
readonly attribute attrib_id attributeList[] = 65531;
2031+
readonly attribute bitmap32 featureMap = 65532;
2032+
readonly attribute int16u clusterRevision = 65533;
2033+
2034+
request struct JoinGroupRequest {
2035+
group_id groupID = 0;
2036+
endpoint_no endpoints[] = 1;
2037+
int16u keySetID = 2;
2038+
optional octet_string<16> key = 3;
2039+
optional boolean useAuxiliaryACL = 4;
2040+
optional boolean replaceEndpoints = 5;
2041+
optional MulticastAddrPolicyEnum mcastAddrPolicy = 6;
2042+
}
2043+
2044+
request struct LeaveGroupRequest {
2045+
group_id groupID = 0;
2046+
optional endpoint_no endpoints[] = 1;
2047+
}
2048+
2049+
response struct LeaveGroupResponse = 2 {
2050+
group_id groupID = 0;
2051+
endpoint_no endpoints[] = 1;
2052+
}
2053+
2054+
request struct UpdateGroupKeyRequest {
2055+
group_id groupID = 0;
2056+
int16u keySetID = 1;
2057+
optional octet_string<16> key = 2;
2058+
}
2059+
2060+
request struct ConfigureAuxiliaryACLRequest {
2061+
group_id groupID = 0;
2062+
boolean useAuxiliaryACL = 1;
2063+
}
2064+
2065+
request struct GroupcastTestingRequest {
2066+
GroupcastTestingEnum testOperation = 0;
2067+
optional int16u durationSeconds = 1;
2068+
}
2069+
2070+
/** This command SHALL be used to instruct the server to join a multicast group. */
2071+
fabric command access(invoke: manage) JoinGroup(JoinGroupRequest): DefaultSuccess = 0;
2072+
/** This command SHALL allow a maintainer to request that the server withdraws itself or specific endpoints from a specific group or from all groups of this client's fabric. */
2073+
fabric command access(invoke: manage) LeaveGroup(LeaveGroupRequest): LeaveGroupResponse = 1;
2074+
/** This command SHALL allow a fabric administrator to update the OperationalGroupKey associated with the existing group identified by GroupID, which is already joined. */
2075+
fabric command access(invoke: manage) UpdateGroupKey(UpdateGroupKeyRequest): DefaultSuccess = 3;
2076+
/** This command SHALL allow an Administrator to enable or disable the generation of AuxiliaryACL entries in the Access Control Cluster based on the groups joined (see Groupcast Auxiliary ACL Handling). */
2077+
fabric command access(invoke: administer) ConfigureAuxiliaryACL(ConfigureAuxiliaryACLRequest): DefaultSuccess = 4;
2078+
/** This command SHALL allow an Administrator to configure test modes that allow validation of Groupcast communication. */
2079+
fabric command access(invoke: administer) GroupcastTesting(GroupcastTestingRequest): DefaultSuccess = 5;
2080+
}
2081+
19722082
/** This cluster provides an interface for controlling a Closure. */
19732083
cluster ClosureControl = 260 {
19742084
revision 2;
@@ -2566,6 +2676,26 @@ endpoint 0 {
25662676
callback attribute featureMap;
25672677
callback attribute clusterRevision;
25682678
}
2679+
2680+
server cluster Groupcast {
2681+
emits event GroupcastTesting;
2682+
callback attribute membership;
2683+
callback attribute maxMembershipCount;
2684+
callback attribute maxMcastAddrCount;
2685+
callback attribute usedMcastAddrCount;
2686+
callback attribute fabricUnderTest;
2687+
callback attribute generatedCommandList;
2688+
callback attribute acceptedCommandList;
2689+
callback attribute attributeList;
2690+
ram attribute featureMap default = 1;
2691+
callback attribute clusterRevision default = 1;
2692+
2693+
handle command JoinGroup;
2694+
handle command LeaveGroup;
2695+
handle command UpdateGroupKey;
2696+
handle command ConfigureAuxiliaryACL;
2697+
handle command GroupcastTesting;
2698+
}
25692699
}
25702700
endpoint 1 {
25712701
device type ma_closure = 560, version 1;
@@ -2654,6 +2784,8 @@ endpoint 2 {
26542784

26552785
handle command SetTarget;
26562786
handle command Step;
2787+
handle command GroupedSetTarget;
2788+
handle command GroupedStep;
26572789
}
26582790
}
26592791
endpoint 3 {
@@ -2692,6 +2824,8 @@ endpoint 3 {
26922824

26932825
handle command SetTarget;
26942826
handle command Step;
2827+
handle command GroupedSetTarget;
2828+
handle command GroupedStep;
26952829
}
26962830
}
26972831

0 commit comments

Comments
 (0)