Skip to content

Commit df14757

Browse files
tehampsonrochaferraz
authored andcommitted
Add XML definition for Ecosystem Information Cluster (project-chip#34291)
1 parent 334f575 commit df14757

File tree

60 files changed

+7391
-489
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

60 files changed

+7391
-489
lines changed

.github/workflows/tests.yaml

+1
Original file line numberDiff line numberDiff line change
@@ -127,6 +127,7 @@ jobs:
127127
src/app/zap-templates/zcl/data-model/chip/microwave-oven-mode-cluster.xml \
128128
src/app/zap-templates/zcl/data-model/chip/microwave-oven-control-cluster.xml \
129129
src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml \
130+
src/app/zap-templates/zcl/data-model/chip/ecosystem-information-cluster.xml \
130131
src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml \
131132
src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml \
132133
src/app/zap-templates/zcl/data-model/chip/ethernet-network-diagnostics-cluster.xml \

docs/zap_clusters.md

+1
Original file line numberDiff line numberDiff line change
@@ -132,6 +132,7 @@ Generally regenerate using one of:
132132
| 1294 | 0x50E | AccountLogin |
133133
| 1295 | 0x50F | ContentControl |
134134
| 1296 | 0x510 | ContentAppObserver |
135+
| 1872 | 0x750 | EcosystemInformation |
135136
| 1873 | 0x751 | CommissionerControl |
136137
| 2820 | 0xB04 | ElectricalMeasurement |
137138
| 4294048773 | 0xFFF1FC05 | UnitTesting |

scripts/rules.matterlint

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ load "../src/app/zap-templates/zcl/data-model/chip/measurement-and-sensing.xml";
3434
load "../src/app/zap-templates/zcl/data-model/chip/microwave-oven-mode-cluster.xml";
3535
load "../src/app/zap-templates/zcl/data-model/chip/microwave-oven-control-cluster.xml";
3636
load "../src/app/zap-templates/zcl/data-model/chip/door-lock-cluster.xml";
37+
load "../src/app/zap-templates/zcl/data-model/chip/ecosystem-information-cluster.xml";
3738
load "../src/app/zap-templates/zcl/data-model/chip/energy-evse-cluster.xml";
3839
load "../src/app/zap-templates/zcl/data-model/chip/energy-evse-mode-cluster.xml";
3940
load "../src/app/zap-templates/zcl/data-model/chip/ethernet-network-diagnostics-cluster.xml";

src/app/zap-templates/zcl/data-model/all.xml

+1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@
3434
<xi:include href="chip/microwave-oven-mode-cluster.xml" />
3535
<xi:include href="chip/microwave-oven-control-cluster.xml" />
3636
<xi:include href="chip/door-lock-cluster.xml" />
37+
<xi:include href="chip/ecosystem-information-cluster.xml" />
3738
<xi:include href="chip/energy-evse-cluster.xml" />
3839
<xi:include href="chip/energy-evse-mode-cluster.xml" />
3940
<xi:include href="chip/energy-preference-cluster.xml" />

src/app/zap-templates/zcl/data-model/chip/descriptor-cluster.xml

+1
Original file line numberDiff line numberDiff line change
@@ -19,6 +19,7 @@ limitations under the License.
1919

2020
<struct name="DeviceTypeStruct">
2121
<cluster code="0x001d"/>
22+
<cluster code="0x0750"/>
2223
<item name="DeviceType" type="devtype_id"/>
2324
<item name="Revision" type="int16u"/>
2425
</struct>
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,60 @@
1+
<?xml version="1.0"?>
2+
<!--
3+
Copyright (c) 2024 Project CHIP Authors
4+
5+
Licensed under the Apache License, Version 2.0 (the "License");
6+
you may not use this file except in compliance with the License.
7+
You may obtain a copy of the License at
8+
9+
http://www.apache.org/licenses/LICENSE-2.0
10+
11+
Unless required by applicable law or agreed to in writing, software
12+
distributed under the License is distributed on an "AS IS" BASIS,
13+
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
14+
See the License for the specific language governing permissions and
15+
limitations under the License.
16+
-->
17+
<configurator>
18+
<domain name="CHIP"/>
19+
<struct name="EcosystemDeviceStruct" isFabricScoped="true" apiMaturity="provisional">
20+
<cluster code="0x0750"/>
21+
<item fieldId="0" name="DeviceName" type="char_string" optional="true" isFabricSensitive="true" length="64"/>
22+
<item fieldId="1" name="DeviceNameLastEdit" type="epoch_us" optional="true" isFabricSensitive="true" default="0"/>
23+
<item fieldId="2" name="BridgedEndpoint" type="endpoint_no" isFabricSensitive="true"/>
24+
<item fieldId="3" name="OriginalEndpoint" type="endpoint_no" isFabricSensitive="true"/>
25+
<item fieldId="4" name="DeviceTypes" array="true" type="DeviceTypeStruct" isFabricSensitive="true" minLength="1"/>
26+
<item fieldId="5" name="UniqueLocationIDs" array="true" type="char_string" length="64" isFabricSensitive="true"/>
27+
<item fieldId="6" name="UniqueLocationIDsLastEdit" type="epoch_us" isFabricSensitive="true" default="0"/>
28+
</struct>
29+
30+
<struct name="EcosystemLocationStruct" isFabricScoped="true" apiMaturity="provisional">
31+
<cluster code="0x0750"/>
32+
<item fieldId="0" name="UniqueLocationID" type="char_string" isFabricSensitive="true" length="64"/>
33+
<item fieldId="1" name="LocationDescriptor" type="HomeLocationStruct" isFabricSensitive="true"/>
34+
<item fieldId="2" name="LocationDescriptorLastEdit" type="epoch_us" isFabricSensitive="true" default="0"/>
35+
</struct>
36+
37+
<cluster apiMaturity="provisional">
38+
<domain>General</domain>
39+
<name>Ecosystem Information</name>
40+
<code>0x0750</code>
41+
<define>ECOSYSTEM_INFORMATION_CLUSTER</define>
42+
<description>Provides extended device information for all the logical devices represented by a Bridged Node.</description>
43+
<client init="false" tick="false">true</client>
44+
<server init="false" tick="false">true</server>
45+
<!-- cluster revision -->
46+
<globalAttribute code="0xFFFD" side="either" value="1"/>
47+
<attribute code="0x0000" side="server" define="REMOVED_ON" type="epoch_us" isNullable="true" optional="true">
48+
<description>RemovedOn</description>
49+
<access op="read" privilege="manage"/>
50+
</attribute>
51+
<attribute code="0x0001" side="server" define="DEVICE_DIRECTORY" type="array" entryType="EcosystemDeviceStruct" length="256" minLength="1">
52+
<description>DeviceDirectory</description>
53+
<access op="read" privilege="manage"/>
54+
</attribute>
55+
<attribute code="0x0002" side="server" define="LOCATION_DIRECTORY" type="array" entryType="EcosystemLocationStruct" length="64" minLength="1">
56+
<description>LocationDirectory</description>
57+
<access op="read" privilege="manage"/>
58+
</attribute>
59+
</cluster>
60+
</configurator>

src/app/zap-templates/zcl/data-model/chip/global-structs.xml

+1
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ TODO: Make these structures global rather than defining them for each cluster.
2525
<domain name="CHIP"/>
2626
<struct name="HomeLocationStruct">
2727
<cluster code="0x0150"/> <!-- Service Area Cluster -->
28+
<cluster code="0x0750"/> <!-- Ecosystem Information Cluster -->
2829
<!-- TODO: add Basic Information Cluster code="0x0028" -->
2930

3031
<item fieldId="0" name="LocationName" type="char_string" length="128" isNullable="false" optional="false"/>

src/app/zap-templates/zcl/data-model/chip/semantic-tag-namespace-enums.xml

+1
Original file line numberDiff line numberDiff line change
@@ -44,6 +44,7 @@ TODO: Make these namespace enums global rather than defining them for each clust
4444

4545
<enum name="AreaTypeTag" type="enum8">
4646
<cluster code="0x0150"/> <!-- Service Area Cluster -->
47+
<cluster code="0x0750"/> <!-- Ecosystem Information Cluster -->
4748
<!-- TODO: add Basic Information Cluster code="0x0028" -->
4849

4950
<item value="0x00" name="Aisle"/>

src/app/zap-templates/zcl/zcl-with-test-extensions.json

+1
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@
4848
"microwave-oven-mode-cluster.xml",
4949
"microwave-oven-control-cluster.xml",
5050
"door-lock-cluster.xml",
51+
"ecosystem-information-cluster.xml",
5152
"energy-preference-cluster.xml",
5253
"electrical-energy-measurement-cluster.xml",
5354
"electrical-measurement-cluster.xml",

src/app/zap-templates/zcl/zcl.json

+1
Original file line numberDiff line numberDiff line change
@@ -46,6 +46,7 @@
4646
"microwave-oven-mode-cluster.xml",
4747
"door-lock-cluster.xml",
4848
"drlc-cluster.xml",
49+
"ecosystem-information-cluster.xml",
4950
"electrical-energy-measurement-cluster.xml",
5051
"electrical-measurement-cluster.xml",
5152
"electrical-power-measurement-cluster.xml",

src/app/zap_cluster_list.json

+2
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@
3737
"DISHWASHER_MODE_CLUSTER": [],
3838
"MICROWAVE_OVEN_MODE_CLUSTER": [],
3939
"DOOR_LOCK_CLUSTER": [],
40+
"ECOSYSTEM_INFORMATION_CLUSTER": [],
4041
"ELECTRICAL_ENERGY_MEASUREMENT_CLUSTER": [],
4142
"ELECTRICAL_MEASUREMENT_CLUSTER": [],
4243
"ELECTRICAL_POWER_MEASUREMENT_CLUSTER": [],
@@ -185,6 +186,7 @@
185186
"DISHWASHER_MODE_CLUSTER": ["mode-base-server"],
186187
"MICROWAVE_OVEN_MODE_CLUSTER": ["mode-base-server"],
187188
"DOOR_LOCK_CLUSTER": ["door-lock-server"],
189+
"ECOSYSTEM_INFORMATION_CLUSTER": [],
188190
"ELECTRICAL_ENERGY_MEASUREMENT_CLUSTER": [
189191
"electrical-energy-measurement-server"
190192
],

src/controller/data_model/controller-clusters.matter

+142
Original file line numberDiff line numberDiff line change
@@ -9245,6 +9245,148 @@ provisional cluster ContentAppObserver = 1296 {
92459245
command ContentAppMessage(ContentAppMessageRequest): ContentAppMessageResponse = 0;
92469246
}
92479247

9248+
/** Provides extended device information for all the logical devices represented by a Bridged Node. */
9249+
provisional cluster EcosystemInformation = 1872 {
9250+
revision 1;
9251+
9252+
enum AreaTypeTag : enum8 {
9253+
kAisle = 0;
9254+
kAttic = 1;
9255+
kBackDoor = 2;
9256+
kBackYard = 3;
9257+
kBalcony = 4;
9258+
kBallroom = 5;
9259+
kBathroom = 6;
9260+
kBedroom = 7;
9261+
kBorder = 8;
9262+
kBoxroom = 9;
9263+
kBreakfastRoom = 10;
9264+
kCarport = 11;
9265+
kCellar = 12;
9266+
kCloakroom = 13;
9267+
kCloset = 14;
9268+
kConservatory = 15;
9269+
kCorridor = 16;
9270+
kCraftRoom = 17;
9271+
kCupboard = 18;
9272+
kDeck = 19;
9273+
kDen = 20;
9274+
kDining = 21;
9275+
kDrawingRoom = 22;
9276+
kDressingRoom = 23;
9277+
kDriveway = 24;
9278+
kElevator = 25;
9279+
kEnsuite = 26;
9280+
kEntrance = 27;
9281+
kEntryway = 28;
9282+
kFamilyRoom = 29;
9283+
kFoyer = 30;
9284+
kFrontDoor = 31;
9285+
kFrontYard = 32;
9286+
kGameRoom = 33;
9287+
kGarage = 34;
9288+
kGarageDoor = 35;
9289+
kGarden = 36;
9290+
kGardenDoor = 37;
9291+
kGuestBathroom = 38;
9292+
kGuestBedroom = 39;
9293+
kGuestRestroom = 40;
9294+
kGuestRoom = 41;
9295+
kGym = 42;
9296+
kHallway = 43;
9297+
kHearthRoom = 44;
9298+
kKidsRoom = 45;
9299+
kKidsBedroom = 46;
9300+
kKitchen = 47;
9301+
kLarder = 48;
9302+
kLaundryRoom = 49;
9303+
kLawn = 50;
9304+
kLibrary = 51;
9305+
kLivingRoom = 52;
9306+
kLounge = 53;
9307+
kMediaTVRoom = 54;
9308+
kMudRoom = 55;
9309+
kMusicRoom = 56;
9310+
kNursery = 57;
9311+
kOffice = 58;
9312+
kOutdoorKitchen = 59;
9313+
kOutside = 60;
9314+
kPantry = 61;
9315+
kParkingLot = 62;
9316+
kParlor = 63;
9317+
kPatio = 64;
9318+
kPlayRoom = 65;
9319+
kPoolRoom = 66;
9320+
kPorch = 67;
9321+
kPrimaryBathroom = 68;
9322+
kPrimaryBedroom = 69;
9323+
kRamp = 70;
9324+
kReceptionRoom = 71;
9325+
kRecreationRoom = 72;
9326+
kRestroom = 73;
9327+
kRoof = 74;
9328+
kSauna = 75;
9329+
kScullery = 76;
9330+
kSewingRoom = 77;
9331+
kShed = 78;
9332+
kSideDoor = 79;
9333+
kSideYard = 80;
9334+
kSittingRoom = 81;
9335+
kSnug = 82;
9336+
kSpa = 83;
9337+
kStaircase = 84;
9338+
kSteamRoom = 85;
9339+
kStorageRoom = 86;
9340+
kStudio = 87;
9341+
kStudy = 88;
9342+
kSunRoom = 89;
9343+
kSwimmingPool = 90;
9344+
kTerrace = 91;
9345+
kUtilityRoom = 92;
9346+
kWard = 93;
9347+
kWorkshop = 94;
9348+
}
9349+
9350+
struct HomeLocationStruct {
9351+
char_string<128> locationName = 0;
9352+
nullable int16s floorNumber = 1;
9353+
nullable AreaTypeTag areaType = 2;
9354+
}
9355+
9356+
fabric_scoped struct EcosystemLocationStruct {
9357+
fabric_sensitive char_string<64> uniqueLocationID = 0;
9358+
fabric_sensitive HomeLocationStruct locationDescriptor = 1;
9359+
fabric_sensitive epoch_us locationDescriptorLastEdit = 2;
9360+
fabric_idx fabricIndex = 254;
9361+
}
9362+
9363+
struct DeviceTypeStruct {
9364+
devtype_id deviceType = 0;
9365+
int16u revision = 1;
9366+
}
9367+
9368+
fabric_scoped struct EcosystemDeviceStruct {
9369+
optional fabric_sensitive char_string<64> deviceName = 0;
9370+
optional fabric_sensitive epoch_us deviceNameLastEdit = 1;
9371+
fabric_sensitive endpoint_no bridgedEndpoint = 2;
9372+
fabric_sensitive endpoint_no originalEndpoint = 3;
9373+
fabric_sensitive DeviceTypeStruct deviceTypes[] = 4;
9374+
fabric_sensitive char_string uniqueLocationIDs[] = 5;
9375+
fabric_sensitive epoch_us uniqueLocationIDsLastEdit = 6;
9376+
fabric_idx fabricIndex = 254;
9377+
}
9378+
9379+
readonly attribute access(read: manage) optional nullable epoch_us removedOn = 0;
9380+
readonly attribute access(read: manage) EcosystemDeviceStruct deviceDirectory[] = 1;
9381+
readonly attribute access(read: manage) EcosystemLocationStruct locationDirectory[] = 2;
9382+
readonly attribute command_id generatedCommandList[] = 65528;
9383+
readonly attribute command_id acceptedCommandList[] = 65529;
9384+
readonly attribute event_id eventList[] = 65530;
9385+
readonly attribute attrib_id attributeList[] = 65531;
9386+
readonly attribute bitmap32 featureMap = 65532;
9387+
readonly attribute int16u clusterRevision = 65533;
9388+
}
9389+
92489390
/** Supports the ability for clients to request the commissioning of themselves or other nodes onto a fabric which the cluster server can commission onto. */
92499391
provisional cluster CommissionerControl = 1873 {
92509392
revision 1;

0 commit comments

Comments
 (0)