diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index d6ff5d341cd070..6a228404b083d8 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -91,6 +91,8 @@ jobs:
--no-print \
--log-level info \
src/app/zap-templates/zcl/data-model/chip/global-attributes.xml \
+ src/app/zap-templates/zcl/data-model/chip/global-bitmaps.xml \
+ src/app/zap-templates/zcl/data-model/chip/global-enums.xml \
src/app/zap-templates/zcl/data-model/chip/global-structs.xml \
src/app/zap-templates/zcl/data-model/chip/semantic-tag-namespace-enums.xml \
src/app/zap-templates/zcl/data-model/chip/access-control-definitions.xml \
diff --git a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
index 864e3115bc06a9..b7c633c5efb4b5 100644
--- a/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
+++ b/examples/air-purifier-app/air-purifier-common/air-purifier-app.matter
@@ -1242,7 +1242,7 @@ cluster ActivatedCarbonFilterMonitoring = 114 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1278,6 +1278,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1288,13 +1294,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -1360,7 +1366,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1370,6 +1375,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -1420,11 +1429,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -1440,7 +1444,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -1472,23 +1481,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1529,9 +1538,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1571,34 +1578,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for controlling a fan in a heating/cooling system. */
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 7ffee39eb5101f..719d8c6a3936b1 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -5021,7 +5021,7 @@ cluster PumpConfigurationAndControl = 512 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -5057,6 +5057,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -5067,13 +5073,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -5139,7 +5145,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -5149,6 +5154,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -5199,11 +5208,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -5219,7 +5223,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -5251,23 +5260,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -5308,9 +5317,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -5350,34 +5357,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for controlling a fan in a heating/cooling system. */
@@ -8681,8 +8686,6 @@ endpoint 1 {
ram attribute activeScheduleHandle;
callback attribute presets;
callback attribute schedules;
- ram attribute presetsSchedulesEditable;
- ram attribute temperatureSetpointHoldPolicy default = 0;
ram attribute setpointHoldExpiryTimestamp;
callback attribute generatedCommandList;
callback attribute acceptedCommandList;
@@ -8692,6 +8695,8 @@ endpoint 1 {
ram attribute clusterRevision default = 6;
handle command SetpointRaiseLower;
+ handle command AtomicResponse;
+ handle command AtomicRequest;
}
server cluster FanControl {
diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
index 9e0452b0c423fc..cc48d168f0f3dd 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.zap
@@ -16172,6 +16172,22 @@
"source": "client",
"isIncoming": 1,
"isEnabled": 1
+ },
+ {
+ "name": "AtomicResponse",
+ "code": 253,
+ "mfgCode": null,
+ "source": "server",
+ "isIncoming": 0,
+ "isEnabled": 1
+ },
+ {
+ "name": "AtomicRequest",
+ "code": 254,
+ "mfgCode": null,
+ "source": "client",
+ "isIncoming": 1,
+ "isEnabled": 1
}
],
"attributes": [
@@ -16276,7 +16292,7 @@
"code": 17,
"mfgCode": null,
"side": "server",
- "type": "int16s",
+ "type": "temperature",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -16292,7 +16308,7 @@
"code": 18,
"mfgCode": null,
"side": "server",
- "type": "int16s",
+ "type": "temperature",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -16308,7 +16324,7 @@
"code": 21,
"mfgCode": null,
"side": "server",
- "type": "int16s",
+ "type": "temperature",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -16324,7 +16340,7 @@
"code": 22,
"mfgCode": null,
"side": "server",
- "type": "int16s",
+ "type": "temperature",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -16340,7 +16356,7 @@
"code": 23,
"mfgCode": null,
"side": "server",
- "type": "int16s",
+ "type": "temperature",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -16356,7 +16372,7 @@
"code": 24,
"mfgCode": null,
"side": "server",
- "type": "int16s",
+ "type": "temperature",
"included": 1,
"storageOption": "RAM",
"singleton": 0,
@@ -16559,41 +16575,9 @@
"maxInterval": 65534,
"reportableChange": 0
},
- {
- "name": "PresetsSchedulesEditable",
- "code": 82,
- "mfgCode": null,
- "side": "server",
- "type": "boolean",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
- {
- "name": "TemperatureSetpointHoldPolicy",
- "code": 83,
- "mfgCode": null,
- "side": "server",
- "type": "TemperatureSetpointHoldPolicyBitmap",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
{
"name": "SetpointHoldExpiryTimestamp",
- "code": 84,
+ "code": 82,
"mfgCode": null,
"side": "server",
"type": "epoch_s",
@@ -16607,22 +16591,6 @@
"maxInterval": 65534,
"reportableChange": 0
},
- {
- "name": "QueuedPreset",
- "code": 85,
- "mfgCode": null,
- "side": "server",
- "type": "QueuedPresetStruct",
- "included": 1,
- "storageOption": "External",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": null,
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
{
"name": "GeneratedCommandList",
"code": 65528,
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
index 946733b5ebe9da..85490eaccbed20 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
@@ -3516,7 +3516,7 @@ cluster PumpConfigurationAndControl = 512 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -3552,6 +3552,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -3562,13 +3568,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -3634,7 +3640,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -3644,6 +3649,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -3694,11 +3703,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -3714,7 +3718,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -3746,23 +3755,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -3803,9 +3812,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -3845,34 +3852,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for controlling a fan in a heating/cooling system. */
diff --git a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
index 1976a0d6af169b..d6b8106277363b 100644
--- a/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
+++ b/examples/chef/devices/rootnode_airpurifier_airqualitysensor_temperaturesensor_humiditysensor_thermostat_56de3d5f45.matter
@@ -1165,7 +1165,7 @@ cluster ActivatedCarbonFilterMonitoring = 114 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1201,6 +1201,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1211,13 +1217,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -1283,7 +1289,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1293,6 +1298,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -1343,11 +1352,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -1363,7 +1367,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -1395,23 +1404,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1452,9 +1461,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1494,34 +1501,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for controlling a fan in a heating/cooling system. */
diff --git a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
index b0011ffb37983b..2b221d177242ec 100644
--- a/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
+++ b/examples/chef/devices/rootnode_heatingcoolingunit_ncdGai1E5a.matter
@@ -1522,7 +1522,7 @@ cluster FixedLabel = 64 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1558,6 +1558,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1568,13 +1574,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -1640,7 +1646,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1650,6 +1655,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -1700,11 +1709,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -1720,7 +1724,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -1752,23 +1761,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1809,9 +1818,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1851,34 +1858,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for controlling a fan in a heating/cooling system. */
diff --git a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
index 5a8aefa22762f6..de552cfdfb08f0 100644
--- a/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
+++ b/examples/chef/devices/rootnode_roomairconditioner_9cf3607804.matter
@@ -1105,7 +1105,7 @@ cluster GroupKeyManagement = 63 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1141,6 +1141,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1151,13 +1157,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -1223,7 +1229,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1233,6 +1238,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -1283,11 +1292,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -1303,7 +1307,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -1335,23 +1344,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1392,9 +1401,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1434,34 +1441,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for controlling a fan in a heating/cooling system. */
diff --git a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
index f7ff21337d4e96..b6aed2fc7523b3 100644
--- a/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
+++ b/examples/chef/devices/rootnode_thermostat_bm3fb8dhYi.matter
@@ -1325,7 +1325,7 @@ cluster FixedLabel = 64 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1361,6 +1361,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1371,13 +1377,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -1443,7 +1449,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1453,6 +1458,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -1503,11 +1512,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -1523,7 +1527,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -1555,23 +1564,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1612,9 +1621,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1654,34 +1661,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for controlling a fan in a heating/cooling system. */
diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter
index 9c1a05687d3c6a..4b3892c8bf2e14 100644
--- a/examples/placeholder/linux/apps/app1/config.matter
+++ b/examples/placeholder/linux/apps/app1/config.matter
@@ -4773,7 +4773,7 @@ cluster PumpConfigurationAndControl = 512 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -4809,6 +4809,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -4819,13 +4825,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -4891,7 +4897,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -4901,6 +4906,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -4951,11 +4960,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -4971,7 +4975,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -5003,23 +5012,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -5060,9 +5069,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -5102,39 +5109,37 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -5170,6 +5175,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -5180,13 +5191,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -5252,7 +5263,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -5262,6 +5272,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -5312,11 +5326,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -5332,7 +5341,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -5364,23 +5378,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -5421,9 +5435,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -5463,34 +5475,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */
diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter
index a48b8accff55c5..daa1f501467119 100644
--- a/examples/placeholder/linux/apps/app2/config.matter
+++ b/examples/placeholder/linux/apps/app2/config.matter
@@ -4730,7 +4730,7 @@ cluster PumpConfigurationAndControl = 512 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -4766,6 +4766,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -4776,13 +4782,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -4848,7 +4854,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -4858,6 +4863,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -4908,11 +4917,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -4928,7 +4932,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -4960,23 +4969,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -5017,9 +5026,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -5059,39 +5066,37 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -5127,6 +5132,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -5137,13 +5148,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -5209,7 +5220,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -5219,6 +5229,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -5269,11 +5283,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -5289,7 +5298,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -5321,23 +5335,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -5378,9 +5392,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -5420,34 +5432,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
index 00917f2d9a593e..8c3352ce2027f2 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_thread.matter
@@ -1916,7 +1916,7 @@ provisional cluster ScenesManagement = 98 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1952,6 +1952,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1962,13 +1968,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -2034,7 +2040,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -2044,6 +2049,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -2094,11 +2103,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -2114,7 +2118,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -2146,23 +2155,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -2203,9 +2212,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2245,34 +2252,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
endpoint 0 {
diff --git a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
index a8a65c2c4ad611..c508e042044359 100644
--- a/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
+++ b/examples/thermostat/nxp/zap/thermostat_matter_wifi.matter
@@ -1827,7 +1827,7 @@ provisional cluster ScenesManagement = 98 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1863,6 +1863,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1873,13 +1879,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -1945,7 +1951,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1955,6 +1960,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -2005,11 +2014,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -2025,7 +2029,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -2057,23 +2066,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -2114,9 +2123,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2156,34 +2163,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
endpoint 0 {
diff --git a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
index a775e536ac841e..c6f981ad03ff7b 100644
--- a/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
+++ b/examples/thermostat/qpg/zap/thermostaticRadiatorValve.matter
@@ -1524,7 +1524,7 @@ cluster UserLabel = 65 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1560,6 +1560,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1570,13 +1576,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -1642,7 +1648,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1652,6 +1657,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -1702,11 +1711,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -1722,7 +1726,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -1754,23 +1763,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1811,9 +1820,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -1853,34 +1860,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */
diff --git a/examples/thermostat/thermostat-common/thermostat.matter b/examples/thermostat/thermostat-common/thermostat.matter
index 2312df8c61fdc1..7a48b65af0fd42 100644
--- a/examples/thermostat/thermostat-common/thermostat.matter
+++ b/examples/thermostat/thermostat-common/thermostat.matter
@@ -1704,7 +1704,7 @@ cluster UserLabel = 65 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -1740,6 +1740,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -1750,13 +1756,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -1822,7 +1828,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -1832,6 +1837,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -1882,11 +1891,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -1902,7 +1906,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -1934,23 +1943,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -1991,9 +2000,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -2033,34 +2040,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for configuring the user interface of a thermostat (which may be remote from the thermostat). */
diff --git a/scripts/rules.matterlint b/scripts/rules.matterlint
index 43b9b5887582b4..16c1fa56e1de1e 100644
--- a/scripts/rules.matterlint
+++ b/scripts/rules.matterlint
@@ -44,6 +44,8 @@ load "../src/app/zap-templates/zcl/data-model/chip/flow-measurement-cluster.xml"
load "../src/app/zap-templates/zcl/data-model/chip/general-commissioning-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/general-diagnostics-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/global-attributes.xml";
+load "../src/app/zap-templates/zcl/data-model/chip/global-bitmaps.xml";
+load "../src/app/zap-templates/zcl/data-model/chip/global-enums.xml";
load "../src/app/zap-templates/zcl/data-model/chip/global-structs.xml";
load "../src/app/zap-templates/zcl/data-model/chip/groups-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/group-key-mgmt-cluster.xml";
diff --git a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h
index f2c082b1d0d4a1..bbb415515375fb 100644
--- a/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h
+++ b/scripts/tools/zap/tests/outputs/all-clusters-app/app-templates/endpoint_config.h
@@ -355,7 +355,7 @@
}
// This is an array of EmberAfAttributeMetadata structures.
-#define GENERATED_ATTRIBUTE_COUNT 1056
+#define GENERATED_ATTRIBUTE_COUNT 1054
#define GENERATED_ATTRIBUTES \
{ \
\
@@ -1367,17 +1367,17 @@
{ ZAP_SIMPLE_DEFAULT(0x0BB8), 0x00000004, 2, ZAP_TYPE(TEMPERATURE), 0 }, /* AbsMaxHeatSetpointLimit */ \
{ ZAP_SIMPLE_DEFAULT(0x0640), 0x00000005, 2, ZAP_TYPE(TEMPERATURE), 0 }, /* AbsMinCoolSetpointLimit */ \
{ ZAP_SIMPLE_DEFAULT(0x0C80), 0x00000006, 2, ZAP_TYPE(TEMPERATURE), 0 }, /* AbsMaxCoolSetpointLimit */ \
- { ZAP_MIN_MAX_DEFAULTS_INDEX(13), 0x00000011, 2, ZAP_TYPE(INT16S), \
+ { ZAP_MIN_MAX_DEFAULTS_INDEX(13), 0x00000011, 2, ZAP_TYPE(TEMPERATURE), \
ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* OccupiedCoolingSetpoint */ \
- { ZAP_MIN_MAX_DEFAULTS_INDEX(14), 0x00000012, 2, ZAP_TYPE(INT16S), \
+ { ZAP_MIN_MAX_DEFAULTS_INDEX(14), 0x00000012, 2, ZAP_TYPE(TEMPERATURE), \
ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* OccupiedHeatingSetpoint */ \
- { ZAP_MIN_MAX_DEFAULTS_INDEX(15), 0x00000015, 2, ZAP_TYPE(INT16S), \
+ { ZAP_MIN_MAX_DEFAULTS_INDEX(15), 0x00000015, 2, ZAP_TYPE(TEMPERATURE), \
ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MinHeatSetpointLimit */ \
- { ZAP_MIN_MAX_DEFAULTS_INDEX(16), 0x00000016, 2, ZAP_TYPE(INT16S), \
+ { ZAP_MIN_MAX_DEFAULTS_INDEX(16), 0x00000016, 2, ZAP_TYPE(TEMPERATURE), \
ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MaxHeatSetpointLimit */ \
- { ZAP_MIN_MAX_DEFAULTS_INDEX(17), 0x00000017, 2, ZAP_TYPE(INT16S), \
+ { ZAP_MIN_MAX_DEFAULTS_INDEX(17), 0x00000017, 2, ZAP_TYPE(TEMPERATURE), \
ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MinCoolSetpointLimit */ \
- { ZAP_MIN_MAX_DEFAULTS_INDEX(18), 0x00000018, 2, ZAP_TYPE(INT16S), \
+ { ZAP_MIN_MAX_DEFAULTS_INDEX(18), 0x00000018, 2, ZAP_TYPE(TEMPERATURE), \
ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MaxCoolSetpointLimit */ \
{ ZAP_MIN_MAX_DEFAULTS_INDEX(19), 0x00000019, 1, ZAP_TYPE(INT8S), \
ZAP_ATTRIBUTE_MASK(MIN_MAX) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* MinSetpointDeadBand */ \
@@ -1399,9 +1399,7 @@
ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Presets */ \
{ ZAP_EMPTY_DEFAULT(), 0x00000051, 0, ZAP_TYPE(ARRAY), \
ZAP_ATTRIBUTE_MASK(EXTERNAL_STORAGE) | ZAP_ATTRIBUTE_MASK(WRITABLE) }, /* Schedules */ \
- { ZAP_EMPTY_DEFAULT(), 0x00000052, 1, ZAP_TYPE(BOOLEAN), 0 }, /* PresetsSchedulesEditable */ \
- { ZAP_SIMPLE_DEFAULT(0), 0x00000053, 1, ZAP_TYPE(BITMAP8), 0 }, /* TemperatureSetpointHoldPolicy */ \
- { ZAP_EMPTY_DEFAULT(), 0x00000054, 4, ZAP_TYPE(EPOCH_S), \
+ { ZAP_EMPTY_DEFAULT(), 0x00000052, 4, ZAP_TYPE(EPOCH_S), \
ZAP_ATTRIBUTE_MASK(NULLABLE) }, /* SetpointHoldExpiryTimestamp */ \
{ ZAP_SIMPLE_DEFAULT(0x0023), 0x0000FFFC, 4, ZAP_TYPE(BITMAP32), 0 }, /* FeatureMap */ \
{ ZAP_SIMPLE_DEFAULT(6), 0x0000FFFD, 2, ZAP_TYPE(INT16U), 0 }, /* ClusterRevision */ \
@@ -3749,8 +3747,8 @@
/* Endpoint: 1, Cluster: Thermostat (server) */ \
.clusterId = 0x00000201, \
.attributes = ZAP_ATTRIBUTE_INDEX(616), \
- .attributeCount = 28, \
- .clusterSize = 74, \
+ .attributeCount = 26, \
+ .clusterSize = 72, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \
.functions = chipFuncArrayThermostatServer, \
.acceptedCommandList = ZAP_GENERATED_COMMANDS_INDEX( 241 ), \
@@ -3761,7 +3759,7 @@
{ \
/* Endpoint: 1, Cluster: Fan Control (server) */ \
.clusterId = 0x00000202, \
- .attributes = ZAP_ATTRIBUTE_INDEX(644), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(642), \
.attributeCount = 14, \
.clusterSize = 18, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \
@@ -3774,7 +3772,7 @@
{ \
/* Endpoint: 1, Cluster: Thermostat User Interface Configuration (server) */ \
.clusterId = 0x00000204, \
- .attributes = ZAP_ATTRIBUTE_INDEX(658), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(656), \
.attributeCount = 5, \
.clusterSize = 9, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(PRE_ATTRIBUTE_CHANGED_FUNCTION), \
@@ -3787,7 +3785,7 @@
{ \
/* Endpoint: 1, Cluster: Color Control (server) */ \
.clusterId = 0x00000300, \
- .attributes = ZAP_ATTRIBUTE_INDEX(663), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(661), \
.attributeCount = 54, \
.clusterSize = 345, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(SHUTDOWN_FUNCTION), \
@@ -3800,7 +3798,7 @@
{ \
/* Endpoint: 1, Cluster: Ballast Configuration (server) */ \
.clusterId = 0x00000301, \
- .attributes = ZAP_ATTRIBUTE_INDEX(717), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(715), \
.attributeCount = 16, \
.clusterSize = 58, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3813,7 +3811,7 @@
{ \
/* Endpoint: 1, Cluster: Illuminance Measurement (server) */ \
.clusterId = 0x00000400, \
- .attributes = ZAP_ATTRIBUTE_INDEX(733), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(731), \
.attributeCount = 7, \
.clusterSize = 15, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3826,7 +3824,7 @@
{ \
/* Endpoint: 1, Cluster: Temperature Measurement (server) */ \
.clusterId = 0x00000402, \
- .attributes = ZAP_ATTRIBUTE_INDEX(740), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(738), \
.attributeCount = 6, \
.clusterSize = 14, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3839,7 +3837,7 @@
{ \
/* Endpoint: 1, Cluster: Pressure Measurement (server) */ \
.clusterId = 0x00000403, \
- .attributes = ZAP_ATTRIBUTE_INDEX(746), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(744), \
.attributeCount = 5, \
.clusterSize = 12, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3852,7 +3850,7 @@
{ \
/* Endpoint: 1, Cluster: Flow Measurement (server) */ \
.clusterId = 0x00000404, \
- .attributes = ZAP_ATTRIBUTE_INDEX(751), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(749), \
.attributeCount = 6, \
.clusterSize = 14, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3865,7 +3863,7 @@
{ \
/* Endpoint: 1, Cluster: Relative Humidity Measurement (server) */ \
.clusterId = 0x00000405, \
- .attributes = ZAP_ATTRIBUTE_INDEX(757), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(755), \
.attributeCount = 6, \
.clusterSize = 14, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3878,7 +3876,7 @@
{ \
/* Endpoint: 1, Cluster: Occupancy Sensing (server) */ \
.clusterId = 0x00000406, \
- .attributes = ZAP_ATTRIBUTE_INDEX(763), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(761), \
.attributeCount = 5, \
.clusterSize = 9, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
@@ -3891,7 +3889,7 @@
{ \
/* Endpoint: 1, Cluster: Carbon Monoxide Concentration Measurement (server) */ \
.clusterId = 0x0000040C, \
- .attributes = ZAP_ATTRIBUTE_INDEX(768), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(766), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3904,7 +3902,7 @@
{ \
/* Endpoint: 1, Cluster: Carbon Dioxide Concentration Measurement (server) */ \
.clusterId = 0x0000040D, \
- .attributes = ZAP_ATTRIBUTE_INDEX(781), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(779), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3917,7 +3915,7 @@
{ \
/* Endpoint: 1, Cluster: Nitrogen Dioxide Concentration Measurement (server) */ \
.clusterId = 0x00000413, \
- .attributes = ZAP_ATTRIBUTE_INDEX(794), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(792), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3930,7 +3928,7 @@
{ \
/* Endpoint: 1, Cluster: Ozone Concentration Measurement (server) */ \
.clusterId = 0x00000415, \
- .attributes = ZAP_ATTRIBUTE_INDEX(807), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(805), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3943,7 +3941,7 @@
{ \
/* Endpoint: 1, Cluster: PM2.5 Concentration Measurement (server) */ \
.clusterId = 0x0000042A, \
- .attributes = ZAP_ATTRIBUTE_INDEX(820), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(818), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3956,7 +3954,7 @@
{ \
/* Endpoint: 1, Cluster: Formaldehyde Concentration Measurement (server) */ \
.clusterId = 0x0000042B, \
- .attributes = ZAP_ATTRIBUTE_INDEX(833), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(831), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3969,7 +3967,7 @@
{ \
/* Endpoint: 1, Cluster: PM1 Concentration Measurement (server) */ \
.clusterId = 0x0000042C, \
- .attributes = ZAP_ATTRIBUTE_INDEX(846), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(844), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3982,7 +3980,7 @@
{ \
/* Endpoint: 1, Cluster: PM10 Concentration Measurement (server) */ \
.clusterId = 0x0000042D, \
- .attributes = ZAP_ATTRIBUTE_INDEX(859), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(857), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -3995,7 +3993,7 @@
{ \
/* Endpoint: 1, Cluster: Total Volatile Organic Compounds Concentration Measurement (server) */ \
.clusterId = 0x0000042E, \
- .attributes = ZAP_ATTRIBUTE_INDEX(872), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(870), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4008,7 +4006,7 @@
{ \
/* Endpoint: 1, Cluster: Radon Concentration Measurement (server) */ \
.clusterId = 0x0000042F, \
- .attributes = ZAP_ATTRIBUTE_INDEX(885), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(883), \
.attributeCount = 13, \
.clusterSize = 2, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4021,7 +4019,7 @@
{ \
/* Endpoint: 1, Cluster: Wake on LAN (server) */ \
.clusterId = 0x00000503, \
- .attributes = ZAP_ATTRIBUTE_INDEX(898), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(896), \
.attributeCount = 3, \
.clusterSize = 19, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4034,7 +4032,7 @@
{ \
/* Endpoint: 1, Cluster: Low Power (server) */ \
.clusterId = 0x00000508, \
- .attributes = ZAP_ATTRIBUTE_INDEX(901), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(899), \
.attributeCount = 2, \
.clusterSize = 6, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4047,7 +4045,7 @@
{ \
/* Endpoint: 1, Cluster: Electrical Measurement (server) */ \
.clusterId = 0x00000B04, \
- .attributes = ZAP_ATTRIBUTE_INDEX(903), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(901), \
.attributeCount = 13, \
.clusterSize = 32, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4060,7 +4058,7 @@
{ \
/* Endpoint: 1, Cluster: Unit Testing (server) */ \
.clusterId = 0xFFF1FC05, \
- .attributes = ZAP_ATTRIBUTE_INDEX(916), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(914), \
.attributeCount = 84, \
.clusterSize = 2290, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4073,7 +4071,7 @@
{ \
/* Endpoint: 2, Cluster: Identify (server) */ \
.clusterId = 0x00000003, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1000), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(998), \
.attributeCount = 4, \
.clusterSize = 9, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(ATTRIBUTE_CHANGED_FUNCTION), \
@@ -4086,7 +4084,7 @@
{ \
/* Endpoint: 2, Cluster: Groups (server) */ \
.clusterId = 0x00000004, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1004), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(1002), \
.attributeCount = 3, \
.clusterSize = 7, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
@@ -4099,7 +4097,7 @@
{ \
/* Endpoint: 2, Cluster: On/Off (server) */ \
.clusterId = 0x00000006, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1007), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(1005), \
.attributeCount = 7, \
.clusterSize = 13, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(SHUTDOWN_FUNCTION), \
@@ -4112,7 +4110,7 @@
{ \
/* Endpoint: 2, Cluster: Descriptor (server) */ \
.clusterId = 0x0000001D, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1014), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(1012), \
.attributeCount = 7, \
.clusterSize = 0, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4125,7 +4123,7 @@
{ \
/* Endpoint: 2, Cluster: Power Source (server) */ \
.clusterId = 0x0000002F, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1021), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(1019), \
.attributeCount = 9, \
.clusterSize = 72, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4138,7 +4136,7 @@
{ \
/* Endpoint: 2, Cluster: Scenes Management (server) */ \
.clusterId = 0x00000062, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1030), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(1028), \
.attributeCount = 5, \
.clusterSize = 16, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION) | ZAP_CLUSTER_MASK(SHUTDOWN_FUNCTION), \
@@ -4151,7 +4149,7 @@
{ \
/* Endpoint: 2, Cluster: Occupancy Sensing (server) */ \
.clusterId = 0x00000406, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1035), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(1033), \
.attributeCount = 5, \
.clusterSize = 9, \
.mask = ZAP_CLUSTER_MASK(SERVER) | ZAP_CLUSTER_MASK(INIT_FUNCTION), \
@@ -4164,7 +4162,7 @@
{ \
/* Endpoint: 65534, Cluster: Descriptor (server) */ \
.clusterId = 0x0000001D, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1040), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(1038), \
.attributeCount = 6, \
.clusterSize = 0, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4177,7 +4175,7 @@
{ \
/* Endpoint: 65534, Cluster: Network Commissioning (server) */ \
.clusterId = 0x00000031, \
- .attributes = ZAP_ATTRIBUTE_INDEX(1046), \
+ .attributes = ZAP_ATTRIBUTE_INDEX(1044), \
.attributeCount = 10, \
.clusterSize = 0, \
.mask = ZAP_CLUSTER_MASK(SERVER), \
@@ -4196,7 +4194,7 @@
// This is an array of EmberAfEndpointType structures.
#define GENERATED_ENDPOINT_TYPES \
{ \
- { ZAP_CLUSTER_INDEX(0), 29, 349 }, { ZAP_CLUSTER_INDEX(29), 74, 3523 }, { ZAP_CLUSTER_INDEX(103), 7, 126 }, \
+ { ZAP_CLUSTER_INDEX(0), 29, 349 }, { ZAP_CLUSTER_INDEX(29), 74, 3521 }, { ZAP_CLUSTER_INDEX(103), 7, 126 }, \
{ ZAP_CLUSTER_INDEX(110), 2, 0 }, \
}
@@ -4209,7 +4207,7 @@ static_assert(ATTRIBUTE_LARGEST <= CHIP_CONFIG_MAX_ATTRIBUTE_STORE_ELEMENT_SIZE,
#define ATTRIBUTE_SINGLETONS_SIZE (36)
// Total size of attribute storage
-#define ATTRIBUTE_MAX_SIZE (3998)
+#define ATTRIBUTE_MAX_SIZE (3996)
// Number of fixed endpoints
#define FIXED_ENDPOINT_COUNT (4)
diff --git a/src/app/clusters/thermostat-server/thermostat-server.cpp b/src/app/clusters/thermostat-server/thermostat-server.cpp
index c650a30c871989..a0dde29c8e0a0e 100644
--- a/src/app/clusters/thermostat-server/thermostat-server.cpp
+++ b/src/app/clusters/thermostat-server/thermostat-server.cpp
@@ -500,33 +500,9 @@ bool emberAfThermostatClusterSetActivePresetRequestCallback(
return false;
}
-bool emberAfThermostatClusterStartPresetsSchedulesEditRequestCallback(
+bool emberAfThermostatClusterAtomicRequestCallback(
chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
- const chip::app::Clusters::Thermostat::Commands::StartPresetsSchedulesEditRequest::DecodableType & commandData)
-{
- // TODO
- return false;
-}
-
-bool emberAfThermostatClusterCancelPresetsSchedulesEditRequestCallback(
- chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
- const chip::app::Clusters::Thermostat::Commands::CancelPresetsSchedulesEditRequest::DecodableType & commandData)
-{
- // TODO
- return false;
-}
-
-bool emberAfThermostatClusterCommitPresetsSchedulesRequestCallback(
- chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
- const chip::app::Clusters::Thermostat::Commands::CommitPresetsSchedulesRequest::DecodableType & commandData)
-{
- // TODO
- return false;
-}
-
-bool emberAfThermostatClusterSetTemperatureSetpointHoldPolicyCallback(
- chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
- const chip::app::Clusters::Thermostat::Commands::SetTemperatureSetpointHoldPolicy::DecodableType & commandData)
+ const chip::app::Clusters::Thermostat::Commands::AtomicRequest::DecodableType & commandData)
{
// TODO
return false;
diff --git a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml
index b2bf2a111ebffd..17a84f799beeb9 100644
--- a/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml
+++ b/src/app/tests/suites/certification/Test_TC_TSTAT_1_1.yaml
@@ -600,7 +600,7 @@ tests:
command: "readAttribute"
attribute: "GeneratedCommandList"
response:
- value: []
+ value: [0xFD] # AtomicResponse
constraints:
type: list
diff --git a/src/app/util/attribute-table.cpp b/src/app/util/attribute-table.cpp
index 57b5f43d35071f..f016d22d78a85c 100644
--- a/src/app/util/attribute-table.cpp
+++ b/src/app/util/attribute-table.cpp
@@ -44,7 +44,8 @@ namespace {
// Zigbee spec says types between signed 8 bit and signed 64 bit
bool emberAfIsTypeSigned(EmberAfAttributeType dataType)
{
- return (dataType >= ZCL_INT8S_ATTRIBUTE_TYPE && dataType <= ZCL_INT64S_ATTRIBUTE_TYPE);
+ return (dataType >= ZCL_INT8S_ATTRIBUTE_TYPE && dataType <= ZCL_INT64S_ATTRIBUTE_TYPE) ||
+ dataType == ZCL_TEMPERATURE_ATTRIBUTE_TYPE;
}
/**
diff --git a/src/app/zap-templates/zcl/data-model/all.xml b/src/app/zap-templates/zcl/data-model/all.xml
index 2a2f73ccfc1709..265e80c079e161 100644
--- a/src/app/zap-templates/zcl/data-model/all.xml
+++ b/src/app/zap-templates/zcl/data-model/all.xml
@@ -47,6 +47,8 @@
+
+
diff --git a/src/app/zap-templates/zcl/data-model/chip/global-bitmaps.xml b/src/app/zap-templates/zcl/data-model/chip/global-bitmaps.xml
new file mode 100644
index 00000000000000..fc70c0bf5143a9
--- /dev/null
+++ b/src/app/zap-templates/zcl/data-model/chip/global-bitmaps.xml
@@ -0,0 +1,36 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/zap-templates/zcl/data-model/chip/global-enums.xml b/src/app/zap-templates/zcl/data-model/chip/global-enums.xml
new file mode 100644
index 00000000000000..26c3fa33a9d7a7
--- /dev/null
+++ b/src/app/zap-templates/zcl/data-model/chip/global-enums.xml
@@ -0,0 +1,44 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
diff --git a/src/app/zap-templates/zcl/data-model/chip/global-structs.xml b/src/app/zap-templates/zcl/data-model/chip/global-structs.xml
index 04f477a6094f5e..ad3af7a72001a8 100644
--- a/src/app/zap-templates/zcl/data-model/chip/global-structs.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/global-structs.xml
@@ -23,6 +23,13 @@ TODO: Make these structures global rather than defining them for each cluster.
+
+
+
+
+
+
+
@@ -37,17 +44,7 @@ TODO: Make these structures global rather than defining them for each cluster.
These are test global items (no cluster attached) for testing only.
Their usage is defined for UnitTestCluster only.
-->
-
-
-
-
-
-
-
-
-
-
-
+
diff --git a/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml
index 796209999f1121..6c46eff03d42ce 100644
--- a/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/thermostat-cluster.xml
@@ -86,16 +86,15 @@ limitations under the License.
-
+
-
-
+
-
+
-
-
+
+
@@ -200,19 +199,19 @@ limitations under the License.
-
-
+
+
-
+
@@ -224,20 +223,19 @@ limitations under the License.
-
-
+
-
+
-
+
@@ -249,7 +247,7 @@ limitations under the License.
-
+
@@ -270,15 +268,14 @@ limitations under the License.
THERMOSTAT_CLUSTER
true
true
-
-
+
-
+
@@ -286,7 +283,7 @@ limitations under the License.
-
+
@@ -309,55 +306,48 @@ limitations under the License.
-
+
-
-
-
-
+
-
-
- LocalTemperature
- OutdoorTemperature
- Occupancy
-
- AbsMinHeatSetpointLimit
- AbsMaxHeatSetpointLimit
- AbsMinCoolSetpointLimit
- AbsMaxCoolSetpointLimit
- PICoolingDemand
- PIHeatingDemand
-
+ LocalTemperature
+ OutdoorTemperature
+ Occupancy
+ AbsMinHeatSetpointLimit
+ AbsMaxHeatSetpointLimit
+ AbsMinCoolSetpointLimit
+ AbsMaxCoolSetpointLimit
+ PICoolingDemand
+ PIHeatingDemand
+
HVACSystemTypeConfiguration
-
LocalTemperatureCalibration
- OccupiedCoolingSetpoint
- OccupiedHeatingSetpoint
- UnoccupiedCoolingSetpoint
- UnoccupiedHeatingSetpoint
-
+ OccupiedCoolingSetpoint
+ OccupiedHeatingSetpoint
+ UnoccupiedCoolingSetpoint
+ UnoccupiedHeatingSetpoint
+
MinHeatSetpointLimit
-
+
MaxHeatSetpointLimit
-
+
MinCoolSetpointLimit
-
+
MaxCoolSetpointLimit
@@ -369,23 +359,23 @@ limitations under the License.
RemoteSensing
-
+
ControlSequenceOfOperation
-
+
SystemMode
- ThermostatRunningMode
- StartOfWeek
- NumberOfWeeklyTransitions
- NumberOfDailyTransitions
+ ThermostatRunningMode
+ StartOfWeek
+ NumberOfWeeklyTransitions
+ NumberOfDailyTransitions
TemperatureSetpointHold
-
+
TemperatureSetpointHoldDuration
@@ -393,23 +383,23 @@ limitations under the License.
ThermostatProgrammingOperationMode
- ThermostatRunningState
- SetpointChangeSource
- SetpointChangeAmount
- SetpointChangeSourceTimestamp
-
+ ThermostatRunningState
+ SetpointChangeSource
+ SetpointChangeAmount
+ SetpointChangeSourceTimestamp
+
OccupiedSetback
- OccupiedSetbackMin
- OccupiedSetbackMax
-
+ OccupiedSetbackMin
+ OccupiedSetbackMax
+
UnoccupiedSetback
- UnoccupiedSetbackMin
- UnoccupiedSetbackMax
-
+ UnoccupiedSetbackMin
+ UnoccupiedSetbackMax
+
EmergencyHeatDelta
@@ -417,7 +407,7 @@ limitations under the License.
ACType
-
+
ACCapacity
@@ -429,7 +419,7 @@ limitations under the License.
ACCompressorType
-
+
ACErrorCode
@@ -437,98 +427,88 @@ limitations under the License.
ACLouverPosition
- ACCoilTemperature
-
+ ACCoilTemperature
+
ACCapacityformat
- PresetTypes
- ScheduleTypes
- NumberOfPresets
- NumberOfSchedules
- NumberOfScheduleTransitions
- NumberOfScheduleTransitionPerDay
- ActivePresetHandle
- ActiveScheduleHandle
-
+ PresetTypes
+ ScheduleTypes
+ NumberOfPresets
+ NumberOfSchedules
+ NumberOfScheduleTransitions
+ NumberOfScheduleTransitionPerDay
+ ActivePresetHandle
+ ActiveScheduleHandle
+
Presets
-
+
Schedules
- PresetsSchedulesEditable
- TemperatureSetpointHoldPolicy
- SetpointHoldExpiryTimestamp
-
+ SetpointHoldExpiryTimestamp
-
-
- Command description for SetpointRaiseLower
-
-
-
+ Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them.
+
+
+
-
- Command description for SetWeeklySchedule
-
+ Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the
-
-
-
-
+
+
+
+
+
-
- Command description for GetWeeklySchedule
-
-
-
+ Upon receipt, the unit SHOULD send in return the Get
+
+
+
- This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload.
+ This command is used to clear the weekly schedule.
-
+
+
- This command is used to set the active schedule.
-
+ Upon receipt, if the
+
+
- This command is used to set the active preset.
-
-
-
- This command is used to start editing the presets and schedules.
-
-
-
-
- This command is used to cancel editing presets and schedules.
-
-
-
- This command is used to notify the server that all edits are done and should be committed.
-
-
-
- This command sets the set point hold policy.
-
+ ID
+
+
+ This command has the same payload format as the Set Weekly Schedule.
+
+
+
+
+
-
-
- The Current Weekly Schedule Command is sent from the server in response to the Get Weekly Schedule Command.
-
-
-
-
-
+
+ Returns the status of an atomic write
+
+
+
+
+
+
+ Begins, Commits or Cancels an atomic write
+
+
+
+
-
\ No newline at end of file
+
diff --git a/src/app/zap-templates/zcl/zcl-with-test-extensions.json b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
index 2207303e1ab7b7..b37ee8e36c2324 100644
--- a/src/app/zap-templates/zcl/zcl-with-test-extensions.json
+++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
@@ -63,6 +63,8 @@
"general-commissioning-cluster.xml",
"general-diagnostics-cluster.xml",
"global-attributes.xml",
+ "global-bitmaps.xml",
+ "global-enums.xml",
"global-structs.xml",
"groups-cluster.xml",
"group-key-mgmt-cluster.xml",
diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json
index c2bcc194e8611f..8f73dfa063c941 100644
--- a/src/app/zap-templates/zcl/zcl.json
+++ b/src/app/zap-templates/zcl/zcl.json
@@ -61,6 +61,8 @@
"general-commissioning-cluster.xml",
"general-diagnostics-cluster.xml",
"global-attributes.xml",
+ "global-bitmaps.xml",
+ "global-enums.xml",
"global-structs.xml",
"groups-cluster.xml",
"group-key-mgmt-cluster.xml",
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index dd93ed7fe2cc9b..b22969c0f45228 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -6565,7 +6565,7 @@ cluster PumpConfigurationAndControl = 512 {
/** An interface for configuring and controlling the functionality of a thermostat. */
cluster Thermostat = 513 {
- revision 6;
+ revision 7;
enum ACCapacityFormatEnum : enum8 {
kBTUh = 0;
@@ -6601,6 +6601,12 @@ cluster Thermostat = 513 {
kHeatPumpInverter = 4;
}
+ enum AtomicRequestTypeEnum : enum8 {
+ kBeginWrite = 0;
+ kCommitWrite = 1;
+ kRollbackWrite = 2;
+ }
+
enum ControlSequenceOfOperationEnum : enum8 {
kCoolingOnly = 0;
kCoolingWithReheat = 1;
@@ -6611,13 +6617,13 @@ cluster Thermostat = 513 {
}
enum PresetScenarioEnum : enum8 {
- kUnspecified = 0;
kOccupied = 1;
kUnoccupied = 2;
kSleep = 3;
kWake = 4;
kVacation = 5;
- kUserDefined = 6;
+ kGoingToSleep = 6;
+ kUserDefined = 254;
}
enum SetpointChangeSourceEnum : enum8 {
@@ -6683,7 +6689,6 @@ cluster Thermostat = 513 {
kLocalTemperatureNotExposed = 0x40;
kMatterScheduleConfiguration = 0x80;
kPresets = 0x100;
- kSetpoints = 0x200;
}
bitmap HVACSystemTypeBitmap : bitmap8 {
@@ -6693,6 +6698,10 @@ cluster Thermostat = 513 {
kHeatingUsesFuel = 0x20;
}
+ bitmap OccupancyBitmap : bitmap8 {
+ kOccupied = 0x1;
+ }
+
bitmap PresetTypeFeaturesBitmap : bitmap16 {
kAutomatic = 0x1;
kSupportsNames = 0x2;
@@ -6743,11 +6752,6 @@ cluster Thermostat = 513 {
kSupportsOff = 0x8;
}
- bitmap TemperatureSetpointHoldPolicyBitmap : bitmap8 {
- kHoldDurationElapsed = 0x1;
- kHoldDurationElapsedOrPresetChanged = 0x2;
- }
-
struct ScheduleTransitionStruct {
ScheduleDayOfWeekBitmap dayOfWeek = 0;
int16u transitionTime = 1;
@@ -6763,7 +6767,12 @@ cluster Thermostat = 513 {
optional char_string<64> name = 2;
optional octet_string<16> presetHandle = 3;
ScheduleTransitionStruct transitions[] = 4;
- optional nullable boolean builtIn = 5;
+ nullable boolean builtIn = 5;
+ }
+
+ struct AtomicAttributeStatusStruct {
+ optional attrib_id attributeID = 0;
+ optional status statusCode = 1;
}
struct PresetStruct {
@@ -6795,23 +6804,23 @@ cluster Thermostat = 513 {
readonly attribute nullable temperature localTemperature = 0;
readonly attribute optional nullable temperature outdoorTemperature = 1;
- readonly attribute optional bitmap8 occupancy = 2;
+ readonly attribute optional OccupancyBitmap occupancy = 2;
readonly attribute optional temperature absMinHeatSetpointLimit = 3;
readonly attribute optional temperature absMaxHeatSetpointLimit = 4;
readonly attribute optional temperature absMinCoolSetpointLimit = 5;
readonly attribute optional temperature absMaxCoolSetpointLimit = 6;
readonly attribute optional int8u PICoolingDemand = 7;
readonly attribute optional int8u PIHeatingDemand = 8;
- attribute access(write: manage) optional bitmap8 HVACSystemTypeConfiguration = 9;
+ attribute access(write: manage) optional HVACSystemTypeBitmap HVACSystemTypeConfiguration = 9;
attribute access(write: manage) optional int8s localTemperatureCalibration = 16;
- attribute optional int16s occupiedCoolingSetpoint = 17;
- attribute optional int16s occupiedHeatingSetpoint = 18;
- attribute optional int16s unoccupiedCoolingSetpoint = 19;
- attribute optional int16s unoccupiedHeatingSetpoint = 20;
- attribute access(write: manage) optional int16s minHeatSetpointLimit = 21;
- attribute access(write: manage) optional int16s maxHeatSetpointLimit = 22;
- attribute access(write: manage) optional int16s minCoolSetpointLimit = 23;
- attribute access(write: manage) optional int16s maxCoolSetpointLimit = 24;
+ attribute optional temperature occupiedCoolingSetpoint = 17;
+ attribute optional temperature occupiedHeatingSetpoint = 18;
+ attribute optional temperature unoccupiedCoolingSetpoint = 19;
+ attribute optional temperature unoccupiedHeatingSetpoint = 20;
+ attribute access(write: manage) optional temperature minHeatSetpointLimit = 21;
+ attribute access(write: manage) optional temperature maxHeatSetpointLimit = 22;
+ attribute access(write: manage) optional temperature minCoolSetpointLimit = 23;
+ attribute access(write: manage) optional temperature maxCoolSetpointLimit = 24;
attribute access(write: manage) optional int8s minSetpointDeadBand = 25;
attribute access(write: manage) optional RemoteSensingBitmap remoteSensing = 26;
attribute access(write: manage) ControlSequenceOfOperationEnum controlSequenceOfOperation = 27;
@@ -6852,9 +6861,7 @@ cluster Thermostat = 513 {
readonly attribute optional nullable octet_string<16> activeScheduleHandle = 79;
attribute access(write: manage) optional PresetStruct presets[] = 80;
attribute access(write: manage) optional ScheduleStruct schedules[] = 81;
- readonly attribute optional boolean presetsSchedulesEditable = 82;
- readonly attribute optional TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 83;
- readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 84;
+ readonly attribute optional nullable epoch_s setpointHoldExpiryTimestamp = 82;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
@@ -6894,34 +6901,32 @@ cluster Thermostat = 513 {
octet_string<16> presetHandle = 0;
}
- request struct StartPresetsSchedulesEditRequestRequest {
- int16u timeoutSeconds = 0;
+ response struct AtomicResponse = 253 {
+ status statusCode = 0;
+ AtomicAttributeStatusStruct attributeStatus[] = 1;
+ optional int16u timeout = 2;
}
- request struct SetTemperatureSetpointHoldPolicyRequest {
- TemperatureSetpointHoldPolicyBitmap temperatureSetpointHoldPolicy = 0;
+ request struct AtomicRequestRequest {
+ AtomicRequestTypeEnum requestType = 0;
+ attrib_id attributeRequests[] = 1;
+ optional int16u timeout = 2;
}
- /** Command description for SetpointRaiseLower */
+ /** Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them. */
command SetpointRaiseLower(SetpointRaiseLowerRequest): DefaultSuccess = 0;
- /** Command description for SetWeeklySchedule */
+ /** Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the */
command access(invoke: manage) SetWeeklySchedule(SetWeeklyScheduleRequest): DefaultSuccess = 1;
- /** Command description for GetWeeklySchedule */
+ /** Upon receipt, the unit SHOULD send in return the Get */
command GetWeeklySchedule(GetWeeklyScheduleRequest): GetWeeklyScheduleResponse = 2;
- /** This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload. */
+ /** This command is used to clear the weekly schedule. */
command access(invoke: manage) ClearWeeklySchedule(): DefaultSuccess = 3;
- /** This command is used to set the active schedule. */
+ /** Upon receipt, if the */
command SetActiveScheduleRequest(SetActiveScheduleRequestRequest): DefaultSuccess = 5;
- /** This command is used to set the active preset. */
+ /** ID */
command SetActivePresetRequest(SetActivePresetRequestRequest): DefaultSuccess = 6;
- /** This command is used to start editing the presets and schedules. */
- command access(invoke: manage) StartPresetsSchedulesEditRequest(StartPresetsSchedulesEditRequestRequest): DefaultSuccess = 7;
- /** This command is used to cancel editing presets and schedules. */
- command access(invoke: manage) CancelPresetsSchedulesEditRequest(): DefaultSuccess = 8;
- /** This command is used to notify the server that all edits are done and should be committed. */
- command access(invoke: manage) CommitPresetsSchedulesRequest(): DefaultSuccess = 9;
- /** This command sets the set point hold policy. */
- command SetTemperatureSetpointHoldPolicy(SetTemperatureSetpointHoldPolicyRequest): DefaultSuccess = 11;
+ /** Begins, Commits or Cancels an atomic write */
+ command access(invoke: manage) AtomicRequest(AtomicRequestRequest): AtomicResponse = 254;
}
/** An interface for controlling a fan in a heating/cooling system. */
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
index e11a47a23a8c7c..552651bd4c5b3f 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ChipClusters.java
@@ -40224,9 +40224,7 @@ public static class ThermostatCluster extends BaseChipCluster {
private static final long ACTIVE_SCHEDULE_HANDLE_ATTRIBUTE_ID = 79L;
private static final long PRESETS_ATTRIBUTE_ID = 80L;
private static final long SCHEDULES_ATTRIBUTE_ID = 81L;
- private static final long PRESETS_SCHEDULES_EDITABLE_ATTRIBUTE_ID = 82L;
- private static final long TEMPERATURE_SETPOINT_HOLD_POLICY_ATTRIBUTE_ID = 83L;
- private static final long SETPOINT_HOLD_EXPIRY_TIMESTAMP_ATTRIBUTE_ID = 84L;
+ private static final long SETPOINT_HOLD_EXPIRY_TIMESTAMP_ATTRIBUTE_ID = 82L;
private static final long GENERATED_COMMAND_LIST_ATTRIBUTE_ID = 65528L;
private static final long ACCEPTED_COMMAND_LIST_ATTRIBUTE_ID = 65529L;
private static final long EVENT_LIST_ATTRIBUTE_ID = 65530L;
@@ -40411,75 +40409,55 @@ public void onResponse(StructType invokeStructValue) {
}}, commandId, commandArgs, timedInvokeTimeoutMs);
}
- public void startPresetsSchedulesEditRequest(DefaultClusterCallback callback, Integer timeoutSeconds) {
- startPresetsSchedulesEditRequest(callback, timeoutSeconds, 0);
+ public void atomicRequest(AtomicResponseCallback callback, Integer requestType, ArrayList attributeRequests, Optional timeout) {
+ atomicRequest(callback, requestType, attributeRequests, timeout, 0);
}
- public void startPresetsSchedulesEditRequest(DefaultClusterCallback callback, Integer timeoutSeconds, int timedInvokeTimeoutMs) {
- final long commandId = 7L;
-
- ArrayList elements = new ArrayList<>();
- final long timeoutSecondsFieldID = 0L;
- BaseTLVType timeoutSecondstlvValue = new UIntType(timeoutSeconds);
- elements.add(new StructElement(timeoutSecondsFieldID, timeoutSecondstlvValue));
-
- StructType commandArgs = new StructType(elements);
- invoke(new InvokeCallbackImpl(callback) {
- @Override
- public void onResponse(StructType invokeStructValue) {
- callback.onSuccess();
- }}, commandId, commandArgs, timedInvokeTimeoutMs);
- }
-
- public void cancelPresetsSchedulesEditRequest(DefaultClusterCallback callback) {
- cancelPresetsSchedulesEditRequest(callback, 0);
- }
-
- public void cancelPresetsSchedulesEditRequest(DefaultClusterCallback callback, int timedInvokeTimeoutMs) {
- final long commandId = 8L;
-
- ArrayList elements = new ArrayList<>();
- StructType commandArgs = new StructType(elements);
- invoke(new InvokeCallbackImpl(callback) {
- @Override
- public void onResponse(StructType invokeStructValue) {
- callback.onSuccess();
- }}, commandId, commandArgs, timedInvokeTimeoutMs);
- }
-
- public void commitPresetsSchedulesRequest(DefaultClusterCallback callback) {
- commitPresetsSchedulesRequest(callback, 0);
- }
-
- public void commitPresetsSchedulesRequest(DefaultClusterCallback callback, int timedInvokeTimeoutMs) {
- final long commandId = 9L;
+ public void atomicRequest(AtomicResponseCallback callback, Integer requestType, ArrayList attributeRequests, Optional timeout, int timedInvokeTimeoutMs) {
+ final long commandId = 254L;
ArrayList elements = new ArrayList<>();
- StructType commandArgs = new StructType(elements);
- invoke(new InvokeCallbackImpl(callback) {
- @Override
- public void onResponse(StructType invokeStructValue) {
- callback.onSuccess();
- }}, commandId, commandArgs, timedInvokeTimeoutMs);
- }
+ final long requestTypeFieldID = 0L;
+ BaseTLVType requestTypetlvValue = new UIntType(requestType);
+ elements.add(new StructElement(requestTypeFieldID, requestTypetlvValue));
- public void setTemperatureSetpointHoldPolicy(DefaultClusterCallback callback, Integer temperatureSetpointHoldPolicy) {
- setTemperatureSetpointHoldPolicy(callback, temperatureSetpointHoldPolicy, 0);
- }
-
- public void setTemperatureSetpointHoldPolicy(DefaultClusterCallback callback, Integer temperatureSetpointHoldPolicy, int timedInvokeTimeoutMs) {
- final long commandId = 11L;
+ final long attributeRequestsFieldID = 1L;
+ BaseTLVType attributeRequeststlvValue = ArrayType.generateArrayType(attributeRequests, (elementattributeRequests) -> new UIntType(elementattributeRequests));
+ elements.add(new StructElement(attributeRequestsFieldID, attributeRequeststlvValue));
- ArrayList elements = new ArrayList<>();
- final long temperatureSetpointHoldPolicyFieldID = 0L;
- BaseTLVType temperatureSetpointHoldPolicytlvValue = new UIntType(temperatureSetpointHoldPolicy);
- elements.add(new StructElement(temperatureSetpointHoldPolicyFieldID, temperatureSetpointHoldPolicytlvValue));
+ final long timeoutFieldID = 2L;
+ BaseTLVType timeouttlvValue = timeout.map((nonOptionaltimeout) -> new UIntType(nonOptionaltimeout)).orElse(new EmptyType());
+ elements.add(new StructElement(timeoutFieldID, timeouttlvValue));
StructType commandArgs = new StructType(elements);
invoke(new InvokeCallbackImpl(callback) {
@Override
public void onResponse(StructType invokeStructValue) {
- callback.onSuccess();
+ final long statusCodeFieldID = 0L;
+ Integer statusCode = null;
+ final long attributeStatusFieldID = 1L;
+ ArrayList attributeStatus = null;
+ final long timeoutFieldID = 2L;
+ Optional timeout = Optional.empty();
+ for (StructElement element: invokeStructValue.value()) {
+ if (element.contextTagNum() == statusCodeFieldID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
+ UIntType castingValue = element.value(UIntType.class);
+ statusCode = castingValue.value(Integer.class);
+ }
+ } else if (element.contextTagNum() == attributeStatusFieldID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.Array) {
+ ArrayType castingValue = element.value(ArrayType.class);
+ attributeStatus = castingValue.map((elementcastingValue) -> ChipStructs.ThermostatClusterAtomicAttributeStatusStruct.decodeTlv(elementcastingValue));
+ }
+ } else if (element.contextTagNum() == timeoutFieldID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
+ UIntType castingValue = element.value(UIntType.class);
+ timeout = Optional.of(castingValue.value(Integer.class));
+ }
+ }
+ }
+ callback.onSuccess(statusCode, attributeStatus, timeout);
}}, commandId, commandArgs, timedInvokeTimeoutMs);
}
@@ -40487,6 +40465,10 @@ public interface GetWeeklyScheduleResponseCallback extends BaseClusterCallback {
void onSuccess(Integer numberOfTransitionsForSequence, Integer dayOfWeekForSequence, Integer modeForSequence, ArrayList transitions);
}
+ public interface AtomicResponseCallback extends BaseClusterCallback {
+ void onSuccess(Integer statusCode, ArrayList attributeStatus, Optional timeout);
+ }
+
public interface LocalTemperatureAttributeCallback extends BaseAttributeCallback {
void onSuccess(@Nullable Integer value);
}
@@ -42374,58 +42356,6 @@ public void onSuccess(byte[] tlv) {
}, SCHEDULES_ATTRIBUTE_ID, minInterval, maxInterval);
}
- public void readPresetsSchedulesEditableAttribute(
- BooleanAttributeCallback callback) {
- ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, PRESETS_SCHEDULES_EDITABLE_ATTRIBUTE_ID);
-
- readAttribute(new ReportCallbackImpl(callback, path) {
- @Override
- public void onSuccess(byte[] tlv) {
- Boolean value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv);
- callback.onSuccess(value);
- }
- }, PRESETS_SCHEDULES_EDITABLE_ATTRIBUTE_ID, true);
- }
-
- public void subscribePresetsSchedulesEditableAttribute(
- BooleanAttributeCallback callback, int minInterval, int maxInterval) {
- ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, PRESETS_SCHEDULES_EDITABLE_ATTRIBUTE_ID);
-
- subscribeAttribute(new ReportCallbackImpl(callback, path) {
- @Override
- public void onSuccess(byte[] tlv) {
- Boolean value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv);
- callback.onSuccess(value);
- }
- }, PRESETS_SCHEDULES_EDITABLE_ATTRIBUTE_ID, minInterval, maxInterval);
- }
-
- public void readTemperatureSetpointHoldPolicyAttribute(
- IntegerAttributeCallback callback) {
- ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, TEMPERATURE_SETPOINT_HOLD_POLICY_ATTRIBUTE_ID);
-
- readAttribute(new ReportCallbackImpl(callback, path) {
- @Override
- public void onSuccess(byte[] tlv) {
- Integer value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv);
- callback.onSuccess(value);
- }
- }, TEMPERATURE_SETPOINT_HOLD_POLICY_ATTRIBUTE_ID, true);
- }
-
- public void subscribeTemperatureSetpointHoldPolicyAttribute(
- IntegerAttributeCallback callback, int minInterval, int maxInterval) {
- ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, TEMPERATURE_SETPOINT_HOLD_POLICY_ATTRIBUTE_ID);
-
- subscribeAttribute(new ReportCallbackImpl(callback, path) {
- @Override
- public void onSuccess(byte[] tlv) {
- Integer value = ChipTLVValueDecoder.decodeAttributeValue(path, tlv);
- callback.onSuccess(value);
- }
- }, TEMPERATURE_SETPOINT_HOLD_POLICY_ATTRIBUTE_ID, minInterval, maxInterval);
- }
-
public void readSetpointHoldExpiryTimestampAttribute(
SetpointHoldExpiryTimestampAttributeCallback callback) {
ChipAttributePath path = ChipAttributePath.newInstance(endpointId, clusterId, SETPOINT_HOLD_EXPIRY_TIMESTAMP_ATTRIBUTE_ID);
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java b/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java
index 90330bbdee3ae6..b1e3b36ceea696 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ChipStructs.java
@@ -9465,7 +9465,7 @@ public static class ThermostatClusterScheduleStruct {
public Optional name;
public Optional presetHandle;
public ArrayList transitions;
- public @Nullable Optional builtIn;
+ public @Nullable Boolean builtIn;
private static final long SCHEDULE_HANDLE_ID = 0L;
private static final long SYSTEM_MODE_ID = 1L;
private static final long NAME_ID = 2L;
@@ -9479,7 +9479,7 @@ public ThermostatClusterScheduleStruct(
Optional name,
Optional presetHandle,
ArrayList transitions,
- @Nullable Optional builtIn
+ @Nullable Boolean builtIn
) {
this.scheduleHandle = scheduleHandle;
this.systemMode = systemMode;
@@ -9496,7 +9496,7 @@ public StructType encodeTlv() {
values.add(new StructElement(NAME_ID, name.map((nonOptionalname) -> new StringType(nonOptionalname)).orElse(new EmptyType())));
values.add(new StructElement(PRESET_HANDLE_ID, presetHandle.map((nonOptionalpresetHandle) -> new ByteArrayType(nonOptionalpresetHandle)).orElse(new EmptyType())));
values.add(new StructElement(TRANSITIONS_ID, ArrayType.generateArrayType(transitions, (elementtransitions) -> elementtransitions.encodeTlv())));
- values.add(new StructElement(BUILT_IN_ID, builtIn != null ? builtIn.map((nonOptionalbuiltIn) -> new BooleanType(nonOptionalbuiltIn)).orElse(new EmptyType()) : new NullType()));
+ values.add(new StructElement(BUILT_IN_ID, builtIn != null ? new BooleanType(builtIn) : new NullType()));
return new StructType(values);
}
@@ -9510,7 +9510,7 @@ public static ThermostatClusterScheduleStruct decodeTlv(BaseTLVType tlvValue) {
Optional name = Optional.empty();
Optional presetHandle = Optional.empty();
ArrayList transitions = null;
- @Nullable Optional builtIn = null;
+ @Nullable Boolean builtIn = null;
for (StructElement element: ((StructType)tlvValue).value()) {
if (element.contextTagNum() == SCHEDULE_HANDLE_ID) {
if (element.value(BaseTLVType.class).type() == TLVType.ByteArray) {
@@ -9540,7 +9540,7 @@ public static ThermostatClusterScheduleStruct decodeTlv(BaseTLVType tlvValue) {
} else if (element.contextTagNum() == BUILT_IN_ID) {
if (element.value(BaseTLVType.class).type() == TLVType.Boolean) {
BooleanType castingValue = element.value(BooleanType.class);
- builtIn = Optional.of(castingValue.value(Boolean.class));
+ builtIn = castingValue.value(Boolean.class);
}
}
}
@@ -9580,6 +9580,67 @@ public String toString() {
return output.toString();
}
}
+public static class ThermostatClusterAtomicAttributeStatusStruct {
+ public Optional attributeID;
+ public Optional statusCode;
+ private static final long ATTRIBUTE_I_D_ID = 0L;
+ private static final long STATUS_CODE_ID = 1L;
+
+ public ThermostatClusterAtomicAttributeStatusStruct(
+ Optional attributeID,
+ Optional statusCode
+ ) {
+ this.attributeID = attributeID;
+ this.statusCode = statusCode;
+ }
+
+ public StructType encodeTlv() {
+ ArrayList values = new ArrayList<>();
+ values.add(new StructElement(ATTRIBUTE_I_D_ID, attributeID.map((nonOptionalattributeID) -> new UIntType(nonOptionalattributeID)).orElse(new EmptyType())));
+ values.add(new StructElement(STATUS_CODE_ID, statusCode.map((nonOptionalstatusCode) -> new UIntType(nonOptionalstatusCode)).orElse(new EmptyType())));
+
+ return new StructType(values);
+ }
+
+ public static ThermostatClusterAtomicAttributeStatusStruct decodeTlv(BaseTLVType tlvValue) {
+ if (tlvValue == null || tlvValue.type() != TLVType.Struct) {
+ return null;
+ }
+ Optional attributeID = Optional.empty();
+ Optional statusCode = Optional.empty();
+ for (StructElement element: ((StructType)tlvValue).value()) {
+ if (element.contextTagNum() == ATTRIBUTE_I_D_ID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
+ UIntType castingValue = element.value(UIntType.class);
+ attributeID = Optional.of(castingValue.value(Long.class));
+ }
+ } else if (element.contextTagNum() == STATUS_CODE_ID) {
+ if (element.value(BaseTLVType.class).type() == TLVType.UInt) {
+ UIntType castingValue = element.value(UIntType.class);
+ statusCode = Optional.of(castingValue.value(Integer.class));
+ }
+ }
+ }
+ return new ThermostatClusterAtomicAttributeStatusStruct(
+ attributeID,
+ statusCode
+ );
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("ThermostatClusterAtomicAttributeStatusStruct {\n");
+ output.append("\tattributeID: ");
+ output.append(attributeID);
+ output.append("\n");
+ output.append("\tstatusCode: ");
+ output.append(statusCode);
+ output.append("\n");
+ output.append("}\n");
+ return output.toString();
+ }
+}
public static class ThermostatClusterPresetStruct {
public @Nullable byte[] presetHandle;
public Integer presetScenario;
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
index ab20bdcaa301e9..5435ed6bad2e36 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
@@ -11896,9 +11896,7 @@ public enum Attribute {
ActiveScheduleHandle(79L),
Presets(80L),
Schedules(81L),
- PresetsSchedulesEditable(82L),
- TemperatureSetpointHoldPolicy(83L),
- SetpointHoldExpiryTimestamp(84L),
+ SetpointHoldExpiryTimestamp(82L),
GeneratedCommandList(65528L),
AcceptedCommandList(65529L),
EventList(65530L),
@@ -11951,10 +11949,7 @@ public enum Command {
ClearWeeklySchedule(3L),
SetActiveScheduleRequest(5L),
SetActivePresetRequest(6L),
- StartPresetsSchedulesEditRequest(7L),
- CancelPresetsSchedulesEditRequest(8L),
- CommitPresetsSchedulesRequest(9L),
- SetTemperatureSetpointHoldPolicy(11L),;
+ AtomicRequest(254L),;
private final long id;
Command(long id) {
this.id = id;
@@ -12057,34 +12052,17 @@ public static SetActivePresetRequestCommandField value(int id) throws NoSuchFiel
}
throw new NoSuchFieldError();
}
- }public enum StartPresetsSchedulesEditRequestCommandField {TimeoutSeconds(0),;
+ }public enum AtomicRequestCommandField {RequestType(0),AttributeRequests(1),Timeout(2),;
private final int id;
- StartPresetsSchedulesEditRequestCommandField(int id) {
+ AtomicRequestCommandField(int id) {
this.id = id;
}
public int getID() {
return id;
}
- public static StartPresetsSchedulesEditRequestCommandField value(int id) throws NoSuchFieldError {
- for (StartPresetsSchedulesEditRequestCommandField field : StartPresetsSchedulesEditRequestCommandField.values()) {
- if (field.getID() == id) {
- return field;
- }
- }
- throw new NoSuchFieldError();
- }
- }public enum SetTemperatureSetpointHoldPolicyCommandField {TemperatureSetpointHoldPolicy(0),;
- private final int id;
- SetTemperatureSetpointHoldPolicyCommandField(int id) {
- this.id = id;
- }
-
- public int getID() {
- return id;
- }
- public static SetTemperatureSetpointHoldPolicyCommandField value(int id) throws NoSuchFieldError {
- for (SetTemperatureSetpointHoldPolicyCommandField field : SetTemperatureSetpointHoldPolicyCommandField.values()) {
+ public static AtomicRequestCommandField value(int id) throws NoSuchFieldError {
+ for (AtomicRequestCommandField field : AtomicRequestCommandField.values()) {
if (field.getID() == id) {
return field;
}
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java
index ca3d74f1ac3797..f23d7f1e097b43 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterInfoMapping.java
@@ -13801,6 +13801,33 @@ public void onError(Exception error) {
callback.onFailure(error);
}
}
+
+ public static class DelegatedThermostatClusterAtomicResponseCallback implements ChipClusters.ThermostatCluster.AtomicResponseCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onSuccess(Integer statusCode, ArrayList attributeStatus, Optional timeout) {
+ Map responseValues = new LinkedHashMap<>();
+
+ CommandResponseInfo statusCodeResponseValue = new CommandResponseInfo("statusCode", "Integer");
+ responseValues.put(statusCodeResponseValue, statusCode);
+ // attributeStatus: AtomicAttributeStatusStruct
+ // Conversion from this type to Java is not properly implemented yet
+
+ CommandResponseInfo timeoutResponseValue = new CommandResponseInfo("timeout", "Optional");
+ responseValues.put(timeoutResponseValue, timeout);
+ callback.onSuccess(responseValues);
+ }
+
+ @Override
+ public void onError(Exception error) {
+ callback.onFailure(error);
+ }
+ }
public static class DelegatedThermostatClusterLocalTemperatureAttributeCallback implements ChipClusters.ThermostatCluster.LocalTemperatureAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
@@ -26862,63 +26889,35 @@ public Map> getCommandMap() {
);
thermostatClusterInteractionInfoMap.put("setActivePresetRequest", thermostatsetActivePresetRequestInteractionInfo);
- Map thermostatstartPresetsSchedulesEditRequestCommandParams = new LinkedHashMap();
+ Map thermostatatomicRequestCommandParams = new LinkedHashMap();
- CommandParameterInfo thermostatstartPresetsSchedulesEditRequesttimeoutSecondsCommandParameterInfo = new CommandParameterInfo("timeoutSeconds", Integer.class, Integer.class);
- thermostatstartPresetsSchedulesEditRequestCommandParams.put("timeoutSeconds",thermostatstartPresetsSchedulesEditRequesttimeoutSecondsCommandParameterInfo);
- InteractionInfo thermostatstartPresetsSchedulesEditRequestInteractionInfo = new InteractionInfo(
- (cluster, callback, commandArguments) -> {
- ((ChipClusters.ThermostatCluster) cluster)
- .startPresetsSchedulesEditRequest((DefaultClusterCallback) callback
- , (Integer)
- commandArguments.get("timeoutSeconds")
- );
- },
- () -> new DelegatedDefaultClusterCallback(),
- thermostatstartPresetsSchedulesEditRequestCommandParams
- );
- thermostatClusterInteractionInfoMap.put("startPresetsSchedulesEditRequest", thermostatstartPresetsSchedulesEditRequestInteractionInfo);
+ CommandParameterInfo thermostatatomicRequestrequestTypeCommandParameterInfo = new CommandParameterInfo("requestType", Integer.class, Integer.class);
+ thermostatatomicRequestCommandParams.put("requestType",thermostatatomicRequestrequestTypeCommandParameterInfo);
- Map thermostatcancelPresetsSchedulesEditRequestCommandParams = new LinkedHashMap();
- InteractionInfo thermostatcancelPresetsSchedulesEditRequestInteractionInfo = new InteractionInfo(
- (cluster, callback, commandArguments) -> {
- ((ChipClusters.ThermostatCluster) cluster)
- .cancelPresetsSchedulesEditRequest((DefaultClusterCallback) callback
- );
- },
- () -> new DelegatedDefaultClusterCallback(),
- thermostatcancelPresetsSchedulesEditRequestCommandParams
- );
- thermostatClusterInteractionInfoMap.put("cancelPresetsSchedulesEditRequest", thermostatcancelPresetsSchedulesEditRequestInteractionInfo);
+ CommandParameterInfo thermostatatomicRequestattributeRequestsCommandParameterInfo = new CommandParameterInfo("attributeRequests", ArrayList.class, ArrayList.class);
+ thermostatatomicRequestCommandParams.put("attributeRequests",thermostatatomicRequestattributeRequestsCommandParameterInfo);
- Map thermostatcommitPresetsSchedulesRequestCommandParams = new LinkedHashMap();
- InteractionInfo thermostatcommitPresetsSchedulesRequestInteractionInfo = new InteractionInfo(
+ CommandParameterInfo thermostatatomicRequesttimeoutCommandParameterInfo = new CommandParameterInfo("timeout", Optional.class, Integer.class);
+ thermostatatomicRequestCommandParams.put("timeout",thermostatatomicRequesttimeoutCommandParameterInfo);
+ InteractionInfo thermostatatomicRequestInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
((ChipClusters.ThermostatCluster) cluster)
- .commitPresetsSchedulesRequest((DefaultClusterCallback) callback
- );
- },
- () -> new DelegatedDefaultClusterCallback(),
- thermostatcommitPresetsSchedulesRequestCommandParams
- );
- thermostatClusterInteractionInfoMap.put("commitPresetsSchedulesRequest", thermostatcommitPresetsSchedulesRequestInteractionInfo);
+ .atomicRequest((ChipClusters.ThermostatCluster.AtomicResponseCallback) callback
+ , (Integer)
+ commandArguments.get("requestType")
- Map thermostatsetTemperatureSetpointHoldPolicyCommandParams = new LinkedHashMap();
+ , (ArrayList)
+ commandArguments.get("attributeRequests")
- CommandParameterInfo thermostatsetTemperatureSetpointHoldPolicytemperatureSetpointHoldPolicyCommandParameterInfo = new CommandParameterInfo("temperatureSetpointHoldPolicy", Integer.class, Integer.class);
- thermostatsetTemperatureSetpointHoldPolicyCommandParams.put("temperatureSetpointHoldPolicy",thermostatsetTemperatureSetpointHoldPolicytemperatureSetpointHoldPolicyCommandParameterInfo);
- InteractionInfo thermostatsetTemperatureSetpointHoldPolicyInteractionInfo = new InteractionInfo(
- (cluster, callback, commandArguments) -> {
- ((ChipClusters.ThermostatCluster) cluster)
- .setTemperatureSetpointHoldPolicy((DefaultClusterCallback) callback
- , (Integer)
- commandArguments.get("temperatureSetpointHoldPolicy")
- );
- },
- () -> new DelegatedDefaultClusterCallback(),
- thermostatsetTemperatureSetpointHoldPolicyCommandParams
- );
- thermostatClusterInteractionInfoMap.put("setTemperatureSetpointHoldPolicy", thermostatsetTemperatureSetpointHoldPolicyInteractionInfo);
+ , (Optional)
+ commandArguments.get("timeout")
+
+ );
+ },
+ () -> new DelegatedThermostatClusterAtomicResponseCallback(),
+ thermostatatomicRequestCommandParams
+ );
+ thermostatClusterInteractionInfoMap.put("atomicRequest", thermostatatomicRequestInteractionInfo);
commandMap.put("thermostat", thermostatClusterInteractionInfoMap);
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
index 45d0e3037631fb..c851578b3ab69d 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
@@ -12894,28 +12894,6 @@ private static Map readThermostatInteractionInfo() {
readThermostatSchedulesCommandParams
);
result.put("readSchedulesAttribute", readThermostatSchedulesAttributeInteractionInfo);
- Map readThermostatPresetsSchedulesEditableCommandParams = new LinkedHashMap();
- InteractionInfo readThermostatPresetsSchedulesEditableAttributeInteractionInfo = new InteractionInfo(
- (cluster, callback, commandArguments) -> {
- ((ChipClusters.ThermostatCluster) cluster).readPresetsSchedulesEditableAttribute(
- (ChipClusters.BooleanAttributeCallback) callback
- );
- },
- () -> new ClusterInfoMapping.DelegatedBooleanAttributeCallback(),
- readThermostatPresetsSchedulesEditableCommandParams
- );
- result.put("readPresetsSchedulesEditableAttribute", readThermostatPresetsSchedulesEditableAttributeInteractionInfo);
- Map readThermostatTemperatureSetpointHoldPolicyCommandParams = new LinkedHashMap();
- InteractionInfo readThermostatTemperatureSetpointHoldPolicyAttributeInteractionInfo = new InteractionInfo(
- (cluster, callback, commandArguments) -> {
- ((ChipClusters.ThermostatCluster) cluster).readTemperatureSetpointHoldPolicyAttribute(
- (ChipClusters.IntegerAttributeCallback) callback
- );
- },
- () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
- readThermostatTemperatureSetpointHoldPolicyCommandParams
- );
- result.put("readTemperatureSetpointHoldPolicyAttribute", readThermostatTemperatureSetpointHoldPolicyAttributeInteractionInfo);
Map readThermostatSetpointHoldExpiryTimestampCommandParams = new LinkedHashMap();
InteractionInfo readThermostatSetpointHoldExpiryTimestampAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni b/src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni
index 35bec1ec2b451e..9cb39884914898 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni
+++ b/src/controller/java/generated/java/chip/devicecontroller/cluster/files.gni
@@ -127,6 +127,7 @@ structs_sources = [
"${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ServiceAreaClusterProgressStruct.kt",
"${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/SoftwareDiagnosticsClusterThreadMetricsStruct.kt",
"${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/TargetNavigatorClusterTargetInfoStruct.kt",
+ "${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterAtomicAttributeStatusStruct.kt",
"${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterPresetStruct.kt",
"${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterPresetTypeStruct.kt",
"${chip_root}/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterScheduleStruct.kt",
diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterAtomicAttributeStatusStruct.kt b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterAtomicAttributeStatusStruct.kt
new file mode 100644
index 00000000000000..165511aedae1aa
--- /dev/null
+++ b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterAtomicAttributeStatusStruct.kt
@@ -0,0 +1,76 @@
+/*
+ *
+ * Copyright (c) 2023 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package chip.devicecontroller.cluster.structs
+
+import chip.devicecontroller.cluster.*
+import java.util.Optional
+import matter.tlv.ContextSpecificTag
+import matter.tlv.Tag
+import matter.tlv.TlvReader
+import matter.tlv.TlvWriter
+
+class ThermostatClusterAtomicAttributeStatusStruct(
+ val attributeID: Optional,
+ val statusCode: Optional,
+) {
+ override fun toString(): String = buildString {
+ append("ThermostatClusterAtomicAttributeStatusStruct {\n")
+ append("\tattributeID : $attributeID\n")
+ append("\tstatusCode : $statusCode\n")
+ append("}\n")
+ }
+
+ fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) {
+ tlvWriter.apply {
+ startStructure(tlvTag)
+ if (attributeID.isPresent) {
+ val optattributeID = attributeID.get()
+ put(ContextSpecificTag(TAG_ATTRIBUTE_I_D), optattributeID)
+ }
+ if (statusCode.isPresent) {
+ val optstatusCode = statusCode.get()
+ put(ContextSpecificTag(TAG_STATUS_CODE), optstatusCode)
+ }
+ endStructure()
+ }
+ }
+
+ companion object {
+ private const val TAG_ATTRIBUTE_I_D = 0
+ private const val TAG_STATUS_CODE = 1
+
+ fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): ThermostatClusterAtomicAttributeStatusStruct {
+ tlvReader.enterStructure(tlvTag)
+ val attributeID =
+ if (tlvReader.isNextTag(ContextSpecificTag(TAG_ATTRIBUTE_I_D))) {
+ Optional.of(tlvReader.getULong(ContextSpecificTag(TAG_ATTRIBUTE_I_D)))
+ } else {
+ Optional.empty()
+ }
+ val statusCode =
+ if (tlvReader.isNextTag(ContextSpecificTag(TAG_STATUS_CODE))) {
+ Optional.of(tlvReader.getUInt(ContextSpecificTag(TAG_STATUS_CODE)))
+ } else {
+ Optional.empty()
+ }
+
+ tlvReader.exitContainer()
+
+ return ThermostatClusterAtomicAttributeStatusStruct(attributeID, statusCode)
+ }
+ }
+}
diff --git a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterScheduleStruct.kt b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterScheduleStruct.kt
index 6a3b8727c32860..e05123dd91f361 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterScheduleStruct.kt
+++ b/src/controller/java/generated/java/chip/devicecontroller/cluster/structs/ThermostatClusterScheduleStruct.kt
@@ -30,7 +30,7 @@ class ThermostatClusterScheduleStruct(
val name: Optional,
val presetHandle: Optional,
val transitions: List,
- val builtIn: Optional?,
+ val builtIn: Boolean?,
) {
override fun toString(): String = buildString {
append("ThermostatClusterScheduleStruct {\n")
@@ -66,10 +66,7 @@ class ThermostatClusterScheduleStruct(
}
endArray()
if (builtIn != null) {
- if (builtIn.isPresent) {
- val optbuiltIn = builtIn.get()
- put(ContextSpecificTag(TAG_BUILT_IN), optbuiltIn)
- }
+ put(ContextSpecificTag(TAG_BUILT_IN), builtIn)
} else {
putNull(ContextSpecificTag(TAG_BUILT_IN))
}
@@ -117,11 +114,7 @@ class ThermostatClusterScheduleStruct(
}
val builtIn =
if (!tlvReader.isNull()) {
- if (tlvReader.isNextTag(ContextSpecificTag(TAG_BUILT_IN))) {
- Optional.of(tlvReader.getBoolean(ContextSpecificTag(TAG_BUILT_IN)))
- } else {
- Optional.empty()
- }
+ tlvReader.getBoolean(ContextSpecificTag(TAG_BUILT_IN))
} else {
tlvReader.getNull(ContextSpecificTag(TAG_BUILT_IN))
null
diff --git a/src/controller/java/generated/java/matter/controller/cluster/clusters/ThermostatCluster.kt b/src/controller/java/generated/java/matter/controller/cluster/clusters/ThermostatCluster.kt
index ed9077402e96af..b9166c12e937a1 100644
--- a/src/controller/java/generated/java/matter/controller/cluster/clusters/ThermostatCluster.kt
+++ b/src/controller/java/generated/java/matter/controller/cluster/clusters/ThermostatCluster.kt
@@ -22,7 +22,6 @@ import java.util.logging.Level
import java.util.logging.Logger
import kotlinx.coroutines.flow.Flow
import kotlinx.coroutines.flow.transform
-import matter.controller.BooleanSubscriptionState
import matter.controller.ByteSubscriptionState
import matter.controller.InvokeRequest
import matter.controller.InvokeResponse
@@ -54,6 +53,12 @@ class ThermostatCluster(private val controller: MatterController, private val en
val transitions: List,
)
+ class AtomicResponse(
+ val statusCode: UByte,
+ val attributeStatus: List,
+ val timeout: UShort?,
+ )
+
class LocalTemperatureAttribute(val value: Short?)
sealed class LocalTemperatureAttributeSubscriptionState {
@@ -522,35 +527,29 @@ class ThermostatCluster(private val controller: MatterController, private val en
logger.log(Level.FINE, "Invoke command succeeded: ${response}")
}
- suspend fun startPresetsSchedulesEditRequest(
- timeoutSeconds: UShort,
+ suspend fun atomicRequest(
+ requestType: UByte,
+ attributeRequests: List,
+ timeout: UShort?,
timedInvokeTimeout: Duration? = null,
- ) {
- val commandId: UInt = 7u
+ ): AtomicResponse {
+ val commandId: UInt = 254u
val tlvWriter = TlvWriter()
tlvWriter.startStructure(AnonymousTag)
- val TAG_TIMEOUT_SECONDS_REQ: Int = 0
- tlvWriter.put(ContextSpecificTag(TAG_TIMEOUT_SECONDS_REQ), timeoutSeconds)
- tlvWriter.endStructure()
-
- val request: InvokeRequest =
- InvokeRequest(
- CommandPath(endpointId, clusterId = CLUSTER_ID, commandId),
- tlvPayload = tlvWriter.getEncoded(),
- timedRequest = timedInvokeTimeout,
- )
-
- val response: InvokeResponse = controller.invoke(request)
- logger.log(Level.FINE, "Invoke command succeeded: ${response}")
- }
+ val TAG_REQUEST_TYPE_REQ: Int = 0
+ tlvWriter.put(ContextSpecificTag(TAG_REQUEST_TYPE_REQ), requestType)
- suspend fun cancelPresetsSchedulesEditRequest(timedInvokeTimeout: Duration? = null) {
- val commandId: UInt = 8u
+ val TAG_ATTRIBUTE_REQUESTS_REQ: Int = 1
+ tlvWriter.startArray(ContextSpecificTag(TAG_ATTRIBUTE_REQUESTS_REQ))
+ for (item in attributeRequests.iterator()) {
+ tlvWriter.put(AnonymousTag, item)
+ }
+ tlvWriter.endArray()
- val tlvWriter = TlvWriter()
- tlvWriter.startStructure(AnonymousTag)
+ val TAG_TIMEOUT_REQ: Int = 2
+ timeout?.let { tlvWriter.put(ContextSpecificTag(TAG_TIMEOUT_REQ), timeout) }
tlvWriter.endStructure()
val request: InvokeRequest =
@@ -562,51 +561,64 @@ class ThermostatCluster(private val controller: MatterController, private val en
val response: InvokeResponse = controller.invoke(request)
logger.log(Level.FINE, "Invoke command succeeded: ${response}")
- }
- suspend fun commitPresetsSchedulesRequest(timedInvokeTimeout: Duration? = null) {
- val commandId: UInt = 9u
+ val tlvReader = TlvReader(response.payload)
+ tlvReader.enterStructure(AnonymousTag)
+ val TAG_STATUS_CODE: Int = 0
+ var statusCode_decoded: UByte? = null
- val tlvWriter = TlvWriter()
- tlvWriter.startStructure(AnonymousTag)
- tlvWriter.endStructure()
+ val TAG_ATTRIBUTE_STATUS: Int = 1
+ var attributeStatus_decoded: List? = null
- val request: InvokeRequest =
- InvokeRequest(
- CommandPath(endpointId, clusterId = CLUSTER_ID, commandId),
- tlvPayload = tlvWriter.getEncoded(),
- timedRequest = timedInvokeTimeout,
- )
+ val TAG_TIMEOUT: Int = 2
+ var timeout_decoded: UShort? = null
- val response: InvokeResponse = controller.invoke(request)
- logger.log(Level.FINE, "Invoke command succeeded: ${response}")
- }
+ while (!tlvReader.isEndOfContainer()) {
+ val tag = tlvReader.peekElement().tag
- suspend fun setTemperatureSetpointHoldPolicy(
- temperatureSetpointHoldPolicy: UByte,
- timedInvokeTimeout: Duration? = null,
- ) {
- val commandId: UInt = 11u
+ if (tag == ContextSpecificTag(TAG_STATUS_CODE)) {
+ statusCode_decoded = tlvReader.getUByte(tag)
+ }
- val tlvWriter = TlvWriter()
- tlvWriter.startStructure(AnonymousTag)
+ if (tag == ContextSpecificTag(TAG_ATTRIBUTE_STATUS)) {
+ attributeStatus_decoded =
+ buildList {
+ tlvReader.enterArray(tag)
+ while (!tlvReader.isEndOfContainer()) {
+ add(ThermostatClusterAtomicAttributeStatusStruct.fromTlv(AnonymousTag, tlvReader))
+ }
+ tlvReader.exitContainer()
+ }
+ }
- val TAG_TEMPERATURE_SETPOINT_HOLD_POLICY_REQ: Int = 0
- tlvWriter.put(
- ContextSpecificTag(TAG_TEMPERATURE_SETPOINT_HOLD_POLICY_REQ),
- temperatureSetpointHoldPolicy,
- )
- tlvWriter.endStructure()
+ if (tag == ContextSpecificTag(TAG_TIMEOUT)) {
+ timeout_decoded =
+ if (tlvReader.isNull()) {
+ tlvReader.getNull(tag)
+ null
+ } else {
+ if (tlvReader.isNextTag(tag)) {
+ tlvReader.getUShort(tag)
+ } else {
+ null
+ }
+ }
+ } else {
+ tlvReader.skipElement()
+ }
+ }
- val request: InvokeRequest =
- InvokeRequest(
- CommandPath(endpointId, clusterId = CLUSTER_ID, commandId),
- tlvPayload = tlvWriter.getEncoded(),
- timedRequest = timedInvokeTimeout,
- )
+ if (statusCode_decoded == null) {
+ throw IllegalStateException("statusCode not found in TLV")
+ }
- val response: InvokeResponse = controller.invoke(request)
- logger.log(Level.FINE, "Invoke command succeeded: ${response}")
+ if (attributeStatus_decoded == null) {
+ throw IllegalStateException("attributeStatus not found in TLV")
+ }
+
+ tlvReader.exitContainer()
+
+ return AtomicResponse(statusCode_decoded, attributeStatus_decoded, timeout_decoded)
}
suspend fun readLocalTemperatureAttribute(): LocalTemperatureAttribute {
@@ -7464,196 +7476,8 @@ class ThermostatCluster(private val controller: MatterController, private val en
}
}
- suspend fun readPresetsSchedulesEditableAttribute(): Boolean? {
- val ATTRIBUTE_ID: UInt = 82u
-
- val attributePath =
- AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID)
-
- val readRequest = ReadRequest(eventPaths = emptyList(), attributePaths = listOf(attributePath))
-
- val response = controller.read(readRequest)
-
- if (response.successes.isEmpty()) {
- logger.log(Level.WARNING, "Read command failed")
- throw IllegalStateException("Read command failed with failures: ${response.failures}")
- }
-
- logger.log(Level.FINE, "Read command succeeded")
-
- val attributeData =
- response.successes.filterIsInstance().firstOrNull {
- it.path.attributeId == ATTRIBUTE_ID
- }
-
- requireNotNull(attributeData) { "Presetsscheduleseditable attribute not found in response" }
-
- // Decode the TLV data into the appropriate type
- val tlvReader = TlvReader(attributeData.data)
- val decodedValue: Boolean? =
- if (tlvReader.isNextTag(AnonymousTag)) {
- tlvReader.getBoolean(AnonymousTag)
- } else {
- null
- }
-
- return decodedValue
- }
-
- suspend fun subscribePresetsSchedulesEditableAttribute(
- minInterval: Int,
- maxInterval: Int,
- ): Flow {
- val ATTRIBUTE_ID: UInt = 82u
- val attributePaths =
- listOf(
- AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID)
- )
-
- val subscribeRequest: SubscribeRequest =
- SubscribeRequest(
- eventPaths = emptyList(),
- attributePaths = attributePaths,
- minInterval = Duration.ofSeconds(minInterval.toLong()),
- maxInterval = Duration.ofSeconds(maxInterval.toLong()),
- )
-
- return controller.subscribe(subscribeRequest).transform { subscriptionState ->
- when (subscriptionState) {
- is SubscriptionState.SubscriptionErrorNotification -> {
- emit(
- BooleanSubscriptionState.Error(
- Exception(
- "Subscription terminated with error code: ${subscriptionState.terminationCause}"
- )
- )
- )
- }
- is SubscriptionState.NodeStateUpdate -> {
- val attributeData =
- subscriptionState.updateState.successes
- .filterIsInstance()
- .firstOrNull { it.path.attributeId == ATTRIBUTE_ID }
-
- requireNotNull(attributeData) {
- "Presetsscheduleseditable attribute not found in Node State update"
- }
-
- // Decode the TLV data into the appropriate type
- val tlvReader = TlvReader(attributeData.data)
- val decodedValue: Boolean? =
- if (tlvReader.isNextTag(AnonymousTag)) {
- tlvReader.getBoolean(AnonymousTag)
- } else {
- null
- }
-
- decodedValue?.let { emit(BooleanSubscriptionState.Success(it)) }
- }
- SubscriptionState.SubscriptionEstablished -> {
- emit(BooleanSubscriptionState.SubscriptionEstablished)
- }
- }
- }
- }
-
- suspend fun readTemperatureSetpointHoldPolicyAttribute(): UByte? {
- val ATTRIBUTE_ID: UInt = 83u
-
- val attributePath =
- AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID)
-
- val readRequest = ReadRequest(eventPaths = emptyList(), attributePaths = listOf(attributePath))
-
- val response = controller.read(readRequest)
-
- if (response.successes.isEmpty()) {
- logger.log(Level.WARNING, "Read command failed")
- throw IllegalStateException("Read command failed with failures: ${response.failures}")
- }
-
- logger.log(Level.FINE, "Read command succeeded")
-
- val attributeData =
- response.successes.filterIsInstance().firstOrNull {
- it.path.attributeId == ATTRIBUTE_ID
- }
-
- requireNotNull(attributeData) {
- "Temperaturesetpointholdpolicy attribute not found in response"
- }
-
- // Decode the TLV data into the appropriate type
- val tlvReader = TlvReader(attributeData.data)
- val decodedValue: UByte? =
- if (tlvReader.isNextTag(AnonymousTag)) {
- tlvReader.getUByte(AnonymousTag)
- } else {
- null
- }
-
- return decodedValue
- }
-
- suspend fun subscribeTemperatureSetpointHoldPolicyAttribute(
- minInterval: Int,
- maxInterval: Int,
- ): Flow {
- val ATTRIBUTE_ID: UInt = 83u
- val attributePaths =
- listOf(
- AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID)
- )
-
- val subscribeRequest: SubscribeRequest =
- SubscribeRequest(
- eventPaths = emptyList(),
- attributePaths = attributePaths,
- minInterval = Duration.ofSeconds(minInterval.toLong()),
- maxInterval = Duration.ofSeconds(maxInterval.toLong()),
- )
-
- return controller.subscribe(subscribeRequest).transform { subscriptionState ->
- when (subscriptionState) {
- is SubscriptionState.SubscriptionErrorNotification -> {
- emit(
- UByteSubscriptionState.Error(
- Exception(
- "Subscription terminated with error code: ${subscriptionState.terminationCause}"
- )
- )
- )
- }
- is SubscriptionState.NodeStateUpdate -> {
- val attributeData =
- subscriptionState.updateState.successes
- .filterIsInstance()
- .firstOrNull { it.path.attributeId == ATTRIBUTE_ID }
-
- requireNotNull(attributeData) {
- "Temperaturesetpointholdpolicy attribute not found in Node State update"
- }
-
- // Decode the TLV data into the appropriate type
- val tlvReader = TlvReader(attributeData.data)
- val decodedValue: UByte? =
- if (tlvReader.isNextTag(AnonymousTag)) {
- tlvReader.getUByte(AnonymousTag)
- } else {
- null
- }
-
- decodedValue?.let { emit(UByteSubscriptionState.Success(it)) }
- }
- SubscriptionState.SubscriptionEstablished -> {
- emit(UByteSubscriptionState.SubscriptionEstablished)
- }
- }
- }
- }
-
suspend fun readSetpointHoldExpiryTimestampAttribute(): SetpointHoldExpiryTimestampAttribute {
- val ATTRIBUTE_ID: UInt = 84u
+ val ATTRIBUTE_ID: UInt = 82u
val attributePath =
AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID)
@@ -7697,7 +7521,7 @@ class ThermostatCluster(private val controller: MatterController, private val en
minInterval: Int,
maxInterval: Int,
): Flow {
- val ATTRIBUTE_ID: UInt = 84u
+ val ATTRIBUTE_ID: UInt = 82u
val attributePaths =
listOf(
AttributePath(endpointId = endpointId, clusterId = CLUSTER_ID, attributeId = ATTRIBUTE_ID)
diff --git a/src/controller/java/generated/java/matter/controller/cluster/files.gni b/src/controller/java/generated/java/matter/controller/cluster/files.gni
index fd3fafa315b932..c2bf5dc678cb76 100644
--- a/src/controller/java/generated/java/matter/controller/cluster/files.gni
+++ b/src/controller/java/generated/java/matter/controller/cluster/files.gni
@@ -127,6 +127,7 @@ matter_structs_sources = [
"${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ServiceAreaClusterProgressStruct.kt",
"${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/SoftwareDiagnosticsClusterThreadMetricsStruct.kt",
"${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/TargetNavigatorClusterTargetInfoStruct.kt",
+ "${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterAtomicAttributeStatusStruct.kt",
"${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterPresetStruct.kt",
"${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterPresetTypeStruct.kt",
"${chip_root}/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterScheduleStruct.kt",
diff --git a/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterAtomicAttributeStatusStruct.kt b/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterAtomicAttributeStatusStruct.kt
new file mode 100644
index 00000000000000..e3e27bc0e3dea1
--- /dev/null
+++ b/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterAtomicAttributeStatusStruct.kt
@@ -0,0 +1,76 @@
+/*
+ *
+ * Copyright (c) 2023 Project CHIP Authors
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+package matter.controller.cluster.structs
+
+import java.util.Optional
+import matter.controller.cluster.*
+import matter.tlv.ContextSpecificTag
+import matter.tlv.Tag
+import matter.tlv.TlvReader
+import matter.tlv.TlvWriter
+
+class ThermostatClusterAtomicAttributeStatusStruct(
+ val attributeID: Optional,
+ val statusCode: Optional,
+) {
+ override fun toString(): String = buildString {
+ append("ThermostatClusterAtomicAttributeStatusStruct {\n")
+ append("\tattributeID : $attributeID\n")
+ append("\tstatusCode : $statusCode\n")
+ append("}\n")
+ }
+
+ fun toTlv(tlvTag: Tag, tlvWriter: TlvWriter) {
+ tlvWriter.apply {
+ startStructure(tlvTag)
+ if (attributeID.isPresent) {
+ val optattributeID = attributeID.get()
+ put(ContextSpecificTag(TAG_ATTRIBUTE_I_D), optattributeID)
+ }
+ if (statusCode.isPresent) {
+ val optstatusCode = statusCode.get()
+ put(ContextSpecificTag(TAG_STATUS_CODE), optstatusCode)
+ }
+ endStructure()
+ }
+ }
+
+ companion object {
+ private const val TAG_ATTRIBUTE_I_D = 0
+ private const val TAG_STATUS_CODE = 1
+
+ fun fromTlv(tlvTag: Tag, tlvReader: TlvReader): ThermostatClusterAtomicAttributeStatusStruct {
+ tlvReader.enterStructure(tlvTag)
+ val attributeID =
+ if (tlvReader.isNextTag(ContextSpecificTag(TAG_ATTRIBUTE_I_D))) {
+ Optional.of(tlvReader.getUInt(ContextSpecificTag(TAG_ATTRIBUTE_I_D)))
+ } else {
+ Optional.empty()
+ }
+ val statusCode =
+ if (tlvReader.isNextTag(ContextSpecificTag(TAG_STATUS_CODE))) {
+ Optional.of(tlvReader.getUByte(ContextSpecificTag(TAG_STATUS_CODE)))
+ } else {
+ Optional.empty()
+ }
+
+ tlvReader.exitContainer()
+
+ return ThermostatClusterAtomicAttributeStatusStruct(attributeID, statusCode)
+ }
+ }
+}
diff --git a/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterScheduleStruct.kt b/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterScheduleStruct.kt
index 720dfaf37afadd..90ca5ab50b6514 100644
--- a/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterScheduleStruct.kt
+++ b/src/controller/java/generated/java/matter/controller/cluster/structs/ThermostatClusterScheduleStruct.kt
@@ -30,7 +30,7 @@ class ThermostatClusterScheduleStruct(
val name: Optional,
val presetHandle: Optional,
val transitions: List,
- val builtIn: Optional?,
+ val builtIn: Boolean?,
) {
override fun toString(): String = buildString {
append("ThermostatClusterScheduleStruct {\n")
@@ -66,10 +66,7 @@ class ThermostatClusterScheduleStruct(
}
endArray()
if (builtIn != null) {
- if (builtIn.isPresent) {
- val optbuiltIn = builtIn.get()
- put(ContextSpecificTag(TAG_BUILT_IN), optbuiltIn)
- }
+ put(ContextSpecificTag(TAG_BUILT_IN), builtIn)
} else {
putNull(ContextSpecificTag(TAG_BUILT_IN))
}
@@ -117,11 +114,7 @@ class ThermostatClusterScheduleStruct(
}
val builtIn =
if (!tlvReader.isNull()) {
- if (tlvReader.isNextTag(ContextSpecificTag(TAG_BUILT_IN))) {
- Optional.of(tlvReader.getBoolean(ContextSpecificTag(TAG_BUILT_IN)))
- } else {
- Optional.empty()
- }
+ tlvReader.getBoolean(ContextSpecificTag(TAG_BUILT_IN))
} else {
tlvReader.getNull(ContextSpecificTag(TAG_BUILT_IN))
null
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index b6702569d994d9..e4ddb358eb4411 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -29588,7 +29588,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
jobject value;
std::string valueClassName = "java/lang/Integer";
std::string valueCtorSignature = "(I)V";
- jint jnivalue = static_cast(cppValue);
+ jint jnivalue = static_cast(cppValue.Raw());
chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), jnivalue,
value);
return value;
@@ -29700,7 +29700,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
jobject value;
std::string valueClassName = "java/lang/Integer";
std::string valueCtorSignature = "(I)V";
- jint jnivalue = static_cast(cppValue);
+ jint jnivalue = static_cast(cppValue.Raw());
chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), jnivalue,
value);
return value;
@@ -30958,28 +30958,18 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
chip::JniReferences::GetInstance().AddToList(newElement_0_transitions, newElement_2);
}
jobject newElement_0_builtIn;
- if (!entry_0.builtIn.HasValue())
+ if (entry_0.builtIn.IsNull())
{
- chip::JniReferences::GetInstance().CreateOptional(nullptr, newElement_0_builtIn);
+ newElement_0_builtIn = nullptr;
}
else
{
- jobject newElement_0_builtInInsideOptional;
- if (entry_0.builtIn.Value().IsNull())
- {
- newElement_0_builtInInsideOptional = nullptr;
- }
- else
- {
- std::string newElement_0_builtInInsideOptionalClassName = "java/lang/Boolean";
- std::string newElement_0_builtInInsideOptionalCtorSignature = "(Z)V";
- jboolean jninewElement_0_builtInInsideOptional = static_cast(entry_0.builtIn.Value().Value());
- chip::JniReferences::GetInstance().CreateBoxedObject(
- newElement_0_builtInInsideOptionalClassName.c_str(),
- newElement_0_builtInInsideOptionalCtorSignature.c_str(), jninewElement_0_builtInInsideOptional,
- newElement_0_builtInInsideOptional);
- }
- chip::JniReferences::GetInstance().CreateOptional(newElement_0_builtInInsideOptional, newElement_0_builtIn);
+ std::string newElement_0_builtInClassName = "java/lang/Boolean";
+ std::string newElement_0_builtInCtorSignature = "(Z)V";
+ jboolean jninewElement_0_builtIn = static_cast(entry_0.builtIn.Value());
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0_builtInClassName.c_str(),
+ newElement_0_builtInCtorSignature.c_str(),
+ jninewElement_0_builtIn, newElement_0_builtIn);
}
jclass scheduleStructStructClass_1;
@@ -30994,7 +30984,7 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
jmethodID scheduleStructStructCtor_1;
err = chip::JniReferences::GetInstance().FindMethod(
env, scheduleStructStructClass_1, "",
- "([BLjava/lang/Integer;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/ArrayList;Ljava/util/Optional;)V",
+ "([BLjava/lang/Integer;Ljava/util/Optional;Ljava/util/Optional;Ljava/util/ArrayList;Ljava/lang/Boolean;)V",
&scheduleStructStructCtor_1);
if (err != CHIP_NO_ERROR || scheduleStructStructCtor_1 == nullptr)
{
@@ -31009,38 +30999,6 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
}
return value;
}
- case Attributes::PresetsSchedulesEditable::Id: {
- using TypeInfo = Attributes::PresetsSchedulesEditable::TypeInfo;
- TypeInfo::DecodableType cppValue;
- *aError = app::DataModel::Decode(aReader, cppValue);
- if (*aError != CHIP_NO_ERROR)
- {
- return nullptr;
- }
- jobject value;
- std::string valueClassName = "java/lang/Boolean";
- std::string valueCtorSignature = "(Z)V";
- jboolean jnivalue = static_cast(cppValue);
- chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
- jnivalue, value);
- return value;
- }
- case Attributes::TemperatureSetpointHoldPolicy::Id: {
- using TypeInfo = Attributes::TemperatureSetpointHoldPolicy::TypeInfo;
- TypeInfo::DecodableType cppValue;
- *aError = app::DataModel::Decode(aReader, cppValue);
- if (*aError != CHIP_NO_ERROR)
- {
- return nullptr;
- }
- jobject value;
- std::string valueClassName = "java/lang/Integer";
- std::string valueCtorSignature = "(I)V";
- jint jnivalue = static_cast(cppValue.Raw());
- chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(), jnivalue,
- value);
- return value;
- }
case Attributes::SetpointHoldExpiryTimestamp::Id: {
using TypeInfo = Attributes::SetpointHoldExpiryTimestamp::TypeInfo;
TypeInfo::DecodableType cppValue;
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 6621bbc4bea2a6..4e787228619688 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -8827,30 +8827,13 @@ class ChipClusters:
"presetHandle": "bytes",
},
},
- 0x00000007: {
- "commandId": 0x00000007,
- "commandName": "StartPresetsSchedulesEditRequest",
- "args": {
- "timeoutSeconds": "int",
- },
- },
- 0x00000008: {
- "commandId": 0x00000008,
- "commandName": "CancelPresetsSchedulesEditRequest",
- "args": {
- },
- },
- 0x00000009: {
- "commandId": 0x00000009,
- "commandName": "CommitPresetsSchedulesRequest",
- "args": {
- },
- },
- 0x0000000B: {
- "commandId": 0x0000000B,
- "commandName": "SetTemperatureSetpointHoldPolicy",
+ 0x000000FE: {
+ "commandId": 0x000000FE,
+ "commandName": "AtomicRequest",
"args": {
- "temperatureSetpointHoldPolicy": "int",
+ "requestType": "int",
+ "attributeRequests": "int",
+ "timeout": "int",
},
},
},
@@ -9239,20 +9222,8 @@ class ChipClusters:
"writable": True,
},
0x00000052: {
- "attributeName": "PresetsSchedulesEditable",
- "attributeId": 0x00000052,
- "type": "bool",
- "reportable": True,
- },
- 0x00000053: {
- "attributeName": "TemperatureSetpointHoldPolicy",
- "attributeId": 0x00000053,
- "type": "int",
- "reportable": True,
- },
- 0x00000054: {
"attributeName": "SetpointHoldExpiryTimestamp",
- "attributeId": 0x00000054,
+ "attributeId": 0x00000052,
"type": "int",
"reportable": True,
},
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index fe9a008e11066e..0fcc166b6b5f53 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -32115,9 +32115,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
ClusterObjectFieldDescriptor(Label="activeScheduleHandle", Tag=0x0000004F, Type=typing.Union[None, Nullable, bytes]),
ClusterObjectFieldDescriptor(Label="presets", Tag=0x00000050, Type=typing.Optional[typing.List[Thermostat.Structs.PresetStruct]]),
ClusterObjectFieldDescriptor(Label="schedules", Tag=0x00000051, Type=typing.Optional[typing.List[Thermostat.Structs.ScheduleStruct]]),
- ClusterObjectFieldDescriptor(Label="presetsSchedulesEditable", Tag=0x00000052, Type=typing.Optional[bool]),
- ClusterObjectFieldDescriptor(Label="temperatureSetpointHoldPolicy", Tag=0x00000053, Type=typing.Optional[uint]),
- ClusterObjectFieldDescriptor(Label="setpointHoldExpiryTimestamp", Tag=0x00000054, Type=typing.Union[None, Nullable, uint]),
+ ClusterObjectFieldDescriptor(Label="setpointHoldExpiryTimestamp", Tag=0x00000052, Type=typing.Union[None, Nullable, uint]),
ClusterObjectFieldDescriptor(Label="generatedCommandList", Tag=0x0000FFF8, Type=typing.List[uint]),
ClusterObjectFieldDescriptor(Label="acceptedCommandList", Tag=0x0000FFF9, Type=typing.List[uint]),
ClusterObjectFieldDescriptor(Label="eventList", Tag=0x0000FFFA, Type=typing.List[uint]),
@@ -32185,8 +32183,6 @@ def descriptor(cls) -> ClusterObjectDescriptor:
activeScheduleHandle: 'typing.Union[None, Nullable, bytes]' = None
presets: 'typing.Optional[typing.List[Thermostat.Structs.PresetStruct]]' = None
schedules: 'typing.Optional[typing.List[Thermostat.Structs.ScheduleStruct]]' = None
- presetsSchedulesEditable: 'typing.Optional[bool]' = None
- temperatureSetpointHoldPolicy: 'typing.Optional[uint]' = None
setpointHoldExpiryTimestamp: 'typing.Union[None, Nullable, uint]' = None
generatedCommandList: 'typing.List[uint]' = None
acceptedCommandList: 'typing.List[uint]' = None
@@ -32250,6 +32246,16 @@ class ACTypeEnum(MatterIntEnum):
# enum value. This specific value should never be transmitted.
kUnknownEnumValue = 5,
+ class AtomicRequestTypeEnum(MatterIntEnum):
+ kBeginWrite = 0x00
+ kCommitWrite = 0x01
+ kRollbackWrite = 0x02
+ # All received enum values that are not listed above will be mapped
+ # to kUnknownEnumValue. This is a helper enum value that should only
+ # be used by code to process how it handles receiving an unknown
+ # enum value. This specific value should never be transmitted.
+ kUnknownEnumValue = 3,
+
class ControlSequenceOfOperationEnum(MatterIntEnum):
kCoolingOnly = 0x00
kCoolingWithReheat = 0x01
@@ -32264,18 +32270,18 @@ class ControlSequenceOfOperationEnum(MatterIntEnum):
kUnknownEnumValue = 6,
class PresetScenarioEnum(MatterIntEnum):
- kUnspecified = 0x00
kOccupied = 0x01
kUnoccupied = 0x02
kSleep = 0x03
kWake = 0x04
kVacation = 0x05
- kUserDefined = 0x06
+ kGoingToSleep = 0x06
+ kUserDefined = 0xFE
# All received enum values that are not listed above will be mapped
# to kUnknownEnumValue. This is a helper enum value that should only
# be used by code to process how it handles receiving an unknown
# enum value. This specific value should never be transmitted.
- kUnknownEnumValue = 7,
+ kUnknownEnumValue = 0,
class SetpointChangeSourceEnum(MatterIntEnum):
kManual = 0x00
@@ -32364,7 +32370,6 @@ class Feature(IntFlag):
kLocalTemperatureNotExposed = 0x40
kMatterScheduleConfiguration = 0x80
kPresets = 0x100
- kSetpoints = 0x200
class HVACSystemTypeBitmap(IntFlag):
kCoolingStage = 0x3
@@ -32372,6 +32377,9 @@ class HVACSystemTypeBitmap(IntFlag):
kHeatingIsHeatPump = 0x10
kHeatingUsesFuel = 0x20
+ class OccupancyBitmap(IntFlag):
+ kOccupied = 0x1
+
class PresetTypeFeaturesBitmap(IntFlag):
kAutomatic = 0x1
kSupportsNames = 0x2
@@ -32415,10 +32423,6 @@ class ScheduleTypeFeaturesBitmap(IntFlag):
kSupportsNames = 0x4
kSupportsOff = 0x8
- class TemperatureSetpointHoldPolicyBitmap(IntFlag):
- kHoldDurationElapsed = 0x1
- kHoldDurationElapsedOrPresetChanged = 0x2
-
class Structs:
@dataclass
class ScheduleTransitionStruct(ClusterObject):
@@ -32452,7 +32456,7 @@ def descriptor(cls) -> ClusterObjectDescriptor:
ClusterObjectFieldDescriptor(Label="name", Tag=2, Type=typing.Optional[str]),
ClusterObjectFieldDescriptor(Label="presetHandle", Tag=3, Type=typing.Optional[bytes]),
ClusterObjectFieldDescriptor(Label="transitions", Tag=4, Type=typing.List[Thermostat.Structs.ScheduleTransitionStruct]),
- ClusterObjectFieldDescriptor(Label="builtIn", Tag=5, Type=typing.Union[None, Nullable, bool]),
+ ClusterObjectFieldDescriptor(Label="builtIn", Tag=5, Type=typing.Union[Nullable, bool]),
])
scheduleHandle: 'typing.Union[Nullable, bytes]' = NullValue
@@ -32460,7 +32464,20 @@ def descriptor(cls) -> ClusterObjectDescriptor:
name: 'typing.Optional[str]' = None
presetHandle: 'typing.Optional[bytes]' = None
transitions: 'typing.List[Thermostat.Structs.ScheduleTransitionStruct]' = field(default_factory=lambda: [])
- builtIn: 'typing.Union[None, Nullable, bool]' = None
+ builtIn: 'typing.Union[Nullable, bool]' = NullValue
+
+ @dataclass
+ class AtomicAttributeStatusStruct(ClusterObject):
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="attributeID", Tag=0, Type=typing.Optional[uint]),
+ ClusterObjectFieldDescriptor(Label="statusCode", Tag=1, Type=typing.Optional[uint]),
+ ])
+
+ attributeID: 'typing.Optional[uint]' = None
+ statusCode: 'typing.Optional[uint]' = None
@dataclass
class PresetStruct(ClusterObject):
@@ -32655,62 +32672,44 @@ def descriptor(cls) -> ClusterObjectDescriptor:
presetHandle: 'bytes' = b""
@dataclass
- class StartPresetsSchedulesEditRequest(ClusterCommand):
+ class AtomicResponse(ClusterCommand):
cluster_id: typing.ClassVar[int] = 0x00000201
- command_id: typing.ClassVar[int] = 0x00000007
- is_client: typing.ClassVar[bool] = True
- response_type: typing.ClassVar[str] = None
-
- @ChipUtility.classproperty
- def descriptor(cls) -> ClusterObjectDescriptor:
- return ClusterObjectDescriptor(
- Fields=[
- ClusterObjectFieldDescriptor(Label="timeoutSeconds", Tag=0, Type=uint),
- ])
-
- timeoutSeconds: 'uint' = 0
-
- @dataclass
- class CancelPresetsSchedulesEditRequest(ClusterCommand):
- cluster_id: typing.ClassVar[int] = 0x00000201
- command_id: typing.ClassVar[int] = 0x00000008
- is_client: typing.ClassVar[bool] = True
+ command_id: typing.ClassVar[int] = 0x000000FD
+ is_client: typing.ClassVar[bool] = False
response_type: typing.ClassVar[str] = None
@ChipUtility.classproperty
def descriptor(cls) -> ClusterObjectDescriptor:
return ClusterObjectDescriptor(
Fields=[
+ ClusterObjectFieldDescriptor(Label="statusCode", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(Label="attributeStatus", Tag=1, Type=typing.List[Thermostat.Structs.AtomicAttributeStatusStruct]),
+ ClusterObjectFieldDescriptor(Label="timeout", Tag=2, Type=typing.Optional[uint]),
])
- @dataclass
- class CommitPresetsSchedulesRequest(ClusterCommand):
- cluster_id: typing.ClassVar[int] = 0x00000201
- command_id: typing.ClassVar[int] = 0x00000009
- is_client: typing.ClassVar[bool] = True
- response_type: typing.ClassVar[str] = None
-
- @ChipUtility.classproperty
- def descriptor(cls) -> ClusterObjectDescriptor:
- return ClusterObjectDescriptor(
- Fields=[
- ])
+ statusCode: 'uint' = 0
+ attributeStatus: 'typing.List[Thermostat.Structs.AtomicAttributeStatusStruct]' = field(default_factory=lambda: [])
+ timeout: 'typing.Optional[uint]' = None
@dataclass
- class SetTemperatureSetpointHoldPolicy(ClusterCommand):
+ class AtomicRequest(ClusterCommand):
cluster_id: typing.ClassVar[int] = 0x00000201
- command_id: typing.ClassVar[int] = 0x0000000B
+ command_id: typing.ClassVar[int] = 0x000000FE
is_client: typing.ClassVar[bool] = True
- response_type: typing.ClassVar[str] = None
+ response_type: typing.ClassVar[str] = 'AtomicResponse'
@ChipUtility.classproperty
def descriptor(cls) -> ClusterObjectDescriptor:
return ClusterObjectDescriptor(
Fields=[
- ClusterObjectFieldDescriptor(Label="temperatureSetpointHoldPolicy", Tag=0, Type=uint),
+ ClusterObjectFieldDescriptor(Label="requestType", Tag=0, Type=Thermostat.Enums.AtomicRequestTypeEnum),
+ ClusterObjectFieldDescriptor(Label="attributeRequests", Tag=1, Type=typing.List[uint]),
+ ClusterObjectFieldDescriptor(Label="timeout", Tag=2, Type=typing.Optional[uint]),
])
- temperatureSetpointHoldPolicy: 'uint' = 0
+ requestType: 'Thermostat.Enums.AtomicRequestTypeEnum' = 0
+ attributeRequests: 'typing.List[uint]' = field(default_factory=lambda: [])
+ timeout: 'typing.Optional[uint]' = None
class Attributes:
@dataclass
@@ -33657,38 +33656,6 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
value: 'typing.Optional[typing.List[Thermostat.Structs.ScheduleStruct]]' = None
- @dataclass
- class PresetsSchedulesEditable(ClusterAttributeDescriptor):
- @ChipUtility.classproperty
- def cluster_id(cls) -> int:
- return 0x00000201
-
- @ChipUtility.classproperty
- def attribute_id(cls) -> int:
- return 0x00000052
-
- @ChipUtility.classproperty
- def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=typing.Optional[bool])
-
- value: 'typing.Optional[bool]' = None
-
- @dataclass
- class TemperatureSetpointHoldPolicy(ClusterAttributeDescriptor):
- @ChipUtility.classproperty
- def cluster_id(cls) -> int:
- return 0x00000201
-
- @ChipUtility.classproperty
- def attribute_id(cls) -> int:
- return 0x00000053
-
- @ChipUtility.classproperty
- def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
-
- value: 'typing.Optional[uint]' = None
-
@dataclass
class SetpointHoldExpiryTimestamp(ClusterAttributeDescriptor):
@ChipUtility.classproperty
@@ -33697,7 +33664,7 @@ def cluster_id(cls) -> int:
@ChipUtility.classproperty
def attribute_id(cls) -> int:
- return 0x00000054
+ return 0x00000052
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
index 204d15937b23ca..dd7f39efec2844 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
@@ -4158,12 +4158,6 @@ static BOOL AttributeIsSpecifiedInThermostatCluster(AttributeId aAttributeId)
case Attributes::Schedules::Id: {
return YES;
}
- case Attributes::PresetsSchedulesEditable::Id: {
- return YES;
- }
- case Attributes::TemperatureSetpointHoldPolicy::Id: {
- return YES;
- }
case Attributes::SetpointHoldExpiryTimestamp::Id: {
return YES;
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index ca3cc6c5e620eb..1a69014502ff6f 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -11623,7 +11623,7 @@ static id _Nullable DecodeAttributeValueForThermostatCluster(AttributeId aAttrib
return nil;
}
NSNumber * _Nonnull value;
- value = [NSNumber numberWithUnsignedChar:cppValue];
+ value = [NSNumber numberWithUnsignedChar:cppValue.Raw()];
return value;
}
case Attributes::AbsMinHeatSetpointLimit::Id: {
@@ -11700,7 +11700,7 @@ static id _Nullable DecodeAttributeValueForThermostatCluster(AttributeId aAttrib
return nil;
}
NSNumber * _Nonnull value;
- value = [NSNumber numberWithUnsignedChar:cppValue];
+ value = [NSNumber numberWithUnsignedChar:cppValue.Raw()];
return value;
}
case Attributes::LocalTemperatureCalibration::Id: {
@@ -12439,14 +12439,10 @@ static id _Nullable DecodeAttributeValueForThermostatCluster(AttributeId aAttrib
}
newElement_0.transitions = array_2;
}
- if (entry_0.builtIn.HasValue()) {
- if (entry_0.builtIn.Value().IsNull()) {
- newElement_0.builtIn = nil;
- } else {
- newElement_0.builtIn = [NSNumber numberWithBool:entry_0.builtIn.Value().Value()];
- }
- } else {
+ if (entry_0.builtIn.IsNull()) {
newElement_0.builtIn = nil;
+ } else {
+ newElement_0.builtIn = [NSNumber numberWithBool:entry_0.builtIn.Value()];
}
[array_0 addObject:newElement_0];
}
@@ -12459,28 +12455,6 @@ static id _Nullable DecodeAttributeValueForThermostatCluster(AttributeId aAttrib
}
return value;
}
- case Attributes::PresetsSchedulesEditable::Id: {
- using TypeInfo = Attributes::PresetsSchedulesEditable::TypeInfo;
- TypeInfo::DecodableType cppValue;
- *aError = DataModel::Decode(aReader, cppValue);
- if (*aError != CHIP_NO_ERROR) {
- return nil;
- }
- NSNumber * _Nonnull value;
- value = [NSNumber numberWithBool:cppValue];
- return value;
- }
- case Attributes::TemperatureSetpointHoldPolicy::Id: {
- using TypeInfo = Attributes::TemperatureSetpointHoldPolicy::TypeInfo;
- TypeInfo::DecodableType cppValue;
- *aError = DataModel::Decode(aReader, cppValue);
- if (*aError != CHIP_NO_ERROR) {
- return nil;
- }
- NSNumber * _Nonnull value;
- value = [NSNumber numberWithUnsignedChar:cppValue.Raw()];
- return value;
- }
case Attributes::SetpointHoldExpiryTimestamp::Id: {
using TypeInfo = Attributes::SetpointHoldExpiryTimestamp::TypeInfo;
TypeInfo::DecodableType cppValue;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index 2bcdb3fbc3919e..bb9139ddf4ef78 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -9964,25 +9964,25 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
/**
* Command SetpointRaiseLower
*
- * Command description for SetpointRaiseLower
+ * Upon receipt, the attributes for the indicated setpoint(s) SHALL have the amount specified in the Amount field added to them.
*/
- (void)setpointRaiseLowerWithParams:(MTRThermostatClusterSetpointRaiseLowerParams *)params completion:(MTRStatusCompletion)completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
/**
* Command SetWeeklySchedule
*
- * Command description for SetWeeklySchedule
+ * Upon receipt, the weekly schedule for updating setpoints SHALL be stored in the
*/
- (void)setWeeklyScheduleWithParams:(MTRThermostatClusterSetWeeklyScheduleParams *)params completion:(MTRStatusCompletion)completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
/**
* Command GetWeeklySchedule
*
- * Command description for GetWeeklySchedule
+ * Upon receipt, the unit SHOULD send in return the Get
*/
- (void)getWeeklyScheduleWithParams:(MTRThermostatClusterGetWeeklyScheduleParams *)params completion:(void (^)(MTRThermostatClusterGetWeeklyScheduleResponseParams * _Nullable data, NSError * _Nullable error))completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
/**
* Command ClearWeeklySchedule
*
- * This command is used to clear the weekly schedule. The ClearWeeklySchedule command has no payload.
+ * This command is used to clear the weekly schedule.
*/
- (void)clearWeeklyScheduleWithParams:(MTRThermostatClusterClearWeeklyScheduleParams * _Nullable)params completion:(MTRStatusCompletion)completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
- (void)clearWeeklyScheduleWithCompletion:(MTRStatusCompletion)completion
@@ -9990,43 +9990,21 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
/**
* Command SetActiveScheduleRequest
*
- * This command is used to set the active schedule.
+ * Upon receipt, if the
*/
- (void)setActiveScheduleRequestWithParams:(MTRThermostatClusterSetActiveScheduleRequestParams *)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
/**
* Command SetActivePresetRequest
*
- * This command is used to set the active preset.
+ * ID
*/
- (void)setActivePresetRequestWithParams:(MTRThermostatClusterSetActivePresetRequestParams *)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
/**
- * Command StartPresetsSchedulesEditRequest
+ * Command AtomicRequest
*
- * This command is used to start editing the presets and schedules.
+ * Begins, Commits or Cancels an atomic write
*/
-- (void)startPresetsSchedulesEditRequestWithParams:(MTRThermostatClusterStartPresetsSchedulesEditRequestParams *)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
-/**
- * Command CancelPresetsSchedulesEditRequest
- *
- * This command is used to cancel editing presets and schedules.
- */
-- (void)cancelPresetsSchedulesEditRequestWithParams:(MTRThermostatClusterCancelPresetsSchedulesEditRequestParams * _Nullable)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)cancelPresetsSchedulesEditRequestWithCompletion:(MTRStatusCompletion)completion
- MTR_PROVISIONALLY_AVAILABLE;
-/**
- * Command CommitPresetsSchedulesRequest
- *
- * This command is used to notify the server that all edits are done and should be committed.
- */
-- (void)commitPresetsSchedulesRequestWithParams:(MTRThermostatClusterCommitPresetsSchedulesRequestParams * _Nullable)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)commitPresetsSchedulesRequestWithCompletion:(MTRStatusCompletion)completion
- MTR_PROVISIONALLY_AVAILABLE;
-/**
- * Command SetTemperatureSetpointHoldPolicy
- *
- * This command sets the set point hold policy.
- */
-- (void)setTemperatureSetpointHoldPolicyWithParams:(MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams *)params completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
+- (void)atomicRequestWithParams:(MTRThermostatClusterAtomicRequestParams *)params completion:(void (^)(MTRThermostatClusterAtomicResponseParams * _Nullable data, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
- (void)readAttributeLocalTemperatureWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
- (void)subscribeAttributeLocalTemperatureWithParams:(MTRSubscribeParams *)params
@@ -10440,18 +10418,6 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE;
+ (void)readAttributeSchedulesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)readAttributePresetsSchedulesEditableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)subscribeAttributePresetsSchedulesEditableWithParams:(MTRSubscribeParams *)params
- subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
- reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE;
-+ (void)readAttributePresetsSchedulesEditableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
-
-- (void)readAttributeTemperatureSetpointHoldPolicyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)subscribeAttributeTemperatureSetpointHoldPolicyWithParams:(MTRSubscribeParams *)params
- subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
- reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler MTR_PROVISIONALLY_AVAILABLE;
-+ (void)readAttributeTemperatureSetpointHoldPolicyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
-
- (void)readAttributeSetpointHoldExpiryTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
- (void)subscribeAttributeSetpointHoldExpiryTimestampWithParams:(MTRSubscribeParams *)params
subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
@@ -19827,6 +19793,12 @@ typedef NS_ENUM(uint8_t, MTRThermostatACType) {
MTRThermostatACTypeHeatPumpInverter MTR_PROVISIONALLY_AVAILABLE = 0x04,
} MTR_PROVISIONALLY_AVAILABLE;
+typedef NS_ENUM(uint8_t, MTRThermostatAtomicRequestType) {
+ MTRThermostatAtomicRequestTypeBeginWrite MTR_PROVISIONALLY_AVAILABLE = 0x00,
+ MTRThermostatAtomicRequestTypeCommitWrite MTR_PROVISIONALLY_AVAILABLE = 0x01,
+ MTRThermostatAtomicRequestTypeRollbackWrite MTR_PROVISIONALLY_AVAILABLE = 0x02,
+} MTR_PROVISIONALLY_AVAILABLE;
+
typedef NS_ENUM(uint8_t, MTRThermostatControlSequenceOfOperation) {
MTRThermostatControlSequenceOfOperationCoolingOnly MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x00,
MTRThermostatControlSequenceOfOperationCoolingWithReheat MTR_AVAILABLE(ios(17.4), macos(14.4), watchos(10.4), tvos(17.4)) = 0x01,
@@ -19846,13 +19818,13 @@ typedef NS_ENUM(uint8_t, MTRThermostatControlSequence) {
} MTR_DEPRECATED("Please use MTRThermostatControlSequenceOfOperation", ios(16.1, 17.4), macos(13.0, 14.4), watchos(9.1, 10.4), tvos(16.1, 17.4));
typedef NS_ENUM(uint8_t, MTRThermostatPresetScenario) {
- MTRThermostatPresetScenarioUnspecified MTR_PROVISIONALLY_AVAILABLE = 0x00,
MTRThermostatPresetScenarioOccupied MTR_PROVISIONALLY_AVAILABLE = 0x01,
MTRThermostatPresetScenarioUnoccupied MTR_PROVISIONALLY_AVAILABLE = 0x02,
MTRThermostatPresetScenarioSleep MTR_PROVISIONALLY_AVAILABLE = 0x03,
MTRThermostatPresetScenarioWake MTR_PROVISIONALLY_AVAILABLE = 0x04,
MTRThermostatPresetScenarioVacation MTR_PROVISIONALLY_AVAILABLE = 0x05,
- MTRThermostatPresetScenarioUserDefined MTR_PROVISIONALLY_AVAILABLE = 0x06,
+ MTRThermostatPresetScenarioGoingToSleep MTR_PROVISIONALLY_AVAILABLE = 0x06,
+ MTRThermostatPresetScenarioUserDefined MTR_PROVISIONALLY_AVAILABLE = 0xFE,
} MTR_PROVISIONALLY_AVAILABLE;
typedef NS_ENUM(uint8_t, MTRThermostatSetpointChangeSource) {
@@ -19930,7 +19902,6 @@ typedef NS_OPTIONS(uint32_t, MTRThermostatFeature) {
MTRThermostatFeatureLocalTemperatureNotExposed MTR_AVAILABLE(ios(17.0), macos(14.0), watchos(10.0), tvos(17.0)) = 0x40,
MTRThermostatFeatureMatterScheduleConfiguration MTR_PROVISIONALLY_AVAILABLE = 0x80,
MTRThermostatFeaturePresets MTR_PROVISIONALLY_AVAILABLE = 0x100,
- MTRThermostatFeatureSetpoints MTR_PROVISIONALLY_AVAILABLE = 0x200,
} MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
typedef NS_OPTIONS(uint8_t, MTRThermostatHVACSystemTypeBitmap) {
@@ -19940,6 +19911,10 @@ typedef NS_OPTIONS(uint8_t, MTRThermostatHVACSystemTypeBitmap) {
MTRThermostatHVACSystemTypeBitmapHeatingUsesFuel MTR_PROVISIONALLY_AVAILABLE = 0x20,
} MTR_PROVISIONALLY_AVAILABLE;
+typedef NS_OPTIONS(uint8_t, MTRThermostatOccupancyBitmap) {
+ MTRThermostatOccupancyBitmapOccupied MTR_PROVISIONALLY_AVAILABLE = 0x1,
+} MTR_PROVISIONALLY_AVAILABLE;
+
typedef NS_OPTIONS(uint16_t, MTRThermostatPresetTypeFeaturesBitmap) {
MTRThermostatPresetTypeFeaturesBitmapAutomatic MTR_PROVISIONALLY_AVAILABLE = 0x1,
MTRThermostatPresetTypeFeaturesBitmapSupportsNames MTR_PROVISIONALLY_AVAILABLE = 0x2,
@@ -20009,11 +19984,6 @@ typedef NS_OPTIONS(uint16_t, MTRThermostatScheduleTypeFeaturesBitmap) {
MTRThermostatScheduleTypeFeaturesBitmapSupportsOff MTR_PROVISIONALLY_AVAILABLE = 0x8,
} MTR_PROVISIONALLY_AVAILABLE;
-typedef NS_OPTIONS(uint8_t, MTRThermostatTemperatureSetpointHoldPolicyBitmap) {
- MTRThermostatTemperatureSetpointHoldPolicyBitmapHoldDurationElapsed MTR_PROVISIONALLY_AVAILABLE = 0x1,
- MTRThermostatTemperatureSetpointHoldPolicyBitmapHoldDurationElapsedOrPresetChanged MTR_PROVISIONALLY_AVAILABLE = 0x2,
-} MTR_PROVISIONALLY_AVAILABLE;
-
typedef NS_ENUM(uint8_t, MTRFanControlAirflowDirection) {
MTRFanControlAirflowDirectionForward MTR_AVAILABLE(ios(17.6), macos(14.6), watchos(10.6), tvos(17.6)) = 0x00,
MTRFanControlAirflowDirectionReverse MTR_AVAILABLE(ios(17.6), macos(14.6), watchos(10.6), tvos(17.6)) = 0x01,
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index 641fea65515da4..ca2b47d0c5562b 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -67897,107 +67897,27 @@ - (void)setActivePresetRequestWithParams:(MTRThermostatClusterSetActivePresetReq
queue:self.callbackQueue
completion:responseHandler];
}
-- (void)startPresetsSchedulesEditRequestWithParams:(MTRThermostatClusterStartPresetsSchedulesEditRequestParams *)params completion:(MTRStatusCompletion)completion
+- (void)atomicRequestWithParams:(MTRThermostatClusterAtomicRequestParams *)params completion:(void (^)(MTRThermostatClusterAtomicResponseParams * _Nullable data, NSError * _Nullable error))completion
{
if (params == nil) {
- params = [[MTRThermostatClusterStartPresetsSchedulesEditRequestParams
+ params = [[MTRThermostatClusterAtomicRequestParams
alloc] init];
}
auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
- completion(error);
- };
-
- auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
-
- using RequestType = Thermostat::Commands::StartPresetsSchedulesEditRequest::Type;
- [self.device _invokeKnownCommandWithEndpointID:self.endpointID
- clusterID:@(RequestType::GetClusterId())
- commandID:@(RequestType::GetCommandId())
- commandPayload:params
- timedInvokeTimeout:timedInvokeTimeoutMs
- serverSideProcessingTimeout:params.serverSideProcessingTimeout
- responseClass:nil
- queue:self.callbackQueue
- completion:responseHandler];
-}
-- (void)cancelPresetsSchedulesEditRequestWithCompletion:(MTRStatusCompletion)completion
-{
- [self cancelPresetsSchedulesEditRequestWithParams:nil completion:completion];
-}
-- (void)cancelPresetsSchedulesEditRequestWithParams:(MTRThermostatClusterCancelPresetsSchedulesEditRequestParams * _Nullable)params completion:(MTRStatusCompletion)completion
-{
- if (params == nil) {
- params = [[MTRThermostatClusterCancelPresetsSchedulesEditRequestParams
- alloc] init];
- }
-
- auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
- completion(error);
- };
-
- auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
-
- using RequestType = Thermostat::Commands::CancelPresetsSchedulesEditRequest::Type;
- [self.device _invokeKnownCommandWithEndpointID:self.endpointID
- clusterID:@(RequestType::GetClusterId())
- commandID:@(RequestType::GetCommandId())
- commandPayload:params
- timedInvokeTimeout:timedInvokeTimeoutMs
- serverSideProcessingTimeout:params.serverSideProcessingTimeout
- responseClass:nil
- queue:self.callbackQueue
- completion:responseHandler];
-}
-- (void)commitPresetsSchedulesRequestWithCompletion:(MTRStatusCompletion)completion
-{
- [self commitPresetsSchedulesRequestWithParams:nil completion:completion];
-}
-- (void)commitPresetsSchedulesRequestWithParams:(MTRThermostatClusterCommitPresetsSchedulesRequestParams * _Nullable)params completion:(MTRStatusCompletion)completion
-{
- if (params == nil) {
- params = [[MTRThermostatClusterCommitPresetsSchedulesRequestParams
- alloc] init];
- }
-
- auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
- completion(error);
- };
-
- auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
-
- using RequestType = Thermostat::Commands::CommitPresetsSchedulesRequest::Type;
- [self.device _invokeKnownCommandWithEndpointID:self.endpointID
- clusterID:@(RequestType::GetClusterId())
- commandID:@(RequestType::GetCommandId())
- commandPayload:params
- timedInvokeTimeout:timedInvokeTimeoutMs
- serverSideProcessingTimeout:params.serverSideProcessingTimeout
- responseClass:nil
- queue:self.callbackQueue
- completion:responseHandler];
-}
-- (void)setTemperatureSetpointHoldPolicyWithParams:(MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams *)params completion:(MTRStatusCompletion)completion
-{
- if (params == nil) {
- params = [[MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams
- alloc] init];
- }
-
- auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
- completion(error);
+ completion(response, error);
};
auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
- using RequestType = Thermostat::Commands::SetTemperatureSetpointHoldPolicy::Type;
+ using RequestType = Thermostat::Commands::AtomicRequest::Type;
[self.device _invokeKnownCommandWithEndpointID:self.endpointID
clusterID:@(RequestType::GetClusterId())
commandID:@(RequestType::GetCommandId())
commandPayload:params
timedInvokeTimeout:timedInvokeTimeoutMs
serverSideProcessingTimeout:params.serverSideProcessingTimeout
- responseClass:nil
+ responseClass:MTRThermostatClusterAtomicResponseParams.class
queue:self.callbackQueue
completion:responseHandler];
}
@@ -68358,7 +68278,7 @@ - (void)writeAttributeHVACSystemTypeConfigurationWithValue:(NSNumber * _Nonnull)
ListFreer listFreer;
using TypeInfo = Thermostat::Attributes::HVACSystemTypeConfiguration::TypeInfo;
TypeInfo::Type cppValue;
- cppValue = value.unsignedCharValue;
+ cppValue = static_cast>(value.unsignedCharValue);
chip::Controller::ClusterBase cppCluster(exchangeManager, session, self.endpointID.unsignedShortValue);
return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout); });
@@ -71040,15 +70960,12 @@ - (void)writeAttributeSchedulesWithValue:(NSArray * _Nonnull)value params:(MTRWr
listHolder_0->mList[i_0].transitions = ListType_2();
}
}
- if (element_0.builtIn != nil) {
- auto & definedValue_2 = listHolder_0->mList[i_0].builtIn.Emplace();
- if (element_0.builtIn == nil) {
- definedValue_2.SetNull();
- } else {
- auto & nonNullValue_3 = definedValue_2.SetNonNull();
- nonNullValue_3 = element_0.builtIn.boolValue;
+ if (element_0.builtIn == nil) {
+ listHolder_0->mList[i_0].builtIn.SetNull();
+ } else {
+ auto & nonNullValue_2 = listHolder_0->mList[i_0].builtIn.SetNonNull();
+ nonNullValue_2 = element_0.builtIn.boolValue;
}
- }
}
cppValue = ListType_0(listHolder_0->mList, value.count);
} else {
@@ -71086,78 +71003,6 @@ + (void)readAttributeSchedulesWithClusterStateCache:(MTRClusterStateCacheContain
completion:completion];
}
-- (void)readAttributePresetsSchedulesEditableWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-{
- using TypeInfo = Thermostat::Attributes::PresetsSchedulesEditable::TypeInfo;
- [self.device _readKnownAttributeWithEndpointID:self.endpointID
- clusterID:@(TypeInfo::GetClusterId())
- attributeID:@(TypeInfo::GetAttributeId())
- params:nil
- queue:self.callbackQueue
- completion:completion];
-}
-
-- (void)subscribeAttributePresetsSchedulesEditableWithParams:(MTRSubscribeParams * _Nonnull)params
- subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
- reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
-{
- using TypeInfo = Thermostat::Attributes::PresetsSchedulesEditable::TypeInfo;
- [self.device _subscribeToKnownAttributeWithEndpointID:self.endpointID
- clusterID:@(TypeInfo::GetClusterId())
- attributeID:@(TypeInfo::GetAttributeId())
- params:params
- queue:self.callbackQueue
- reportHandler:reportHandler
- subscriptionEstablished:subscriptionEstablished];
-}
-
-+ (void)readAttributePresetsSchedulesEditableWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-{
- using TypeInfo = Thermostat::Attributes::PresetsSchedulesEditable::TypeInfo;
- [clusterStateCacheContainer
- _readKnownCachedAttributeWithEndpointID:static_cast([endpoint unsignedShortValue])
- clusterID:TypeInfo::GetClusterId()
- attributeID:TypeInfo::GetAttributeId()
- queue:queue
- completion:completion];
-}
-
-- (void)readAttributeTemperatureSetpointHoldPolicyWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-{
- using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldPolicy::TypeInfo;
- [self.device _readKnownAttributeWithEndpointID:self.endpointID
- clusterID:@(TypeInfo::GetClusterId())
- attributeID:@(TypeInfo::GetAttributeId())
- params:nil
- queue:self.callbackQueue
- completion:completion];
-}
-
-- (void)subscribeAttributeTemperatureSetpointHoldPolicyWithParams:(MTRSubscribeParams * _Nonnull)params
- subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
- reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
-{
- using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldPolicy::TypeInfo;
- [self.device _subscribeToKnownAttributeWithEndpointID:self.endpointID
- clusterID:@(TypeInfo::GetClusterId())
- attributeID:@(TypeInfo::GetAttributeId())
- params:params
- queue:self.callbackQueue
- reportHandler:reportHandler
- subscriptionEstablished:subscriptionEstablished];
-}
-
-+ (void)readAttributeTemperatureSetpointHoldPolicyWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer endpoint:(NSNumber *)endpoint queue:(dispatch_queue_t)queue completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
-{
- using TypeInfo = Thermostat::Attributes::TemperatureSetpointHoldPolicy::TypeInfo;
- [clusterStateCacheContainer
- _readKnownCachedAttributeWithEndpointID:static_cast([endpoint unsignedShortValue])
- clusterID:TypeInfo::GetClusterId()
- attributeID:TypeInfo::GetAttributeId()
- queue:queue
- completion:completion];
-}
-
- (void)readAttributeSetpointHoldExpiryTimestampWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
{
using TypeInfo = Thermostat::Attributes::SetpointHoldExpiryTimestamp::TypeInfo;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
index 2178edd403cfe4..16d74df3e0756f 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
@@ -3486,9 +3486,7 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) {
MTRAttributeIDTypeClusterThermostatAttributeActiveScheduleHandleID MTR_PROVISIONALLY_AVAILABLE = 0x0000004F,
MTRAttributeIDTypeClusterThermostatAttributePresetsID MTR_PROVISIONALLY_AVAILABLE = 0x00000050,
MTRAttributeIDTypeClusterThermostatAttributeSchedulesID MTR_PROVISIONALLY_AVAILABLE = 0x00000051,
- MTRAttributeIDTypeClusterThermostatAttributePresetsSchedulesEditableID MTR_PROVISIONALLY_AVAILABLE = 0x00000052,
- MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldPolicyID MTR_PROVISIONALLY_AVAILABLE = 0x00000053,
- MTRAttributeIDTypeClusterThermostatAttributeSetpointHoldExpiryTimestampID MTR_PROVISIONALLY_AVAILABLE = 0x00000054,
+ MTRAttributeIDTypeClusterThermostatAttributeSetpointHoldExpiryTimestampID MTR_PROVISIONALLY_AVAILABLE = 0x00000052,
MTRAttributeIDTypeClusterThermostatAttributeGeneratedCommandListID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
MTRAttributeIDTypeClusterThermostatAttributeAcceptedCommandListID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
MTRAttributeIDTypeClusterThermostatAttributeEventListID MTR_PROVISIONALLY_AVAILABLE = MTRAttributeIDTypeGlobalAttributeEventListID,
@@ -6606,10 +6604,8 @@ typedef NS_ENUM(uint32_t, MTRCommandIDType) {
MTRCommandIDTypeClusterThermostatCommandClearWeeklyScheduleID MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x00000003,
MTRCommandIDTypeClusterThermostatCommandSetActiveScheduleRequestID MTR_PROVISIONALLY_AVAILABLE = 0x00000005,
MTRCommandIDTypeClusterThermostatCommandSetActivePresetRequestID MTR_PROVISIONALLY_AVAILABLE = 0x00000006,
- MTRCommandIDTypeClusterThermostatCommandStartPresetsSchedulesEditRequestID MTR_PROVISIONALLY_AVAILABLE = 0x00000007,
- MTRCommandIDTypeClusterThermostatCommandCancelPresetsSchedulesEditRequestID MTR_PROVISIONALLY_AVAILABLE = 0x00000008,
- MTRCommandIDTypeClusterThermostatCommandCommitPresetsSchedulesRequestID MTR_PROVISIONALLY_AVAILABLE = 0x00000009,
- MTRCommandIDTypeClusterThermostatCommandSetTemperatureSetpointHoldPolicyID MTR_PROVISIONALLY_AVAILABLE = 0x0000000B,
+ MTRCommandIDTypeClusterThermostatCommandAtomicResponseID MTR_PROVISIONALLY_AVAILABLE = 0x000000FD,
+ MTRCommandIDTypeClusterThermostatCommandAtomicRequestID MTR_PROVISIONALLY_AVAILABLE = 0x000000FE,
// Cluster FanControl deprecated command id names
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
index 575661bfa078bd..3dc8d24df64cfd 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterNames.mm
@@ -5765,14 +5765,6 @@
result = @"Schedules";
break;
- case MTRAttributeIDTypeClusterThermostatAttributePresetsSchedulesEditableID:
- result = @"PresetsSchedulesEditable";
- break;
-
- case MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldPolicyID:
- result = @"TemperatureSetpointHoldPolicy";
- break;
-
case MTRAttributeIDTypeClusterThermostatAttributeSetpointHoldExpiryTimestampID:
result = @"SetpointHoldExpiryTimestamp";
break;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
index cefb92935beab4..cc61d5762fb4f4 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
@@ -4646,14 +4646,7 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
MTR_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4));
- (void)setActiveScheduleRequestWithParams:(MTRThermostatClusterSetActiveScheduleRequestParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
- (void)setActivePresetRequestWithParams:(MTRThermostatClusterSetActivePresetRequestParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)startPresetsSchedulesEditRequestWithParams:(MTRThermostatClusterStartPresetsSchedulesEditRequestParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)cancelPresetsSchedulesEditRequestWithParams:(MTRThermostatClusterCancelPresetsSchedulesEditRequestParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)cancelPresetsSchedulesEditRequestWithExpectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
- MTR_PROVISIONALLY_AVAILABLE;
-- (void)commitPresetsSchedulesRequestWithParams:(MTRThermostatClusterCommitPresetsSchedulesRequestParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
-- (void)commitPresetsSchedulesRequestWithExpectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
- MTR_PROVISIONALLY_AVAILABLE;
-- (void)setTemperatureSetpointHoldPolicyWithParams:(MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion MTR_PROVISIONALLY_AVAILABLE;
+- (void)atomicRequestWithParams:(MTRThermostatClusterAtomicRequestParams *)params expectedValues:(NSArray *> * _Nullable)expectedDataValueDictionaries expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(void (^)(MTRThermostatClusterAtomicResponseParams * _Nullable data, NSError * _Nullable error))completion MTR_PROVISIONALLY_AVAILABLE;
- (NSDictionary * _Nullable)readAttributeLocalTemperatureWithParams:(MTRReadParams * _Nullable)params MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
@@ -4831,10 +4824,6 @@ MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
- (void)writeAttributeSchedulesWithValue:(NSDictionary *)dataValueDictionary expectedValueInterval:(NSNumber *)expectedValueIntervalMs MTR_PROVISIONALLY_AVAILABLE;
- (void)writeAttributeSchedulesWithValue:(NSDictionary *)dataValueDictionary expectedValueInterval:(NSNumber *)expectedValueIntervalMs params:(MTRWriteParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE;
-- (NSDictionary * _Nullable)readAttributePresetsSchedulesEditableWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE;
-
-- (NSDictionary * _Nullable)readAttributeTemperatureSetpointHoldPolicyWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE;
-
- (NSDictionary * _Nullable)readAttributeSetpointHoldExpiryTimestampWithParams:(MTRReadParams * _Nullable)params MTR_PROVISIONALLY_AVAILABLE;
- (NSDictionary * _Nullable)readAttributeGeneratedCommandListWithParams:(MTRReadParams * _Nullable)params MTR_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
index 8c38a6c584b79e..ba3ddfc6da8f38 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.mm
@@ -13242,109 +13242,20 @@ - (void)setActivePresetRequestWithParams:(MTRThermostatClusterSetActivePresetReq
completion:responseHandler];
}
-- (void)startPresetsSchedulesEditRequestWithParams:(MTRThermostatClusterStartPresetsSchedulesEditRequestParams *)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
+- (void)atomicRequestWithParams:(MTRThermostatClusterAtomicRequestParams *)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(void (^)(MTRThermostatClusterAtomicResponseParams * _Nullable data, NSError * _Nullable error))completion
{
if (params == nil) {
- params = [[MTRThermostatClusterStartPresetsSchedulesEditRequestParams
+ params = [[MTRThermostatClusterAtomicRequestParams
alloc] init];
}
auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
- completion(error);
- };
-
- auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
-
- using RequestType = Thermostat::Commands::StartPresetsSchedulesEditRequest::Type;
- [self.device _invokeKnownCommandWithEndpointID:self.endpointID
- clusterID:@(RequestType::GetClusterId())
- commandID:@(RequestType::GetCommandId())
- commandPayload:params
- expectedValues:expectedValues
- expectedValueInterval:expectedValueIntervalMs
- timedInvokeTimeout:timedInvokeTimeoutMs
- serverSideProcessingTimeout:params.serverSideProcessingTimeout
- responseClass:nil
- queue:self.callbackQueue
- completion:responseHandler];
-}
-
-- (void)cancelPresetsSchedulesEditRequestWithExpectedValues:(NSArray *> *)expectedValues expectedValueInterval:(NSNumber *)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
-{
- [self cancelPresetsSchedulesEditRequestWithParams:nil expectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completion];
-}
-- (void)cancelPresetsSchedulesEditRequestWithParams:(MTRThermostatClusterCancelPresetsSchedulesEditRequestParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
-{
- if (params == nil) {
- params = [[MTRThermostatClusterCancelPresetsSchedulesEditRequestParams
- alloc] init];
- }
-
- auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
- completion(error);
- };
-
- auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
-
- using RequestType = Thermostat::Commands::CancelPresetsSchedulesEditRequest::Type;
- [self.device _invokeKnownCommandWithEndpointID:self.endpointID
- clusterID:@(RequestType::GetClusterId())
- commandID:@(RequestType::GetCommandId())
- commandPayload:params
- expectedValues:expectedValues
- expectedValueInterval:expectedValueIntervalMs
- timedInvokeTimeout:timedInvokeTimeoutMs
- serverSideProcessingTimeout:params.serverSideProcessingTimeout
- responseClass:nil
- queue:self.callbackQueue
- completion:responseHandler];
-}
-
-- (void)commitPresetsSchedulesRequestWithExpectedValues:(NSArray *> *)expectedValues expectedValueInterval:(NSNumber *)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
-{
- [self commitPresetsSchedulesRequestWithParams:nil expectedValues:expectedValues expectedValueInterval:expectedValueIntervalMs completion:completion];
-}
-- (void)commitPresetsSchedulesRequestWithParams:(MTRThermostatClusterCommitPresetsSchedulesRequestParams * _Nullable)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
-{
- if (params == nil) {
- params = [[MTRThermostatClusterCommitPresetsSchedulesRequestParams
- alloc] init];
- }
-
- auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
- completion(error);
- };
-
- auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
-
- using RequestType = Thermostat::Commands::CommitPresetsSchedulesRequest::Type;
- [self.device _invokeKnownCommandWithEndpointID:self.endpointID
- clusterID:@(RequestType::GetClusterId())
- commandID:@(RequestType::GetCommandId())
- commandPayload:params
- expectedValues:expectedValues
- expectedValueInterval:expectedValueIntervalMs
- timedInvokeTimeout:timedInvokeTimeoutMs
- serverSideProcessingTimeout:params.serverSideProcessingTimeout
- responseClass:nil
- queue:self.callbackQueue
- completion:responseHandler];
-}
-
-- (void)setTemperatureSetpointHoldPolicyWithParams:(MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams *)params expectedValues:(NSArray *> * _Nullable)expectedValues expectedValueInterval:(NSNumber * _Nullable)expectedValueIntervalMs completion:(MTRStatusCompletion)completion
-{
- if (params == nil) {
- params = [[MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams
- alloc] init];
- }
-
- auto responseHandler = ^(id _Nullable response, NSError * _Nullable error) {
- completion(error);
+ completion(response, error);
};
auto * timedInvokeTimeoutMs = params.timedInvokeTimeoutMs;
- using RequestType = Thermostat::Commands::SetTemperatureSetpointHoldPolicy::Type;
+ using RequestType = Thermostat::Commands::AtomicRequest::Type;
[self.device _invokeKnownCommandWithEndpointID:self.endpointID
clusterID:@(RequestType::GetClusterId())
commandID:@(RequestType::GetCommandId())
@@ -13353,7 +13264,7 @@ - (void)setTemperatureSetpointHoldPolicyWithParams:(MTRThermostatClusterSetTempe
expectedValueInterval:expectedValueIntervalMs
timedInvokeTimeout:timedInvokeTimeoutMs
serverSideProcessingTimeout:params.serverSideProcessingTimeout
- responseClass:nil
+ responseClass:MTRThermostatClusterAtomicResponseParams.class
queue:self.callbackQueue
completion:responseHandler];
}
@@ -13972,16 +13883,6 @@ - (void)writeAttributeSchedulesWithValue:(NSDictionary *)dataVal
[self.device writeAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeThermostatID) attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeSchedulesID) value:dataValueDictionary expectedValueInterval:expectedValueIntervalMs timedWriteTimeout:timedWriteTimeout];
}
-- (NSDictionary * _Nullable)readAttributePresetsSchedulesEditableWithParams:(MTRReadParams * _Nullable)params
-{
- return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeThermostatID) attributeID:@(MTRAttributeIDTypeClusterThermostatAttributePresetsSchedulesEditableID) params:params];
-}
-
-- (NSDictionary * _Nullable)readAttributeTemperatureSetpointHoldPolicyWithParams:(MTRReadParams * _Nullable)params
-{
- return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeThermostatID) attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeTemperatureSetpointHoldPolicyID) params:params];
-}
-
- (NSDictionary * _Nullable)readAttributeSetpointHoldExpiryTimestampWithParams:(MTRReadParams * _Nullable)params
{
return [self.device readAttributeWithEndpointID:self.endpointID clusterID:@(MTRClusterIDTypeThermostatID) attributeID:@(MTRAttributeIDTypeClusterThermostatAttributeSetpointHoldExpiryTimestampID) params:params];
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
index 3746227a4f9d21..977178243264b7 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.h
@@ -7863,95 +7863,36 @@ MTR_PROVISIONALLY_AVAILABLE
@end
MTR_PROVISIONALLY_AVAILABLE
-@interface MTRThermostatClusterStartPresetsSchedulesEditRequestParams : NSObject
+@interface MTRThermostatClusterAtomicResponseParams : NSObject
-@property (nonatomic, copy) NSNumber * _Nonnull timeoutSeconds MTR_PROVISIONALLY_AVAILABLE;
-/**
- * Controls whether the command is a timed command (using Timed Invoke).
- *
- * If nil (the default value), a regular invoke is done for commands that do
- * not require a timed invoke and a timed invoke with some default timed request
- * timeout is done for commands that require a timed invoke.
- *
- * If not nil, a timed invoke is done, with the provided value used as the timed
- * request timeout. The value should be chosen small enough to provide the
- * desired security properties but large enough that it will allow a round-trip
- * from the sever to the client (for the status response and actual invoke
- * request) within the timeout window.
- *
- */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy) NSNumber * _Nonnull statusCode MTR_PROVISIONALLY_AVAILABLE;
-/**
- * Controls how much time, in seconds, we will allow for the server to process the command.
- *
- * The command will then time out if that much time, plus an allowance for retransmits due to network failures, passes.
- *
- * If nil, the framework will try to select an appropriate timeout value itself.
- */
-@property (nonatomic, copy, nullable) NSNumber * serverSideProcessingTimeout;
-@end
+@property (nonatomic, copy) NSArray * _Nonnull attributeStatus MTR_PROVISIONALLY_AVAILABLE;
-MTR_PROVISIONALLY_AVAILABLE
-@interface MTRThermostatClusterCancelPresetsSchedulesEditRequestParams : NSObject
-/**
- * Controls whether the command is a timed command (using Timed Invoke).
- *
- * If nil (the default value), a regular invoke is done for commands that do
- * not require a timed invoke and a timed invoke with some default timed request
- * timeout is done for commands that require a timed invoke.
- *
- * If not nil, a timed invoke is done, with the provided value used as the timed
- * request timeout. The value should be chosen small enough to provide the
- * desired security properties but large enough that it will allow a round-trip
- * from the sever to the client (for the status response and actual invoke
- * request) within the timeout window.
- *
- */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@property (nonatomic, copy) NSNumber * _Nullable timeout MTR_PROVISIONALLY_AVAILABLE;
/**
- * Controls how much time, in seconds, we will allow for the server to process the command.
+ * Initialize an MTRThermostatClusterAtomicResponseParams with a response-value dictionary
+ * of the sort that MTRDeviceResponseHandler would receive.
*
- * The command will then time out if that much time, plus an allowance for retransmits due to network failures, passes.
+ * Will return nil and hand out an error if the response-value dictionary is not
+ * a command data response or is not the right command response.
*
- * If nil, the framework will try to select an appropriate timeout value itself.
+ * Will return nil and hand out an error if the data response does not match the known
+ * schema for this command.
*/
-@property (nonatomic, copy, nullable) NSNumber * serverSideProcessingTimeout;
+- (nullable instancetype)initWithResponseValue:(NSDictionary *)responseValue
+ error:(NSError * __autoreleasing *)error MTR_PROVISIONALLY_AVAILABLE;
@end
MTR_PROVISIONALLY_AVAILABLE
-@interface MTRThermostatClusterCommitPresetsSchedulesRequestParams : NSObject
-/**
- * Controls whether the command is a timed command (using Timed Invoke).
- *
- * If nil (the default value), a regular invoke is done for commands that do
- * not require a timed invoke and a timed invoke with some default timed request
- * timeout is done for commands that require a timed invoke.
- *
- * If not nil, a timed invoke is done, with the provided value used as the timed
- * request timeout. The value should be chosen small enough to provide the
- * desired security properties but large enough that it will allow a round-trip
- * from the sever to the client (for the status response and actual invoke
- * request) within the timeout window.
- *
- */
-@property (nonatomic, copy, nullable) NSNumber * timedInvokeTimeoutMs;
+@interface MTRThermostatClusterAtomicRequestParams : NSObject
-/**
- * Controls how much time, in seconds, we will allow for the server to process the command.
- *
- * The command will then time out if that much time, plus an allowance for retransmits due to network failures, passes.
- *
- * If nil, the framework will try to select an appropriate timeout value itself.
- */
-@property (nonatomic, copy, nullable) NSNumber * serverSideProcessingTimeout;
-@end
+@property (nonatomic, copy) NSNumber * _Nonnull requestType MTR_PROVISIONALLY_AVAILABLE;
-MTR_PROVISIONALLY_AVAILABLE
-@interface MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams : NSObject
+@property (nonatomic, copy) NSArray * _Nonnull attributeRequests MTR_PROVISIONALLY_AVAILABLE;
-@property (nonatomic, copy) NSNumber * _Nonnull temperatureSetpointHoldPolicy MTR_PROVISIONALLY_AVAILABLE;
+@property (nonatomic, copy) NSNumber * _Nullable timeout MTR_PROVISIONALLY_AVAILABLE;
/**
* Controls whether the command is a timed command (using Timed Invoke).
*
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
index 8d18518670e808..539e1d30ce969e 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloadsObjc.mm
@@ -22425,237 +22425,135 @@ - (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader
}
@end
-@implementation MTRThermostatClusterStartPresetsSchedulesEditRequestParams
+@implementation MTRThermostatClusterAtomicResponseParams
- (instancetype)init
{
if (self = [super init]) {
- _timeoutSeconds = @(0);
- _timedInvokeTimeoutMs = nil;
- _serverSideProcessingTimeout = nil;
+ _statusCode = @(0);
+
+ _attributeStatus = [NSArray array];
+
+ _timeout = nil;
}
return self;
}
- (id)copyWithZone:(NSZone * _Nullable)zone;
{
- auto other = [[MTRThermostatClusterStartPresetsSchedulesEditRequestParams alloc] init];
+ auto other = [[MTRThermostatClusterAtomicResponseParams alloc] init];
- other.timeoutSeconds = self.timeoutSeconds;
- other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
- other.serverSideProcessingTimeout = self.serverSideProcessingTimeout;
+ other.statusCode = self.statusCode;
+ other.attributeStatus = self.attributeStatus;
+ other.timeout = self.timeout;
return other;
}
- (NSString *)description
{
- NSString * descriptionString = [NSString stringWithFormat:@"<%@: timeoutSeconds:%@; >", NSStringFromClass([self class]), _timeoutSeconds];
+ NSString * descriptionString = [NSString stringWithFormat:@"<%@: statusCode:%@; attributeStatus:%@; timeout:%@; >", NSStringFromClass([self class]), _statusCode, _attributeStatus, _timeout];
return descriptionString;
}
-@end
-
-@implementation MTRThermostatClusterStartPresetsSchedulesEditRequestParams (InternalMethods)
-
-- (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader
+- (nullable instancetype)initWithResponseValue:(NSDictionary *)responseValue
+ error:(NSError * __autoreleasing *)error
{
- chip::app::Clusters::Thermostat::Commands::StartPresetsSchedulesEditRequest::Type encodableStruct;
- ListFreer listFreer;
- {
- encodableStruct.timeoutSeconds = self.timeoutSeconds.unsignedShortValue;
+ if (!(self = [super init])) {
+ return nil;
}
- auto buffer = chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSizeWithoutReserve, 0);
+ using DecodableType = chip::app::Clusters::Thermostat::Commands::AtomicResponse::DecodableType;
+ chip::System::PacketBufferHandle buffer = [MTRBaseDevice _responseDataForCommand:responseValue
+ clusterID:DecodableType::GetClusterId()
+ commandID:DecodableType::GetCommandId()
+ error:error];
if (buffer.IsNull()) {
- return CHIP_ERROR_NO_MEMORY;
- }
-
- chip::System::PacketBufferTLVWriter writer;
- // Commands never need chained buffers, since they cannot be chunked.
- writer.Init(std::move(buffer), /* useChainedBuffers = */ false);
-
- ReturnErrorOnFailure(chip::app::DataModel::Encode(writer, chip::TLV::AnonymousTag(), encodableStruct));
-
- ReturnErrorOnFailure(writer.Finalize(&buffer));
-
- reader.Init(std::move(buffer));
- return reader.Next(chip::TLV::kTLVType_Structure, chip::TLV::AnonymousTag());
-}
-
-- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error
-{
- chip::System::PacketBufferTLVReader reader;
- CHIP_ERROR err = [self _encodeToTLVReader:reader];
- if (err != CHIP_NO_ERROR) {
- if (error) {
- *error = [MTRError errorForCHIPErrorCode:err];
- }
return nil;
}
- auto decodedObj = MTRDecodeDataValueDictionaryFromCHIPTLV(&reader);
- if (decodedObj == nil) {
- if (error) {
- *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE];
+ chip::TLV::TLVReader reader;
+ reader.Init(buffer->Start(), buffer->DataLength());
+
+ CHIP_ERROR err = reader.Next(chip::TLV::AnonymousTag());
+ if (err == CHIP_NO_ERROR) {
+ DecodableType decodedStruct;
+ err = chip::app::DataModel::Decode(reader, decodedStruct);
+ if (err == CHIP_NO_ERROR) {
+ err = [self _setFieldsFromDecodableStruct:decodedStruct];
+ if (err == CHIP_NO_ERROR) {
+ return self;
+ }
}
}
- return decodedObj;
-}
-@end
-@implementation MTRThermostatClusterCancelPresetsSchedulesEditRequestParams
-- (instancetype)init
-{
- if (self = [super init]) {
- _timedInvokeTimeoutMs = nil;
- _serverSideProcessingTimeout = nil;
+ NSString * errorStr = [NSString stringWithFormat:@"Command payload decoding failed: %s", err.AsString()];
+ MTR_LOG_ERROR("%s", errorStr.UTF8String);
+ if (error != nil) {
+ NSDictionary * userInfo = @{ NSLocalizedFailureReasonErrorKey : NSLocalizedString(errorStr, nil) };
+ *error = [NSError errorWithDomain:MTRErrorDomain code:MTRErrorCodeSchemaMismatch userInfo:userInfo];
}
- return self;
-}
-
-- (id)copyWithZone:(NSZone * _Nullable)zone;
-{
- auto other = [[MTRThermostatClusterCancelPresetsSchedulesEditRequestParams alloc] init];
-
- other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
- other.serverSideProcessingTimeout = self.serverSideProcessingTimeout;
-
- return other;
-}
-
-- (NSString *)description
-{
- NSString * descriptionString = [NSString stringWithFormat:@"<%@: >", NSStringFromClass([self class])];
- return descriptionString;
+ return nil;
}
@end
-@implementation MTRThermostatClusterCancelPresetsSchedulesEditRequestParams (InternalMethods)
+@implementation MTRThermostatClusterAtomicResponseParams (InternalMethods)
-- (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader
+- (CHIP_ERROR)_setFieldsFromDecodableStruct:(const chip::app::Clusters::Thermostat::Commands::AtomicResponse::DecodableType &)decodableStruct
{
- chip::app::Clusters::Thermostat::Commands::CancelPresetsSchedulesEditRequest::Type encodableStruct;
- ListFreer listFreer;
-
- auto buffer = chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSizeWithoutReserve, 0);
- if (buffer.IsNull()) {
- return CHIP_ERROR_NO_MEMORY;
+ {
+ self.statusCode = [NSNumber numberWithUnsignedChar:decodableStruct.statusCode];
}
-
- chip::System::PacketBufferTLVWriter writer;
- // Commands never need chained buffers, since they cannot be chunked.
- writer.Init(std::move(buffer), /* useChainedBuffers = */ false);
-
- ReturnErrorOnFailure(chip::app::DataModel::Encode(writer, chip::TLV::AnonymousTag(), encodableStruct));
-
- ReturnErrorOnFailure(writer.Finalize(&buffer));
-
- reader.Init(std::move(buffer));
- return reader.Next(chip::TLV::kTLVType_Structure, chip::TLV::AnonymousTag());
-}
-
-- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error
-{
- chip::System::PacketBufferTLVReader reader;
- CHIP_ERROR err = [self _encodeToTLVReader:reader];
- if (err != CHIP_NO_ERROR) {
- if (error) {
- *error = [MTRError errorForCHIPErrorCode:err];
+ {
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = decodableStruct.attributeStatus.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ MTRThermostatClusterAtomicAttributeStatusStruct * newElement_0;
+ newElement_0 = [MTRThermostatClusterAtomicAttributeStatusStruct new];
+ if (entry_0.attributeID.HasValue()) {
+ newElement_0.attributeID = [NSNumber numberWithUnsignedInt:entry_0.attributeID.Value()];
+ } else {
+ newElement_0.attributeID = nil;
+ }
+ if (entry_0.statusCode.HasValue()) {
+ newElement_0.statusCode = [NSNumber numberWithUnsignedChar:entry_0.statusCode.Value()];
+ } else {
+ newElement_0.statusCode = nil;
+ }
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ return err;
+ }
+ self.attributeStatus = array_0;
}
- return nil;
}
-
- auto decodedObj = MTRDecodeDataValueDictionaryFromCHIPTLV(&reader);
- if (decodedObj == nil) {
- if (error) {
- *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE];
+ {
+ if (decodableStruct.timeout.HasValue()) {
+ self.timeout = [NSNumber numberWithUnsignedShort:decodableStruct.timeout.Value()];
+ } else {
+ self.timeout = nil;
}
}
- return decodedObj;
+ return CHIP_NO_ERROR;
}
+
@end
-@implementation MTRThermostatClusterCommitPresetsSchedulesRequestParams
+@implementation MTRThermostatClusterAtomicRequestParams
- (instancetype)init
{
if (self = [super init]) {
- _timedInvokeTimeoutMs = nil;
- _serverSideProcessingTimeout = nil;
- }
- return self;
-}
-
-- (id)copyWithZone:(NSZone * _Nullable)zone;
-{
- auto other = [[MTRThermostatClusterCommitPresetsSchedulesRequestParams alloc] init];
-
- other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
- other.serverSideProcessingTimeout = self.serverSideProcessingTimeout;
-
- return other;
-}
-
-- (NSString *)description
-{
- NSString * descriptionString = [NSString stringWithFormat:@"<%@: >", NSStringFromClass([self class])];
- return descriptionString;
-}
-
-@end
-
-@implementation MTRThermostatClusterCommitPresetsSchedulesRequestParams (InternalMethods)
-
-- (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader
-{
- chip::app::Clusters::Thermostat::Commands::CommitPresetsSchedulesRequest::Type encodableStruct;
- ListFreer listFreer;
-
- auto buffer = chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSizeWithoutReserve, 0);
- if (buffer.IsNull()) {
- return CHIP_ERROR_NO_MEMORY;
- }
-
- chip::System::PacketBufferTLVWriter writer;
- // Commands never need chained buffers, since they cannot be chunked.
- writer.Init(std::move(buffer), /* useChainedBuffers = */ false);
- ReturnErrorOnFailure(chip::app::DataModel::Encode(writer, chip::TLV::AnonymousTag(), encodableStruct));
-
- ReturnErrorOnFailure(writer.Finalize(&buffer));
-
- reader.Init(std::move(buffer));
- return reader.Next(chip::TLV::kTLVType_Structure, chip::TLV::AnonymousTag());
-}
-
-- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error
-{
- chip::System::PacketBufferTLVReader reader;
- CHIP_ERROR err = [self _encodeToTLVReader:reader];
- if (err != CHIP_NO_ERROR) {
- if (error) {
- *error = [MTRError errorForCHIPErrorCode:err];
- }
- return nil;
- }
-
- auto decodedObj = MTRDecodeDataValueDictionaryFromCHIPTLV(&reader);
- if (decodedObj == nil) {
- if (error) {
- *error = [MTRError errorForCHIPErrorCode:CHIP_ERROR_INCORRECT_STATE];
- }
- }
- return decodedObj;
-}
-@end
+ _requestType = @(0);
-@implementation MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams
-- (instancetype)init
-{
- if (self = [super init]) {
+ _attributeRequests = [NSArray array];
- _temperatureSetpointHoldPolicy = @(0);
+ _timeout = nil;
_timedInvokeTimeoutMs = nil;
_serverSideProcessingTimeout = nil;
}
@@ -22664,9 +22562,11 @@ - (instancetype)init
- (id)copyWithZone:(NSZone * _Nullable)zone;
{
- auto other = [[MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams alloc] init];
+ auto other = [[MTRThermostatClusterAtomicRequestParams alloc] init];
- other.temperatureSetpointHoldPolicy = self.temperatureSetpointHoldPolicy;
+ other.requestType = self.requestType;
+ other.attributeRequests = self.attributeRequests;
+ other.timeout = self.timeout;
other.timedInvokeTimeoutMs = self.timedInvokeTimeoutMs;
other.serverSideProcessingTimeout = self.serverSideProcessingTimeout;
@@ -22675,20 +22575,50 @@ - (id)copyWithZone:(NSZone * _Nullable)zone;
- (NSString *)description
{
- NSString * descriptionString = [NSString stringWithFormat:@"<%@: temperatureSetpointHoldPolicy:%@; >", NSStringFromClass([self class]), _temperatureSetpointHoldPolicy];
+ NSString * descriptionString = [NSString stringWithFormat:@"<%@: requestType:%@; attributeRequests:%@; timeout:%@; >", NSStringFromClass([self class]), _requestType, _attributeRequests, _timeout];
return descriptionString;
}
@end
-@implementation MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams (InternalMethods)
+@implementation MTRThermostatClusterAtomicRequestParams (InternalMethods)
- (CHIP_ERROR)_encodeToTLVReader:(chip::System::PacketBufferTLVReader &)reader
{
- chip::app::Clusters::Thermostat::Commands::SetTemperatureSetpointHoldPolicy::Type encodableStruct;
+ chip::app::Clusters::Thermostat::Commands::AtomicRequest::Type encodableStruct;
ListFreer listFreer;
{
- encodableStruct.temperatureSetpointHoldPolicy = static_cast>(self.temperatureSetpointHoldPolicy.unsignedCharValue);
+ encodableStruct.requestType = static_cast>(self.requestType.unsignedCharValue);
+ }
+ {
+ {
+ using ListType_0 = std::remove_reference_t;
+ using ListMemberType_0 = ListMemberTypeGetter::Type;
+ if (self.attributeRequests.count != 0) {
+ auto * listHolder_0 = new ListHolder(self.attributeRequests.count);
+ if (listHolder_0 == nullptr || listHolder_0->mList == nullptr) {
+ return CHIP_ERROR_INVALID_ARGUMENT;
+ }
+ listFreer.add(listHolder_0);
+ for (size_t i_0 = 0; i_0 < self.attributeRequests.count; ++i_0) {
+ if (![self.attributeRequests[i_0] isKindOfClass:[NSNumber class]]) {
+ // Wrong kind of value.
+ return CHIP_ERROR_INVALID_ARGUMENT;
+ }
+ auto element_0 = (NSNumber *) self.attributeRequests[i_0];
+ listHolder_0->mList[i_0] = element_0.unsignedIntValue;
+ }
+ encodableStruct.attributeRequests = ListType_0(listHolder_0->mList, self.attributeRequests.count);
+ } else {
+ encodableStruct.attributeRequests = ListType_0();
+ }
+ }
+ }
+ {
+ if (self.timeout != nil) {
+ auto & definedValue_0 = encodableStruct.timeout.Emplace();
+ definedValue_0 = self.timeout.unsignedShortValue;
+ }
}
auto buffer = chip::System::PacketBufferHandle::New(chip::System::PacketBuffer::kMaxSizeWithoutReserve, 0);
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h
index 67c37229a00dcc..9069160ba49265 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCommandPayloads_Internal.h
@@ -1474,25 +1474,13 @@ NS_ASSUME_NONNULL_BEGIN
@end
-@interface MTRThermostatClusterStartPresetsSchedulesEditRequestParams (InternalMethods)
+@interface MTRThermostatClusterAtomicResponseParams (InternalMethods)
-- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error;
-
-@end
-
-@interface MTRThermostatClusterCancelPresetsSchedulesEditRequestParams (InternalMethods)
-
-- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error;
-
-@end
-
-@interface MTRThermostatClusterCommitPresetsSchedulesRequestParams (InternalMethods)
-
-- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error;
+- (CHIP_ERROR)_setFieldsFromDecodableStruct:(const chip::app::Clusters::Thermostat::Commands::AtomicResponse::DecodableType &)decodableStruct;
@end
-@interface MTRThermostatClusterSetTemperatureSetpointHoldPolicyParams (InternalMethods)
+@interface MTRThermostatClusterAtomicRequestParams (InternalMethods)
- (NSDictionary * _Nullable)_encodeAsDataValue:(NSError * __autoreleasing *)error;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
index 2ce1e1707d2987..002c8c0471c336 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.h
@@ -1670,6 +1670,12 @@ MTR_PROVISIONALLY_AVAILABLE
@property (nonatomic, copy) NSNumber * _Nullable builtIn MTR_PROVISIONALLY_AVAILABLE;
@end
+MTR_PROVISIONALLY_AVAILABLE
+@interface MTRThermostatClusterAtomicAttributeStatusStruct : NSObject
+@property (nonatomic, copy) NSNumber * _Nullable attributeID MTR_PROVISIONALLY_AVAILABLE;
+@property (nonatomic, copy) NSNumber * _Nullable statusCode MTR_PROVISIONALLY_AVAILABLE;
+@end
+
MTR_PROVISIONALLY_AVAILABLE
@interface MTRThermostatClusterPresetStruct : NSObject
@property (nonatomic, copy) NSData * _Nullable presetHandle MTR_PROVISIONALLY_AVAILABLE;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
index 5b0eacb0ff3edb..dda4a999ee7d99 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRStructsObjc.mm
@@ -7058,6 +7058,36 @@ - (NSString *)description
@end
+@implementation MTRThermostatClusterAtomicAttributeStatusStruct
+- (instancetype)init
+{
+ if (self = [super init]) {
+
+ _attributeID = nil;
+
+ _statusCode = nil;
+ }
+ return self;
+}
+
+- (id)copyWithZone:(NSZone * _Nullable)zone
+{
+ auto other = [[MTRThermostatClusterAtomicAttributeStatusStruct alloc] init];
+
+ other.attributeID = self.attributeID;
+ other.statusCode = self.statusCode;
+
+ return other;
+}
+
+- (NSString *)description
+{
+ NSString * descriptionString = [NSString stringWithFormat:@"<%@: attributeID:%@; statusCode:%@; >", NSStringFromClass([self class]), _attributeID, _statusCode];
+ return descriptionString;
+}
+
+@end
+
@implementation MTRThermostatClusterPresetStruct
- (instancetype)init
{
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
index 0c974b62593860..7a81f296f9d926 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.cpp
@@ -23192,9 +23192,10 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a
namespace Occupancy {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value)
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+ chip::BitMask * value)
{
- using Traits = NumericAttributeTraits;
+ using Traits = NumericAttributeTraits>;
Traits::StorageType temp;
uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
Protocols::InteractionModel::Status status =
@@ -23208,9 +23209,10 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val
return status;
}
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty)
+Protocols::InteractionModel::Status
+Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty)
{
- using Traits = NumericAttributeTraits;
+ using Traits = NumericAttributeTraits>;
if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
{
return Protocols::InteractionModel::Status::ConstraintError;
@@ -23221,9 +23223,10 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value
return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty);
}
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+ chip::BitMask value)
{
- using Traits = NumericAttributeTraits;
+ using Traits = NumericAttributeTraits>;
if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
{
return Protocols::InteractionModel::Status::ConstraintError;
@@ -23514,9 +23517,10 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value
namespace HVACSystemTypeConfiguration {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value)
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+ chip::BitMask * value)
{
- using Traits = NumericAttributeTraits;
+ using Traits = NumericAttributeTraits>;
Traits::StorageType temp;
uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
Protocols::InteractionModel::Status status =
@@ -23530,9 +23534,11 @@ Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * val
return status;
}
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+ chip::BitMask value,
+ MarkAttributeDirty markDirty)
{
- using Traits = NumericAttributeTraits;
+ using Traits = NumericAttributeTraits>;
if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
{
return Protocols::InteractionModel::Status::ConstraintError;
@@ -23543,9 +23549,10 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value
return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty);
}
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value)
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+ chip::BitMask value)
{
- using Traits = NumericAttributeTraits;
+ using Traits = NumericAttributeTraits>;
if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
{
return Protocols::InteractionModel::Status::ConstraintError;
@@ -23632,7 +23639,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty);
}
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value)
@@ -23645,7 +23652,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE);
}
} // namespace OccupiedCoolingSetpoint
@@ -23678,7 +23685,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty);
}
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value)
@@ -23691,7 +23698,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE);
}
} // namespace OccupiedHeatingSetpoint
@@ -23724,7 +23731,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty);
}
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value)
@@ -23737,7 +23744,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE);
}
} // namespace UnoccupiedCoolingSetpoint
@@ -23770,7 +23777,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty);
}
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value)
@@ -23783,7 +23790,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE);
}
} // namespace UnoccupiedHeatingSetpoint
@@ -23816,7 +23823,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty);
}
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value)
@@ -23829,7 +23836,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE);
}
} // namespace MinHeatSetpointLimit
@@ -23862,7 +23869,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty);
}
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value)
@@ -23875,7 +23882,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE);
}
} // namespace MaxHeatSetpointLimit
@@ -23908,7 +23915,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty);
}
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value)
@@ -23921,7 +23928,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE);
}
} // namespace MinCoolSetpointLimit
@@ -23954,7 +23961,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE, markDirty);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE, markDirty);
}
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value)
@@ -23967,7 +23974,7 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value
Traits::StorageType storageValue;
Traits::WorkingToStorage(value, storageValue);
uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_INT16S_ATTRIBUTE_TYPE);
+ return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_TEMPERATURE_ATTRIBUTE_TYPE);
}
} // namespace MaxCoolSetpointLimit
@@ -26162,102 +26169,6 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a
} // namespace ActiveScheduleHandle
-namespace PresetsSchedulesEditable {
-
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value)
-{
- using Traits = NumericAttributeTraits;
- Traits::StorageType temp;
- uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
- Protocols::InteractionModel::Status status =
- emberAfReadAttribute(endpoint, Clusters::Thermostat::Id, Id, readable, sizeof(temp));
- VerifyOrReturnError(Protocols::InteractionModel::Status::Success == status, status);
- if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
- {
- return Protocols::InteractionModel::Status::ConstraintError;
- }
- *value = Traits::StorageToWorking(temp);
- return status;
-}
-
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty)
-{
- using Traits = NumericAttributeTraits;
- if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
- {
- return Protocols::InteractionModel::Status::ConstraintError;
- }
- Traits::StorageType storageValue;
- Traits::WorkingToStorage(value, storageValue);
- uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE, markDirty);
-}
-
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value)
-{
- using Traits = NumericAttributeTraits;
- if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
- {
- return Protocols::InteractionModel::Status::ConstraintError;
- }
- Traits::StorageType storageValue;
- Traits::WorkingToStorage(value, storageValue);
- uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BOOLEAN_ATTRIBUTE_TYPE);
-}
-
-} // namespace PresetsSchedulesEditable
-
-namespace TemperatureSetpointHoldPolicy {
-
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
- chip::BitMask * value)
-{
- using Traits = NumericAttributeTraits>;
- Traits::StorageType temp;
- uint8_t * readable = Traits::ToAttributeStoreRepresentation(temp);
- Protocols::InteractionModel::Status status =
- emberAfReadAttribute(endpoint, Clusters::Thermostat::Id, Id, readable, sizeof(temp));
- VerifyOrReturnError(Protocols::InteractionModel::Status::Success == status, status);
- if (!Traits::CanRepresentValue(/* isNullable = */ false, temp))
- {
- return Protocols::InteractionModel::Status::ConstraintError;
- }
- *value = Traits::StorageToWorking(temp);
- return status;
-}
-
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
- chip::BitMask value,
- MarkAttributeDirty markDirty)
-{
- using Traits = NumericAttributeTraits>;
- if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
- {
- return Protocols::InteractionModel::Status::ConstraintError;
- }
- Traits::StorageType storageValue;
- Traits::WorkingToStorage(value, storageValue);
- uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE, markDirty);
-}
-
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
- chip::BitMask value)
-{
- using Traits = NumericAttributeTraits>;
- if (!Traits::CanRepresentValue(/* isNullable = */ false, value))
- {
- return Protocols::InteractionModel::Status::ConstraintError;
- }
- Traits::StorageType storageValue;
- Traits::WorkingToStorage(value, storageValue);
- uint8_t * writable = Traits::ToAttributeStoreRepresentation(storageValue);
- return emberAfWriteAttribute(endpoint, Clusters::Thermostat::Id, Id, writable, ZCL_BITMAP8_ATTRIBUTE_TYPE);
-}
-
-} // namespace TemperatureSetpointHoldPolicy
-
namespace SetpointHoldExpiryTimestamp {
Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value)
diff --git a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
index 45b29d719e47eb..d52d593369f80a 100644
--- a/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
+++ b/zzz_generated/app-common/app-common/zap-generated/attributes/Accessors.h
@@ -3665,9 +3665,12 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a
} // namespace OutdoorTemperature
namespace Occupancy {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // bitmap8
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value);
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty);
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
+ chip::BitMask * value); // OccupancyBitmap
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+ chip::BitMask value);
+Protocols::InteractionModel::Status
+Set(chip::EndpointId endpoint, chip::BitMask value, MarkAttributeDirty markDirty);
} // namespace Occupancy
namespace AbsMinHeatSetpointLimit {
@@ -3707,9 +3710,14 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value
} // namespace PIHeatingDemand
namespace HVACSystemTypeConfiguration {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, uint8_t * value); // bitmap8
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value);
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint8_t value, MarkAttributeDirty markDirty);
+Protocols::InteractionModel::Status
+Get(chip::EndpointId endpoint,
+ chip::BitMask * value); // HVACSystemTypeBitmap
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+ chip::BitMask value);
+Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
+ chip::BitMask value,
+ MarkAttributeDirty markDirty);
} // namespace HVACSystemTypeConfiguration
namespace LocalTemperatureCalibration {
@@ -3719,49 +3727,49 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int8_t value,
} // namespace LocalTemperatureCalibration
namespace OccupiedCoolingSetpoint {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value);
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty);
} // namespace OccupiedCoolingSetpoint
namespace OccupiedHeatingSetpoint {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value);
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty);
} // namespace OccupiedHeatingSetpoint
namespace UnoccupiedCoolingSetpoint {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value);
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty);
} // namespace UnoccupiedCoolingSetpoint
namespace UnoccupiedHeatingSetpoint {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value);
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty);
} // namespace UnoccupiedHeatingSetpoint
namespace MinHeatSetpointLimit {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value);
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty);
} // namespace MinHeatSetpointLimit
namespace MaxHeatSetpointLimit {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value);
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty);
} // namespace MaxHeatSetpointLimit
namespace MinCoolSetpointLimit {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value);
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty);
} // namespace MinCoolSetpointLimit
namespace MaxCoolSetpointLimit {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // int16s
+Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, int16_t * value); // temperature
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value);
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, int16_t value, MarkAttributeDirty markDirty);
} // namespace MaxCoolSetpointLimit
@@ -4087,23 +4095,6 @@ Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, const chip::a
MarkAttributeDirty markDirty);
} // namespace ActiveScheduleHandle
-namespace PresetsSchedulesEditable {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, bool * value); // boolean
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value);
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, bool value, MarkAttributeDirty markDirty);
-} // namespace PresetsSchedulesEditable
-
-namespace TemperatureSetpointHoldPolicy {
-Protocols::InteractionModel::Status Get(chip::EndpointId endpoint,
- chip::BitMask *
- value); // TemperatureSetpointHoldPolicyBitmap
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
- chip::BitMask value);
-Protocols::InteractionModel::Status Set(chip::EndpointId endpoint,
- chip::BitMask value,
- MarkAttributeDirty markDirty);
-} // namespace TemperatureSetpointHoldPolicy
-
namespace SetpointHoldExpiryTimestamp {
Protocols::InteractionModel::Status Get(chip::EndpointId endpoint, DataModel::Nullable & value); // epoch_s
Protocols::InteractionModel::Status Set(chip::EndpointId endpoint, uint32_t value);
diff --git a/zzz_generated/app-common/app-common/zap-generated/callback.h b/zzz_generated/app-common/app-common/zap-generated/callback.h
index f1aa9705d7c8c3..7095622e698e75 100644
--- a/zzz_generated/app-common/app-common/zap-generated/callback.h
+++ b/zzz_generated/app-common/app-common/zap-generated/callback.h
@@ -6343,29 +6343,11 @@ bool emberAfThermostatClusterSetActivePresetRequestCallback(
chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
const chip::app::Clusters::Thermostat::Commands::SetActivePresetRequest::DecodableType & commandData);
/**
- * @brief Thermostat Cluster StartPresetsSchedulesEditRequest Command callback (from client)
+ * @brief Thermostat Cluster AtomicRequest Command callback (from client)
*/
-bool emberAfThermostatClusterStartPresetsSchedulesEditRequestCallback(
+bool emberAfThermostatClusterAtomicRequestCallback(
chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
- const chip::app::Clusters::Thermostat::Commands::StartPresetsSchedulesEditRequest::DecodableType & commandData);
-/**
- * @brief Thermostat Cluster CancelPresetsSchedulesEditRequest Command callback (from client)
- */
-bool emberAfThermostatClusterCancelPresetsSchedulesEditRequestCallback(
- chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
- const chip::app::Clusters::Thermostat::Commands::CancelPresetsSchedulesEditRequest::DecodableType & commandData);
-/**
- * @brief Thermostat Cluster CommitPresetsSchedulesRequest Command callback (from client)
- */
-bool emberAfThermostatClusterCommitPresetsSchedulesRequestCallback(
- chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
- const chip::app::Clusters::Thermostat::Commands::CommitPresetsSchedulesRequest::DecodableType & commandData);
-/**
- * @brief Thermostat Cluster SetTemperatureSetpointHoldPolicy Command callback (from client)
- */
-bool emberAfThermostatClusterSetTemperatureSetpointHoldPolicyCallback(
- chip::app::CommandHandler * commandObj, const chip::app::ConcreteCommandPath & commandPath,
- const chip::app::Clusters::Thermostat::Commands::SetTemperatureSetpointHoldPolicy::DecodableType & commandData);
+ const chip::app::Clusters::Thermostat::Commands::AtomicRequest::DecodableType & commandData);
/**
* @brief Fan Control Cluster Step Command callback (from client)
*/
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
index af96e92e1dc3a7..d183450ff74606 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums-check.h
@@ -2674,6 +2674,19 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(Thermostat::ACTypeEnum
return EnumType::kUnknownEnumValue;
}
}
+static auto __attribute__((unused)) EnsureKnownEnumValue(Thermostat::AtomicRequestTypeEnum val)
+{
+ using EnumType = Thermostat::AtomicRequestTypeEnum;
+ switch (val)
+ {
+ case EnumType::kBeginWrite:
+ case EnumType::kCommitWrite:
+ case EnumType::kRollbackWrite:
+ return val;
+ default:
+ return EnumType::kUnknownEnumValue;
+ }
+}
static auto __attribute__((unused)) EnsureKnownEnumValue(Thermostat::ControlSequenceOfOperationEnum val)
{
using EnumType = Thermostat::ControlSequenceOfOperationEnum;
@@ -2695,12 +2708,12 @@ static auto __attribute__((unused)) EnsureKnownEnumValue(Thermostat::PresetScena
using EnumType = Thermostat::PresetScenarioEnum;
switch (val)
{
- case EnumType::kUnspecified:
case EnumType::kOccupied:
case EnumType::kUnoccupied:
case EnumType::kSleep:
case EnumType::kWake:
case EnumType::kVacation:
+ case EnumType::kGoingToSleep:
case EnumType::kUserDefined:
return val;
default:
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
index 8a15f1f0b1bac1..ec1152f5d24dd5 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-enums.h
@@ -3945,6 +3945,19 @@ enum class ACTypeEnum : uint8_t
kUnknownEnumValue = 5,
};
+// Enum for AtomicRequestTypeEnum
+enum class AtomicRequestTypeEnum : uint8_t
+{
+ kBeginWrite = 0x00,
+ kCommitWrite = 0x01,
+ kRollbackWrite = 0x02,
+ // All received enum values that are not listed above will be mapped
+ // to kUnknownEnumValue. This is a helper enum value that should only
+ // be used by code to process how it handles receiving and unknown
+ // enum value. This specific should never be transmitted.
+ kUnknownEnumValue = 3,
+};
+
// Enum for ControlSequenceOfOperationEnum
enum class ControlSequenceOfOperationEnum : uint8_t
{
@@ -3964,18 +3977,18 @@ enum class ControlSequenceOfOperationEnum : uint8_t
// Enum for PresetScenarioEnum
enum class PresetScenarioEnum : uint8_t
{
- kUnspecified = 0x00,
- kOccupied = 0x01,
- kUnoccupied = 0x02,
- kSleep = 0x03,
- kWake = 0x04,
- kVacation = 0x05,
- kUserDefined = 0x06,
+ kOccupied = 0x01,
+ kUnoccupied = 0x02,
+ kSleep = 0x03,
+ kWake = 0x04,
+ kVacation = 0x05,
+ kGoingToSleep = 0x06,
+ kUserDefined = 0xFE,
// All received enum values that are not listed above will be mapped
// to kUnknownEnumValue. This is a helper enum value that should only
// be used by code to process how it handles receiving and unknown
// enum value. This specific should never be transmitted.
- kUnknownEnumValue = 7,
+ kUnknownEnumValue = 0,
};
// Enum for SetpointChangeSourceEnum
@@ -4087,7 +4100,6 @@ enum class Feature : uint32_t
kLocalTemperatureNotExposed = 0x40,
kMatterScheduleConfiguration = 0x80,
kPresets = 0x100,
- kSetpoints = 0x200,
};
// Bitmap for HVACSystemTypeBitmap
@@ -4099,6 +4111,12 @@ enum class HVACSystemTypeBitmap : uint8_t
kHeatingUsesFuel = 0x20,
};
+// Bitmap for OccupancyBitmap
+enum class OccupancyBitmap : uint8_t
+{
+ kOccupied = 0x1,
+};
+
// Bitmap for PresetTypeFeaturesBitmap
enum class PresetTypeFeaturesBitmap : uint16_t
{
@@ -4162,13 +4180,6 @@ enum class ScheduleTypeFeaturesBitmap : uint16_t
kSupportsNames = 0x4,
kSupportsOff = 0x8,
};
-
-// Bitmap for TemperatureSetpointHoldPolicyBitmap
-enum class TemperatureSetpointHoldPolicyBitmap : uint8_t
-{
- kHoldDurationElapsed = 0x1,
- kHoldDurationElapsedOrPresetChanged = 0x2,
-};
} // namespace Thermostat
namespace FanControl {
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
index 2a3e9856803f68..d28337a26c582b 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.cpp
@@ -20819,6 +20819,47 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
} // namespace ScheduleStruct
+namespace AtomicAttributeStatusStruct {
+CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
+{
+ DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
+ encoder.Encode(to_underlying(Fields::kAttributeID), attributeID);
+ encoder.Encode(to_underlying(Fields::kStatusCode), statusCode);
+ return encoder.Finalize();
+}
+
+CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
+{
+ detail::StructDecodeIterator __iterator(reader);
+ while (true)
+ {
+ auto __element = __iterator.Next();
+ if (std::holds_alternative(__element))
+ {
+ return std::get(__element);
+ }
+
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ const uint8_t __context_tag = std::get(__element);
+
+ if (__context_tag == to_underlying(Fields::kAttributeID))
+ {
+ err = DataModel::Decode(reader, attributeID);
+ }
+ else if (__context_tag == to_underlying(Fields::kStatusCode))
+ {
+ err = DataModel::Decode(reader, statusCode);
+ }
+ else
+ {
+ }
+
+ ReturnErrorOnFailure(err);
+ }
+}
+
+} // namespace AtomicAttributeStatusStruct
+
namespace PresetStruct {
CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
{
@@ -21284,11 +21325,13 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
}
}
} // namespace SetActivePresetRequest.
-namespace StartPresetsSchedulesEditRequest {
+namespace AtomicResponse {
CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
{
DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
- encoder.Encode(to_underlying(Fields::kTimeoutSeconds), timeoutSeconds);
+ encoder.Encode(to_underlying(Fields::kStatusCode), statusCode);
+ encoder.Encode(to_underlying(Fields::kAttributeStatus), attributeStatus);
+ encoder.Encode(to_underlying(Fields::kTimeout), timeout);
return encoder.Finalize();
}
@@ -21306,63 +21349,33 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
CHIP_ERROR err = CHIP_NO_ERROR;
const uint8_t __context_tag = std::get(__element);
- if (__context_tag == to_underlying(Fields::kTimeoutSeconds))
+ if (__context_tag == to_underlying(Fields::kStatusCode))
{
- err = DataModel::Decode(reader, timeoutSeconds);
+ err = DataModel::Decode(reader, statusCode);
}
- else
+ else if (__context_tag == to_underlying(Fields::kAttributeStatus))
{
+ err = DataModel::Decode(reader, attributeStatus);
}
-
- ReturnErrorOnFailure(err);
- }
-}
-} // namespace StartPresetsSchedulesEditRequest.
-namespace CancelPresetsSchedulesEditRequest {
-CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
-{
- DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
- return encoder.Finalize();
-}
-
-CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
-{
- detail::StructDecodeIterator __iterator(reader);
- while (true)
- {
- auto __element = __iterator.Next();
- if (std::holds_alternative(__element))
+ else if (__context_tag == to_underlying(Fields::kTimeout))
{
- return std::get(__element);
+ err = DataModel::Decode(reader, timeout);
}
- }
-}
-} // namespace CancelPresetsSchedulesEditRequest.
-namespace CommitPresetsSchedulesRequest {
-CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
-{
- DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
- return encoder.Finalize();
-}
-
-CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
-{
- detail::StructDecodeIterator __iterator(reader);
- while (true)
- {
- auto __element = __iterator.Next();
- if (std::holds_alternative(__element))
+ else
{
- return std::get(__element);
}
+
+ ReturnErrorOnFailure(err);
}
}
-} // namespace CommitPresetsSchedulesRequest.
-namespace SetTemperatureSetpointHoldPolicy {
+} // namespace AtomicResponse.
+namespace AtomicRequest {
CHIP_ERROR Type::Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const
{
DataModel::WrappedStructEncoder encoder{ aWriter, aTag };
- encoder.Encode(to_underlying(Fields::kTemperatureSetpointHoldPolicy), temperatureSetpointHoldPolicy);
+ encoder.Encode(to_underlying(Fields::kRequestType), requestType);
+ encoder.Encode(to_underlying(Fields::kAttributeRequests), attributeRequests);
+ encoder.Encode(to_underlying(Fields::kTimeout), timeout);
return encoder.Finalize();
}
@@ -21380,9 +21393,17 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
CHIP_ERROR err = CHIP_NO_ERROR;
const uint8_t __context_tag = std::get(__element);
- if (__context_tag == to_underlying(Fields::kTemperatureSetpointHoldPolicy))
+ if (__context_tag == to_underlying(Fields::kRequestType))
{
- err = DataModel::Decode(reader, temperatureSetpointHoldPolicy);
+ err = DataModel::Decode(reader, requestType);
+ }
+ else if (__context_tag == to_underlying(Fields::kAttributeRequests))
+ {
+ err = DataModel::Decode(reader, attributeRequests);
+ }
+ else if (__context_tag == to_underlying(Fields::kTimeout))
+ {
+ err = DataModel::Decode(reader, timeout);
}
else
{
@@ -21391,7 +21412,7 @@ CHIP_ERROR DecodableType::Decode(TLV::TLVReader & reader)
ReturnErrorOnFailure(err);
}
}
-} // namespace SetTemperatureSetpointHoldPolicy.
+} // namespace AtomicRequest.
} // namespace Commands
namespace Attributes {
@@ -21517,10 +21538,6 @@ CHIP_ERROR TypeInfo::DecodableType::Decode(TLV::TLVReader & reader, const Concre
return DataModel::Decode(reader, presets);
case Attributes::Schedules::TypeInfo::GetAttributeId():
return DataModel::Decode(reader, schedules);
- case Attributes::PresetsSchedulesEditable::TypeInfo::GetAttributeId():
- return DataModel::Decode(reader, presetsSchedulesEditable);
- case Attributes::TemperatureSetpointHoldPolicy::TypeInfo::GetAttributeId():
- return DataModel::Decode(reader, temperatureSetpointHoldPolicy);
case Attributes::SetpointHoldExpiryTimestamp::TypeInfo::GetAttributeId():
return DataModel::Decode(reader, setpointHoldExpiryTimestamp);
case Attributes::GeneratedCommandList::TypeInfo::GetAttributeId():
diff --git a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
index 81be5e1224e81d..21a4633cad5a2e 100644
--- a/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
+++ b/zzz_generated/app-common/app-common/zap-generated/cluster-objects.h
@@ -29176,7 +29176,7 @@ struct Type
Optional name;
Optional presetHandle;
DataModel::List transitions;
- Optional> builtIn;
+ DataModel::Nullable builtIn;
static constexpr bool kIsFabricScoped = false;
@@ -29191,7 +29191,7 @@ struct DecodableType
Optional name;
Optional presetHandle;
DataModel::DecodableList transitions;
- Optional> builtIn;
+ DataModel::Nullable builtIn;
CHIP_ERROR Decode(TLV::TLVReader & reader);
@@ -29199,6 +29199,29 @@ struct DecodableType
};
} // namespace ScheduleStruct
+namespace AtomicAttributeStatusStruct {
+enum class Fields : uint8_t
+{
+ kAttributeID = 0,
+ kStatusCode = 1,
+};
+
+struct Type
+{
+public:
+ Optional attributeID;
+ Optional statusCode;
+
+ CHIP_ERROR Decode(TLV::TLVReader & reader);
+
+ static constexpr bool kIsFabricScoped = false;
+
+ CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
+};
+
+using DecodableType = Type;
+
+} // namespace AtomicAttributeStatusStruct
namespace PresetStruct {
enum class Fields : uint8_t
{
@@ -29345,25 +29368,15 @@ struct Type;
struct DecodableType;
} // namespace SetActivePresetRequest
-namespace StartPresetsSchedulesEditRequest {
-struct Type;
-struct DecodableType;
-} // namespace StartPresetsSchedulesEditRequest
-
-namespace CancelPresetsSchedulesEditRequest {
-struct Type;
-struct DecodableType;
-} // namespace CancelPresetsSchedulesEditRequest
-
-namespace CommitPresetsSchedulesRequest {
+namespace AtomicResponse {
struct Type;
struct DecodableType;
-} // namespace CommitPresetsSchedulesRequest
+} // namespace AtomicResponse
-namespace SetTemperatureSetpointHoldPolicy {
+namespace AtomicRequest {
struct Type;
struct DecodableType;
-} // namespace SetTemperatureSetpointHoldPolicy
+} // namespace AtomicRequest
} // namespace Commands
@@ -29612,77 +29625,24 @@ struct DecodableType
CHIP_ERROR Decode(TLV::TLVReader & reader);
};
}; // namespace SetActivePresetRequest
-namespace StartPresetsSchedulesEditRequest {
-enum class Fields : uint8_t
-{
- kTimeoutSeconds = 0,
-};
-
-struct Type
-{
-public:
- // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
- static constexpr CommandId GetCommandId() { return Commands::StartPresetsSchedulesEditRequest::Id; }
- static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
-
- uint16_t timeoutSeconds = static_cast(0);
-
- CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
-
- using ResponseType = DataModel::NullObjectType;
-
- static constexpr bool MustUseTimedInvoke() { return false; }
-};
-
-struct DecodableType
-{
-public:
- static constexpr CommandId GetCommandId() { return Commands::StartPresetsSchedulesEditRequest::Id; }
- static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
-
- uint16_t timeoutSeconds = static_cast(0);
- CHIP_ERROR Decode(TLV::TLVReader & reader);
-};
-}; // namespace StartPresetsSchedulesEditRequest
-namespace CancelPresetsSchedulesEditRequest {
+namespace AtomicResponse {
enum class Fields : uint8_t
{
+ kStatusCode = 0,
+ kAttributeStatus = 1,
+ kTimeout = 2,
};
struct Type
{
public:
// Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
- static constexpr CommandId GetCommandId() { return Commands::CancelPresetsSchedulesEditRequest::Id; }
- static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
-
- CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
-
- using ResponseType = DataModel::NullObjectType;
-
- static constexpr bool MustUseTimedInvoke() { return false; }
-};
-
-struct DecodableType
-{
-public:
- static constexpr CommandId GetCommandId() { return Commands::CancelPresetsSchedulesEditRequest::Id; }
+ static constexpr CommandId GetCommandId() { return Commands::AtomicResponse::Id; }
static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
- CHIP_ERROR Decode(TLV::TLVReader & reader);
-};
-}; // namespace CancelPresetsSchedulesEditRequest
-namespace CommitPresetsSchedulesRequest {
-enum class Fields : uint8_t
-{
-};
-
-struct Type
-{
-public:
- // Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
- static constexpr CommandId GetCommandId() { return Commands::CommitPresetsSchedulesRequest::Id; }
- static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
+ uint8_t statusCode = static_cast(0);
+ DataModel::List attributeStatus;
+ Optional timeout;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
@@ -29694,31 +29654,37 @@ struct Type
struct DecodableType
{
public:
- static constexpr CommandId GetCommandId() { return Commands::CommitPresetsSchedulesRequest::Id; }
+ static constexpr CommandId GetCommandId() { return Commands::AtomicResponse::Id; }
static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
+ uint8_t statusCode = static_cast(0);
+ DataModel::DecodableList attributeStatus;
+ Optional timeout;
CHIP_ERROR Decode(TLV::TLVReader & reader);
};
-}; // namespace CommitPresetsSchedulesRequest
-namespace SetTemperatureSetpointHoldPolicy {
+}; // namespace AtomicResponse
+namespace AtomicRequest {
enum class Fields : uint8_t
{
- kTemperatureSetpointHoldPolicy = 0,
+ kRequestType = 0,
+ kAttributeRequests = 1,
+ kTimeout = 2,
};
struct Type
{
public:
// Use GetCommandId instead of commandId directly to avoid naming conflict with CommandIdentification in ExecutionOfACommand
- static constexpr CommandId GetCommandId() { return Commands::SetTemperatureSetpointHoldPolicy::Id; }
+ static constexpr CommandId GetCommandId() { return Commands::AtomicRequest::Id; }
static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
- chip::BitMask temperatureSetpointHoldPolicy =
- static_cast>(0);
+ AtomicRequestTypeEnum requestType = static_cast(0);
+ DataModel::List attributeRequests;
+ Optional timeout;
CHIP_ERROR Encode(TLV::TLVWriter & aWriter, TLV::Tag aTag) const;
- using ResponseType = DataModel::NullObjectType;
+ using ResponseType = Clusters::Thermostat::Commands::AtomicResponse::DecodableType;
static constexpr bool MustUseTimedInvoke() { return false; }
};
@@ -29726,14 +29692,15 @@ struct Type
struct DecodableType
{
public:
- static constexpr CommandId GetCommandId() { return Commands::SetTemperatureSetpointHoldPolicy::Id; }
+ static constexpr CommandId GetCommandId() { return Commands::AtomicRequest::Id; }
static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
- chip::BitMask temperatureSetpointHoldPolicy =
- static_cast>(0);
+ AtomicRequestTypeEnum requestType = static_cast(0);
+ DataModel::DecodableList attributeRequests;
+ Optional timeout;
CHIP_ERROR Decode(TLV::TLVReader & reader);
};
-}; // namespace SetTemperatureSetpointHoldPolicy
+}; // namespace AtomicRequest
} // namespace Commands
namespace Attributes {
@@ -29765,9 +29732,9 @@ struct TypeInfo
namespace Occupancy {
struct TypeInfo
{
- using Type = uint8_t;
- using DecodableType = uint8_t;
- using DecodableArgType = uint8_t;
+ using Type = chip::BitMask;
+ using DecodableType = chip::BitMask;
+ using DecodableArgType = chip::BitMask;
static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
static constexpr AttributeId GetAttributeId() { return Attributes::Occupancy::Id; }
@@ -29849,9 +29816,9 @@ struct TypeInfo
namespace HVACSystemTypeConfiguration {
struct TypeInfo
{
- using Type = uint8_t;
- using DecodableType = uint8_t;
- using DecodableArgType = uint8_t;
+ using Type = chip::BitMask;
+ using DecodableType = chip::BitMask;
+ using DecodableArgType = chip::BitMask;
static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
static constexpr AttributeId GetAttributeId() { return Attributes::HVACSystemTypeConfiguration::Id; }
@@ -30456,30 +30423,6 @@ struct TypeInfo
static constexpr bool MustUseTimedWrite() { return false; }
};
} // namespace Schedules
-namespace PresetsSchedulesEditable {
-struct TypeInfo
-{
- using Type = bool;
- using DecodableType = bool;
- using DecodableArgType = bool;
-
- static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
- static constexpr AttributeId GetAttributeId() { return Attributes::PresetsSchedulesEditable::Id; }
- static constexpr bool MustUseTimedWrite() { return false; }
-};
-} // namespace PresetsSchedulesEditable
-namespace TemperatureSetpointHoldPolicy {
-struct TypeInfo
-{
- using Type = chip::BitMask;
- using DecodableType = chip::BitMask;
- using DecodableArgType = chip::BitMask;
-
- static constexpr ClusterId GetClusterId() { return Clusters::Thermostat::Id; }
- static constexpr AttributeId GetAttributeId() { return Attributes::TemperatureSetpointHoldPolicy::Id; }
- static constexpr bool MustUseTimedWrite() { return false; }
-};
-} // namespace TemperatureSetpointHoldPolicy
namespace SetpointHoldExpiryTimestamp {
struct TypeInfo
{
@@ -30539,14 +30482,16 @@ struct TypeInfo
Attributes::LocalTemperature::TypeInfo::DecodableType localTemperature;
Attributes::OutdoorTemperature::TypeInfo::DecodableType outdoorTemperature;
- Attributes::Occupancy::TypeInfo::DecodableType occupancy = static_cast(0);
- Attributes::AbsMinHeatSetpointLimit::TypeInfo::DecodableType absMinHeatSetpointLimit = static_cast(0);
- Attributes::AbsMaxHeatSetpointLimit::TypeInfo::DecodableType absMaxHeatSetpointLimit = static_cast(0);
- Attributes::AbsMinCoolSetpointLimit::TypeInfo::DecodableType absMinCoolSetpointLimit = static_cast(0);
- Attributes::AbsMaxCoolSetpointLimit::TypeInfo::DecodableType absMaxCoolSetpointLimit = static_cast(0);
- Attributes::PICoolingDemand::TypeInfo::DecodableType PICoolingDemand = static_cast(0);
- Attributes::PIHeatingDemand::TypeInfo::DecodableType PIHeatingDemand = static_cast(0);
- Attributes::HVACSystemTypeConfiguration::TypeInfo::DecodableType HVACSystemTypeConfiguration = static_cast(0);
+ Attributes::Occupancy::TypeInfo::DecodableType occupancy =
+ static_cast>(0);
+ Attributes::AbsMinHeatSetpointLimit::TypeInfo::DecodableType absMinHeatSetpointLimit = static_cast(0);
+ Attributes::AbsMaxHeatSetpointLimit::TypeInfo::DecodableType absMaxHeatSetpointLimit = static_cast(0);
+ Attributes::AbsMinCoolSetpointLimit::TypeInfo::DecodableType absMinCoolSetpointLimit = static_cast(0);
+ Attributes::AbsMaxCoolSetpointLimit::TypeInfo::DecodableType absMaxCoolSetpointLimit = static_cast(0);
+ Attributes::PICoolingDemand::TypeInfo::DecodableType PICoolingDemand = static_cast(0);
+ Attributes::PIHeatingDemand::TypeInfo::DecodableType PIHeatingDemand = static_cast