Skip to content

Commit 567f658

Browse files
committed
Merge branch 'master' into imdm/datamodel-writes
2 parents 6060937 + 545b034 commit 567f658

File tree

230 files changed

+7453
-5879
lines changed

Some content is hidden

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

230 files changed

+7453
-5879
lines changed

.github/workflows/build.yaml

+1-1
Original file line numberDiff line numberDiff line change
@@ -138,7 +138,7 @@ jobs:
138138
if: github.actor != 'restyled-io[bot]'
139139

140140
container:
141-
image: ghcr.io/project-chip/chip-build:54
141+
image: ghcr.io/project-chip/chip-build:65
142142
volumes:
143143
- "/:/runner-root-volume"
144144
- "/tmp/log_output:/tmp/test_logs"

.github/workflows/tests.yaml

+3
Original file line numberDiff line numberDiff line change
@@ -91,6 +91,8 @@ jobs:
9191
--no-print \
9292
--log-level info \
9393
src/app/zap-templates/zcl/data-model/chip/global-attributes.xml \
94+
src/app/zap-templates/zcl/data-model/chip/global-bitmaps.xml \
95+
src/app/zap-templates/zcl/data-model/chip/global-enums.xml \
9496
src/app/zap-templates/zcl/data-model/chip/global-structs.xml \
9597
src/app/zap-templates/zcl/data-model/chip/semantic-tag-namespace-enums.xml \
9698
src/app/zap-templates/zcl/data-model/chip/access-control-definitions.xml \
@@ -549,6 +551,7 @@ jobs:
549551
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_FAN_3_5.py'
550552
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_ICDM_2_1.py'
551553
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_ICDM_3_1.py'
554+
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_ICDM_3_3.py'
552555
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_ICDManagementCluster.py'
553556
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_IDM_1_2.py'
554557
scripts/run_in_python_env.sh out/venv './scripts/tests/run_python_test.py --load-from-env /tmp/test_env.yaml --script src/python_testing/TC_IDM_1_4.py'

.vscode/settings.json

+3-1
Original file line numberDiff line numberDiff line change
@@ -134,7 +134,9 @@
134134
"thread": "cpp",
135135
"variant": "cpp",
136136
"any": "cpp",
137-
"future": "cpp"
137+
"future": "cpp",
138+
"list": "cpp",
139+
"unordered_set": "cpp"
138140
},
139141
// Configure paths or glob patterns to exclude from file watching.
140142
"files.watcherExclude": {

build/config/compiler/BUILD.gn

+1
Original file line numberDiff line numberDiff line change
@@ -489,6 +489,7 @@ config("libfuzzer_fuzzing") {
489489

490490
config("oss_fuzz") {
491491
cflags = string_split(getenv("CFLAGS"))
492+
cflags_cc = string_split(getenv("CXXFLAGS"))
492493
ldflags = string_split(getenv("CXXFLAGS"))
493494
ldflags += [ getenv("LIB_FUZZING_ENGINE") ]
494495
}

examples/air-purifier-app/air-purifier-common/air-purifier-app.matter

+56-37
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ enum AreaTypeTag : enum8 {
9999
kWorkshop = 94;
100100
}
101101

102+
enum AtomicRequestTypeEnum : enum8 {
103+
kBeginWrite = 0;
104+
kCommitWrite = 1;
105+
kRollbackWrite = 2;
106+
}
107+
102108
enum FloorSurfaceTag : enum8 {
103109
kCarpet = 0;
104110
kCeramic = 1;
@@ -188,13 +194,16 @@ enum PositionTag : enum8 {
188194
kMiddle = 4;
189195
kRow = 5;
190196
kColumn = 6;
191-
kUnder = 7;
192-
kNextTo = 8;
193-
kAround = 9;
194-
kOn = 10;
195-
kAbove = 11;
196-
kFrontOf = 12;
197-
kBehind = 13;
197+
}
198+
199+
enum RelativePositionTag : enum8 {
200+
kUnder = 0;
201+
kNextTo = 1;
202+
kAround = 2;
203+
kOn = 3;
204+
kAbove = 4;
205+
kFrontOf = 5;
206+
kBehind = 6;
198207
}
199208

200209
enum TestGlobalEnum : enum8 {
@@ -220,6 +229,11 @@ struct LocationDescriptorStruct {
220229
nullable AreaTypeTag areaType = 2;
221230
}
222231

232+
struct AtomicAttributeStatusStruct {
233+
attrib_id attributeID = 0;
234+
status statusCode = 1;
235+
}
236+
223237
/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */
224238
cluster Identify = 3 {
225239
revision 4;
@@ -1520,7 +1534,7 @@ cluster ActivatedCarbonFilterMonitoring = 114 {
15201534

15211535
/** An interface for configuring and controlling the functionality of a thermostat. */
15221536
cluster Thermostat = 513 {
1523-
revision 6;
1537+
revision 7;
15241538

15251539
enum ACCapacityFormatEnum : enum8 {
15261540
kBTUh = 0;
@@ -1566,7 +1580,6 @@ cluster Thermostat = 513 {
15661580
}
15671581

15681582
enum PresetScenarioEnum : enum8 {
1569-
kUnspecified = 0;
15701583
kOccupied = 1;
15711584
kUnoccupied = 2;
15721585
kSleep = 3;
@@ -1639,7 +1652,6 @@ cluster Thermostat = 513 {
16391652
kLocalTemperatureNotExposed = 0x40;
16401653
kMatterScheduleConfiguration = 0x80;
16411654
kPresets = 0x100;
1642-
kSetpoints = 0x200;
16431655
}
16441656

16451657
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1649,6 +1661,10 @@ cluster Thermostat = 513 {
16491661
kHeatingUsesFuel = 0x20;
16501662
}
16511663

1664+
bitmap OccupancyBitmap : bitmap8 {
1665+
kOccupied = 0x1;
1666+
}
1667+
16521668
bitmap PresetTypeFeaturesBitmap : bitmap16 {
16531669
kAutomatic = 0x1;
16541670
kSupportsNames = 0x2;
@@ -1714,7 +1730,7 @@ cluster Thermostat = 513 {
17141730
optional char_string<64> name = 2;
17151731
optional octet_string<16> presetHandle = 3;
17161732
ScheduleTransitionStruct transitions[] = 4;
1717-
optional nullable boolean builtIn = 5;
1733+
nullable boolean builtIn = 5;
17181734
}
17191735

17201736
struct PresetStruct {
@@ -1746,23 +1762,23 @@ cluster Thermostat = 513 {
17461762

17471763
readonly attribute nullable temperature localTemperature = 0;
17481764
readonly attribute optional nullable temperature outdoorTemperature = 1;
1749-
readonly attribute optional bitmap8 occupancy = 2;
1765+
readonly attribute optional OccupancyBitmap occupancy = 2;
17501766
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
17511767
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
17521768
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
17531769
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
17541770
readonly attribute optional int8u PICoolingDemand = 7;
17551771
readonly attribute optional int8u PIHeatingDemand = 8;
1756-
attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
1772+
attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
17571773
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
1758-
attribute optional int16s occupiedCoolingSetpoint = 17;
1759-
attribute optional int16s occupiedHeatingSetpoint = 18;
1760-
attribute optional int16s unoccupiedCoolingSetpoint = 19;
1761-
attribute optional int16s unoccupiedHeatingSetpoint = 20;
1762-
attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
1763-
attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
1764-
attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
1765-
attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
1774+
attribute optional temperature occupiedCoolingSetpoint = 17;
1775+
attribute optional temperature occupiedHeatingSetpoint = 18;
1776+
attribute optional temperature unoccupiedCoolingSetpoint = 19;
1777+
attribute optional temperature unoccupiedHeatingSetpoint = 20;
1778+
attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
1779+
attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
1780+
attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
1781+
attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
17661782
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
17671783
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
17681784
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1803,8 +1819,7 @@ cluster Thermostat = 513 {
18031819
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
18041820
attribute access(write: manage) optional PresetStruct presets[] = 80;
18051821
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
1806-
readonly attribute optional boolean presetsSchedulesEditable = 82;
1807-
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 83;
1822+
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
18081823
readonly attribute command_id generatedCommandList[] = 65528;
18091824
readonly attribute command_id acceptedCommandList[] = 65529;
18101825
readonly attribute event_id eventList[] = 65530;
@@ -1844,28 +1859,32 @@ cluster Thermostat = 513 {
18441859
octet_string<16> presetHandle = 0;
18451860
}
18461861

1847-
request struct StartPresetsSchedulesEditRequestRequest {
1848-
int16u timeoutSeconds = 0;
1862+
response struct AtomicResponse = 253 {
1863+
status statusCode = 0;
1864+
AtomicAttributeStatusStruct attributeStatus[] = 1;
1865+
optional int16u timeout = 2;
1866+
}
1867+
1868+
request struct AtomicRequestRequest {
1869+
AtomicRequestTypeEnum requestType = 0;
1870+
attrib_id attributeRequests[] = 1;
1871+
optional int16u timeout = 2;
18491872
}
18501873

1851-
/** Command description for SetpointRaiseLower */
1874+
/** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
18521875
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
1853-
/** Command description for SetWeeklySchedule */
1876+
/** This command is used to update the thermostat weekly setpoint schedule from a management system. */
18541877
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
1855-
/** Command description for GetWeeklySchedule */
1878+
/** The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command. */
18561879
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
1857-
/** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
1880+
/** This command is used to clear the weekly schedule. */
18581881
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
1859-
/** This command is used to set the active schedule. */
1882+
/** Upon receipt, if the Schedules attribute contains a ScheduleStruct whose ScheduleHandle field matches the value of the ScheduleHandle field, the server SHALL set the thermostat's ActiveScheduleHandle attribute to the value of the ScheduleHandle field. */
18601883
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
1861-
/** This command is used to set the active preset. */
1884+
/** ID */
18621885
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
1863-
/** This command is used to start editing the presets and schedules. */
1864-
command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
1865-
/** This command is used to cancel editing presets and schedules. */
1866-
command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
1867-
/** This command is used to notify the server that all edits are done and should be committed. */
1868-
command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
1886+
/** Begins, Commits or Cancels an atomic write */
1887+
command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
18691888
}
18701889

18711890
/** An interface for controlling a fan in a heating/cooling system. */

examples/air-quality-sensor-app/air-quality-sensor-common/air-quality-sensor-app.matter

+21-7
Original file line numberDiff line numberDiff line change
@@ -99,6 +99,12 @@ enum AreaTypeTag : enum8 {
9999
kWorkshop = 94;
100100
}
101101

102+
enum AtomicRequestTypeEnum : enum8 {
103+
kBeginWrite = 0;
104+
kCommitWrite = 1;
105+
kRollbackWrite = 2;
106+
}
107+
102108
enum FloorSurfaceTag : enum8 {
103109
kCarpet = 0;
104110
kCeramic = 1;
@@ -188,13 +194,16 @@ enum PositionTag : enum8 {
188194
kMiddle = 4;
189195
kRow = 5;
190196
kColumn = 6;
191-
kUnder = 7;
192-
kNextTo = 8;
193-
kAround = 9;
194-
kOn = 10;
195-
kAbove = 11;
196-
kFrontOf = 12;
197-
kBehind = 13;
197+
}
198+
199+
enum RelativePositionTag : enum8 {
200+
kUnder = 0;
201+
kNextTo = 1;
202+
kAround = 2;
203+
kOn = 3;
204+
kAbove = 4;
205+
kFrontOf = 5;
206+
kBehind = 6;
198207
}
199208

200209
enum TestGlobalEnum : enum8 {
@@ -220,6 +229,11 @@ struct LocationDescriptorStruct {
220229
nullable AreaTypeTag areaType = 2;
221230
}
222231

232+
struct AtomicAttributeStatusStruct {
233+
attrib_id attributeID = 0;
234+
status statusCode = 1;
235+
}
236+
223237
/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */
224238
cluster Identify = 3 {
225239
revision 4;

0 commit comments

Comments
 (0)