Skip to content

Commit cd0d970

Browse files
authored
Merge branch 'master' into master
2 parents 5327952 + 653a55f commit cd0d970

File tree

189 files changed

+5116
-4506
lines changed

Some content is hidden

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

189 files changed

+5116
-4506
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

+2
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 \

.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": {

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

+46-30
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;
@@ -220,6 +226,11 @@ struct LocationDescriptorStruct {
220226
nullable AreaTypeTag areaType = 2;
221227
}
222228

229+
struct AtomicAttributeStatusStruct {
230+
attrib_id attributeID = 0;
231+
status statusCode = 1;
232+
}
233+
223234
/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */
224235
cluster Identify = 3 {
225236
revision 4;
@@ -1520,7 +1531,7 @@ cluster ActivatedCarbonFilterMonitoring = 114 {
15201531

15211532
/** An interface for configuring and controlling the functionality of a thermostat. */
15221533
cluster Thermostat = 513 {
1523-
revision 6;
1534+
revision 7;
15241535

15251536
enum ACCapacityFormatEnum : enum8 {
15261537
kBTUh = 0;
@@ -1566,7 +1577,6 @@ cluster Thermostat = 513 {
15661577
}
15671578

15681579
enum PresetScenarioEnum : enum8 {
1569-
kUnspecified = 0;
15701580
kOccupied = 1;
15711581
kUnoccupied = 2;
15721582
kSleep = 3;
@@ -1639,7 +1649,6 @@ cluster Thermostat = 513 {
16391649
kLocalTemperatureNotExposed = 0x40;
16401650
kMatterScheduleConfiguration = 0x80;
16411651
kPresets = 0x100;
1642-
kSetpoints = 0x200;
16431652
}
16441653

16451654
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1649,6 +1658,10 @@ cluster Thermostat = 513 {
16491658
kHeatingUsesFuel = 0x20;
16501659
}
16511660

1661+
bitmap OccupancyBitmap : bitmap8 {
1662+
kOccupied = 0x1;
1663+
}
1664+
16521665
bitmap PresetTypeFeaturesBitmap : bitmap16 {
16531666
kAutomatic = 0x1;
16541667
kSupportsNames = 0x2;
@@ -1714,7 +1727,7 @@ cluster Thermostat = 513 {
17141727
optional char_string<64> name = 2;
17151728
optional octet_string<16> presetHandle = 3;
17161729
ScheduleTransitionStruct transitions[] = 4;
1717-
optional nullable boolean builtIn = 5;
1730+
nullable boolean builtIn = 5;
17181731
}
17191732

17201733
struct PresetStruct {
@@ -1746,23 +1759,23 @@ cluster Thermostat = 513 {
17461759

17471760
readonly attribute nullable temperature localTemperature = 0;
17481761
readonly attribute optional nullable temperature outdoorTemperature = 1;
1749-
readonly attribute optional bitmap8 occupancy = 2;
1762+
readonly attribute optional OccupancyBitmap occupancy = 2;
17501763
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
17511764
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
17521765
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
17531766
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
17541767
readonly attribute optional int8u PICoolingDemand = 7;
17551768
readonly attribute optional int8u PIHeatingDemand = 8;
1756-
attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
1769+
attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
17571770
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;
1771+
attribute optional temperature occupiedCoolingSetpoint = 17;
1772+
attribute optional temperature occupiedHeatingSetpoint = 18;
1773+
attribute optional temperature unoccupiedCoolingSetpoint = 19;
1774+
attribute optional temperature unoccupiedHeatingSetpoint = 20;
1775+
attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
1776+
attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
1777+
attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
1778+
attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
17661779
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
17671780
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
17681781
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1803,8 +1816,7 @@ cluster Thermostat = 513 {
18031816
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
18041817
attribute access(write: manage) optional PresetStruct presets[] = 80;
18051818
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
1806-
readonly attribute optional boolean presetsSchedulesEditable = 82;
1807-
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 83;
1819+
readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
18081820
readonly attribute command_id generatedCommandList[] = 65528;
18091821
readonly attribute command_id acceptedCommandList[] = 65529;
18101822
readonly attribute event_id eventList[] = 65530;
@@ -1844,28 +1856,32 @@ cluster Thermostat = 513 {
18441856
octet_string<16> presetHandle = 0;
18451857
}
18461858

1847-
request struct StartPresetsSchedulesEditRequestRequest {
1848-
int16u timeoutSeconds = 0;
1859+
response struct AtomicResponse = 253 {
1860+
status statusCode = 0;
1861+
AtomicAttributeStatusStruct attributeStatus[] = 1;
1862+
optional int16u timeout = 2;
1863+
}
1864+
1865+
request struct AtomicRequestRequest {
1866+
AtomicRequestTypeEnum requestType = 0;
1867+
attrib_id attributeRequests[] = 1;
1868+
optional int16u timeout = 2;
18491869
}
18501870

1851-
/** Command description for SetpointRaiseLower */
1871+
/** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
18521872
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
1853-
/** Command description for SetWeeklySchedule */
1873+
/** This command is used to update the thermostat weekly setpoint schedule from a management system. */
18541874
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
1855-
/** Command description for GetWeeklySchedule */
1875+
/** The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command. */
18561876
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
1857-
/** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
1877+
/** This command is used to clear the weekly schedule. */
18581878
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
1859-
/** This command is used to set the active schedule. */
1879+
/** 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. */
18601880
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
1861-
/** This command is used to set the active preset. */
1881+
/** ID */
18621882
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;
1883+
/** Begins, Commits or Cancels an atomic write */
1884+
command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
18691885
}
18701886

18711887
/** 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

+11
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;
@@ -220,6 +226,11 @@ struct LocationDescriptorStruct {
220226
nullable AreaTypeTag areaType = 2;
221227
}
222228

229+
struct AtomicAttributeStatusStruct {
230+
attrib_id attributeID = 0;
231+
status statusCode = 1;
232+
}
233+
223234
/** Attributes and commands for putting a device into Identification mode (e.g. flashing a light). */
224235
cluster Identify = 3 {
225236
revision 4;

0 commit comments

Comments
 (0)