diff --git a/.github/workflows/tests.yaml b/.github/workflows/tests.yaml
index 14146339d5844b..524e41ccba14a2 100644
--- a/.github/workflows/tests.yaml
+++ b/.github/workflows/tests.yaml
@@ -167,6 +167,7 @@ jobs:
src/app/zap-templates/zcl/data-model/chip/onoff-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/operational-state-cluster.xml \
+ src/app/zap-templates/zcl/data-model/chip/operational-state-dishwasher-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/pressure-measurement-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/power-source-cluster.xml \
src/app/zap-templates/zcl/data-model/chip/power-source-configuration-cluster.xml \
diff --git a/scripts/rules.matterlint b/scripts/rules.matterlint
index 69a6cee7f88af0..94ce9404473fac 100644
--- a/scripts/rules.matterlint
+++ b/scripts/rules.matterlint
@@ -50,6 +50,7 @@ load "../src/app/zap-templates/zcl/data-model/chip/occupancy-sensing-cluster.xml
load "../src/app/zap-templates/zcl/data-model/chip/onoff-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/operational-credentials-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/operational-state-cluster.xml";
+load "../src/app/zap-templates/zcl/data-model/chip/operational-state-dishwasher-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/power-source-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/power-source-configuration-cluster.xml";
load "../src/app/zap-templates/zcl/data-model/chip/pressure-measurement-cluster.xml";
diff --git a/src/app/zap-templates/zcl/data-model/all.xml b/src/app/zap-templates/zcl/data-model/all.xml
index 849921d488c814..b8116173b5ec7c 100644
--- a/src/app/zap-templates/zcl/data-model/all.xml
+++ b/src/app/zap-templates/zcl/data-model/all.xml
@@ -49,6 +49,7 @@
+
diff --git a/src/app/zap-templates/zcl/data-model/chip/operational-state-dishwasher-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/operational-state-dishwasher-cluster.xml
new file mode 100644
index 00000000000000..b8782a20d9f042
--- /dev/null
+++ b/src/app/zap-templates/zcl/data-model/chip/operational-state-dishwasher-cluster.xml
@@ -0,0 +1,107 @@
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Appliances
+ Dishwasher Operational State
+ 0x005A
+ OPERATIONAL_STATE_DISHWASHER_CLUSTER
+ true
+ true
+ This cluster supports remotely monitoring and, where supported, changing the operational state of a Dishwasher.
+
+
+
+ PhaseList
+ CurrentPhase
+ CountdownTime
+ OperationalStateList
+ OperationalState
+ OperationalError
+
+
+ Upon receipt, the device SHALL pause its operation if it is possible based on the current function of the server.
+
+
+
+ Upon receipt, the device SHALL stop its operation if it is at a position where it is safe to do so and/or permitted.
+
+
+
+ Upon receipt, the device SHALL start its operation if it is safe to do so and the device is in an operational state from which it can be started.
+
+
+
+ Upon receipt, the device SHALL resume its operation from the point it was at when it received the Pause command, or from the point when it was paused by means outside of this cluster (for example by manual button press).
+
+
+
+ This command SHALL be generated in response to any of the Start, Stop, Pause, or Resume commands.
+
+
+
+
+ OperationalError
+
+
+
+
+ OperationCompletion
+
+
+
+
+
+
+
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 24be37cd01d7d1..68e898a20c1eb2 100644
--- a/src/app/zap-templates/zcl/zcl-with-test-extensions.json
+++ b/src/app/zap-templates/zcl/zcl-with-test-extensions.json
@@ -67,6 +67,7 @@
"onoff-switch-configuration-cluster.xml",
"operational-credentials-cluster.xml",
"operational-state-cluster.xml",
+ "operational-state-dishwasher-cluster.xml",
"pressure-measurement-cluster.xml",
"power-source-cluster.xml",
"power-source-configuration-cluster.xml",
@@ -300,7 +301,8 @@
"LocalTime"
],
"Temperature Control": ["SupportedTemperatureLevels"],
- "Operational State": ["OperationalState", "OperationalError"]
+ "Operational State": ["OperationalState", "OperationalError"],
+ "Dishwasher Operational State": ["OperationalState", "OperationalError"]
},
"defaultReportingPolicy": "mandatory",
"ZCLDataTypes": ["ARRAY", "BITMAP", "ENUM", "NUMBER", "STRING", "STRUCT"],
diff --git a/src/app/zap-templates/zcl/zcl.json b/src/app/zap-templates/zcl/zcl.json
index 220ce3a3c9574f..4904e672deedc4 100644
--- a/src/app/zap-templates/zcl/zcl.json
+++ b/src/app/zap-templates/zcl/zcl.json
@@ -65,6 +65,7 @@
"onoff-switch-configuration-cluster.xml",
"operational-credentials-cluster.xml",
"operational-state-cluster.xml",
+ "operational-state-dishwasher-cluster.xml",
"pressure-measurement-cluster.xml",
"power-source-cluster.xml",
"power-source-configuration-cluster.xml",
@@ -298,7 +299,8 @@
"LocalTime"
],
"Temperature Control": ["SupportedTemperatureLevels"],
- "Operational State": ["OperationalState", "OperationalError"]
+ "Operational State": ["OperationalState", "OperationalError"],
+ "Dishwasher Operational State": ["OperationalState", "OperationalError"]
},
"defaultReportingPolicy": "mandatory",
"ZCLDataTypes": ["ARRAY", "BITMAP", "ENUM", "NUMBER", "STRING", "STRUCT"],
diff --git a/src/app/zap_cluster_list.json b/src/app/zap_cluster_list.json
index ae3c9ff51732e2..64c6ce45af8d30 100644
--- a/src/app/zap_cluster_list.json
+++ b/src/app/zap_cluster_list.json
@@ -84,6 +84,7 @@
"ON_OFF_SWITCH_CONFIGURATION_CLUSTER": [],
"OPERATIONAL_CREDENTIALS_CLUSTER": [],
"OPERATIONAL_STATE_CLUSTER": [],
+ "OPERATIONAL_STATE_DISHWASHER_CLUSTER": [],
"OTA_BOOTLOAD_CLUSTER": [],
"OTA_SOFTWARE_UPDATE_PROVIDER_CLUSTER": [],
"OTA_SOFTWARE_UPDATE_REQUESTOR_CLUSTER": [],
diff --git a/src/controller/data_model/BUILD.gn b/src/controller/data_model/BUILD.gn
index 88eee715a7f08f..736301d8d8163c 100644
--- a/src/controller/data_model/BUILD.gn
+++ b/src/controller/data_model/BUILD.gn
@@ -202,6 +202,8 @@ if (current_os == "android" || matter_enable_java_compilation) {
"jni/OperationalCredentialsClient-ReadImpl.cpp",
"jni/OperationalStateClient-InvokeSubscribeImpl.cpp",
"jni/OperationalStateClient-ReadImpl.cpp",
+ "jni/DishwasherOperationalStateClient-InvokeSubscribeImpl.cpp",
+ "jni/DishwasherOperationalStateClient-ReadImpl.cpp",
"jni/OtaSoftwareUpdateProviderClient-InvokeSubscribeImpl.cpp",
"jni/OtaSoftwareUpdateProviderClient-ReadImpl.cpp",
"jni/OtaSoftwareUpdateRequestorClient-InvokeSubscribeImpl.cpp",
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 8515fe3b3d9d41..6273be7ce4a375 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -3208,6 +3208,76 @@ client cluster DishwasherModeSelect = 89 {
command ChangeToModeWithStatus(ChangeToModeWithStatusRequest): ChangeToModeResponse = 1;
}
+/** This cluster supports remotely monitoring and, where supported, changing the operational state of a Dishwasher. */
+client cluster DishwasherOperationalState = 90 {
+ enum ErrorStateEnum : ENUM8 {
+ kNoError = 0;
+ kUnableToStartOrResume = 1;
+ kUnableToCompleteOperation = 2;
+ kCommandInvalidInState = 3;
+ kInflowError = 64;
+ kDrainError = 65;
+ kDoorError = 66;
+ kTempTooLow = 67;
+ kTempTooHigh = 68;
+ kWaterLevelError = 69;
+ }
+
+ enum OperationalStateEnum : ENUM8 {
+ kStopped = 0;
+ kRunning = 1;
+ kPaused = 2;
+ kError = 3;
+ }
+
+ struct ErrorStateStruct {
+ ErrorStateEnum errorStateID = 0;
+ nullable char_string<64> errorStateLabel = 1;
+ optional char_string<64> errorStateDetails = 2;
+ }
+
+ struct OperationalStateStruct {
+ OperationalStateEnum operationalStateID = 0;
+ char_string<64> operationalStateLabel = 1;
+ }
+
+ critical event OperationalError = 0 {
+ ErrorStateStruct errorState = 0;
+ }
+
+ info event OperationCompletion = 1 {
+ ErrorStateEnum completionErrorCode = 0;
+ optional nullable elapsed_s totalOperationalTime = 1;
+ optional nullable elapsed_s pausedTime = 2;
+ }
+
+ readonly attribute nullable CHAR_STRING phaseList[] = 0;
+ readonly attribute nullable int8u currentPhase = 1;
+ readonly attribute optional nullable elapsed_s countdownTime = 2;
+ readonly attribute OperationalStateStruct operationalStateList[] = 3;
+ readonly attribute OperationalStateStruct operationalState = 4;
+ readonly attribute ErrorStateStruct operationalError = 5;
+ readonly attribute command_id generatedCommandList[] = 65528;
+ readonly attribute command_id acceptedCommandList[] = 65529;
+ readonly attribute event_id eventList[] = 65530;
+ readonly attribute attrib_id attributeList[] = 65531;
+ readonly attribute bitmap32 featureMap = 65532;
+ readonly attribute int16u clusterRevision = 65533;
+
+ response struct OperationalCommandResponse = 4 {
+ ErrorStateStruct commandResponseState = 0;
+ }
+
+ /** Upon receipt, the device SHALL pause its operation if it is possible based on the current function of the server. */
+ command Pause(): OperationalCommandResponse = 0;
+ /** Upon receipt, the device SHALL stop its operation if it is at a position where it is safe to do so and/or permitted. */
+ command Stop(): OperationalCommandResponse = 1;
+ /** Upon receipt, the device SHALL start its operation if it is safe to do so and the device is in an operational state from which it can be started. */
+ command Start(): OperationalCommandResponse = 2;
+ /** Upon receipt, the device SHALL resume its operation from the point it was at when it received the Pause command, or from the point when it was paused by means outside of this cluster (for example by manual button press). */
+ command Resume(): OperationalCommandResponse = 3;
+}
+
/** Attributes for reporting air quality classification */
client cluster AirQuality = 91 {
enum AirQualityEnum : ENUM8 {
diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap
index c393c9e320bc7f..b69107e5648353 100644
--- a/src/controller/data_model/controller-clusters.zap
+++ b/src/controller/data_model/controller-clusters.zap
@@ -11292,7 +11292,7 @@
"side": "server",
"type": "array",
"included": 0,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11356,7 +11356,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11372,7 +11372,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11388,7 +11388,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11404,7 +11404,7 @@
"side": "server",
"type": "array",
"included": 1,
- "storageOption": "RAM",
+ "storageOption": "External",
"singleton": 0,
"bounded": 0,
"defaultValue": "",
@@ -11966,16 +11966,6 @@
"define": "REFRIGERATOR_ALARM",
"side": "client",
"enabled": 1,
- "commands": [
- {
- "name": "Reset",
- "code": 0,
- "mfgCode": null,
- "source": "client",
- "incoming": 0,
- "outgoing": 1
- }
- ],
"attributes": [
{
"name": "FeatureMap",
@@ -12035,22 +12025,6 @@
"maxInterval": 65534,
"reportableChange": 0
},
- {
- "name": "Latch",
- "code": 1,
- "mfgCode": null,
- "side": "server",
- "type": "AlarmMap",
- "included": 1,
- "storageOption": "RAM",
- "singleton": 0,
- "bounded": 0,
- "defaultValue": "0",
- "reportable": 1,
- "minInterval": 1,
- "maxInterval": 65534,
- "reportableChange": 0
- },
{
"name": "State",
"code": 2,
@@ -12421,6 +12395,303 @@
}
]
},
+ {
+ "name": "Dishwasher Operational State",
+ "code": 90,
+ "mfgCode": null,
+ "define": "OPERATIONAL_STATE_DISHWASHER_CLUSTER",
+ "side": "client",
+ "enabled": 1,
+ "commands": [
+ {
+ "name": "Pause",
+ "code": 0,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 0,
+ "outgoing": 1
+ },
+ {
+ "name": "Stop",
+ "code": 1,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 0,
+ "outgoing": 1
+ },
+ {
+ "name": "Start",
+ "code": 2,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 0,
+ "outgoing": 1
+ },
+ {
+ "name": "Resume",
+ "code": 3,
+ "mfgCode": null,
+ "source": "client",
+ "incoming": 0,
+ "outgoing": 1
+ }
+ ],
+ "attributes": [
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "client",
+ "type": "bitmap32",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "client",
+ "type": "int16u",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ]
+ },
+ {
+ "name": "Dishwasher Operational State",
+ "code": 90,
+ "mfgCode": null,
+ "define": "OPERATIONAL_STATE_DISHWASHER_CLUSTER",
+ "side": "server",
+ "enabled": 0,
+ "commands": [
+ {
+ "name": "OperationalCommandResponse",
+ "code": 4,
+ "mfgCode": null,
+ "source": "server",
+ "incoming": 1,
+ "outgoing": 0
+ }
+ ],
+ "attributes": [
+ {
+ "name": "PhaseList",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "type": "array",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "CurrentPhase",
+ "code": 1,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int8u",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "CountdownTime",
+ "code": 2,
+ "mfgCode": null,
+ "side": "server",
+ "type": "elapsed_s",
+ "included": 0,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "OperationalStateList",
+ "code": 3,
+ "mfgCode": null,
+ "side": "server",
+ "type": "array",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "OperationalState",
+ "code": 4,
+ "mfgCode": null,
+ "side": "server",
+ "type": "OperationalStateStruct",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "OperationalError",
+ "code": 5,
+ "mfgCode": null,
+ "side": "server",
+ "type": "ErrorStateStruct",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "GeneratedCommandList",
+ "code": 65528,
+ "mfgCode": null,
+ "side": "server",
+ "type": "array",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "AcceptedCommandList",
+ "code": 65529,
+ "mfgCode": null,
+ "side": "server",
+ "type": "array",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "EventList",
+ "code": 65530,
+ "mfgCode": null,
+ "side": "server",
+ "type": "array",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "AttributeList",
+ "code": 65531,
+ "mfgCode": null,
+ "side": "server",
+ "type": "array",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "FeatureMap",
+ "code": 65532,
+ "mfgCode": null,
+ "side": "server",
+ "type": "bitmap32",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "0",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ },
+ {
+ "name": "ClusterRevision",
+ "code": 65533,
+ "mfgCode": null,
+ "side": "server",
+ "type": "int16u",
+ "included": 1,
+ "storageOption": "RAM",
+ "singleton": 0,
+ "bounded": 0,
+ "defaultValue": "1",
+ "reportable": 1,
+ "minInterval": 1,
+ "maxInterval": 65534,
+ "reportableChange": 0
+ }
+ ],
+ "events": [
+ {
+ "name": "OperationalError",
+ "code": 0,
+ "mfgCode": null,
+ "side": "server",
+ "included": 1
+ }
+ ]
+ },
{
"name": "Air Quality",
"code": 91,
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
index f95bd3e9867c45..8a54078d4b19a6 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
@@ -178,6 +178,9 @@ public static BaseCluster getCluster(long clusterId) {
if (clusterId == DishwasherModeSelect.ID) {
return new DishwasherModeSelect();
}
+ if (clusterId == DishwasherOperationalState.ID) {
+ return new DishwasherOperationalState();
+ }
if (clusterId == AirQuality.ID) {
return new AirQuality();
}
@@ -7369,6 +7372,118 @@ public long getCommandID(String name) throws IllegalArgumentException {
return Command.valueOf(name).getID();
}
}
+ public static class DishwasherOperationalState implements BaseCluster {
+ public static final long ID = 90L;
+ public long getID() {
+ return ID;
+ }
+
+ public enum Attribute {
+ PhaseList(0L),
+ CurrentPhase(1L),
+ CountdownTime(2L),
+ OperationalStateList(3L),
+ OperationalState(4L),
+ OperationalError(5L),
+ GeneratedCommandList(65528L),
+ AcceptedCommandList(65529L),
+ EventList(65530L),
+ AttributeList(65531L),
+ FeatureMap(65532L),
+ ClusterRevision(65533L),;
+ private final long id;
+ Attribute(long id) {
+ this.id = id;
+ }
+
+ public long getID() {
+ return id;
+ }
+
+ public static Attribute value(long id) throws NoSuchFieldError {
+ for (Attribute attribute : Attribute.values()) {
+ if (attribute.getID() == id) {
+ return attribute;
+ }
+ }
+ throw new NoSuchFieldError();
+ }
+ }
+
+ public enum Event {
+ OperationalError(0L),
+ OperationCompletion(1L),;
+ private final long id;
+ Event(long id) {
+ this.id = id;
+ }
+
+ public long getID() {
+ return id;
+ }
+
+ public static Event value(long id) throws NoSuchFieldError {
+ for (Event event : Event.values()) {
+ if (event.getID() == id) {
+ return event;
+ }
+ }
+ throw new NoSuchFieldError();
+ }
+ }
+
+ public enum Command {
+ Pause(0L),
+ Stop(1L),
+ Start(2L),
+ Resume(3L),;
+ private final long id;
+ Command(long id) {
+ this.id = id;
+ }
+
+ public long getID() {
+ return id;
+ }
+
+ public static Command value(long id) throws NoSuchFieldError {
+ for (Command command : Command.values()) {
+ if (command.getID() == id) {
+ return command;
+ }
+ }
+ throw new NoSuchFieldError();
+ }
+ }@Override
+ public String getAttributeName(long id) throws NoSuchFieldError {
+ return Attribute.value(id).toString();
+ }
+
+ @Override
+ public String getEventName(long id) throws NoSuchFieldError {
+ return Event.value(id).toString();
+ }
+
+ @Override
+ public String getCommandName(long id) throws NoSuchFieldError {
+ return Command.value(id).toString();
+ }
+
+ @Override
+ public long getAttributeID(String name) throws IllegalArgumentException {
+ return Attribute.valueOf(name).getID();
+ }
+
+ @Override
+ public long getEventID(String name) throws IllegalArgumentException {
+ return Event.valueOf(name).getID();
+ }
+
+ @Override
+ public long getCommandID(String name) throws IllegalArgumentException {
+ return Command.valueOf(name).getID();
+ }
+ }
public static class AirQuality implements BaseCluster {
public static final long ID = 91L;
public long getID() {
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
index 40a742a4b047ad..2f0764cda9e40a 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
@@ -7023,6 +7023,120 @@ private static Map readDishwasherModeSelectInteractionI
return result;
}
+ private static Map readDishwasherOperationalStateInteractionInfo() {
+ Map result = new LinkedHashMap<>();Map readDishwasherOperationalStatePhaseListCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStatePhaseListAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readPhaseListAttribute(
+ (ChipClusters.DishwasherOperationalStateCluster.PhaseListAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedDishwasherOperationalStateClusterPhaseListAttributeCallback(),
+ readDishwasherOperationalStatePhaseListCommandParams
+ );
+ result.put("readPhaseListAttribute", readDishwasherOperationalStatePhaseListAttributeInteractionInfo);
+ Map readDishwasherOperationalStateCurrentPhaseCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateCurrentPhaseAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readCurrentPhaseAttribute(
+ (ChipClusters.DishwasherOperationalStateCluster.CurrentPhaseAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedDishwasherOperationalStateClusterCurrentPhaseAttributeCallback(),
+ readDishwasherOperationalStateCurrentPhaseCommandParams
+ );
+ result.put("readCurrentPhaseAttribute", readDishwasherOperationalStateCurrentPhaseAttributeInteractionInfo);
+ Map readDishwasherOperationalStateCountdownTimeCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateCountdownTimeAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readCountdownTimeAttribute(
+ (ChipClusters.DishwasherOperationalStateCluster.CountdownTimeAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedDishwasherOperationalStateClusterCountdownTimeAttributeCallback(),
+ readDishwasherOperationalStateCountdownTimeCommandParams
+ );
+ result.put("readCountdownTimeAttribute", readDishwasherOperationalStateCountdownTimeAttributeInteractionInfo);
+ Map readDishwasherOperationalStateOperationalStateListCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateOperationalStateListAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readOperationalStateListAttribute(
+ (ChipClusters.DishwasherOperationalStateCluster.OperationalStateListAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedDishwasherOperationalStateClusterOperationalStateListAttributeCallback(),
+ readDishwasherOperationalStateOperationalStateListCommandParams
+ );
+ result.put("readOperationalStateListAttribute", readDishwasherOperationalStateOperationalStateListAttributeInteractionInfo);
+ Map readDishwasherOperationalStateGeneratedCommandListCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateGeneratedCommandListAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readGeneratedCommandListAttribute(
+ (ChipClusters.DishwasherOperationalStateCluster.GeneratedCommandListAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedDishwasherOperationalStateClusterGeneratedCommandListAttributeCallback(),
+ readDishwasherOperationalStateGeneratedCommandListCommandParams
+ );
+ result.put("readGeneratedCommandListAttribute", readDishwasherOperationalStateGeneratedCommandListAttributeInteractionInfo);
+ Map readDishwasherOperationalStateAcceptedCommandListCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateAcceptedCommandListAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readAcceptedCommandListAttribute(
+ (ChipClusters.DishwasherOperationalStateCluster.AcceptedCommandListAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedDishwasherOperationalStateClusterAcceptedCommandListAttributeCallback(),
+ readDishwasherOperationalStateAcceptedCommandListCommandParams
+ );
+ result.put("readAcceptedCommandListAttribute", readDishwasherOperationalStateAcceptedCommandListAttributeInteractionInfo);
+ Map readDishwasherOperationalStateEventListCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateEventListAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readEventListAttribute(
+ (ChipClusters.DishwasherOperationalStateCluster.EventListAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedDishwasherOperationalStateClusterEventListAttributeCallback(),
+ readDishwasherOperationalStateEventListCommandParams
+ );
+ result.put("readEventListAttribute", readDishwasherOperationalStateEventListAttributeInteractionInfo);
+ Map readDishwasherOperationalStateAttributeListCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateAttributeListAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readAttributeListAttribute(
+ (ChipClusters.DishwasherOperationalStateCluster.AttributeListAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedDishwasherOperationalStateClusterAttributeListAttributeCallback(),
+ readDishwasherOperationalStateAttributeListCommandParams
+ );
+ result.put("readAttributeListAttribute", readDishwasherOperationalStateAttributeListAttributeInteractionInfo);
+ Map readDishwasherOperationalStateFeatureMapCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateFeatureMapAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readFeatureMapAttribute(
+ (ChipClusters.LongAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
+ readDishwasherOperationalStateFeatureMapCommandParams
+ );
+ result.put("readFeatureMapAttribute", readDishwasherOperationalStateFeatureMapAttributeInteractionInfo);
+ Map readDishwasherOperationalStateClusterRevisionCommandParams = new LinkedHashMap();
+ InteractionInfo readDishwasherOperationalStateClusterRevisionAttributeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster).readClusterRevisionAttribute(
+ (ChipClusters.IntegerAttributeCallback) callback
+ );
+ },
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readDishwasherOperationalStateClusterRevisionCommandParams
+ );
+ result.put("readClusterRevisionAttribute", readDishwasherOperationalStateClusterRevisionAttributeInteractionInfo);
+
+ return result;
+ }
private static Map readAirQualityInteractionInfo() {
Map result = new LinkedHashMap<>();Map readAirQualityAirQualityCommandParams = new LinkedHashMap();
InteractionInfo readAirQualityAirQualityAttributeInteractionInfo = new InteractionInfo(
@@ -23219,6 +23333,7 @@ public Map> getReadAttributeMap() {
put("temperatureControl", readTemperatureControlInteractionInfo());
put("refrigeratorAlarm", readRefrigeratorAlarmInteractionInfo());
put("dishwasherModeSelect", readDishwasherModeSelectInteractionInfo());
+ put("dishwasherOperationalState", readDishwasherOperationalStateInteractionInfo());
put("airQuality", readAirQualityInteractionInfo());
put("smokeCoAlarm", readSmokeCoAlarmInteractionInfo());
put("operationalState", readOperationalStateInteractionInfo());
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
index 3028e3525125f5..9e96d214562b6b 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
@@ -1050,6 +1050,8 @@ public Map> getWriteAttributeMap() {
);
writeDishwasherModeSelectInteractionInfo.put("writeOnModeAttribute", writeDishwasherModeSelectOnModeAttributeInteractionInfo);
writeAttributeMap.put("dishwasherModeSelect", writeDishwasherModeSelectInteractionInfo);
+ Map writeDishwasherOperationalStateInteractionInfo = new LinkedHashMap<>();
+ writeAttributeMap.put("dishwasherOperationalState", writeDishwasherOperationalStateInteractionInfo);
Map writeAirQualityInteractionInfo = new LinkedHashMap<>();
writeAttributeMap.put("airQuality", writeAirQualityInteractionInfo);
Map writeSmokeCoAlarmInteractionInfo = new LinkedHashMap<>();
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index 0248cc27172020..caacceea2bc176 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -14447,6 +14447,363 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
}
break;
}
+ case app::Clusters::DishwasherOperationalState::Id: {
+ using namespace app::Clusters::DishwasherOperationalState;
+ switch (aPath.mAttributeId)
+ {
+ case Attributes::PhaseList::Id: {
+ using TypeInfo = Attributes::PhaseList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_1 = cppValue.Value().begin();
+ while (iter_value_1.Next())
+ {
+ auto & entry_1 = iter_value_1.GetValue();
+ jobject newElement_1;
+ LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_1, newElement_1));
+ chip::JniReferences::GetInstance().AddToList(value, newElement_1);
+ }
+ }
+ return value;
+ }
+ case Attributes::CurrentPhase::Id: {
+ using TypeInfo = Attributes::CurrentPhase::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue.Value(), value);
+ }
+ return value;
+ }
+ case Attributes::CountdownTime::Id: {
+ using TypeInfo = Attributes::CountdownTime::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ if (cppValue.IsNull())
+ {
+ value = nullptr;
+ }
+ else
+ {
+ std::string valueClassName = "java/lang/Long";
+ std::string valueCtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue.Value(), value);
+ }
+ return value;
+ }
+ case Attributes::OperationalStateList::Id: {
+ using TypeInfo = Attributes::OperationalStateList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ jobject newElement_0_operationalStateID;
+ std::string newElement_0_operationalStateIDClassName = "java/lang/Integer";
+ std::string newElement_0_operationalStateIDCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0_operationalStateIDClassName.c_str(), newElement_0_operationalStateIDCtorSignature.c_str(),
+ static_cast(entry_0.operationalStateID), newElement_0_operationalStateID);
+ jobject newElement_0_operationalStateLabel;
+ LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_0.operationalStateLabel,
+ newElement_0_operationalStateLabel));
+
+ jclass operationalStateStructStructClass_1;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct",
+ operationalStateStructStructClass_1);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct");
+ return nullptr;
+ }
+ jmethodID operationalStateStructStructCtor_1 =
+ env->GetMethodID(operationalStateStructStructClass_1, "", "(Ljava/lang/Integer;Ljava/lang/String;)V");
+ if (operationalStateStructStructCtor_1 == nullptr)
+ {
+ ChipLogError(Zcl,
+ "Could not find ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct constructor");
+ return nullptr;
+ }
+
+ newElement_0 = env->NewObject(operationalStateStructStructClass_1, operationalStateStructStructCtor_1,
+ newElement_0_operationalStateID, newElement_0_operationalStateLabel);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::OperationalState::Id: {
+ using TypeInfo = Attributes::OperationalState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ jobject value_operationalStateID;
+ std::string value_operationalStateIDClassName = "java/lang/Integer";
+ std::string value_operationalStateIDCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ value_operationalStateIDClassName.c_str(), value_operationalStateIDCtorSignature.c_str(),
+ static_cast(cppValue.operationalStateID), value_operationalStateID);
+ jobject value_operationalStateLabel;
+ LogErrorOnFailure(
+ chip::JniReferences::GetInstance().CharToStringUTF(cppValue.operationalStateLabel, value_operationalStateLabel));
+
+ jclass operationalStateStructStructClass_0;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct",
+ operationalStateStructStructClass_0);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct");
+ return nullptr;
+ }
+ jmethodID operationalStateStructStructCtor_0 =
+ env->GetMethodID(operationalStateStructStructClass_0, "", "(Ljava/lang/Integer;Ljava/lang/String;)V");
+ if (operationalStateStructStructCtor_0 == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct constructor");
+ return nullptr;
+ }
+
+ value = env->NewObject(operationalStateStructStructClass_0, operationalStateStructStructCtor_0,
+ value_operationalStateID, value_operationalStateLabel);
+ return value;
+ }
+ case Attributes::OperationalError::Id: {
+ using TypeInfo = Attributes::OperationalError::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ jobject value_errorStateID;
+ std::string value_errorStateIDClassName = "java/lang/Integer";
+ std::string value_errorStateIDCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ value_errorStateIDClassName.c_str(), value_errorStateIDCtorSignature.c_str(),
+ static_cast(cppValue.errorStateID), value_errorStateID);
+ jobject value_errorStateLabel;
+ if (cppValue.errorStateLabel.IsNull())
+ {
+ value_errorStateLabel = nullptr;
+ }
+ else
+ {
+ LogErrorOnFailure(
+ chip::JniReferences::GetInstance().CharToStringUTF(cppValue.errorStateLabel.Value(), value_errorStateLabel));
+ }
+ jobject value_errorStateDetails;
+ if (!cppValue.errorStateDetails.HasValue())
+ {
+ chip::JniReferences::GetInstance().CreateOptional(nullptr, value_errorStateDetails);
+ }
+ else
+ {
+ jobject value_errorStateDetailsInsideOptional;
+ LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.errorStateDetails.Value(),
+ value_errorStateDetailsInsideOptional));
+ chip::JniReferences::GetInstance().CreateOptional(value_errorStateDetailsInsideOptional, value_errorStateDetails);
+ }
+
+ jclass errorStateStructStructClass_0;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipStructs$DishwasherOperationalStateClusterErrorStateStruct",
+ errorStateStructStructClass_0);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipStructs$DishwasherOperationalStateClusterErrorStateStruct");
+ return nullptr;
+ }
+ jmethodID errorStateStructStructCtor_0 = env->GetMethodID(
+ errorStateStructStructClass_0, "", "(Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Optional;)V");
+ if (errorStateStructStructCtor_0 == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipStructs$DishwasherOperationalStateClusterErrorStateStruct constructor");
+ return nullptr;
+ }
+
+ value = env->NewObject(errorStateStructStructClass_0, errorStateStructStructCtor_0, value_errorStateID,
+ value_errorStateLabel, value_errorStateDetails);
+ return value;
+ }
+ case Attributes::GeneratedCommandList::Id: {
+ using TypeInfo = Attributes::GeneratedCommandList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::AcceptedCommandList::Id: {
+ using TypeInfo = Attributes::AcceptedCommandList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::EventList::Id: {
+ using TypeInfo = Attributes::EventList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::AttributeList::Id: {
+ using TypeInfo = Attributes::AttributeList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ chip::JniReferences::GetInstance().CreateArrayList(value);
+
+ auto iter_value_0 = cppValue.begin();
+ while (iter_value_0.Next())
+ {
+ auto & entry_0 = iter_value_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
+ return value;
+ }
+ case Attributes::FeatureMap::Id: {
+ using TypeInfo = Attributes::FeatureMap::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value;
+ std::string valueClassName = "java/lang/Long";
+ std::string valueCtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue, value);
+ return value;
+ }
+ case Attributes::ClusterRevision::Id: {
+ using TypeInfo = Attributes::ClusterRevision::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";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ cppValue, value);
+ return value;
+ }
+ default:
+ *aError = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB;
+ break;
+ }
+ break;
+ }
case app::Clusters::AirQuality::Id: {
using namespace app::Clusters::AirQuality;
switch (aPath.mAttributeId)
diff --git a/src/controller/java/zap-generated/CHIPClientCallbacks.h b/src/controller/java/zap-generated/CHIPClientCallbacks.h
index b7537c2e38ad24..8d205832525ce9 100644
--- a/src/controller/java/zap-generated/CHIPClientCallbacks.h
+++ b/src/controller/java/zap-generated/CHIPClientCallbacks.h
@@ -564,6 +564,20 @@ typedef void (*DishwasherModeSelectEventListListAttributeCallback)(void * contex
const chip::app::DataModel::DecodableList & data);
typedef void (*DishwasherModeSelectAttributeListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*DishwasherOperationalStatePhaseListListAttributeCallback)(
+ void * context, const chip::app::DataModel::Nullable> & data);
+typedef void (*DishwasherOperationalStateOperationalStateListListAttributeCallback)(
+ void * context,
+ const chip::app::DataModel::DecodableList<
+ chip::app::Clusters::DishwasherOperationalState::Structs::OperationalStateStruct::DecodableType> & data);
+typedef void (*DishwasherOperationalStateGeneratedCommandListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*DishwasherOperationalStateAcceptedCommandListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*DishwasherOperationalStateEventListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*DishwasherOperationalStateAttributeListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*AirQualityGeneratedCommandListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*AirQualityAcceptedCommandListListAttributeCallback)(
diff --git a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
index 03ebc2ef9083f4..b0ad5c5f4af523 100644
--- a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
@@ -2557,6 +2557,184 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
}
break;
}
+ case app::Clusters::DishwasherOperationalState::Id: {
+ using namespace app::Clusters::DishwasherOperationalState;
+ switch (aPath.mEventId)
+ {
+ case Events::OperationalError::Id: {
+ Events::OperationalError::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value_errorState;
+ jobject value_errorState_errorStateID;
+ std::string value_errorState_errorStateIDClassName = "java/lang/Integer";
+ std::string value_errorState_errorStateIDCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ value_errorState_errorStateIDClassName.c_str(), value_errorState_errorStateIDCtorSignature.c_str(),
+ static_cast(cppValue.errorState.errorStateID), value_errorState_errorStateID);
+ jobject value_errorState_errorStateLabel;
+ if (cppValue.errorState.errorStateLabel.IsNull())
+ {
+ value_errorState_errorStateLabel = nullptr;
+ }
+ else
+ {
+ LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(cppValue.errorState.errorStateLabel.Value(),
+ value_errorState_errorStateLabel));
+ }
+ jobject value_errorState_errorStateDetails;
+ if (!cppValue.errorState.errorStateDetails.HasValue())
+ {
+ chip::JniReferences::GetInstance().CreateOptional(nullptr, value_errorState_errorStateDetails);
+ }
+ else
+ {
+ jobject value_errorState_errorStateDetailsInsideOptional;
+ LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(
+ cppValue.errorState.errorStateDetails.Value(), value_errorState_errorStateDetailsInsideOptional));
+ chip::JniReferences::GetInstance().CreateOptional(value_errorState_errorStateDetailsInsideOptional,
+ value_errorState_errorStateDetails);
+ }
+
+ jclass errorStateStructStructClass_0;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipStructs$DishwasherOperationalStateClusterErrorStateStruct",
+ errorStateStructStructClass_0);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipStructs$DishwasherOperationalStateClusterErrorStateStruct");
+ return nullptr;
+ }
+ jmethodID errorStateStructStructCtor_0 = env->GetMethodID(
+ errorStateStructStructClass_0, "", "(Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Optional;)V");
+ if (errorStateStructStructCtor_0 == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipStructs$DishwasherOperationalStateClusterErrorStateStruct constructor");
+ return nullptr;
+ }
+
+ value_errorState =
+ env->NewObject(errorStateStructStructClass_0, errorStateStructStructCtor_0, value_errorState_errorStateID,
+ value_errorState_errorStateLabel, value_errorState_errorStateDetails);
+
+ jclass operationalErrorStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$DishwasherOperationalStateClusterOperationalErrorEvent",
+ operationalErrorStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$DishwasherOperationalStateClusterOperationalErrorEvent");
+ return nullptr;
+ }
+ jmethodID operationalErrorStructCtor =
+ env->GetMethodID(operationalErrorStructClass, "",
+ "(Lchip/devicecontroller/ChipStructs$DishwasherOperationalStateClusterErrorStateStruct;)V");
+ if (operationalErrorStructCtor == nullptr)
+ {
+ ChipLogError(Zcl,
+ "Could not find ChipEventStructs$DishwasherOperationalStateClusterOperationalErrorEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(operationalErrorStructClass, operationalErrorStructCtor, value_errorState);
+
+ return value;
+ }
+ case Events::OperationCompletion::Id: {
+ Events::OperationCompletion::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value_completionErrorCode;
+ std::string value_completionErrorCodeClassName = "java/lang/Integer";
+ std::string value_completionErrorCodeCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ value_completionErrorCodeClassName.c_str(), value_completionErrorCodeCtorSignature.c_str(),
+ static_cast(cppValue.completionErrorCode), value_completionErrorCode);
+
+ jobject value_totalOperationalTime;
+ if (!cppValue.totalOperationalTime.HasValue())
+ {
+ chip::JniReferences::GetInstance().CreateOptional(nullptr, value_totalOperationalTime);
+ }
+ else
+ {
+ jobject value_totalOperationalTimeInsideOptional;
+ if (cppValue.totalOperationalTime.Value().IsNull())
+ {
+ value_totalOperationalTimeInsideOptional = nullptr;
+ }
+ else
+ {
+ std::string value_totalOperationalTimeInsideOptionalClassName = "java/lang/Long";
+ std::string value_totalOperationalTimeInsideOptionalCtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ value_totalOperationalTimeInsideOptionalClassName.c_str(),
+ value_totalOperationalTimeInsideOptionalCtorSignature.c_str(),
+ cppValue.totalOperationalTime.Value().Value(), value_totalOperationalTimeInsideOptional);
+ }
+ chip::JniReferences::GetInstance().CreateOptional(value_totalOperationalTimeInsideOptional,
+ value_totalOperationalTime);
+ }
+
+ jobject value_pausedTime;
+ if (!cppValue.pausedTime.HasValue())
+ {
+ chip::JniReferences::GetInstance().CreateOptional(nullptr, value_pausedTime);
+ }
+ else
+ {
+ jobject value_pausedTimeInsideOptional;
+ if (cppValue.pausedTime.Value().IsNull())
+ {
+ value_pausedTimeInsideOptional = nullptr;
+ }
+ else
+ {
+ std::string value_pausedTimeInsideOptionalClassName = "java/lang/Long";
+ std::string value_pausedTimeInsideOptionalCtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ value_pausedTimeInsideOptionalClassName.c_str(), value_pausedTimeInsideOptionalCtorSignature.c_str(),
+ cppValue.pausedTime.Value().Value(), value_pausedTimeInsideOptional);
+ }
+ chip::JniReferences::GetInstance().CreateOptional(value_pausedTimeInsideOptional, value_pausedTime);
+ }
+
+ jclass operationCompletionStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$DishwasherOperationalStateClusterOperationCompletionEvent",
+ operationCompletionStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl,
+ "Could not find class ChipEventStructs$DishwasherOperationalStateClusterOperationCompletionEvent");
+ return nullptr;
+ }
+ jmethodID operationCompletionStructCtor = env->GetMethodID(
+ operationCompletionStructClass, "", "(Ljava/lang/Integer;Ljava/util/Optional;Ljava/util/Optional;)V");
+ if (operationCompletionStructCtor == nullptr)
+ {
+ ChipLogError(
+ Zcl, "Could not find ChipEventStructs$DishwasherOperationalStateClusterOperationCompletionEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(operationCompletionStructClass, operationCompletionStructCtor, value_completionErrorCode,
+ value_totalOperationalTime, value_pausedTime);
+
+ return value;
+ }
+ default:
+ *aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
+ break;
+ }
+ break;
+ }
case app::Clusters::AirQuality::Id: {
using namespace app::Clusters::AirQuality;
switch (aPath.mEventId)
diff --git a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp
index dacb197027abec..058c3af9cf6235 100644
--- a/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPInvokeCallbacks.cpp
@@ -3261,6 +3261,116 @@ void CHIPDishwasherModeSelectClusterChangeToModeResponseCallback::CallbackFn(
env->CallVoidMethod(javaCallbackRef, javaMethod, Status, StatusText);
}
+CHIPDishwasherOperationalStateClusterOperationalCommandResponseCallback::
+ CHIPDishwasherOperationalStateClusterOperationalCommandResponseCallback(jobject javaCallback) :
+ Callback::Callback(CallbackFn, this)
+{
+ JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStateClusterOperationalCommandResponseCallback::
+ ~CHIPDishwasherOperationalStateClusterOperationalCommandResponseCallback()
+{
+ JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+};
+
+void CHIPDishwasherOperationalStateClusterOperationalCommandResponseCallback::CallbackFn(
+ void * context,
+ const chip::app::Clusters::DishwasherOperationalState::Commands::OperationalCommandResponse::DecodableType & dataResponse)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+ jmethodID javaMethod;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Error invoking Java callback: no JNIEnv"));
+
+ std::unique_ptr
+ cppCallback(reinterpret_cast(context),
+ chip::Platform::Delete);
+ VerifyOrReturn(cppCallback != nullptr, ChipLogError(Zcl, "Error invoking Java callback: failed to cast native callback"));
+
+ javaCallbackRef = cppCallback->javaCallbackRef;
+ // Java callback is allowed to be null, exit early if this is the case.
+ VerifyOrReturn(javaCallbackRef != nullptr);
+
+ err = JniReferences::GetInstance().FindMethod(
+ env, javaCallbackRef, "onSuccess",
+ "(Lchip/devicecontroller/ChipStructs$DishwasherOperationalStateClusterErrorStateStruct;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Error invoking Java callback: %s", ErrorStr(err)));
+
+ jobject CommandResponseState;
+ jobject CommandResponseState_errorStateID;
+ std::string CommandResponseState_errorStateIDClassName = "java/lang/Integer";
+ std::string CommandResponseState_errorStateIDCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ CommandResponseState_errorStateIDClassName.c_str(), CommandResponseState_errorStateIDCtorSignature.c_str(),
+ static_cast(dataResponse.commandResponseState.errorStateID), CommandResponseState_errorStateID);
+ jobject CommandResponseState_errorStateLabel;
+ if (dataResponse.commandResponseState.errorStateLabel.IsNull())
+ {
+ CommandResponseState_errorStateLabel = nullptr;
+ }
+ else
+ {
+ LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(
+ dataResponse.commandResponseState.errorStateLabel.Value(), CommandResponseState_errorStateLabel));
+ }
+ jobject CommandResponseState_errorStateDetails;
+ if (!dataResponse.commandResponseState.errorStateDetails.HasValue())
+ {
+ chip::JniReferences::GetInstance().CreateOptional(nullptr, CommandResponseState_errorStateDetails);
+ }
+ else
+ {
+ jobject CommandResponseState_errorStateDetailsInsideOptional;
+ LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(
+ dataResponse.commandResponseState.errorStateDetails.Value(), CommandResponseState_errorStateDetailsInsideOptional));
+ chip::JniReferences::GetInstance().CreateOptional(CommandResponseState_errorStateDetailsInsideOptional,
+ CommandResponseState_errorStateDetails);
+ }
+
+ jclass errorStateStructStructClass_0;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipStructs$DishwasherOperationalStateClusterErrorStateStruct", errorStateStructStructClass_0);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipStructs$DishwasherOperationalStateClusterErrorStateStruct");
+ return;
+ }
+ jmethodID errorStateStructStructCtor_0 =
+ env->GetMethodID(errorStateStructStructClass_0, "", "(Ljava/lang/Integer;Ljava/lang/String;Ljava/util/Optional;)V");
+ if (errorStateStructStructCtor_0 == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipStructs$DishwasherOperationalStateClusterErrorStateStruct constructor");
+ return;
+ }
+
+ CommandResponseState =
+ env->NewObject(errorStateStructStructClass_0, errorStateStructStructCtor_0, CommandResponseState_errorStateID,
+ CommandResponseState_errorStateLabel, CommandResponseState_errorStateDetails);
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, CommandResponseState);
+}
CHIPOperationalStateClusterOperationalCommandResponseCallback::CHIPOperationalStateClusterOperationalCommandResponseCallback(
jobject javaCallback) :
Callback::Callback(CallbackFn, this)
diff --git a/src/controller/java/zap-generated/CHIPInvokeCallbacks.h b/src/controller/java/zap-generated/CHIPInvokeCallbacks.h
index 585195f541e966..e1c199e4728183 100644
--- a/src/controller/java/zap-generated/CHIPInvokeCallbacks.h
+++ b/src/controller/java/zap-generated/CHIPInvokeCallbacks.h
@@ -556,6 +556,22 @@ class CHIPDishwasherModeSelectClusterChangeToModeResponseCallback
jobject javaCallbackRef;
};
+class CHIPDishwasherOperationalStateClusterOperationalCommandResponseCallback
+ : public Callback::Callback
+{
+public:
+ CHIPDishwasherOperationalStateClusterOperationalCommandResponseCallback(jobject javaCallback);
+
+ ~CHIPDishwasherOperationalStateClusterOperationalCommandResponseCallback();
+
+ static void
+ CallbackFn(void * context,
+ const chip::app::Clusters::DishwasherOperationalState::Commands::OperationalCommandResponse::DecodableType & data);
+
+private:
+ jobject javaCallbackRef;
+};
+
class CHIPOperationalStateClusterOperationalCommandResponseCallback
: public Callback::Callback
{
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
index 23be9ec0902b8f..0bbb46eb1aabce 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
@@ -24291,6 +24291,600 @@ void CHIPDishwasherModeSelectAttributeListAttributeCallback::CallbackFn(
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
+CHIPDishwasherOperationalStatePhaseListAttributeCallback::CHIPDishwasherOperationalStatePhaseListAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStatePhaseListAttributeCallback::~CHIPDishwasherOperationalStatePhaseListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPDishwasherOperationalStatePhaseListAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::Nullable> & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ if (list.IsNull())
+ {
+ arrayListObj = nullptr;
+ }
+ else
+ {
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_1 = list.Value().begin();
+ while (iter_arrayListObj_1.Next())
+ {
+ auto & entry_1 = iter_arrayListObj_1.GetValue();
+ jobject newElement_1;
+ LogErrorOnFailure(chip::JniReferences::GetInstance().CharToStringUTF(entry_1, newElement_1));
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_1);
+ }
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
+CHIPDishwasherOperationalStateCurrentPhaseAttributeCallback::CHIPDishwasherOperationalStateCurrentPhaseAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStateCurrentPhaseAttributeCallback::~CHIPDishwasherOperationalStateCurrentPhaseAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPDishwasherOperationalStateCurrentPhaseAttributeCallback::CallbackFn(void * context,
+ const chip::app::DataModel::Nullable & value)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Integer;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject javaValue;
+ if (value.IsNull())
+ {
+ javaValue = nullptr;
+ }
+ else
+ {
+ std::string javaValueClassName = "java/lang/Integer";
+ std::string javaValueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(javaValueClassName.c_str(), javaValueCtorSignature.c_str(),
+ value.Value(), javaValue);
+ }
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+}
+
+CHIPDishwasherOperationalStateCountdownTimeAttributeCallback::CHIPDishwasherOperationalStateCountdownTimeAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStateCountdownTimeAttributeCallback::~CHIPDishwasherOperationalStateCountdownTimeAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPDishwasherOperationalStateCountdownTimeAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::Nullable & value)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/lang/Long;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject javaValue;
+ if (value.IsNull())
+ {
+ javaValue = nullptr;
+ }
+ else
+ {
+ std::string javaValueClassName = "java/lang/Long";
+ std::string javaValueCtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(javaValueClassName.c_str(), javaValueCtorSignature.c_str(),
+ value.Value(), javaValue);
+ }
+
+ env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+}
+
+CHIPDishwasherOperationalStateOperationalStateListAttributeCallback::
+ CHIPDishwasherOperationalStateOperationalStateListAttributeCallback(jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStateOperationalStateListAttributeCallback::
+ ~CHIPDishwasherOperationalStateOperationalStateListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPDishwasherOperationalStateOperationalStateListAttributeCallback::CallbackFn(
+ void * context,
+ const chip::app::DataModel::DecodableList<
+ chip::app::Clusters::DishwasherOperationalState::Structs::OperationalStateStruct::DecodableType> & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ jobject newElement_0_operationalStateID;
+ std::string newElement_0_operationalStateIDClassName = "java/lang/Integer";
+ std::string newElement_0_operationalStateIDCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0_operationalStateIDClassName.c_str(), newElement_0_operationalStateIDCtorSignature.c_str(),
+ static_cast(entry_0.operationalStateID), newElement_0_operationalStateID);
+ jobject newElement_0_operationalStateLabel;
+ LogErrorOnFailure(
+ chip::JniReferences::GetInstance().CharToStringUTF(entry_0.operationalStateLabel, newElement_0_operationalStateLabel));
+
+ jclass operationalStateStructStructClass_1;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct",
+ operationalStateStructStructClass_1);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct");
+ return;
+ }
+ jmethodID operationalStateStructStructCtor_1 =
+ env->GetMethodID(operationalStateStructStructClass_1, "", "(Ljava/lang/Integer;Ljava/lang/String;)V");
+ if (operationalStateStructStructCtor_1 == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipStructs$DishwasherOperationalStateClusterOperationalStateStruct constructor");
+ return;
+ }
+
+ newElement_0 = env->NewObject(operationalStateStructStructClass_1, operationalStateStructStructCtor_1,
+ newElement_0_operationalStateID, newElement_0_operationalStateLabel);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
+CHIPDishwasherOperationalStateGeneratedCommandListAttributeCallback::
+ CHIPDishwasherOperationalStateGeneratedCommandListAttributeCallback(jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStateGeneratedCommandListAttributeCallback::
+ ~CHIPDishwasherOperationalStateGeneratedCommandListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPDishwasherOperationalStateGeneratedCommandListAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::DecodableList & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0ClassName.c_str(),
+ newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
+CHIPDishwasherOperationalStateAcceptedCommandListAttributeCallback::
+ CHIPDishwasherOperationalStateAcceptedCommandListAttributeCallback(jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStateAcceptedCommandListAttributeCallback::
+ ~CHIPDishwasherOperationalStateAcceptedCommandListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPDishwasherOperationalStateAcceptedCommandListAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::DecodableList & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0ClassName.c_str(),
+ newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
+CHIPDishwasherOperationalStateEventListAttributeCallback::CHIPDishwasherOperationalStateEventListAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStateEventListAttributeCallback::~CHIPDishwasherOperationalStateEventListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPDishwasherOperationalStateEventListAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::DecodableList & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0ClassName.c_str(),
+ newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
+CHIPDishwasherOperationalStateAttributeListAttributeCallback::CHIPDishwasherOperationalStateAttributeListAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ return;
+ }
+
+ javaCallbackRef = env->NewGlobalRef(javaCallback);
+ if (javaCallbackRef == nullptr)
+ {
+ ChipLogError(Zcl, "Could not create global reference for Java callback");
+ }
+}
+
+CHIPDishwasherOperationalStateAttributeListAttributeCallback::~CHIPDishwasherOperationalStateAttributeListAttributeCallback()
+{
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ if (env == nullptr)
+ {
+ ChipLogError(Zcl, "Could not delete global reference for Java callback");
+ return;
+ }
+ env->DeleteGlobalRef(javaCallbackRef);
+}
+
+void CHIPDishwasherOperationalStateAttributeListAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::DecodableList & list)
+{
+ chip::DeviceLayer::StackUnlock unlock;
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
+ jobject javaCallbackRef;
+
+ VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
+
+ std::unique_ptr cppCallback(
+ reinterpret_cast(context), maybeDestroy);
+
+ // It's valid for javaCallbackRef to be nullptr if the Java code passed in a null callback.
+ javaCallbackRef = cppCallback.get()->javaCallbackRef;
+ VerifyOrReturn(javaCallbackRef != nullptr,
+ ChipLogProgress(Zcl, "Early return from attribute callback since Java callback is null"));
+
+ jmethodID javaMethod;
+ err = chip::JniReferences::GetInstance().FindMethod(env, javaCallbackRef, "onSuccess", "(Ljava/util/List;)V", &javaMethod);
+ VerifyOrReturn(err == CHIP_NO_ERROR, ChipLogError(Zcl, "Could not find onSuccess() method"));
+
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
+ {
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Long";
+ std::string newElement_0CtorSignature = "(J)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(newElement_0ClassName.c_str(),
+ newElement_0CtorSignature.c_str(), entry_0, newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
+ }
+
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
+}
+
CHIPAirQualityGeneratedCommandListAttributeCallback::CHIPAirQualityGeneratedCommandListAttributeCallback(jobject javaCallback,
bool keepAlive) :
chip::Callback::Callback(CallbackFn, this),
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
index f9aca55fe803e6..968fd74cd66f7d 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
@@ -15976,6 +15976,310 @@ private native void subscribeClusterRevisionAttribute(long chipClusterPtr,
, int minInterval, int maxInterval);
}
+ public static class DishwasherOperationalStateCluster extends BaseChipCluster {
+ public static final long CLUSTER_ID = 90L;
+
+ public DishwasherOperationalStateCluster(long devicePtr, int endpointId) {
+ super(devicePtr, endpointId);
+ }
+
+ @Override
+ public native long initWithDevice(long devicePtr, int endpointId);
+
+ public void pause(OperationalCommandResponseCallback callback
+ ) {
+ pause(chipClusterPtr, callback, null);
+ }
+
+ public void pause(OperationalCommandResponseCallback callback
+
+ , int timedInvokeTimeoutMs) {
+ pause(chipClusterPtr, callback, timedInvokeTimeoutMs);
+ }
+
+ public void stop(OperationalCommandResponseCallback callback
+ ) {
+ stop(chipClusterPtr, callback, null);
+ }
+
+ public void stop(OperationalCommandResponseCallback callback
+
+ , int timedInvokeTimeoutMs) {
+ stop(chipClusterPtr, callback, timedInvokeTimeoutMs);
+ }
+
+ public void start(OperationalCommandResponseCallback callback
+ ) {
+ start(chipClusterPtr, callback, null);
+ }
+
+ public void start(OperationalCommandResponseCallback callback
+
+ , int timedInvokeTimeoutMs) {
+ start(chipClusterPtr, callback, timedInvokeTimeoutMs);
+ }
+
+ public void resume(OperationalCommandResponseCallback callback
+ ) {
+ resume(chipClusterPtr, callback, null);
+ }
+
+ public void resume(OperationalCommandResponseCallback callback
+
+ , int timedInvokeTimeoutMs) {
+ resume(chipClusterPtr, callback, timedInvokeTimeoutMs);
+ }
+ private native void pause(long chipClusterPtr, OperationalCommandResponseCallback Callback
+
+ , @Nullable Integer timedInvokeTimeoutMs);
+ private native void stop(long chipClusterPtr, OperationalCommandResponseCallback Callback
+
+ , @Nullable Integer timedInvokeTimeoutMs);
+ private native void start(long chipClusterPtr, OperationalCommandResponseCallback Callback
+
+ , @Nullable Integer timedInvokeTimeoutMs);
+ private native void resume(long chipClusterPtr, OperationalCommandResponseCallback Callback
+
+ , @Nullable Integer timedInvokeTimeoutMs);
+ public interface OperationalCommandResponseCallback {
+ void onSuccess(ChipStructs.DishwasherOperationalStateClusterErrorStateStruct commandResponseState);
+
+ void onError(Exception error);
+ }
+
+
+ public interface PhaseListAttributeCallback {
+ void onSuccess(@Nullable List valueList);
+ void onError(Exception ex);
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+ public interface CurrentPhaseAttributeCallback {
+ void onSuccess(@Nullable Integer value);
+ void onError(Exception ex);
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+ public interface CountdownTimeAttributeCallback {
+ void onSuccess(@Nullable Long value);
+ void onError(Exception ex);
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+ public interface OperationalStateListAttributeCallback {
+ void onSuccess( List valueList);
+ void onError(Exception ex);
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+ public interface GeneratedCommandListAttributeCallback {
+ void onSuccess( List valueList);
+ void onError(Exception ex);
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+ public interface AcceptedCommandListAttributeCallback {
+ void onSuccess( List valueList);
+ void onError(Exception ex);
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+ public interface EventListAttributeCallback {
+ void onSuccess( List valueList);
+ void onError(Exception ex);
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+ public interface AttributeListAttributeCallback {
+ void onSuccess( List valueList);
+ void onError(Exception ex);
+ default void onSubscriptionEstablished(long subscriptionId) {}
+ }
+
+ public void readPhaseListAttribute(
+ PhaseListAttributeCallback callback
+ ) {
+ readPhaseListAttribute(chipClusterPtr, callback);
+ }
+ public void subscribePhaseListAttribute(
+ PhaseListAttributeCallback callback
+ ,
+ int minInterval, int maxInterval) {
+ subscribePhaseListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readCurrentPhaseAttribute(
+ CurrentPhaseAttributeCallback callback
+ ) {
+ readCurrentPhaseAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeCurrentPhaseAttribute(
+ CurrentPhaseAttributeCallback callback
+ ,
+ int minInterval, int maxInterval) {
+ subscribeCurrentPhaseAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readCountdownTimeAttribute(
+ CountdownTimeAttributeCallback callback
+ ) {
+ readCountdownTimeAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeCountdownTimeAttribute(
+ CountdownTimeAttributeCallback callback
+ ,
+ int minInterval, int maxInterval) {
+ subscribeCountdownTimeAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readOperationalStateListAttribute(
+ OperationalStateListAttributeCallback callback
+ ) {
+ readOperationalStateListAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeOperationalStateListAttribute(
+ OperationalStateListAttributeCallback callback
+ ,
+ int minInterval, int maxInterval) {
+ subscribeOperationalStateListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readGeneratedCommandListAttribute(
+ GeneratedCommandListAttributeCallback callback
+ ) {
+ readGeneratedCommandListAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeGeneratedCommandListAttribute(
+ GeneratedCommandListAttributeCallback callback
+ ,
+ int minInterval, int maxInterval) {
+ subscribeGeneratedCommandListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readAcceptedCommandListAttribute(
+ AcceptedCommandListAttributeCallback callback
+ ) {
+ readAcceptedCommandListAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeAcceptedCommandListAttribute(
+ AcceptedCommandListAttributeCallback callback
+ ,
+ int minInterval, int maxInterval) {
+ subscribeAcceptedCommandListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readEventListAttribute(
+ EventListAttributeCallback callback
+ ) {
+ readEventListAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeEventListAttribute(
+ EventListAttributeCallback callback
+ ,
+ int minInterval, int maxInterval) {
+ subscribeEventListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readAttributeListAttribute(
+ AttributeListAttributeCallback callback
+ ) {
+ readAttributeListAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeAttributeListAttribute(
+ AttributeListAttributeCallback callback
+ ,
+ int minInterval, int maxInterval) {
+ subscribeAttributeListAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readFeatureMapAttribute(
+ LongAttributeCallback callback
+ ) {
+ readFeatureMapAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeFeatureMapAttribute(
+ LongAttributeCallback callback
+,
+ int minInterval, int maxInterval) {
+ subscribeFeatureMapAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ public void readClusterRevisionAttribute(
+ IntegerAttributeCallback callback
+ ) {
+ readClusterRevisionAttribute(chipClusterPtr, callback);
+ }
+ public void subscribeClusterRevisionAttribute(
+ IntegerAttributeCallback callback
+,
+ int minInterval, int maxInterval) {
+ subscribeClusterRevisionAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ }
+
+ private native void readPhaseListAttribute(long chipClusterPtr,
+ PhaseListAttributeCallback callback
+ );
+ private native void subscribePhaseListAttribute(long chipClusterPtr,
+ PhaseListAttributeCallback callback
+ , int minInterval, int maxInterval);
+
+ private native void readCurrentPhaseAttribute(long chipClusterPtr,
+ CurrentPhaseAttributeCallback callback
+ );
+ private native void subscribeCurrentPhaseAttribute(long chipClusterPtr,
+ CurrentPhaseAttributeCallback callback
+ , int minInterval, int maxInterval);
+
+ private native void readCountdownTimeAttribute(long chipClusterPtr,
+ CountdownTimeAttributeCallback callback
+ );
+ private native void subscribeCountdownTimeAttribute(long chipClusterPtr,
+ CountdownTimeAttributeCallback callback
+ , int minInterval, int maxInterval);
+
+ private native void readOperationalStateListAttribute(long chipClusterPtr,
+ OperationalStateListAttributeCallback callback
+ );
+ private native void subscribeOperationalStateListAttribute(long chipClusterPtr,
+ OperationalStateListAttributeCallback callback
+ , int minInterval, int maxInterval);
+
+ private native void readGeneratedCommandListAttribute(long chipClusterPtr,
+ GeneratedCommandListAttributeCallback callback
+ );
+ private native void subscribeGeneratedCommandListAttribute(long chipClusterPtr,
+ GeneratedCommandListAttributeCallback callback
+ , int minInterval, int maxInterval);
+
+ private native void readAcceptedCommandListAttribute(long chipClusterPtr,
+ AcceptedCommandListAttributeCallback callback
+ );
+ private native void subscribeAcceptedCommandListAttribute(long chipClusterPtr,
+ AcceptedCommandListAttributeCallback callback
+ , int minInterval, int maxInterval);
+
+ private native void readEventListAttribute(long chipClusterPtr,
+ EventListAttributeCallback callback
+ );
+ private native void subscribeEventListAttribute(long chipClusterPtr,
+ EventListAttributeCallback callback
+ , int minInterval, int maxInterval);
+
+ private native void readAttributeListAttribute(long chipClusterPtr,
+ AttributeListAttributeCallback callback
+ );
+ private native void subscribeAttributeListAttribute(long chipClusterPtr,
+ AttributeListAttributeCallback callback
+ , int minInterval, int maxInterval);
+
+ private native void readFeatureMapAttribute(long chipClusterPtr,
+ LongAttributeCallback callback
+ );
+ private native void subscribeFeatureMapAttribute(long chipClusterPtr,
+ LongAttributeCallback callback
+, int minInterval, int maxInterval);
+
+ private native void readClusterRevisionAttribute(long chipClusterPtr,
+ IntegerAttributeCallback callback
+ );
+ private native void subscribeClusterRevisionAttribute(long chipClusterPtr,
+ IntegerAttributeCallback callback
+, int minInterval, int maxInterval);
+ }
+
public static class AirQualityCluster extends BaseChipCluster {
public static final long CLUSTER_ID = 91L;
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
index 5141fbb60aa041..19571d40f218a2 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
@@ -1086,6 +1086,60 @@ public String toString() {
}
}
+public static class DishwasherOperationalStateClusterOperationalErrorEvent {
+public ChipStructs.DishwasherOperationalStateClusterErrorStateStruct errorState;
+
+ public DishwasherOperationalStateClusterOperationalErrorEvent(
+ ChipStructs.DishwasherOperationalStateClusterErrorStateStruct errorState
+ ) {
+ this.errorState = errorState;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("DishwasherOperationalStateClusterOperationalErrorEvent {\n");
+ output.append("\terrorState: ");
+ output.append(errorState);
+ output.append("\n");
+ output.append("}\n");
+ return output.toString();
+ }
+}
+
+public static class DishwasherOperationalStateClusterOperationCompletionEvent {
+public Integer completionErrorCode;
+public @Nullable Optional totalOperationalTime;
+public @Nullable Optional pausedTime;
+
+ public DishwasherOperationalStateClusterOperationCompletionEvent(
+ Integer completionErrorCode
+ , @Nullable Optional totalOperationalTime
+ , @Nullable Optional pausedTime
+ ) {
+ this.completionErrorCode = completionErrorCode;
+ this.totalOperationalTime = totalOperationalTime;
+ this.pausedTime = pausedTime;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("DishwasherOperationalStateClusterOperationCompletionEvent {\n");
+ output.append("\tcompletionErrorCode: ");
+ output.append(completionErrorCode);
+ output.append("\n");
+ output.append("\ttotalOperationalTime: ");
+ output.append(totalOperationalTime);
+ output.append("\n");
+ output.append("\tpausedTime: ");
+ output.append(pausedTime);
+ output.append("\n");
+ output.append("}\n");
+ return output.toString();
+ }
+}
+
public static class SmokeCoAlarmClusterSmokeAlarmEvent {
public SmokeCoAlarmClusterSmokeAlarmEvent(
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
index 83e7e60c2e79ea..4cba90ba53658c 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
@@ -174,6 +174,9 @@ public static String clusterIdToName(long clusterId) {
if (clusterId == 89L) {
return "DishwasherModeSelect";
}
+ if (clusterId == 90L) {
+ return "DishwasherOperationalState";
+ }
if (clusterId == 91L) {
return "AirQuality";
}
@@ -2450,6 +2453,45 @@ public static String attributeIdToName(long clusterId, long attributeId) {
}
return "";
}
+ if (clusterId == 90L) {
+ if (attributeId == 0L) {
+ return "PhaseList";
+ }
+ if (attributeId == 1L) {
+ return "CurrentPhase";
+ }
+ if (attributeId == 2L) {
+ return "CountdownTime";
+ }
+ if (attributeId == 3L) {
+ return "OperationalStateList";
+ }
+ if (attributeId == 4L) {
+ return "OperationalState";
+ }
+ if (attributeId == 5L) {
+ return "OperationalError";
+ }
+ if (attributeId == 65528L) {
+ return "GeneratedCommandList";
+ }
+ if (attributeId == 65529L) {
+ return "AcceptedCommandList";
+ }
+ if (attributeId == 65530L) {
+ return "EventList";
+ }
+ if (attributeId == 65531L) {
+ return "AttributeList";
+ }
+ if (attributeId == 65532L) {
+ return "FeatureMap";
+ }
+ if (attributeId == 65533L) {
+ return "ClusterRevision";
+ }
+ return "";
+ }
if (clusterId == 91L) {
if (attributeId == 0L) {
return "AirQuality";
@@ -7318,6 +7360,15 @@ public static String eventIdToName(long clusterId, long eventId) {
if (clusterId == 89L) {
return "";
}
+ if (clusterId == 90L) {
+ if (eventId == 0L) {
+ return "OperationalError";
+ }
+ if (eventId == 1L) {
+ return "OperationCompletion";
+ }
+ return "";
+ }
if (clusterId == 91L) {
return "";
}
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
index b5294f94e6054b..17115f7dcd979d 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipStructs.java
@@ -1938,6 +1938,66 @@ public String toString() {
}
}
+public static class DishwasherOperationalStateClusterErrorStateStruct {
+public Integer errorStateID;
+public @Nullable String errorStateLabel;
+public Optional errorStateDetails;
+
+ public DishwasherOperationalStateClusterErrorStateStruct(
+ Integer errorStateID
+ , @Nullable String errorStateLabel
+ , Optional errorStateDetails
+ ) {
+ this.errorStateID = errorStateID;
+ this.errorStateLabel = errorStateLabel;
+ this.errorStateDetails = errorStateDetails;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("DishwasherOperationalStateClusterErrorStateStruct {\n");
+ output.append("\terrorStateID: ");
+ output.append(errorStateID);
+ output.append("\n");
+ output.append("\terrorStateLabel: ");
+ output.append(errorStateLabel);
+ output.append("\n");
+ output.append("\terrorStateDetails: ");
+ output.append(errorStateDetails);
+ output.append("\n");
+ output.append("}\n");
+ return output.toString();
+ }
+}
+
+public static class DishwasherOperationalStateClusterOperationalStateStruct {
+public Integer operationalStateID;
+public String operationalStateLabel;
+
+ public DishwasherOperationalStateClusterOperationalStateStruct(
+ Integer operationalStateID
+ , String operationalStateLabel
+ ) {
+ this.operationalStateID = operationalStateID;
+ this.operationalStateLabel = operationalStateLabel;
+ }
+
+ @Override
+ public String toString() {
+ StringBuilder output = new StringBuilder();
+ output.append("DishwasherOperationalStateClusterOperationalStateStruct {\n");
+ output.append("\toperationalStateID: ");
+ output.append(operationalStateID);
+ output.append("\n");
+ output.append("\toperationalStateLabel: ");
+ output.append(operationalStateLabel);
+ output.append("\n");
+ output.append("}\n");
+ return output.toString();
+ }
+}
+
public static class OperationalStateClusterErrorStateStruct {
public Integer errorStateID;
public @Nullable String errorStateLabel;
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
index 92f7fa0d6f7645..b5d7fc107f22fa 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
@@ -7012,6 +7012,180 @@ public void setCallbackDelegate(ClusterCommandCallback callback) {
this.callback = callback;
}
+@Override
+ public void onSuccess( List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+
+ public static class DelegatedDishwasherOperationalStateClusterOperationalCommandResponseCallback implements ChipClusters.DishwasherOperationalStateCluster.OperationalCommandResponseCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+ @Override
+ public void onSuccess(ChipStructs.DishwasherOperationalStateClusterErrorStateStruct CommandResponseState) {
+ Map responseValues = new LinkedHashMap<>();
+ // CommandResponseState: Struct ErrorStateStruct
+ // Conversion from this type to Java is not properly implemented yet
+ callback.onSuccess(responseValues);
+ }
+
+ @Override
+ public void onError(Exception error) {
+ callback.onFailure(error);
+ }
+ }
+
+ public static class DelegatedDishwasherOperationalStateClusterPhaseListAttributeCallback implements ChipClusters.DishwasherOperationalStateCluster.PhaseListAttributeCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+@Override
+ public void onSuccess(@Nullable List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+ public static class DelegatedDishwasherOperationalStateClusterCurrentPhaseAttributeCallback implements ChipClusters.DishwasherOperationalStateCluster.CurrentPhaseAttributeCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+@Override
+ public void onSuccess(@Nullable Integer value) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("value", "Integer");
+ responseValues.put(commandResponseInfo, value);
+ callback.onSuccess(responseValues);
+ }
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+ public static class DelegatedDishwasherOperationalStateClusterCountdownTimeAttributeCallback implements ChipClusters.DishwasherOperationalStateCluster.CountdownTimeAttributeCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+@Override
+ public void onSuccess(@Nullable Long value) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("value", "Long");
+ responseValues.put(commandResponseInfo, value);
+ callback.onSuccess(responseValues);
+ }
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+ public static class DelegatedDishwasherOperationalStateClusterOperationalStateListAttributeCallback implements ChipClusters.DishwasherOperationalStateCluster.OperationalStateListAttributeCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+@Override
+ public void onSuccess( List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+ public static class DelegatedDishwasherOperationalStateClusterGeneratedCommandListAttributeCallback implements ChipClusters.DishwasherOperationalStateCluster.GeneratedCommandListAttributeCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+@Override
+ public void onSuccess( List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+ public static class DelegatedDishwasherOperationalStateClusterAcceptedCommandListAttributeCallback implements ChipClusters.DishwasherOperationalStateCluster.AcceptedCommandListAttributeCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+@Override
+ public void onSuccess( List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+ public static class DelegatedDishwasherOperationalStateClusterEventListAttributeCallback implements ChipClusters.DishwasherOperationalStateCluster.EventListAttributeCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
+@Override
+ public void onSuccess( List valueList) {
+ Map responseValues = new LinkedHashMap<>();
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
+ callback.onSuccess(responseValues);
+ }
+ @Override
+ public void onError(Exception ex) {
+ callback.onFailure(ex);
+ }
+ }
+ public static class DelegatedDishwasherOperationalStateClusterAttributeListAttributeCallback implements ChipClusters.DishwasherOperationalStateCluster.AttributeListAttributeCallback, DelegatedClusterCallback {
+ private ClusterCommandCallback callback;
+ @Override
+ public void setCallbackDelegate(ClusterCommandCallback callback) {
+ this.callback = callback;
+ }
+
@Override
public void onSuccess( List valueList) {
Map responseValues = new LinkedHashMap<>();
@@ -19843,6 +20017,9 @@ public Map initializeClusterMap() {
ClusterInfo dishwasherModeSelectClusterInfo = new ClusterInfo(
(ptr, endpointId) -> new ChipClusters.DishwasherModeSelectCluster(ptr, endpointId), new HashMap<>());
clusterMap.put("dishwasherModeSelect", dishwasherModeSelectClusterInfo);
+ ClusterInfo dishwasherOperationalStateClusterInfo = new ClusterInfo(
+ (ptr, endpointId) -> new ChipClusters.DishwasherOperationalStateCluster(ptr, endpointId), new HashMap<>());
+ clusterMap.put("dishwasherOperationalState", dishwasherOperationalStateClusterInfo);
ClusterInfo airQualityClusterInfo = new ClusterInfo(
(ptr, endpointId) -> new ChipClusters.AirQualityCluster(ptr, endpointId), new HashMap<>());
clusterMap.put("airQuality", airQualityClusterInfo);
@@ -20140,6 +20317,7 @@ public void combineCommand(Map destination, Map> getCommandMap() {
);
dishwasherModeSelectClusterInteractionInfoMap.put("changeToModeWithStatus", dishwasherModeSelectchangeToModeWithStatusInteractionInfo);
commandMap.put("dishwasherModeSelect", dishwasherModeSelectClusterInteractionInfoMap);
+ Map dishwasherOperationalStateClusterInteractionInfoMap = new LinkedHashMap<>();
+ Map dishwasherOperationalStatepauseCommandParams = new LinkedHashMap();
+ InteractionInfo dishwasherOperationalStatepauseInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster)
+ .pause((ChipClusters.DishwasherOperationalStateCluster.OperationalCommandResponseCallback) callback
+
+ );
+ },
+ () -> new DelegatedDishwasherOperationalStateClusterOperationalCommandResponseCallback(),
+ dishwasherOperationalStatepauseCommandParams
+ );
+ dishwasherOperationalStateClusterInteractionInfoMap.put("pause", dishwasherOperationalStatepauseInteractionInfo);
+ Map dishwasherOperationalStatestopCommandParams = new LinkedHashMap();
+ InteractionInfo dishwasherOperationalStatestopInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster)
+ .stop((ChipClusters.DishwasherOperationalStateCluster.OperationalCommandResponseCallback) callback
+
+ );
+ },
+ () -> new DelegatedDishwasherOperationalStateClusterOperationalCommandResponseCallback(),
+ dishwasherOperationalStatestopCommandParams
+ );
+ dishwasherOperationalStateClusterInteractionInfoMap.put("stop", dishwasherOperationalStatestopInteractionInfo);
+ Map dishwasherOperationalStatestartCommandParams = new LinkedHashMap();
+ InteractionInfo dishwasherOperationalStatestartInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster)
+ .start((ChipClusters.DishwasherOperationalStateCluster.OperationalCommandResponseCallback) callback
+
+ );
+ },
+ () -> new DelegatedDishwasherOperationalStateClusterOperationalCommandResponseCallback(),
+ dishwasherOperationalStatestartCommandParams
+ );
+ dishwasherOperationalStateClusterInteractionInfoMap.put("start", dishwasherOperationalStatestartInteractionInfo);
+ Map dishwasherOperationalStateresumeCommandParams = new LinkedHashMap();
+ InteractionInfo dishwasherOperationalStateresumeInteractionInfo = new InteractionInfo(
+ (cluster, callback, commandArguments) -> {
+ ((ChipClusters.DishwasherOperationalStateCluster) cluster)
+ .resume((ChipClusters.DishwasherOperationalStateCluster.OperationalCommandResponseCallback) callback
+
+ );
+ },
+ () -> new DelegatedDishwasherOperationalStateClusterOperationalCommandResponseCallback(),
+ dishwasherOperationalStateresumeCommandParams
+ );
+ dishwasherOperationalStateClusterInteractionInfoMap.put("resume", dishwasherOperationalStateresumeInteractionInfo);
+ commandMap.put("dishwasherOperationalState", dishwasherOperationalStateClusterInteractionInfoMap);
Map airQualityClusterInteractionInfoMap = new LinkedHashMap<>();
commandMap.put("airQuality", airQualityClusterInteractionInfoMap);
Map smokeCoAlarmClusterInteractionInfoMap = new LinkedHashMap<>();
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index d65219839e0887..a5d043f5fb799f 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -5028,6 +5028,110 @@ class ChipClusters:
},
},
}
+ _DISHWASHER_OPERATIONAL_STATE_CLUSTER_INFO = {
+ "clusterName": "DishwasherOperationalState",
+ "clusterId": 0x0000005A,
+ "commands": {
+ 0x00000000: {
+ "commandId": 0x00000000,
+ "commandName": "Pause",
+ "args": {
+ },
+ },
+ 0x00000001: {
+ "commandId": 0x00000001,
+ "commandName": "Stop",
+ "args": {
+ },
+ },
+ 0x00000002: {
+ "commandId": 0x00000002,
+ "commandName": "Start",
+ "args": {
+ },
+ },
+ 0x00000003: {
+ "commandId": 0x00000003,
+ "commandName": "Resume",
+ "args": {
+ },
+ },
+ },
+ "attributes": {
+ 0x00000000: {
+ "attributeName": "PhaseList",
+ "attributeId": 0x00000000,
+ "type": "str",
+ "reportable": True,
+ },
+ 0x00000001: {
+ "attributeName": "CurrentPhase",
+ "attributeId": 0x00000001,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000002: {
+ "attributeName": "CountdownTime",
+ "attributeId": 0x00000002,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x00000003: {
+ "attributeName": "OperationalStateList",
+ "attributeId": 0x00000003,
+ "type": "",
+ "reportable": True,
+ },
+ 0x00000004: {
+ "attributeName": "OperationalState",
+ "attributeId": 0x00000004,
+ "type": "",
+ "reportable": True,
+ },
+ 0x00000005: {
+ "attributeName": "OperationalError",
+ "attributeId": 0x00000005,
+ "type": "",
+ "reportable": True,
+ },
+ 0x0000FFF8: {
+ "attributeName": "GeneratedCommandList",
+ "attributeId": 0x0000FFF8,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFF9: {
+ "attributeName": "AcceptedCommandList",
+ "attributeId": 0x0000FFF9,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFFA: {
+ "attributeName": "EventList",
+ "attributeId": 0x0000FFFA,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFFB: {
+ "attributeName": "AttributeList",
+ "attributeId": 0x0000FFFB,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFFC: {
+ "attributeName": "FeatureMap",
+ "attributeId": 0x0000FFFC,
+ "type": "int",
+ "reportable": True,
+ },
+ 0x0000FFFD: {
+ "attributeName": "ClusterRevision",
+ "attributeId": 0x0000FFFD,
+ "type": "int",
+ "reportable": True,
+ },
+ },
+ }
_AIR_QUALITY_CLUSTER_INFO = {
"clusterName": "AirQuality",
"clusterId": 0x0000005B,
@@ -15588,6 +15692,7 @@ class ChipClusters:
0x00000056: _TEMPERATURE_CONTROL_CLUSTER_INFO,
0x00000057: _REFRIGERATOR_ALARM_CLUSTER_INFO,
0x00000059: _DISHWASHER_MODE_SELECT_CLUSTER_INFO,
+ 0x0000005A: _DISHWASHER_OPERATIONAL_STATE_CLUSTER_INFO,
0x0000005B: _AIR_QUALITY_CLUSTER_INFO,
0x0000005C: _SMOKE_CO_ALARM_CLUSTER_INFO,
0x00000060: _OPERATIONAL_STATE_CLUSTER_INFO,
@@ -15722,6 +15827,7 @@ class ChipClusters:
"TemperatureControl": _TEMPERATURE_CONTROL_CLUSTER_INFO,
"RefrigeratorAlarm": _REFRIGERATOR_ALARM_CLUSTER_INFO,
"DishwasherModeSelect": _DISHWASHER_MODE_SELECT_CLUSTER_INFO,
+ "DishwasherOperationalState": _DISHWASHER_OPERATIONAL_STATE_CLUSTER_INFO,
"AirQuality": _AIR_QUALITY_CLUSTER_INFO,
"SmokeCoAlarm": _SMOKE_CO_ALARM_CLUSTER_INFO,
"OperationalState": _OPERATIONAL_STATE_CLUSTER_INFO,
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 06be17d6c5a97d..2366307afcf0dd 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -17410,6 +17410,405 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
value: 'uint' = 0
+@dataclass
+class DishwasherOperationalState(Cluster):
+ id: typing.ClassVar[int] = 0x005A
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="phaseList", Tag=0x00000000, Type=typing.Union[Nullable, typing.List[str]]),
+ ClusterObjectFieldDescriptor(Label="currentPhase", Tag=0x00000001, Type=typing.Union[Nullable, uint]),
+ ClusterObjectFieldDescriptor(Label="countdownTime", Tag=0x00000002, Type=typing.Union[None, Nullable, uint]),
+ ClusterObjectFieldDescriptor(Label="operationalStateList", Tag=0x00000003, Type=typing.List[DishwasherOperationalState.Structs.OperationalStateStruct]),
+ ClusterObjectFieldDescriptor(Label="operationalState", Tag=0x00000004, Type=DishwasherOperationalState.Structs.OperationalStateStruct),
+ ClusterObjectFieldDescriptor(Label="operationalError", Tag=0x00000005, Type=DishwasherOperationalState.Structs.ErrorStateStruct),
+ 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]),
+ ClusterObjectFieldDescriptor(Label="attributeList", Tag=0x0000FFFB, Type=typing.List[uint]),
+ ClusterObjectFieldDescriptor(Label="featureMap", Tag=0x0000FFFC, Type=uint),
+ ClusterObjectFieldDescriptor(Label="clusterRevision", Tag=0x0000FFFD, Type=uint),
+ ])
+
+ phaseList: 'typing.Union[Nullable, typing.List[str]]' = None
+ currentPhase: 'typing.Union[Nullable, uint]' = None
+ countdownTime: 'typing.Union[None, Nullable, uint]' = None
+ operationalStateList: 'typing.List[DishwasherOperationalState.Structs.OperationalStateStruct]' = None
+ operationalState: 'DishwasherOperationalState.Structs.OperationalStateStruct' = None
+ operationalError: 'DishwasherOperationalState.Structs.ErrorStateStruct' = None
+ generatedCommandList: 'typing.List[uint]' = None
+ acceptedCommandList: 'typing.List[uint]' = None
+ eventList: 'typing.List[uint]' = None
+ attributeList: 'typing.List[uint]' = None
+ featureMap: 'uint' = None
+ clusterRevision: 'uint' = None
+
+ class Enums:
+ class ErrorStateEnum(MatterIntEnum):
+ kNoError = 0x00
+ kUnableToStartOrResume = 0x01
+ kUnableToCompleteOperation = 0x02
+ kCommandInvalidInState = 0x03
+ kInflowError = 0x40
+ kDrainError = 0x41
+ kDoorError = 0x42
+ kTempTooLow = 0x43
+ kTempTooHigh = 0x44
+ kWaterLevelError = 0x45
+ # 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 = 4,
+
+ class OperationalStateEnum(MatterIntEnum):
+ kStopped = 0x00
+ kRunning = 0x01
+ kPaused = 0x02
+ kError = 0x03
+ # 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 = 4,
+
+ class Structs:
+ @dataclass
+ class ErrorStateStruct(ClusterObject):
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="errorStateID", Tag=0, Type=DishwasherOperationalState.Enums.ErrorStateEnum),
+ ClusterObjectFieldDescriptor(Label="errorStateLabel", Tag=1, Type=typing.Union[Nullable, str]),
+ ClusterObjectFieldDescriptor(Label="errorStateDetails", Tag=2, Type=typing.Optional[str]),
+ ])
+
+ errorStateID: 'DishwasherOperationalState.Enums.ErrorStateEnum' = 0
+ errorStateLabel: 'typing.Union[Nullable, str]' = NullValue
+ errorStateDetails: 'typing.Optional[str]' = None
+
+ @dataclass
+ class OperationalStateStruct(ClusterObject):
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="operationalStateID", Tag=0, Type=DishwasherOperationalState.Enums.OperationalStateEnum),
+ ClusterObjectFieldDescriptor(Label="operationalStateLabel", Tag=1, Type=str),
+ ])
+
+ operationalStateID: 'DishwasherOperationalState.Enums.OperationalStateEnum' = 0
+ operationalStateLabel: 'str' = ""
+
+ class Commands:
+ @dataclass
+ class Pause(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x005A
+ command_id: typing.ClassVar[int] = 0x00000000
+ is_client: typing.ClassVar[bool] = True
+ response_type: typing.ClassVar[str] = 'OperationalCommandResponse'
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class Stop(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x005A
+ command_id: typing.ClassVar[int] = 0x00000001
+ is_client: typing.ClassVar[bool] = True
+ response_type: typing.ClassVar[str] = 'OperationalCommandResponse'
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class Start(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x005A
+ command_id: typing.ClassVar[int] = 0x00000002
+ is_client: typing.ClassVar[bool] = True
+ response_type: typing.ClassVar[str] = 'OperationalCommandResponse'
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class Resume(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x005A
+ command_id: typing.ClassVar[int] = 0x00000003
+ is_client: typing.ClassVar[bool] = True
+ response_type: typing.ClassVar[str] = 'OperationalCommandResponse'
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ])
+
+ @dataclass
+ class OperationalCommandResponse(ClusterCommand):
+ cluster_id: typing.ClassVar[int] = 0x005A
+ command_id: typing.ClassVar[int] = 0x00000004
+ is_client: typing.ClassVar[bool] = False
+ response_type: typing.ClassVar[str] = None
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="commandResponseState", Tag=0, Type=DishwasherOperationalState.Structs.ErrorStateStruct),
+ ])
+
+ commandResponseState: 'DishwasherOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: DishwasherOperationalState.Structs.ErrorStateStruct())
+
+ class Attributes:
+ @dataclass
+ class PhaseList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000000
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, typing.List[str]])
+
+ value: 'typing.Union[Nullable, typing.List[str]]' = NullValue
+
+ @dataclass
+ class CurrentPhase(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000001
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Union[Nullable, uint])
+
+ value: 'typing.Union[Nullable, uint]' = NullValue
+
+ @dataclass
+ class CountdownTime(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000002
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint])
+
+ value: 'typing.Union[None, Nullable, uint]' = None
+
+ @dataclass
+ class OperationalStateList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000003
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[DishwasherOperationalState.Structs.OperationalStateStruct])
+
+ value: 'typing.List[DishwasherOperationalState.Structs.OperationalStateStruct]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class OperationalState(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000004
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=DishwasherOperationalState.Structs.OperationalStateStruct)
+
+ value: 'DishwasherOperationalState.Structs.OperationalStateStruct' = field(default_factory=lambda: DishwasherOperationalState.Structs.OperationalStateStruct())
+
+ @dataclass
+ class OperationalError(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x00000005
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=DishwasherOperationalState.Structs.ErrorStateStruct)
+
+ value: 'DishwasherOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: DishwasherOperationalState.Structs.ErrorStateStruct())
+
+ @dataclass
+ class GeneratedCommandList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFF8
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
+
+ value: 'typing.List[uint]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class AcceptedCommandList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFF9
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
+
+ value: 'typing.List[uint]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class EventList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFFA
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
+
+ value: 'typing.List[uint]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class AttributeList(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFFB
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=typing.List[uint])
+
+ value: 'typing.List[uint]' = field(default_factory=lambda: [])
+
+ @dataclass
+ class FeatureMap(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFFC
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=uint)
+
+ value: 'uint' = 0
+
+ @dataclass
+ class ClusterRevision(ClusterAttributeDescriptor):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def attribute_id(cls) -> int:
+ return 0x0000FFFD
+
+ @ChipUtility.classproperty
+ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
+ return ClusterObjectFieldDescriptor(Type=uint)
+
+ value: 'uint' = 0
+
+ class Events:
+ @dataclass
+ class OperationalError(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000000
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="errorState", Tag=0, Type=DishwasherOperationalState.Structs.ErrorStateStruct),
+ ])
+
+ errorState: 'DishwasherOperationalState.Structs.ErrorStateStruct' = field(default_factory=lambda: DishwasherOperationalState.Structs.ErrorStateStruct())
+
+ @dataclass
+ class OperationCompletion(ClusterEvent):
+ @ChipUtility.classproperty
+ def cluster_id(cls) -> int:
+ return 0x005A
+
+ @ChipUtility.classproperty
+ def event_id(cls) -> int:
+ return 0x00000001
+
+ @ChipUtility.classproperty
+ def descriptor(cls) -> ClusterObjectDescriptor:
+ return ClusterObjectDescriptor(
+ Fields=[
+ ClusterObjectFieldDescriptor(Label="completionErrorCode", Tag=0, Type=DishwasherOperationalState.Enums.ErrorStateEnum),
+ ClusterObjectFieldDescriptor(Label="totalOperationalTime", Tag=1, Type=typing.Union[None, Nullable, uint]),
+ ClusterObjectFieldDescriptor(Label="pausedTime", Tag=2, Type=typing.Union[None, Nullable, uint]),
+ ])
+
+ completionErrorCode: 'DishwasherOperationalState.Enums.ErrorStateEnum' = 0
+ totalOperationalTime: 'typing.Union[None, Nullable, uint]' = None
+ pausedTime: 'typing.Union[None, Nullable, uint]' = None
+
+
@dataclass
class AirQuality(Cluster):
id: typing.ClassVar[int] = 0x005B
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
index 6b7b60fc89dfd0..0cd4f4209a7b84 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
@@ -1919,6 +1919,51 @@ static BOOL AttributeIsSpecifiedInRefrigeratorAlarmCluster(AttributeId aAttribut
}
}
}
+static BOOL AttributeIsSpecifiedInDishwasherOperationalStateCluster(AttributeId aAttributeId)
+{
+ using namespace Clusters::DishwasherOperationalState;
+ switch (aAttributeId) {
+ case Attributes::PhaseList::Id: {
+ return YES;
+ }
+ case Attributes::CurrentPhase::Id: {
+ return YES;
+ }
+ case Attributes::CountdownTime::Id: {
+ return YES;
+ }
+ case Attributes::OperationalStateList::Id: {
+ return YES;
+ }
+ case Attributes::OperationalState::Id: {
+ return YES;
+ }
+ case Attributes::OperationalError::Id: {
+ return YES;
+ }
+ case Attributes::GeneratedCommandList::Id: {
+ return YES;
+ }
+ case Attributes::AcceptedCommandList::Id: {
+ return YES;
+ }
+ case Attributes::EventList::Id: {
+ return YES;
+ }
+ case Attributes::AttributeList::Id: {
+ return YES;
+ }
+ case Attributes::FeatureMap::Id: {
+ return YES;
+ }
+ case Attributes::ClusterRevision::Id: {
+ return YES;
+ }
+ default: {
+ return NO;
+ }
+ }
+}
static BOOL AttributeIsSpecifiedInAirQualityCluster(AttributeId aAttributeId)
{
using namespace Clusters::AirQuality;
@@ -7083,6 +7128,9 @@ BOOL MTRAttributeIsSpecified(ClusterId aClusterId, AttributeId aAttributeId)
case Clusters::RefrigeratorAlarm::Id: {
return AttributeIsSpecifiedInRefrigeratorAlarmCluster(aAttributeId);
}
+ case Clusters::DishwasherOperationalState::Id: {
+ return AttributeIsSpecifiedInDishwasherOperationalStateCluster(aAttributeId);
+ }
case Clusters::AirQuality::Id: {
return AttributeIsSpecifiedInAirQualityCluster(aAttributeId);
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index 4d0b099328cbb1..4a5b473d54f6cf 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -9851,6 +9851,293 @@ static id _Nullable DecodeAttributeValueForRefrigeratorAlarmCluster(
*aError = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB;
return nil;
}
+static id _Nullable DecodeAttributeValueForDishwasherOperationalStateCluster(
+ AttributeId aAttributeId, TLV::TLVReader & aReader, CHIP_ERROR * aError)
+{
+ using namespace Clusters::DishwasherOperationalState;
+ switch (aAttributeId) {
+ case Attributes::PhaseList::Id: {
+ using TypeInfo = Attributes::PhaseList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ { // Scope for our temporary variables
+ auto * array_1 = [NSMutableArray new];
+ auto iter_1 = cppValue.Value().begin();
+ while (iter_1.Next()) {
+ auto & entry_1 = iter_1.GetValue();
+ NSString * newElement_1;
+ newElement_1 = AsString(entry_1);
+ if (newElement_1 == nil) {
+ CHIP_ERROR err = CHIP_ERROR_INVALID_ARGUMENT;
+ *aError = err;
+ return nil;
+ }
+ [array_1 addObject:newElement_1];
+ }
+ CHIP_ERROR err = iter_1.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_1;
+ }
+ }
+ return value;
+ }
+ case Attributes::CurrentPhase::Id: {
+ using TypeInfo = Attributes::CurrentPhase::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ value = [NSNumber numberWithUnsignedChar:cppValue.Value()];
+ }
+ return value;
+ }
+ case Attributes::CountdownTime::Id: {
+ using TypeInfo = Attributes::CountdownTime::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nullable value;
+ if (cppValue.IsNull()) {
+ value = nil;
+ } else {
+ value = [NSNumber numberWithUnsignedInt:cppValue.Value()];
+ }
+ return value;
+ }
+ case Attributes::OperationalStateList::Id: {
+ using TypeInfo = Attributes::OperationalStateList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ MTRDishwasherOperationalStateClusterOperationalStateStruct * newElement_0;
+ newElement_0 = [MTRDishwasherOperationalStateClusterOperationalStateStruct new];
+ newElement_0.operationalStateID = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0.operationalStateID)];
+ newElement_0.operationalStateLabel = AsString(entry_0.operationalStateLabel);
+ if (newElement_0.operationalStateLabel == nil) {
+ CHIP_ERROR err = CHIP_ERROR_INVALID_ARGUMENT;
+ *aError = err;
+ return nil;
+ }
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::OperationalState::Id: {
+ using TypeInfo = Attributes::OperationalState::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ MTRDishwasherOperationalStateClusterOperationalStateStruct * _Nonnull value;
+ value = [MTRDishwasherOperationalStateClusterOperationalStateStruct new];
+ value.operationalStateID = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.operationalStateID)];
+ value.operationalStateLabel = AsString(cppValue.operationalStateLabel);
+ if (value.operationalStateLabel == nil) {
+ CHIP_ERROR err = CHIP_ERROR_INVALID_ARGUMENT;
+ *aError = err;
+ return nil;
+ }
+ return value;
+ }
+ case Attributes::OperationalError::Id: {
+ using TypeInfo = Attributes::OperationalError::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ MTRDishwasherOperationalStateClusterErrorStateStruct * _Nonnull value;
+ value = [MTRDishwasherOperationalStateClusterErrorStateStruct new];
+ value.errorStateID = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue.errorStateID)];
+ if (cppValue.errorStateLabel.IsNull()) {
+ value.errorStateLabel = nil;
+ } else {
+ value.errorStateLabel = AsString(cppValue.errorStateLabel.Value());
+ if (value.errorStateLabel == nil) {
+ CHIP_ERROR err = CHIP_ERROR_INVALID_ARGUMENT;
+ *aError = err;
+ return nil;
+ }
+ }
+ if (cppValue.errorStateDetails.HasValue()) {
+ value.errorStateDetails = AsString(cppValue.errorStateDetails.Value());
+ if (value.errorStateDetails == nil) {
+ CHIP_ERROR err = CHIP_ERROR_INVALID_ARGUMENT;
+ *aError = err;
+ return nil;
+ }
+ } else {
+ value.errorStateDetails = nil;
+ }
+ return value;
+ }
+ case Attributes::GeneratedCommandList::Id: {
+ using TypeInfo = Attributes::GeneratedCommandList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedInt:entry_0];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::AcceptedCommandList::Id: {
+ using TypeInfo = Attributes::AcceptedCommandList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedInt:entry_0];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::EventList::Id: {
+ using TypeInfo = Attributes::EventList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedInt:entry_0];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::AttributeList::Id: {
+ using TypeInfo = Attributes::AttributeList::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSArray * _Nonnull value;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = cppValue.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedInt:entry_0];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ *aError = err;
+ return nil;
+ }
+ value = array_0;
+ }
+ return value;
+ }
+ case Attributes::FeatureMap::Id: {
+ using TypeInfo = Attributes::FeatureMap::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedInt:cppValue];
+ return value;
+ }
+ case Attributes::ClusterRevision::Id: {
+ using TypeInfo = Attributes::ClusterRevision::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedShort:cppValue];
+ return value;
+ }
+ default: {
+ break;
+ }
+ }
+
+ *aError = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB;
+ return nil;
+}
static id _Nullable DecodeAttributeValueForAirQualityCluster(
AttributeId aAttributeId, TLV::TLVReader & aReader, CHIP_ERROR * aError)
{
@@ -33603,6 +33890,9 @@ id _Nullable MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::T
case Clusters::RefrigeratorAlarm::Id: {
return DecodeAttributeValueForRefrigeratorAlarmCluster(aPath.mAttributeId, aReader, aError);
}
+ case Clusters::DishwasherOperationalState::Id: {
+ return DecodeAttributeValueForDishwasherOperationalStateCluster(aPath.mAttributeId, aReader, aError);
+ }
case Clusters::AirQuality::Id: {
return DecodeAttributeValueForAirQualityCluster(aPath.mAttributeId, aReader, aError);
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
index f5f668af05be77..7a027ab395b079 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -8330,6 +8330,219 @@ MTR_NEWLY_AVAILABLE
@end
+/**
+ * Cluster Dishwasher Operational State
+ *
+ * This cluster supports remotely monitoring and, where supported, changing the operational state of a Dishwasher.
+ */
+MTR_NEWLY_AVAILABLE
+@interface MTRBaseClusterDishwasherOperationalState : MTRCluster
+
+- (instancetype _Nullable)initWithDevice:(MTRBaseDevice *)device
+ endpointID:(NSNumber *)endpointID
+ queue:(dispatch_queue_t)queue NS_DESIGNATED_INITIALIZER MTR_NEWLY_AVAILABLE;
+
+/**
+ * Command Pause
+ *
+ * Upon receipt, the device SHALL pause its operation if it is possible based on the current function of the server.
+ */
+- (void)pauseWithParams:(MTRDishwasherOperationalStateClusterPauseParams * _Nullable)params
+ completion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+- (void)pauseWithCompletion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+/**
+ * Command Stop
+ *
+ * Upon receipt, the device SHALL stop its operation if it is at a position where it is safe to do so and/or permitted.
+ */
+- (void)stopWithParams:(MTRDishwasherOperationalStateClusterStopParams * _Nullable)params
+ completion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+- (void)stopWithCompletion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+/**
+ * Command Start
+ *
+ * Upon receipt, the device SHALL start its operation if it is safe to do so and the device is in an operational state from which it
+ * can be started.
+ */
+- (void)startWithParams:(MTRDishwasherOperationalStateClusterStartParams * _Nullable)params
+ completion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+- (void)startWithCompletion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+/**
+ * Command Resume
+ *
+ * Upon receipt, the device SHALL resume its operation from the point it was at when it received the Pause command, or from the
+ * point when it was paused by means outside of this cluster (for example by manual button press).
+ */
+- (void)resumeWithParams:(MTRDishwasherOperationalStateClusterResumeParams * _Nullable)params
+ completion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+- (void)resumeWithCompletion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributePhaseListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributePhaseListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributePhaseListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeCurrentPhaseWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeCurrentPhaseWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCurrentPhaseWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeCountdownTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeCountdownTimeWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeCountdownTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeOperationalStateListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeOperationalStateListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOperationalStateListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeOperationalStateWithCompletion:
+ (void (^)(MTRDishwasherOperationalStateClusterOperationalStateStruct * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeOperationalStateWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(MTRDishwasherOperationalStateClusterOperationalStateStruct * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)
+ readAttributeOperationalStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(
+ MTRDishwasherOperationalStateClusterOperationalStateStruct * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeOperationalErrorWithCompletion:
+ (void (^)(MTRDishwasherOperationalStateClusterErrorStateStruct * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeOperationalErrorWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(MTRDishwasherOperationalStateClusterErrorStateStruct * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeOperationalErrorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(
+ MTRDishwasherOperationalStateClusterErrorStateStruct * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))reportHandler MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeEventListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeEventListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeEventListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (instancetype)init NS_UNAVAILABLE;
++ (instancetype)new NS_UNAVAILABLE;
+
+@end
+
/**
* Cluster Air Quality
*
@@ -31721,6 +31934,26 @@ typedef NS_OPTIONS(uint32_t, MTRRefrigeratorAlarmAlarmMap) {
MTRRefrigeratorAlarmAlarmMapDoorOpen MTR_NEWLY_AVAILABLE = 0x1,
} MTR_NEWLY_AVAILABLE;
+typedef NS_ENUM(uint8_t, MTRDishwasherOperationalStateErrorState) {
+ MTRDishwasherOperationalStateErrorStateNoError MTR_NEWLY_AVAILABLE = 0x00,
+ MTRDishwasherOperationalStateErrorStateUnableToStartOrResume MTR_NEWLY_AVAILABLE = 0x01,
+ MTRDishwasherOperationalStateErrorStateUnableToCompleteOperation MTR_NEWLY_AVAILABLE = 0x02,
+ MTRDishwasherOperationalStateErrorStateCommandInvalidInState MTR_NEWLY_AVAILABLE = 0x03,
+ MTRDishwasherOperationalStateErrorStateInflowError MTR_NEWLY_AVAILABLE = 0x40,
+ MTRDishwasherOperationalStateErrorStateDrainError MTR_NEWLY_AVAILABLE = 0x41,
+ MTRDishwasherOperationalStateErrorStateDoorError MTR_NEWLY_AVAILABLE = 0x42,
+ MTRDishwasherOperationalStateErrorStateTempTooLow MTR_NEWLY_AVAILABLE = 0x43,
+ MTRDishwasherOperationalStateErrorStateTempTooHigh MTR_NEWLY_AVAILABLE = 0x44,
+ MTRDishwasherOperationalStateErrorStateWaterLevelError MTR_NEWLY_AVAILABLE = 0x45,
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_ENUM(uint8_t, MTRDishwasherOperationalStateOperationalState) {
+ MTRDishwasherOperationalStateOperationalStateStopped MTR_NEWLY_AVAILABLE = 0x00,
+ MTRDishwasherOperationalStateOperationalStateRunning MTR_NEWLY_AVAILABLE = 0x01,
+ MTRDishwasherOperationalStateOperationalStatePaused MTR_NEWLY_AVAILABLE = 0x02,
+ MTRDishwasherOperationalStateOperationalStateError MTR_NEWLY_AVAILABLE = 0x03,
+} MTR_NEWLY_AVAILABLE;
+
typedef NS_ENUM(uint8_t, MTRAirQuality) {
MTRAirQualityUnknown MTR_NEWLY_AVAILABLE = 0x00,
MTRAirQualityGood MTR_NEWLY_AVAILABLE = 0x01,
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index a4acf1dfc0071e..86f1034e9fa2d5 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -49330,6 +49330,725 @@ + (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheC
@end
+@implementation MTRBaseClusterDishwasherOperationalState
+
+- (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue
+{
+ if (self = [super initWithQueue:queue]) {
+ if (device == nil) {
+ return nil;
+ }
+
+ _device = device;
+ _endpoint = [endpointID unsignedShortValue];
+ }
+ return self;
+}
+
+- (void)pauseWithCompletion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion
+{
+ [self pauseWithParams:nil completion:completion];
+}
+- (void)pauseWithParams:(MTRDishwasherOperationalStateClusterPauseParams * _Nullable)params
+ completion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion
+{
+ // Make a copy of params before we go async.
+ params = [params copy];
+ auto * bridge = new MTRDishwasherOperationalStateClusterOperationalCommandResponseCallbackBridge(self.callbackQueue, completion,
+ ^(ExchangeManager & exchangeManager, const SessionHandle & session,
+ DishwasherOperationalStateClusterOperationalCommandResponseCallbackType successCb, MTRErrorCallback failureCb,
+ MTRCallbackBridgeBase * bridge) {
+ auto * typedBridge
+ = static_cast(bridge);
+ Optional timedInvokeTimeoutMs;
+ Optional invokeTimeout;
+ ListFreer listFreer;
+ DishwasherOperationalState::Commands::Pause::Type request;
+ if (params != nil) {
+ if (params.timedInvokeTimeoutMs != nil) {
+ params.timedInvokeTimeoutMs = MTRClampedNumber(params.timedInvokeTimeoutMs, @(1), @(UINT16_MAX));
+ timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
+ }
+ if (params.serverSideProcessingTimeout != nil) {
+ // Clamp to a number of seconds that will not overflow 32-bit
+ // int when converted to ms.
+ auto * serverSideProcessingTimeout = MTRClampedNumber(params.serverSideProcessingTimeout, @(0), @(UINT16_MAX));
+ invokeTimeout.SetValue(Seconds16(serverSideProcessingTimeout.unsignedShortValue));
+ }
+ }
+
+ return MTRStartInvokeInteraction(typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint,
+ timedInvokeTimeoutMs, invokeTimeout);
+ });
+ std::move(*bridge).DispatchAction(self.device);
+}
+
+- (void)stopWithCompletion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion
+{
+ [self stopWithParams:nil completion:completion];
+}
+- (void)stopWithParams:(MTRDishwasherOperationalStateClusterStopParams * _Nullable)params
+ completion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion
+{
+ // Make a copy of params before we go async.
+ params = [params copy];
+ auto * bridge = new MTRDishwasherOperationalStateClusterOperationalCommandResponseCallbackBridge(self.callbackQueue, completion,
+ ^(ExchangeManager & exchangeManager, const SessionHandle & session,
+ DishwasherOperationalStateClusterOperationalCommandResponseCallbackType successCb, MTRErrorCallback failureCb,
+ MTRCallbackBridgeBase * bridge) {
+ auto * typedBridge
+ = static_cast(bridge);
+ Optional timedInvokeTimeoutMs;
+ Optional invokeTimeout;
+ ListFreer listFreer;
+ DishwasherOperationalState::Commands::Stop::Type request;
+ if (params != nil) {
+ if (params.timedInvokeTimeoutMs != nil) {
+ params.timedInvokeTimeoutMs = MTRClampedNumber(params.timedInvokeTimeoutMs, @(1), @(UINT16_MAX));
+ timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
+ }
+ if (params.serverSideProcessingTimeout != nil) {
+ // Clamp to a number of seconds that will not overflow 32-bit
+ // int when converted to ms.
+ auto * serverSideProcessingTimeout = MTRClampedNumber(params.serverSideProcessingTimeout, @(0), @(UINT16_MAX));
+ invokeTimeout.SetValue(Seconds16(serverSideProcessingTimeout.unsignedShortValue));
+ }
+ }
+
+ return MTRStartInvokeInteraction(typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint,
+ timedInvokeTimeoutMs, invokeTimeout);
+ });
+ std::move(*bridge).DispatchAction(self.device);
+}
+
+- (void)startWithCompletion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion
+{
+ [self startWithParams:nil completion:completion];
+}
+- (void)startWithParams:(MTRDishwasherOperationalStateClusterStartParams * _Nullable)params
+ completion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion
+{
+ // Make a copy of params before we go async.
+ params = [params copy];
+ auto * bridge = new MTRDishwasherOperationalStateClusterOperationalCommandResponseCallbackBridge(self.callbackQueue, completion,
+ ^(ExchangeManager & exchangeManager, const SessionHandle & session,
+ DishwasherOperationalStateClusterOperationalCommandResponseCallbackType successCb, MTRErrorCallback failureCb,
+ MTRCallbackBridgeBase * bridge) {
+ auto * typedBridge
+ = static_cast(bridge);
+ Optional timedInvokeTimeoutMs;
+ Optional invokeTimeout;
+ ListFreer listFreer;
+ DishwasherOperationalState::Commands::Start::Type request;
+ if (params != nil) {
+ if (params.timedInvokeTimeoutMs != nil) {
+ params.timedInvokeTimeoutMs = MTRClampedNumber(params.timedInvokeTimeoutMs, @(1), @(UINT16_MAX));
+ timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
+ }
+ if (params.serverSideProcessingTimeout != nil) {
+ // Clamp to a number of seconds that will not overflow 32-bit
+ // int when converted to ms.
+ auto * serverSideProcessingTimeout = MTRClampedNumber(params.serverSideProcessingTimeout, @(0), @(UINT16_MAX));
+ invokeTimeout.SetValue(Seconds16(serverSideProcessingTimeout.unsignedShortValue));
+ }
+ }
+
+ return MTRStartInvokeInteraction(typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint,
+ timedInvokeTimeoutMs, invokeTimeout);
+ });
+ std::move(*bridge).DispatchAction(self.device);
+}
+
+- (void)resumeWithCompletion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion
+{
+ [self resumeWithParams:nil completion:completion];
+}
+- (void)resumeWithParams:(MTRDishwasherOperationalStateClusterResumeParams * _Nullable)params
+ completion:(void (^)(MTRDishwasherOperationalStateClusterOperationalCommandResponseParams * _Nullable data,
+ NSError * _Nullable error))completion
+{
+ // Make a copy of params before we go async.
+ params = [params copy];
+ auto * bridge = new MTRDishwasherOperationalStateClusterOperationalCommandResponseCallbackBridge(self.callbackQueue, completion,
+ ^(ExchangeManager & exchangeManager, const SessionHandle & session,
+ DishwasherOperationalStateClusterOperationalCommandResponseCallbackType successCb, MTRErrorCallback failureCb,
+ MTRCallbackBridgeBase * bridge) {
+ auto * typedBridge
+ = static_cast(bridge);
+ Optional timedInvokeTimeoutMs;
+ Optional invokeTimeout;
+ ListFreer listFreer;
+ DishwasherOperationalState::Commands::Resume::Type request;
+ if (params != nil) {
+ if (params.timedInvokeTimeoutMs != nil) {
+ params.timedInvokeTimeoutMs = MTRClampedNumber(params.timedInvokeTimeoutMs, @(1), @(UINT16_MAX));
+ timedInvokeTimeoutMs.SetValue(params.timedInvokeTimeoutMs.unsignedShortValue);
+ }
+ if (params.serverSideProcessingTimeout != nil) {
+ // Clamp to a number of seconds that will not overflow 32-bit
+ // int when converted to ms.
+ auto * serverSideProcessingTimeout = MTRClampedNumber(params.serverSideProcessingTimeout, @(0), @(UINT16_MAX));
+ invokeTimeout.SetValue(Seconds16(serverSideProcessingTimeout.unsignedShortValue));
+ }
+ }
+
+ return MTRStartInvokeInteraction(typedBridge, request, exchangeManager, session, successCb, failureCb, self->_endpoint,
+ timedInvokeTimeoutMs, invokeTimeout);
+ });
+ std::move(*bridge).DispatchAction(self.device);
+}
+
+- (void)readAttributePhaseListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::PhaseList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributePhaseListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::PhaseList::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributePhaseListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRDishwasherOperationalStatePhaseListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(DishwasherOperationalStatePhaseListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::PhaseList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeCurrentPhaseWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::CurrentPhase::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeCurrentPhaseWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::CurrentPhase::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeCurrentPhaseWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRNullableInt8uAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(NullableInt8uAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::CurrentPhase::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeCountdownTimeWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::CountdownTime::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeCountdownTimeWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::CountdownTime::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeCountdownTimeWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRNullableInt32uAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(NullableInt32uAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::CountdownTime::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeOperationalStateListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalStateList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeOperationalStateListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalStateList::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeOperationalStateListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(DishwasherOperationalStateOperationalStateListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalStateList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeOperationalStateWithCompletion:
+ (void (^)(MTRDishwasherOperationalStateClusterOperationalStateStruct * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalState::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeOperationalStateWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(MTRDishwasherOperationalStateClusterOperationalStateStruct * _Nullable value,
+ NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalState::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished,
+ reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)
+ readAttributeOperationalStateWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(
+ MTRDishwasherOperationalStateClusterOperationalStateStruct * _Nullable value,
+ NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(DishwasherOperationalStateOperationalStateStructAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalState::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeOperationalErrorWithCompletion:
+ (void (^)(MTRDishwasherOperationalStateClusterErrorStateStruct * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalError::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeOperationalErrorWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(MTRDishwasherOperationalStateClusterErrorStateStruct * _Nullable value,
+ NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalError::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished,
+ reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeOperationalErrorWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(
+ MTRDishwasherOperationalStateClusterErrorStateStruct * _Nullable value,
+ NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(DishwasherOperationalStateOperationalErrorStructAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::OperationalError::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeGeneratedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::GeneratedCommandList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeGeneratedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::GeneratedCommandList::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeGeneratedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRDishwasherOperationalStateGeneratedCommandListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(DishwasherOperationalStateGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::GeneratedCommandList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeAcceptedCommandListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::AcceptedCommandList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeAcceptedCommandListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::AcceptedCommandList::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeAcceptedCommandListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRDishwasherOperationalStateAcceptedCommandListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(DishwasherOperationalStateAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::AcceptedCommandList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeEventListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::EventList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeEventListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::EventList::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeEventListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRDishwasherOperationalStateEventListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(DishwasherOperationalStateEventListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::EventList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeAttributeListWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::AttributeList::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeAttributeListWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::AttributeList::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeAttributeListWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRDishwasherOperationalStateAttributeListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(DishwasherOperationalStateAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::AttributeList::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeFeatureMapWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::FeatureMap::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeFeatureMapWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::FeatureMap::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeFeatureMapWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRInt32uAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(Int32uAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::FeatureMap::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+- (void)readAttributeClusterRevisionWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = DishwasherOperationalState::Attributes::ClusterRevision::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeClusterRevisionWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = DishwasherOperationalState::Attributes::ClusterRevision::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeClusterRevisionWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:
+ (void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRInt16uAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(
+ clusterStateCacheContainer.baseDevice, ^(Int16uAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = DishwasherOperationalState::Attributes::ClusterRevision::TypeInfo;
+ path.mEndpointId = static_cast([endpoint unsignedShortValue]);
+ path.mClusterId = TypeInfo::GetClusterId();
+ path.mAttributeId = TypeInfo::GetAttributeId();
+ TypeInfo::DecodableType value;
+ CHIP_ERROR err = clusterStateCacheContainer.cppClusterStateCache->Get(path, value);
+ if (err == CHIP_NO_ERROR) {
+ successCb(bridge, value);
+ }
+ return err;
+ }
+ return CHIP_ERROR_NOT_FOUND;
+ });
+}
+
+@end
+
@implementation MTRBaseClusterAirQuality
- (instancetype)initWithDevice:(MTRBaseDevice *)device endpointID:(NSNumber *)endpointID queue:(dispatch_queue_t)queue
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
index 890e9f718a2b5b..0d4db3ebbc55e3 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
@@ -215,6 +215,11 @@
@property (nonatomic, assign, readonly) chip::EndpointId endpoint;
@end
+@interface MTRBaseClusterDishwasherOperationalState ()
+@property (nonatomic, strong, readonly) MTRBaseDevice * device;
+@property (nonatomic, assign, readonly) chip::EndpointId endpoint;
+@end
+
@interface MTRBaseClusterAirQuality ()
@property (nonatomic, strong, readonly) MTRBaseDevice * device;
@property (nonatomic, assign, readonly) chip::EndpointId endpoint;
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
index 91f1dde245c6fe..0151f34f705acb 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
@@ -85,6 +85,8 @@ typedef void (*GroupKeyManagementClusterKeySetReadResponseCallbackType)(
void *, const chip::app::Clusters::GroupKeyManagement::Commands::KeySetReadResponse::DecodableType &);
typedef void (*GroupKeyManagementClusterKeySetReadAllIndicesResponseCallbackType)(
void *, const chip::app::Clusters::GroupKeyManagement::Commands::KeySetReadAllIndicesResponse::DecodableType &);
+typedef void (*DishwasherOperationalStateClusterOperationalCommandResponseCallbackType)(
+ void *, const chip::app::Clusters::DishwasherOperationalState::Commands::OperationalCommandResponse::DecodableType &);
typedef void (*OperationalStateClusterOperationalCommandResponseCallbackType)(
void *, const chip::app::Clusters::OperationalState::Commands::OperationalCommandResponse::DecodableType &);
typedef void (*DoorLockClusterGetWeekDayScheduleResponseCallbackType)(
@@ -383,6 +385,14 @@ typedef void (*GroupKeyManagementClusterGroupKeySecurityPolicyEnumAttributeCallb
void *, chip::app::Clusters::GroupKeyManagement::GroupKeySecurityPolicyEnum);
typedef void (*NullableGroupKeyManagementClusterGroupKeySecurityPolicyEnumAttributeCallback)(
void *, const chip::app::DataModel::Nullable &);
+typedef void (*DishwasherOperationalStateClusterErrorStateEnumAttributeCallback)(
+ void *, chip::app::Clusters::DishwasherOperationalState::ErrorStateEnum);
+typedef void (*NullableDishwasherOperationalStateClusterErrorStateEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
+typedef void (*DishwasherOperationalStateClusterOperationalStateEnumAttributeCallback)(
+ void *, chip::app::Clusters::DishwasherOperationalState::OperationalStateEnum);
+typedef void (*NullableDishwasherOperationalStateClusterOperationalStateEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
typedef void (*AirQualityClusterAirQualityEnumAttributeCallback)(void *, chip::app::Clusters::AirQuality::AirQualityEnum);
typedef void (*NullableAirQualityClusterAirQualityEnumAttributeCallback)(
void *, const chip::app::DataModel::Nullable &);
@@ -1621,6 +1631,24 @@ typedef void (*RefrigeratorAlarmEventListListAttributeCallback)(void * context,
const chip::app::DataModel::DecodableList & data);
typedef void (*RefrigeratorAlarmAttributeListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*DishwasherOperationalStatePhaseListListAttributeCallback)(
+ void * context, const chip::app::DataModel::Nullable> & data);
+typedef void (*DishwasherOperationalStateOperationalStateListListAttributeCallback)(
+ void * context,
+ const chip::app::DataModel::DecodableList<
+ chip::app::Clusters::DishwasherOperationalState::Structs::OperationalStateStruct::DecodableType> & data);
+typedef void (*DishwasherOperationalStateOperationalStateStructAttributeCallback)(
+ void *, const chip::app::Clusters::DishwasherOperationalState::Structs::OperationalStateStruct::DecodableType &);
+typedef void (*DishwasherOperationalStateOperationalErrorStructAttributeCallback)(
+ void *, const chip::app::Clusters::DishwasherOperationalState::Structs::ErrorStateStruct::DecodableType &);
+typedef void (*DishwasherOperationalStateGeneratedCommandListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*DishwasherOperationalStateAcceptedCommandListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*DishwasherOperationalStateEventListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*DishwasherOperationalStateAttributeListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*AirQualityGeneratedCommandListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*AirQualityAcceptedCommandListListAttributeCallback)(
@@ -9950,6 +9978,281 @@ class MTRRefrigeratorAlarmAttributeListListAttributeCallbackSubscriptionBridge
MTRSubscriptionEstablishedHandler mEstablishedHandler;
};
+class MTRDishwasherOperationalStatePhaseListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStatePhaseListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRDishwasherOperationalStatePhaseListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context,
+ const chip::app::DataModel::Nullable> & value);
+};
+
+class MTRDishwasherOperationalStatePhaseListListAttributeCallbackSubscriptionBridge
+ : public MTRDishwasherOperationalStatePhaseListListAttributeCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStatePhaseListListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRDishwasherOperationalStatePhaseListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRDishwasherOperationalStatePhaseListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRDishwasherOperationalStatePhaseListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action,
+ OnSuccessFn){};
+
+ static void
+ OnSuccessFn(void * context,
+ const chip::app::DataModel::DecodableList<
+ chip::app::Clusters::DishwasherOperationalState::Structs::OperationalStateStruct::DecodableType> & value);
+};
+
+class MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackSubscriptionBridge
+ : public MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRDishwasherOperationalStateOperationalStateListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void
+ OnSuccessFn(void * context,
+ const chip::app::Clusters::DishwasherOperationalState::Structs::OperationalStateStruct::DecodableType & value);
+};
+
+class MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackSubscriptionBridge
+ : public MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRDishwasherOperationalStateOperationalStateStructAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void
+ OnSuccessFn(void * context,
+ const chip::app::Clusters::DishwasherOperationalState::Structs::ErrorStateStruct::DecodableType & value);
+};
+
+class MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackSubscriptionBridge
+ : public MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRDishwasherOperationalStateOperationalErrorStructAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRDishwasherOperationalStateGeneratedCommandListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRDishwasherOperationalStateGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRDishwasherOperationalStateGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action,
+ OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList