diff --git a/src/app/zap-templates/zcl/data-model/chip/washer-controls-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/washer-controls-cluster.xml
index 16ca9a02487e3b..0a11025bad1000 100644
--- a/src/app/zap-templates/zcl/data-model/chip/washer-controls-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/washer-controls-cluster.xml
@@ -23,11 +23,19 @@ limitations under the License.
+
+
+
+
+
+
+
+
Appliances
- Washer Controls
+ Laundry Washer Controls
0x0053
- WASHER_CONTROLS_CLUSTER
+ LAUNDRY_WASHER_CONTROLS_CLUSTER
true
true
This cluster supports remotely monitoring and controling the different typs of functionality available to a washing device, such as a washing machine.
@@ -36,7 +44,8 @@ limitations under the License.
SpinSpeeds
SpinSpeedCurrent
- NumberOfRinses
- MaxRinses
+ NumberOfRinses
+ SupportedRinses
+
\ No newline at end of file
diff --git a/src/app/zap_cluster_list.json b/src/app/zap_cluster_list.json
index f3f391720b0d8d..5f6fa66ad798cf 100644
--- a/src/app/zap_cluster_list.json
+++ b/src/app/zap_cluster_list.json
@@ -141,7 +141,7 @@
"UV_FILTER_MONITORING_CLUSTER": [],
"TVOC_CONCENTRATION_MEASUREMENT_CLUSTER": [],
"WAKE_ON_LAN_CLUSTER": [],
- "WASHER_CONTROLS_CLUSTER": [],
+ "LAUNDRY_WASHER_CONTROLS_CLUSTER": [],
"WATER_TANK_MONITORING_CLUSTER": [],
"WIFI_NETWORK_DIAGNOSTICS_CLUSTER": [],
"WINDOW_COVERING_CLUSTER": [],
diff --git a/src/controller/data_model/BUILD.gn b/src/controller/data_model/BUILD.gn
index 8f77988f33f967..f97ccd00a43af7 100644
--- a/src/controller/data_model/BUILD.gn
+++ b/src/controller/data_model/BUILD.gn
@@ -300,8 +300,8 @@ if (current_os == "android" || matter_enable_java_compilation) {
"jni/UvFilterMonitoringClient-ReadImpl.cpp",
"jni/WakeOnLanClient-InvokeSubscribeImpl.cpp",
"jni/WakeOnLanClient-ReadImpl.cpp",
- "jni/WasherControlsClient-InvokeSubscribeImpl.cpp",
- "jni/WasherControlsClient-ReadImpl.cpp",
+ "jni/LaundryWasherControlsClient-InvokeSubscribeImpl.cpp",
+ "jni/LaundryWasherControlsClient-ReadImpl.cpp",
"jni/WaterTankMonitoringClient-InvokeSubscribeImpl.cpp",
"jni/WaterTankMonitoringClient-ReadImpl.cpp",
"jni/WiFiNetworkDiagnosticsClient-InvokeSubscribeImpl.cpp",
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index 4a5a0b4a97842e..6e95ea7a83dcfc 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -2895,7 +2895,14 @@ client cluster RefrigeratorAndTemperatureControlledCabinetMode = 82 {
}
/** This cluster supports remotely monitoring and controling the different typs of functionality available to a washing device, such as a washing machine. */
-client cluster WasherControls = 83 {
+client cluster LaundryWasherControls = 83 {
+ enum NumberOfRinsesEnum : ENUM8 {
+ kNone = 0;
+ kNormal = 1;
+ kExtra = 2;
+ kMax = 3;
+ }
+
bitmap Feature : BITMAP32 {
kSpin = 0x1;
kRinse = 0x2;
@@ -2903,8 +2910,8 @@ client cluster WasherControls = 83 {
readonly attribute optional CHAR_STRING spinSpeeds[] = 0;
attribute optional nullable int8u spinSpeedCurrent = 1;
- attribute optional nullable int8u numberOfRinses = 2;
- readonly attribute optional int8u maxRinses = 3;
+ attribute optional NumberOfRinsesEnum numberOfRinses = 2;
+ readonly attribute optional NumberOfRinsesEnum supportedRinses[] = 3;
readonly attribute command_id generatedCommandList[] = 65528;
readonly attribute command_id acceptedCommandList[] = 65529;
readonly attribute event_id eventList[] = 65530;
diff --git a/src/controller/data_model/controller-clusters.zap b/src/controller/data_model/controller-clusters.zap
index 8a050b8b9b742c..69218e0355a231 100644
--- a/src/controller/data_model/controller-clusters.zap
+++ b/src/controller/data_model/controller-clusters.zap
@@ -11170,10 +11170,10 @@
]
},
{
- "name": "Washer Controls",
+ "name": "Laundry Washer Controls",
"code": 83,
"mfgCode": null,
- "define": "WASHER_CONTROLS_CLUSTER",
+ "define": "LAUNDRY_WASHER_CONTROLS_CLUSTER",
"side": "client",
"enabled": 1,
"attributes": [
@@ -11212,10 +11212,10 @@
]
},
{
- "name": "Washer Controls",
+ "name": "Laundry Washer Controls",
"code": 83,
"mfgCode": null,
- "define": "WASHER_CONTROLS_CLUSTER",
+ "define": "LAUNDRY_WASHER_CONTROLS_CLUSTER",
"side": "server",
"enabled": 0,
"attributes": [
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
index d907e61019435d..b3410f47be2aa9 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterIDMapping.java
@@ -160,8 +160,8 @@ public static BaseCluster getCluster(long clusterId) {
if (clusterId == RefrigeratorAndTemperatureControlledCabinetMode.ID) {
return new RefrigeratorAndTemperatureControlledCabinetMode();
}
- if (clusterId == WasherControls.ID) {
- return new WasherControls();
+ if (clusterId == LaundryWasherControls.ID) {
+ return new LaundryWasherControls();
}
if (clusterId == RvcRunMode.ID) {
return new RvcRunMode();
@@ -6565,7 +6565,7 @@ public long getCommandID(String name) throws IllegalArgumentException {
return Command.valueOf(name).getID();
}
}
- public static class WasherControls implements BaseCluster {
+ public static class LaundryWasherControls implements BaseCluster {
public static final long ID = 83L;
public long getID() {
return ID;
@@ -6575,7 +6575,7 @@ public enum Attribute {
SpinSpeeds(0L),
SpinSpeedCurrent(1L),
NumberOfRinses(2L),
- MaxRinses(3L),
+ SupportedRinses(3L),
GeneratedCommandList(65528L),
AcceptedCommandList(65529L),
EventList(65530L),
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
index cd3b30aa945960..dde5901bd4aaa4 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterReadMapping.java
@@ -6284,117 +6284,117 @@ private static Map readRefrigeratorAndTemperatureContro
return result;
}
- private static Map readWasherControlsInteractionInfo() {
- Map result = new LinkedHashMap<>();Map readWasherControlsSpinSpeedsCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsSpinSpeedsAttributeInteractionInfo = new InteractionInfo(
+ private static Map readLaundryWasherControlsInteractionInfo() {
+ Map result = new LinkedHashMap<>();Map readLaundryWasherControlsSpinSpeedsCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsSpinSpeedsAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readSpinSpeedsAttribute(
- (ChipClusters.WasherControlsCluster.SpinSpeedsAttributeCallback) callback
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readSpinSpeedsAttribute(
+ (ChipClusters.LaundryWasherControlsCluster.SpinSpeedsAttributeCallback) callback
);
},
- () -> new ClusterInfoMapping.DelegatedWasherControlsClusterSpinSpeedsAttributeCallback(),
- readWasherControlsSpinSpeedsCommandParams
+ () -> new ClusterInfoMapping.DelegatedLaundryWasherControlsClusterSpinSpeedsAttributeCallback(),
+ readLaundryWasherControlsSpinSpeedsCommandParams
);
- result.put("readSpinSpeedsAttribute", readWasherControlsSpinSpeedsAttributeInteractionInfo);
- Map readWasherControlsSpinSpeedCurrentCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsSpinSpeedCurrentAttributeInteractionInfo = new InteractionInfo(
+ result.put("readSpinSpeedsAttribute", readLaundryWasherControlsSpinSpeedsAttributeInteractionInfo);
+ Map readLaundryWasherControlsSpinSpeedCurrentCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsSpinSpeedCurrentAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readSpinSpeedCurrentAttribute(
- (ChipClusters.WasherControlsCluster.SpinSpeedCurrentAttributeCallback) callback
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readSpinSpeedCurrentAttribute(
+ (ChipClusters.LaundryWasherControlsCluster.SpinSpeedCurrentAttributeCallback) callback
);
},
- () -> new ClusterInfoMapping.DelegatedWasherControlsClusterSpinSpeedCurrentAttributeCallback(),
- readWasherControlsSpinSpeedCurrentCommandParams
+ () -> new ClusterInfoMapping.DelegatedLaundryWasherControlsClusterSpinSpeedCurrentAttributeCallback(),
+ readLaundryWasherControlsSpinSpeedCurrentCommandParams
);
- result.put("readSpinSpeedCurrentAttribute", readWasherControlsSpinSpeedCurrentAttributeInteractionInfo);
- Map readWasherControlsNumberOfRinsesCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsNumberOfRinsesAttributeInteractionInfo = new InteractionInfo(
+ result.put("readSpinSpeedCurrentAttribute", readLaundryWasherControlsSpinSpeedCurrentAttributeInteractionInfo);
+ Map readLaundryWasherControlsNumberOfRinsesCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsNumberOfRinsesAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readNumberOfRinsesAttribute(
- (ChipClusters.WasherControlsCluster.NumberOfRinsesAttributeCallback) callback
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readNumberOfRinsesAttribute(
+ (ChipClusters.IntegerAttributeCallback) callback
);
},
- () -> new ClusterInfoMapping.DelegatedWasherControlsClusterNumberOfRinsesAttributeCallback(),
- readWasherControlsNumberOfRinsesCommandParams
+ () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
+ readLaundryWasherControlsNumberOfRinsesCommandParams
);
- result.put("readNumberOfRinsesAttribute", readWasherControlsNumberOfRinsesAttributeInteractionInfo);
- Map readWasherControlsMaxRinsesCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsMaxRinsesAttributeInteractionInfo = new InteractionInfo(
+ result.put("readNumberOfRinsesAttribute", readLaundryWasherControlsNumberOfRinsesAttributeInteractionInfo);
+ Map readLaundryWasherControlsSupportedRinsesCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsSupportedRinsesAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readMaxRinsesAttribute(
- (ChipClusters.IntegerAttributeCallback) callback
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readSupportedRinsesAttribute(
+ (ChipClusters.LaundryWasherControlsCluster.SupportedRinsesAttributeCallback) callback
);
},
- () -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
- readWasherControlsMaxRinsesCommandParams
+ () -> new ClusterInfoMapping.DelegatedLaundryWasherControlsClusterSupportedRinsesAttributeCallback(),
+ readLaundryWasherControlsSupportedRinsesCommandParams
);
- result.put("readMaxRinsesAttribute", readWasherControlsMaxRinsesAttributeInteractionInfo);
- Map readWasherControlsGeneratedCommandListCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsGeneratedCommandListAttributeInteractionInfo = new InteractionInfo(
+ result.put("readSupportedRinsesAttribute", readLaundryWasherControlsSupportedRinsesAttributeInteractionInfo);
+ Map readLaundryWasherControlsGeneratedCommandListCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsGeneratedCommandListAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readGeneratedCommandListAttribute(
- (ChipClusters.WasherControlsCluster.GeneratedCommandListAttributeCallback) callback
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readGeneratedCommandListAttribute(
+ (ChipClusters.LaundryWasherControlsCluster.GeneratedCommandListAttributeCallback) callback
);
},
- () -> new ClusterInfoMapping.DelegatedWasherControlsClusterGeneratedCommandListAttributeCallback(),
- readWasherControlsGeneratedCommandListCommandParams
+ () -> new ClusterInfoMapping.DelegatedLaundryWasherControlsClusterGeneratedCommandListAttributeCallback(),
+ readLaundryWasherControlsGeneratedCommandListCommandParams
);
- result.put("readGeneratedCommandListAttribute", readWasherControlsGeneratedCommandListAttributeInteractionInfo);
- Map readWasherControlsAcceptedCommandListCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsAcceptedCommandListAttributeInteractionInfo = new InteractionInfo(
+ result.put("readGeneratedCommandListAttribute", readLaundryWasherControlsGeneratedCommandListAttributeInteractionInfo);
+ Map readLaundryWasherControlsAcceptedCommandListCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsAcceptedCommandListAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readAcceptedCommandListAttribute(
- (ChipClusters.WasherControlsCluster.AcceptedCommandListAttributeCallback) callback
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readAcceptedCommandListAttribute(
+ (ChipClusters.LaundryWasherControlsCluster.AcceptedCommandListAttributeCallback) callback
);
},
- () -> new ClusterInfoMapping.DelegatedWasherControlsClusterAcceptedCommandListAttributeCallback(),
- readWasherControlsAcceptedCommandListCommandParams
+ () -> new ClusterInfoMapping.DelegatedLaundryWasherControlsClusterAcceptedCommandListAttributeCallback(),
+ readLaundryWasherControlsAcceptedCommandListCommandParams
);
- result.put("readAcceptedCommandListAttribute", readWasherControlsAcceptedCommandListAttributeInteractionInfo);
- Map readWasherControlsEventListCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsEventListAttributeInteractionInfo = new InteractionInfo(
+ result.put("readAcceptedCommandListAttribute", readLaundryWasherControlsAcceptedCommandListAttributeInteractionInfo);
+ Map readLaundryWasherControlsEventListCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsEventListAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readEventListAttribute(
- (ChipClusters.WasherControlsCluster.EventListAttributeCallback) callback
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readEventListAttribute(
+ (ChipClusters.LaundryWasherControlsCluster.EventListAttributeCallback) callback
);
},
- () -> new ClusterInfoMapping.DelegatedWasherControlsClusterEventListAttributeCallback(),
- readWasherControlsEventListCommandParams
+ () -> new ClusterInfoMapping.DelegatedLaundryWasherControlsClusterEventListAttributeCallback(),
+ readLaundryWasherControlsEventListCommandParams
);
- result.put("readEventListAttribute", readWasherControlsEventListAttributeInteractionInfo);
- Map readWasherControlsAttributeListCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsAttributeListAttributeInteractionInfo = new InteractionInfo(
+ result.put("readEventListAttribute", readLaundryWasherControlsEventListAttributeInteractionInfo);
+ Map readLaundryWasherControlsAttributeListCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsAttributeListAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readAttributeListAttribute(
- (ChipClusters.WasherControlsCluster.AttributeListAttributeCallback) callback
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readAttributeListAttribute(
+ (ChipClusters.LaundryWasherControlsCluster.AttributeListAttributeCallback) callback
);
},
- () -> new ClusterInfoMapping.DelegatedWasherControlsClusterAttributeListAttributeCallback(),
- readWasherControlsAttributeListCommandParams
+ () -> new ClusterInfoMapping.DelegatedLaundryWasherControlsClusterAttributeListAttributeCallback(),
+ readLaundryWasherControlsAttributeListCommandParams
);
- result.put("readAttributeListAttribute", readWasherControlsAttributeListAttributeInteractionInfo);
- Map readWasherControlsFeatureMapCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsFeatureMapAttributeInteractionInfo = new InteractionInfo(
+ result.put("readAttributeListAttribute", readLaundryWasherControlsAttributeListAttributeInteractionInfo);
+ Map readLaundryWasherControlsFeatureMapCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsFeatureMapAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readFeatureMapAttribute(
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readFeatureMapAttribute(
(ChipClusters.LongAttributeCallback) callback
);
},
() -> new ClusterInfoMapping.DelegatedLongAttributeCallback(),
- readWasherControlsFeatureMapCommandParams
+ readLaundryWasherControlsFeatureMapCommandParams
);
- result.put("readFeatureMapAttribute", readWasherControlsFeatureMapAttributeInteractionInfo);
- Map readWasherControlsClusterRevisionCommandParams = new LinkedHashMap();
- InteractionInfo readWasherControlsClusterRevisionAttributeInteractionInfo = new InteractionInfo(
+ result.put("readFeatureMapAttribute", readLaundryWasherControlsFeatureMapAttributeInteractionInfo);
+ Map readLaundryWasherControlsClusterRevisionCommandParams = new LinkedHashMap();
+ InteractionInfo readLaundryWasherControlsClusterRevisionAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).readClusterRevisionAttribute(
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).readClusterRevisionAttribute(
(ChipClusters.IntegerAttributeCallback) callback
);
},
() -> new ClusterInfoMapping.DelegatedIntegerAttributeCallback(),
- readWasherControlsClusterRevisionCommandParams
+ readLaundryWasherControlsClusterRevisionCommandParams
);
- result.put("readClusterRevisionAttribute", readWasherControlsClusterRevisionAttributeInteractionInfo);
+ result.put("readClusterRevisionAttribute", readLaundryWasherControlsClusterRevisionAttributeInteractionInfo);
return result;
}
@@ -23408,7 +23408,7 @@ public Map> getReadAttributeMap() {
put("modeSelect", readModeSelectInteractionInfo());
put("laundryWasherMode", readLaundryWasherModeInteractionInfo());
put("refrigeratorAndTemperatureControlledCabinetMode", readRefrigeratorAndTemperatureControlledCabinetModeInteractionInfo());
- put("washerControls", readWasherControlsInteractionInfo());
+ put("laundryWasherControls", readLaundryWasherControlsInteractionInfo());
put("rvcRunMode", readRvcRunModeInteractionInfo());
put("rvcCleanMode", readRvcCleanModeInteractionInfo());
put("temperatureControl", readTemperatureControlInteractionInfo());
diff --git a/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java b/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
index 50f2b7fcf4e672..0848e009deb4b5 100644
--- a/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
+++ b/src/controller/java/generated/java/chip/devicecontroller/ClusterWriteMapping.java
@@ -862,52 +862,52 @@ public Map> getWriteAttributeMap() {
);
writeRefrigeratorAndTemperatureControlledCabinetModeInteractionInfo.put("writeOnModeAttribute", writeRefrigeratorAndTemperatureControlledCabinetModeOnModeAttributeInteractionInfo);
writeAttributeMap.put("refrigeratorAndTemperatureControlledCabinetMode", writeRefrigeratorAndTemperatureControlledCabinetModeInteractionInfo);
- Map writeWasherControlsInteractionInfo = new LinkedHashMap<>();
- Map writeWasherControlsSpinSpeedCurrentCommandParams = new LinkedHashMap();
- CommandParameterInfo washerControlsspinSpeedCurrentCommandParameterInfo =
+ Map writeLaundryWasherControlsInteractionInfo = new LinkedHashMap<>();
+ Map writeLaundryWasherControlsSpinSpeedCurrentCommandParams = new LinkedHashMap();
+ CommandParameterInfo laundryWasherControlsspinSpeedCurrentCommandParameterInfo =
new CommandParameterInfo(
"value",
Integer.class,
Integer.class
);
- writeWasherControlsSpinSpeedCurrentCommandParams.put(
+ writeLaundryWasherControlsSpinSpeedCurrentCommandParams.put(
"value",
- washerControlsspinSpeedCurrentCommandParameterInfo
+ laundryWasherControlsspinSpeedCurrentCommandParameterInfo
);
- InteractionInfo writeWasherControlsSpinSpeedCurrentAttributeInteractionInfo = new InteractionInfo(
+ InteractionInfo writeLaundryWasherControlsSpinSpeedCurrentAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).writeSpinSpeedCurrentAttribute(
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).writeSpinSpeedCurrentAttribute(
(DefaultClusterCallback) callback,
(Integer) commandArguments.get("value")
);
},
() -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
- writeWasherControlsSpinSpeedCurrentCommandParams
+ writeLaundryWasherControlsSpinSpeedCurrentCommandParams
);
- writeWasherControlsInteractionInfo.put("writeSpinSpeedCurrentAttribute", writeWasherControlsSpinSpeedCurrentAttributeInteractionInfo);
- Map writeWasherControlsNumberOfRinsesCommandParams = new LinkedHashMap();
- CommandParameterInfo washerControlsnumberOfRinsesCommandParameterInfo =
+ writeLaundryWasherControlsInteractionInfo.put("writeSpinSpeedCurrentAttribute", writeLaundryWasherControlsSpinSpeedCurrentAttributeInteractionInfo);
+ Map writeLaundryWasherControlsNumberOfRinsesCommandParams = new LinkedHashMap();
+ CommandParameterInfo laundryWasherControlsnumberOfRinsesCommandParameterInfo =
new CommandParameterInfo(
"value",
Integer.class,
Integer.class
);
- writeWasherControlsNumberOfRinsesCommandParams.put(
+ writeLaundryWasherControlsNumberOfRinsesCommandParams.put(
"value",
- washerControlsnumberOfRinsesCommandParameterInfo
+ laundryWasherControlsnumberOfRinsesCommandParameterInfo
);
- InteractionInfo writeWasherControlsNumberOfRinsesAttributeInteractionInfo = new InteractionInfo(
+ InteractionInfo writeLaundryWasherControlsNumberOfRinsesAttributeInteractionInfo = new InteractionInfo(
(cluster, callback, commandArguments) -> {
- ((ChipClusters.WasherControlsCluster) cluster).writeNumberOfRinsesAttribute(
+ ((ChipClusters.LaundryWasherControlsCluster) cluster).writeNumberOfRinsesAttribute(
(DefaultClusterCallback) callback,
(Integer) commandArguments.get("value")
);
},
() -> new ClusterInfoMapping.DelegatedDefaultClusterCallback(),
- writeWasherControlsNumberOfRinsesCommandParams
+ writeLaundryWasherControlsNumberOfRinsesCommandParams
);
- writeWasherControlsInteractionInfo.put("writeNumberOfRinsesAttribute", writeWasherControlsNumberOfRinsesAttributeInteractionInfo);
- writeAttributeMap.put("washerControls", writeWasherControlsInteractionInfo);
+ writeLaundryWasherControlsInteractionInfo.put("writeNumberOfRinsesAttribute", writeLaundryWasherControlsNumberOfRinsesAttributeInteractionInfo);
+ writeAttributeMap.put("laundryWasherControls", writeLaundryWasherControlsInteractionInfo);
Map writeRvcRunModeInteractionInfo = new LinkedHashMap<>();
Map writeRvcRunModeStartUpModeCommandParams = new LinkedHashMap();
CommandParameterInfo rvcRunModestartUpModeCommandParameterInfo =
diff --git a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
index 629e04c209d2ca..8fdbbde37221e9 100644
--- a/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPAttributeTLVValueDecoder.cpp
@@ -12805,8 +12805,8 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
}
break;
}
- case app::Clusters::WasherControls::Id: {
- using namespace app::Clusters::WasherControls;
+ case app::Clusters::LaundryWasherControls::Id: {
+ using namespace app::Clusters::LaundryWasherControls;
switch (aPath.mAttributeId)
{
case Attributes::SpinSpeeds::Id: {
@@ -12861,21 +12861,14 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
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);
- }
+ std::string valueClassName = "java/lang/Integer";
+ std::string valueCtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(valueClassName.c_str(), valueCtorSignature.c_str(),
+ static_cast(cppValue), value);
return value;
}
- case Attributes::MaxRinses::Id: {
- using TypeInfo = Attributes::MaxRinses::TypeInfo;
+ case Attributes::SupportedRinses::Id: {
+ using TypeInfo = Attributes::SupportedRinses::TypeInfo;
TypeInfo::DecodableType cppValue;
*aError = app::DataModel::Decode(aReader, cppValue);
if (*aError != CHIP_NO_ERROR)
@@ -12883,10 +12876,19 @@ jobject DecodeAttributeValue(const app::ConcreteAttributePath & aPath, TLV::TLVR
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);
+ 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/Integer";
+ std::string newElement_0CtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), static_cast(entry_0), newElement_0);
+ chip::JniReferences::GetInstance().AddToList(value, newElement_0);
+ }
return value;
}
case Attributes::GeneratedCommandList::Id: {
diff --git a/src/controller/java/zap-generated/CHIPClientCallbacks.h b/src/controller/java/zap-generated/CHIPClientCallbacks.h
index 23981333963f21..07f71ec192639c 100644
--- a/src/controller/java/zap-generated/CHIPClientCallbacks.h
+++ b/src/controller/java/zap-generated/CHIPClientCallbacks.h
@@ -499,15 +499,18 @@ typedef void (*RefrigeratorAndTemperatureControlledCabinetModeEventListListAttri
void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*RefrigeratorAndTemperatureControlledCabinetModeAttributeListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*WasherControlsSpinSpeedsListAttributeCallback)(void * context,
- const chip::app::DataModel::DecodableList & data);
-typedef void (*WasherControlsGeneratedCommandListListAttributeCallback)(
+typedef void (*LaundryWasherControlsSpinSpeedsListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsSupportedRinsesListAttributeCallback)(
+ void * context,
+ const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsGeneratedCommandListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*WasherControlsAcceptedCommandListListAttributeCallback)(
+typedef void (*LaundryWasherControlsAcceptedCommandListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
-typedef void (*WasherControlsEventListListAttributeCallback)(void * context,
- const chip::app::DataModel::DecodableList & data);
-typedef void (*WasherControlsAttributeListListAttributeCallback)(
+typedef void (*LaundryWasherControlsEventListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsAttributeListListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*RvcRunModeSupportedModesListAttributeCallback)(
void * context,
diff --git a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
index 4fe9a9ebc89a9e..e92be17671753d 100644
--- a/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
+++ b/src/controller/java/zap-generated/CHIPClustersWrite-JNI.cpp
@@ -2584,12 +2584,12 @@ JNI_METHOD(void, RefrigeratorAndTemperatureControlledCabinetModeCluster, writeOn
onFailure.release();
}
-JNI_METHOD(void, WasherControlsCluster, writeSpinSpeedCurrentAttribute)
+JNI_METHOD(void, LaundryWasherControlsCluster, writeSpinSpeedCurrentAttribute)
(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
{
chip::DeviceLayer::StackLock lock;
ListFreer listFreer;
- using TypeInfo = chip::app::Clusters::WasherControls::Attributes::SpinSpeedCurrent::TypeInfo;
+ using TypeInfo = chip::app::Clusters::LaundryWasherControls::Attributes::SpinSpeedCurrent::TypeInfo;
TypeInfo::Type cppValue;
std::vector> cleanupByteArrays;
@@ -2618,8 +2618,8 @@ JNI_METHOD(void, WasherControlsCluster, writeSpinSpeedCurrentAttribute)
chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
- CHIP_ERROR err = CHIP_NO_ERROR;
- WasherControlsCluster * cppCluster = reinterpret_cast(clusterPtr);
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ LaundryWasherControlsCluster * cppCluster = reinterpret_cast(clusterPtr);
VerifyOrReturn(cppCluster != nullptr,
chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
@@ -2644,27 +2644,19 @@ JNI_METHOD(void, WasherControlsCluster, writeSpinSpeedCurrentAttribute)
onFailure.release();
}
-JNI_METHOD(void, WasherControlsCluster, writeNumberOfRinsesAttribute)
+JNI_METHOD(void, LaundryWasherControlsCluster, writeNumberOfRinsesAttribute)
(JNIEnv * env, jobject self, jlong clusterPtr, jobject callback, jobject value, jobject timedWriteTimeoutMs)
{
chip::DeviceLayer::StackLock lock;
ListFreer listFreer;
- using TypeInfo = chip::app::Clusters::WasherControls::Attributes::NumberOfRinses::TypeInfo;
+ using TypeInfo = chip::app::Clusters::LaundryWasherControls::Attributes::NumberOfRinses::TypeInfo;
TypeInfo::Type cppValue;
std::vector> cleanupByteArrays;
std::vector> cleanupStrings;
- if (value == nullptr)
- {
- cppValue.SetNull();
- }
- else
- {
- auto & nonNullValue_0 = cppValue.SetNonNull();
- nonNullValue_0 = static_cast>(
- chip::JniReferences::GetInstance().IntegerToPrimitive(value));
- }
+ cppValue =
+ static_cast>(chip::JniReferences::GetInstance().IntegerToPrimitive(value));
std::unique_ptr onSuccess(
Platform::New(callback), Platform::Delete);
@@ -2678,8 +2670,8 @@ JNI_METHOD(void, WasherControlsCluster, writeNumberOfRinsesAttribute)
chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
env, callback, "Error creating native failure callback", CHIP_ERROR_NO_MEMORY));
- CHIP_ERROR err = CHIP_NO_ERROR;
- WasherControlsCluster * cppCluster = reinterpret_cast(clusterPtr);
+ CHIP_ERROR err = CHIP_NO_ERROR;
+ LaundryWasherControlsCluster * cppCluster = reinterpret_cast(clusterPtr);
VerifyOrReturn(cppCluster != nullptr,
chip::AndroidClusterExceptions::GetInstance().ReturnIllegalStateException(
env, callback, "Could not get native cluster", CHIP_ERROR_INCORRECT_STATE));
diff --git a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
index 71259897aef758..96c6f70a45ff5b 100644
--- a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
@@ -2445,8 +2445,8 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
}
break;
}
- case app::Clusters::WasherControls::Id: {
- using namespace app::Clusters::WasherControls;
+ case app::Clusters::LaundryWasherControls::Id: {
+ using namespace app::Clusters::LaundryWasherControls;
switch (aPath.mEventId)
{
default:
diff --git a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
index 09e678d49b0309..d113e22b7436cc 100644
--- a/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
+++ b/src/controller/java/zap-generated/CHIPReadCallbacks.cpp
@@ -21392,8 +21392,10 @@ void CHIPRefrigeratorAndTemperatureControlledCabinetModeAttributeListAttributeCa
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
-CHIPWasherControlsSpinSpeedsAttributeCallback::CHIPWasherControlsSpinSpeedsAttributeCallback(jobject javaCallback, bool keepAlive) :
- chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+CHIPLaundryWasherControlsSpinSpeedsAttributeCallback::CHIPLaundryWasherControlsSpinSpeedsAttributeCallback(jobject javaCallback,
+ bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21409,7 +21411,7 @@ CHIPWasherControlsSpinSpeedsAttributeCallback::CHIPWasherControlsSpinSpeedsAttri
}
}
-CHIPWasherControlsSpinSpeedsAttributeCallback::~CHIPWasherControlsSpinSpeedsAttributeCallback()
+CHIPLaundryWasherControlsSpinSpeedsAttributeCallback::~CHIPLaundryWasherControlsSpinSpeedsAttributeCallback()
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21420,8 +21422,8 @@ CHIPWasherControlsSpinSpeedsAttributeCallback::~CHIPWasherControlsSpinSpeedsAttr
env->DeleteGlobalRef(javaCallbackRef);
}
-void CHIPWasherControlsSpinSpeedsAttributeCallback::CallbackFn(void * context,
- const chip::app::DataModel::DecodableList & list)
+void CHIPLaundryWasherControlsSpinSpeedsAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::DecodableList & list)
{
chip::DeviceLayer::StackUnlock unlock;
CHIP_ERROR err = CHIP_NO_ERROR;
@@ -21430,8 +21432,8 @@ void CHIPWasherControlsSpinSpeedsAttributeCallback::CallbackFn(void * context,
VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
- std::unique_ptr cppCallback(
- reinterpret_cast(context), maybeDestroy);
+ 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;
@@ -21458,9 +21460,9 @@ void CHIPWasherControlsSpinSpeedsAttributeCallback::CallbackFn(void * context,
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
-CHIPWasherControlsSpinSpeedCurrentAttributeCallback::CHIPWasherControlsSpinSpeedCurrentAttributeCallback(jobject javaCallback,
- bool keepAlive) :
- chip::Callback::Callback(CallbackFn, this),
+CHIPLaundryWasherControlsSpinSpeedCurrentAttributeCallback::CHIPLaundryWasherControlsSpinSpeedCurrentAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
keepAlive(keepAlive)
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -21477,7 +21479,7 @@ CHIPWasherControlsSpinSpeedCurrentAttributeCallback::CHIPWasherControlsSpinSpeed
}
}
-CHIPWasherControlsSpinSpeedCurrentAttributeCallback::~CHIPWasherControlsSpinSpeedCurrentAttributeCallback()
+CHIPLaundryWasherControlsSpinSpeedCurrentAttributeCallback::~CHIPLaundryWasherControlsSpinSpeedCurrentAttributeCallback()
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21488,8 +21490,8 @@ CHIPWasherControlsSpinSpeedCurrentAttributeCallback::~CHIPWasherControlsSpinSpee
env->DeleteGlobalRef(javaCallbackRef);
}
-void CHIPWasherControlsSpinSpeedCurrentAttributeCallback::CallbackFn(void * context,
- const chip::app::DataModel::Nullable & value)
+void CHIPLaundryWasherControlsSpinSpeedCurrentAttributeCallback::CallbackFn(void * context,
+ const chip::app::DataModel::Nullable & value)
{
chip::DeviceLayer::StackUnlock unlock;
CHIP_ERROR err = CHIP_NO_ERROR;
@@ -21497,8 +21499,8 @@ void CHIPWasherControlsSpinSpeedCurrentAttributeCallback::CallbackFn(void * cont
jobject javaCallbackRef;
VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
- std::unique_ptr cppCallback(
- reinterpret_cast(context), maybeDestroy);
+ 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;
@@ -21525,9 +21527,9 @@ void CHIPWasherControlsSpinSpeedCurrentAttributeCallback::CallbackFn(void * cont
env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
}
-CHIPWasherControlsNumberOfRinsesAttributeCallback::CHIPWasherControlsNumberOfRinsesAttributeCallback(jobject javaCallback,
- bool keepAlive) :
- chip::Callback::Callback(CallbackFn, this),
+CHIPLaundryWasherControlsSupportedRinsesAttributeCallback::CHIPLaundryWasherControlsSupportedRinsesAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
keepAlive(keepAlive)
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -21544,7 +21546,7 @@ CHIPWasherControlsNumberOfRinsesAttributeCallback::CHIPWasherControlsNumberOfRin
}
}
-CHIPWasherControlsNumberOfRinsesAttributeCallback::~CHIPWasherControlsNumberOfRinsesAttributeCallback()
+CHIPLaundryWasherControlsSupportedRinsesAttributeCallback::~CHIPLaundryWasherControlsSupportedRinsesAttributeCallback()
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21555,8 +21557,9 @@ CHIPWasherControlsNumberOfRinsesAttributeCallback::~CHIPWasherControlsNumberOfRi
env->DeleteGlobalRef(javaCallbackRef);
}
-void CHIPWasherControlsNumberOfRinsesAttributeCallback::CallbackFn(void * context,
- const chip::app::DataModel::Nullable & value)
+void CHIPLaundryWasherControlsSupportedRinsesAttributeCallback::CallbackFn(
+ void * context,
+ const chip::app::DataModel::DecodableList & list)
{
chip::DeviceLayer::StackUnlock unlock;
CHIP_ERROR err = CHIP_NO_ERROR;
@@ -21564,8 +21567,9 @@ void CHIPWasherControlsNumberOfRinsesAttributeCallback::CallbackFn(void * contex
jobject javaCallbackRef;
VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
- std::unique_ptr cppCallback(
- reinterpret_cast(context), maybeDestroy);
+
+ 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;
@@ -21573,28 +21577,31 @@ void CHIPWasherControlsNumberOfRinsesAttributeCallback::CallbackFn(void * contex
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);
+ 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 javaValue;
- if (value.IsNull())
- {
- javaValue = nullptr;
- }
- else
+ jobject arrayListObj;
+ chip::JniReferences::GetInstance().CreateArrayList(arrayListObj);
+
+ auto iter_arrayListObj_0 = list.begin();
+ while (iter_arrayListObj_0.Next())
{
- std::string javaValueClassName = "java/lang/Integer";
- std::string javaValueCtorSignature = "(I)V";
- chip::JniReferences::GetInstance().CreateBoxedObject(javaValueClassName.c_str(), javaValueCtorSignature.c_str(),
- value.Value(), javaValue);
+ auto & entry_0 = iter_arrayListObj_0.GetValue();
+ jobject newElement_0;
+ std::string newElement_0ClassName = "java/lang/Integer";
+ std::string newElement_0CtorSignature = "(I)V";
+ chip::JniReferences::GetInstance().CreateBoxedObject(
+ newElement_0ClassName.c_str(), newElement_0CtorSignature.c_str(), static_cast(entry_0), newElement_0);
+ chip::JniReferences::GetInstance().AddToList(arrayListObj, newElement_0);
}
- env->CallVoidMethod(javaCallbackRef, javaMethod, javaValue);
+ env->ExceptionClear();
+ env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
-CHIPWasherControlsGeneratedCommandListAttributeCallback::CHIPWasherControlsGeneratedCommandListAttributeCallback(
+CHIPLaundryWasherControlsGeneratedCommandListAttributeCallback::CHIPLaundryWasherControlsGeneratedCommandListAttributeCallback(
jobject javaCallback, bool keepAlive) :
- chip::Callback::Callback(CallbackFn, this),
+ chip::Callback::Callback(CallbackFn, this),
keepAlive(keepAlive)
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -21611,7 +21618,7 @@ CHIPWasherControlsGeneratedCommandListAttributeCallback::CHIPWasherControlsGener
}
}
-CHIPWasherControlsGeneratedCommandListAttributeCallback::~CHIPWasherControlsGeneratedCommandListAttributeCallback()
+CHIPLaundryWasherControlsGeneratedCommandListAttributeCallback::~CHIPLaundryWasherControlsGeneratedCommandListAttributeCallback()
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21622,7 +21629,7 @@ CHIPWasherControlsGeneratedCommandListAttributeCallback::~CHIPWasherControlsGene
env->DeleteGlobalRef(javaCallbackRef);
}
-void CHIPWasherControlsGeneratedCommandListAttributeCallback::CallbackFn(
+void CHIPLaundryWasherControlsGeneratedCommandListAttributeCallback::CallbackFn(
void * context, const chip::app::DataModel::DecodableList & list)
{
chip::DeviceLayer::StackUnlock unlock;
@@ -21632,8 +21639,8 @@ void CHIPWasherControlsGeneratedCommandListAttributeCallback::CallbackFn(
VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
- std::unique_ptr cppCallback(
- reinterpret_cast(context), maybeDestroy);
+ 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;
@@ -21663,9 +21670,9 @@ void CHIPWasherControlsGeneratedCommandListAttributeCallback::CallbackFn(
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
-CHIPWasherControlsAcceptedCommandListAttributeCallback::CHIPWasherControlsAcceptedCommandListAttributeCallback(jobject javaCallback,
- bool keepAlive) :
- chip::Callback::Callback(CallbackFn, this),
+CHIPLaundryWasherControlsAcceptedCommandListAttributeCallback::CHIPLaundryWasherControlsAcceptedCommandListAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
keepAlive(keepAlive)
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -21682,7 +21689,7 @@ CHIPWasherControlsAcceptedCommandListAttributeCallback::CHIPWasherControlsAccept
}
}
-CHIPWasherControlsAcceptedCommandListAttributeCallback::~CHIPWasherControlsAcceptedCommandListAttributeCallback()
+CHIPLaundryWasherControlsAcceptedCommandListAttributeCallback::~CHIPLaundryWasherControlsAcceptedCommandListAttributeCallback()
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21693,7 +21700,7 @@ CHIPWasherControlsAcceptedCommandListAttributeCallback::~CHIPWasherControlsAccep
env->DeleteGlobalRef(javaCallbackRef);
}
-void CHIPWasherControlsAcceptedCommandListAttributeCallback::CallbackFn(
+void CHIPLaundryWasherControlsAcceptedCommandListAttributeCallback::CallbackFn(
void * context, const chip::app::DataModel::DecodableList & list)
{
chip::DeviceLayer::StackUnlock unlock;
@@ -21703,8 +21710,8 @@ void CHIPWasherControlsAcceptedCommandListAttributeCallback::CallbackFn(
VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
- std::unique_ptr cppCallback(
- reinterpret_cast(context), maybeDestroy);
+ 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;
@@ -21734,8 +21741,10 @@ void CHIPWasherControlsAcceptedCommandListAttributeCallback::CallbackFn(
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
-CHIPWasherControlsEventListAttributeCallback::CHIPWasherControlsEventListAttributeCallback(jobject javaCallback, bool keepAlive) :
- chip::Callback::Callback(CallbackFn, this), keepAlive(keepAlive)
+CHIPLaundryWasherControlsEventListAttributeCallback::CHIPLaundryWasherControlsEventListAttributeCallback(jobject javaCallback,
+ bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
+ keepAlive(keepAlive)
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21751,7 +21760,7 @@ CHIPWasherControlsEventListAttributeCallback::CHIPWasherControlsEventListAttribu
}
}
-CHIPWasherControlsEventListAttributeCallback::~CHIPWasherControlsEventListAttributeCallback()
+CHIPLaundryWasherControlsEventListAttributeCallback::~CHIPLaundryWasherControlsEventListAttributeCallback()
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21762,8 +21771,8 @@ CHIPWasherControlsEventListAttributeCallback::~CHIPWasherControlsEventListAttrib
env->DeleteGlobalRef(javaCallbackRef);
}
-void CHIPWasherControlsEventListAttributeCallback::CallbackFn(void * context,
- const chip::app::DataModel::DecodableList & list)
+void CHIPLaundryWasherControlsEventListAttributeCallback::CallbackFn(
+ void * context, const chip::app::DataModel::DecodableList & list)
{
chip::DeviceLayer::StackUnlock unlock;
CHIP_ERROR err = CHIP_NO_ERROR;
@@ -21772,8 +21781,8 @@ void CHIPWasherControlsEventListAttributeCallback::CallbackFn(void * context,
VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
- std::unique_ptr cppCallback(
- reinterpret_cast(context), maybeDestroy);
+ 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;
@@ -21803,9 +21812,9 @@ void CHIPWasherControlsEventListAttributeCallback::CallbackFn(void * context,
env->CallVoidMethod(javaCallbackRef, javaMethod, arrayListObj);
}
-CHIPWasherControlsAttributeListAttributeCallback::CHIPWasherControlsAttributeListAttributeCallback(jobject javaCallback,
- bool keepAlive) :
- chip::Callback::Callback(CallbackFn, this),
+CHIPLaundryWasherControlsAttributeListAttributeCallback::CHIPLaundryWasherControlsAttributeListAttributeCallback(
+ jobject javaCallback, bool keepAlive) :
+ chip::Callback::Callback(CallbackFn, this),
keepAlive(keepAlive)
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
@@ -21822,7 +21831,7 @@ CHIPWasherControlsAttributeListAttributeCallback::CHIPWasherControlsAttributeLis
}
}
-CHIPWasherControlsAttributeListAttributeCallback::~CHIPWasherControlsAttributeListAttributeCallback()
+CHIPLaundryWasherControlsAttributeListAttributeCallback::~CHIPLaundryWasherControlsAttributeListAttributeCallback()
{
JNIEnv * env = chip::JniReferences::GetInstance().GetEnvForCurrentThread();
if (env == nullptr)
@@ -21833,7 +21842,7 @@ CHIPWasherControlsAttributeListAttributeCallback::~CHIPWasherControlsAttributeLi
env->DeleteGlobalRef(javaCallbackRef);
}
-void CHIPWasherControlsAttributeListAttributeCallback::CallbackFn(
+void CHIPLaundryWasherControlsAttributeListAttributeCallback::CallbackFn(
void * context, const chip::app::DataModel::DecodableList & list)
{
chip::DeviceLayer::StackUnlock unlock;
@@ -21843,8 +21852,8 @@ void CHIPWasherControlsAttributeListAttributeCallback::CallbackFn(
VerifyOrReturn(env != nullptr, ChipLogError(Zcl, "Could not get JNI env"));
- std::unique_ptr cppCallback(
- reinterpret_cast(context), maybeDestroy);
+ 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;
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
index 3f68272a50e205..6b848ae9a7f385 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipClusters.java
@@ -14262,10 +14262,10 @@ private native void subscribeClusterRevisionAttribute(long chipClusterPtr,
, int minInterval, int maxInterval);
}
- public static class WasherControlsCluster extends BaseChipCluster {
+ public static class LaundryWasherControlsCluster extends BaseChipCluster {
public static final long CLUSTER_ID = 83L;
- public WasherControlsCluster(long devicePtr, int endpointId) {
+ public LaundryWasherControlsCluster(long devicePtr, int endpointId) {
super(devicePtr, endpointId);
}
@@ -14282,8 +14282,8 @@ public interface SpinSpeedCurrentAttributeCallback {
void onError(Exception ex);
default void onSubscriptionEstablished(long subscriptionId) {}
}
- public interface NumberOfRinsesAttributeCallback {
- void onSuccess(@Nullable Integer value);
+ public interface SupportedRinsesAttributeCallback {
+ void onSuccess( List valueList);
void onError(Exception ex);
default void onSubscriptionEstablished(long subscriptionId) {}
}
@@ -14340,7 +14340,7 @@ public void subscribeSpinSpeedCurrentAttribute(
}
public void readNumberOfRinsesAttribute(
- NumberOfRinsesAttributeCallback callback
+ IntegerAttributeCallback callback
) {
readNumberOfRinsesAttribute(chipClusterPtr, callback);
}
@@ -14352,22 +14352,22 @@ public void writeNumberOfRinsesAttribute(DefaultClusterCallback callback, Intege
writeNumberOfRinsesAttribute(chipClusterPtr, callback, value, timedWriteTimeoutMs);
}
public void subscribeNumberOfRinsesAttribute(
- NumberOfRinsesAttributeCallback callback
- ,
+ IntegerAttributeCallback callback
+,
int minInterval, int maxInterval) {
subscribeNumberOfRinsesAttribute(chipClusterPtr, callback, minInterval, maxInterval);
}
- public void readMaxRinsesAttribute(
- IntegerAttributeCallback callback
+ public void readSupportedRinsesAttribute(
+ SupportedRinsesAttributeCallback callback
) {
- readMaxRinsesAttribute(chipClusterPtr, callback);
+ readSupportedRinsesAttribute(chipClusterPtr, callback);
}
- public void subscribeMaxRinsesAttribute(
- IntegerAttributeCallback callback
-,
+ public void subscribeSupportedRinsesAttribute(
+ SupportedRinsesAttributeCallback callback
+ ,
int minInterval, int maxInterval) {
- subscribeMaxRinsesAttribute(chipClusterPtr, callback, minInterval, maxInterval);
+ subscribeSupportedRinsesAttribute(chipClusterPtr, callback, minInterval, maxInterval);
}
public void readGeneratedCommandListAttribute(
@@ -14459,21 +14459,21 @@ private native void subscribeSpinSpeedCurrentAttribute(long chipClusterPtr,
, int minInterval, int maxInterval);
private native void readNumberOfRinsesAttribute(long chipClusterPtr,
- NumberOfRinsesAttributeCallback callback
+ IntegerAttributeCallback callback
);
private native void writeNumberOfRinsesAttribute(long chipClusterPtr, DefaultClusterCallback callback, Integer value, @Nullable Integer timedWriteTimeoutMs);
private native void subscribeNumberOfRinsesAttribute(long chipClusterPtr,
- NumberOfRinsesAttributeCallback callback
- , int minInterval, int maxInterval);
-
- private native void readMaxRinsesAttribute(long chipClusterPtr,
- IntegerAttributeCallback callback
- );
- private native void subscribeMaxRinsesAttribute(long chipClusterPtr,
IntegerAttributeCallback callback
, int minInterval, int maxInterval);
+ private native void readSupportedRinsesAttribute(long chipClusterPtr,
+ SupportedRinsesAttributeCallback callback
+ );
+ private native void subscribeSupportedRinsesAttribute(long chipClusterPtr,
+ SupportedRinsesAttributeCallback callback
+ , int minInterval, int maxInterval);
+
private native void readGeneratedCommandListAttribute(long chipClusterPtr,
GeneratedCommandListAttributeCallback callback
);
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
index 53c938f4c97ab8..4f5ccf131b6450 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipIdLookup.java
@@ -157,7 +157,7 @@ public static String clusterIdToName(long clusterId) {
return "RefrigeratorAndTemperatureControlledCabinetMode";
}
if (clusterId == 83L) {
- return "WasherControls";
+ return "LaundryWasherControls";
}
if (clusterId == 84L) {
return "RvcRunMode";
@@ -2254,7 +2254,7 @@ public static String attributeIdToName(long clusterId, long attributeId) {
return "NumberOfRinses";
}
if (attributeId == 3L) {
- return "MaxRinses";
+ return "SupportedRinses";
}
if (attributeId == 65528L) {
return "GeneratedCommandList";
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
index ea7141168845cc..d34fdec327f3b9 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ClusterInfoMapping.java
@@ -6224,7 +6224,7 @@ public void onError(Exception ex) {
}
}
- public static class DelegatedWasherControlsClusterSpinSpeedsAttributeCallback implements ChipClusters.WasherControlsCluster.SpinSpeedsAttributeCallback, DelegatedClusterCallback {
+ public static class DelegatedLaundryWasherControlsClusterSpinSpeedsAttributeCallback implements ChipClusters.LaundryWasherControlsCluster.SpinSpeedsAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
public void setCallbackDelegate(ClusterCommandCallback callback) {
@@ -6243,7 +6243,7 @@ public void onError(Exception ex) {
callback.onFailure(ex);
}
}
- public static class DelegatedWasherControlsClusterSpinSpeedCurrentAttributeCallback implements ChipClusters.WasherControlsCluster.SpinSpeedCurrentAttributeCallback, DelegatedClusterCallback {
+ public static class DelegatedLaundryWasherControlsClusterSpinSpeedCurrentAttributeCallback implements ChipClusters.LaundryWasherControlsCluster.SpinSpeedCurrentAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
public void setCallbackDelegate(ClusterCommandCallback callback) {
@@ -6262,7 +6262,7 @@ public void onError(Exception ex) {
callback.onFailure(ex);
}
}
- public static class DelegatedWasherControlsClusterNumberOfRinsesAttributeCallback implements ChipClusters.WasherControlsCluster.NumberOfRinsesAttributeCallback, DelegatedClusterCallback {
+ public static class DelegatedLaundryWasherControlsClusterSupportedRinsesAttributeCallback implements ChipClusters.LaundryWasherControlsCluster.SupportedRinsesAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
public void setCallbackDelegate(ClusterCommandCallback callback) {
@@ -6270,10 +6270,10 @@ public void setCallbackDelegate(ClusterCommandCallback callback) {
}
@Override
- public void onSuccess(@Nullable Integer value) {
+ public void onSuccess( List valueList) {
Map responseValues = new LinkedHashMap<>();
- CommandResponseInfo commandResponseInfo = new CommandResponseInfo("value", "Integer");
- responseValues.put(commandResponseInfo, value);
+ CommandResponseInfo commandResponseInfo = new CommandResponseInfo("valueList", "List");
+ responseValues.put(commandResponseInfo, valueList);
callback.onSuccess(responseValues);
}
@Override
@@ -6281,7 +6281,7 @@ public void onError(Exception ex) {
callback.onFailure(ex);
}
}
- public static class DelegatedWasherControlsClusterGeneratedCommandListAttributeCallback implements ChipClusters.WasherControlsCluster.GeneratedCommandListAttributeCallback, DelegatedClusterCallback {
+ public static class DelegatedLaundryWasherControlsClusterGeneratedCommandListAttributeCallback implements ChipClusters.LaundryWasherControlsCluster.GeneratedCommandListAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
public void setCallbackDelegate(ClusterCommandCallback callback) {
@@ -6300,7 +6300,7 @@ public void onError(Exception ex) {
callback.onFailure(ex);
}
}
- public static class DelegatedWasherControlsClusterAcceptedCommandListAttributeCallback implements ChipClusters.WasherControlsCluster.AcceptedCommandListAttributeCallback, DelegatedClusterCallback {
+ public static class DelegatedLaundryWasherControlsClusterAcceptedCommandListAttributeCallback implements ChipClusters.LaundryWasherControlsCluster.AcceptedCommandListAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
public void setCallbackDelegate(ClusterCommandCallback callback) {
@@ -6319,7 +6319,7 @@ public void onError(Exception ex) {
callback.onFailure(ex);
}
}
- public static class DelegatedWasherControlsClusterEventListAttributeCallback implements ChipClusters.WasherControlsCluster.EventListAttributeCallback, DelegatedClusterCallback {
+ public static class DelegatedLaundryWasherControlsClusterEventListAttributeCallback implements ChipClusters.LaundryWasherControlsCluster.EventListAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
public void setCallbackDelegate(ClusterCommandCallback callback) {
@@ -6338,7 +6338,7 @@ public void onError(Exception ex) {
callback.onFailure(ex);
}
}
- public static class DelegatedWasherControlsClusterAttributeListAttributeCallback implements ChipClusters.WasherControlsCluster.AttributeListAttributeCallback, DelegatedClusterCallback {
+ public static class DelegatedLaundryWasherControlsClusterAttributeListAttributeCallback implements ChipClusters.LaundryWasherControlsCluster.AttributeListAttributeCallback, DelegatedClusterCallback {
private ClusterCommandCallback callback;
@Override
public void setCallbackDelegate(ClusterCommandCallback callback) {
@@ -20053,9 +20053,9 @@ public Map initializeClusterMap() {
ClusterInfo refrigeratorAndTemperatureControlledCabinetModeClusterInfo = new ClusterInfo(
(ptr, endpointId) -> new ChipClusters.RefrigeratorAndTemperatureControlledCabinetModeCluster(ptr, endpointId), new HashMap<>());
clusterMap.put("refrigeratorAndTemperatureControlledCabinetMode", refrigeratorAndTemperatureControlledCabinetModeClusterInfo);
- ClusterInfo washerControlsClusterInfo = new ClusterInfo(
- (ptr, endpointId) -> new ChipClusters.WasherControlsCluster(ptr, endpointId), new HashMap<>());
- clusterMap.put("washerControls", washerControlsClusterInfo);
+ ClusterInfo laundryWasherControlsClusterInfo = new ClusterInfo(
+ (ptr, endpointId) -> new ChipClusters.LaundryWasherControlsCluster(ptr, endpointId), new HashMap<>());
+ clusterMap.put("laundryWasherControls", laundryWasherControlsClusterInfo);
ClusterInfo rvcRunModeClusterInfo = new ClusterInfo(
(ptr, endpointId) -> new ChipClusters.RvcRunModeCluster(ptr, endpointId), new HashMap<>());
clusterMap.put("rvcRunMode", rvcRunModeClusterInfo);
@@ -20368,7 +20368,7 @@ public void combineCommand(Map destination, Map> getCommandMap() {
);
refrigeratorAndTemperatureControlledCabinetModeClusterInteractionInfoMap.put("changeToMode", refrigeratorAndTemperatureControlledCabinetModechangeToModeInteractionInfo);
commandMap.put("refrigeratorAndTemperatureControlledCabinetMode", refrigeratorAndTemperatureControlledCabinetModeClusterInteractionInfoMap);
- Map washerControlsClusterInteractionInfoMap = new LinkedHashMap<>();
- commandMap.put("washerControls", washerControlsClusterInteractionInfoMap);
+ Map laundryWasherControlsClusterInteractionInfoMap = new LinkedHashMap<>();
+ commandMap.put("laundryWasherControls", laundryWasherControlsClusterInteractionInfoMap);
Map rvcRunModeClusterInteractionInfoMap = new LinkedHashMap<>();
Map rvcRunModechangeToModeCommandParams = new LinkedHashMap();
CommandParameterInfo rvcRunModechangeToModenewModeCommandParameterInfo = new CommandParameterInfo("newMode", Integer.class, Integer.class);
diff --git a/src/controller/python/chip/clusters/CHIPClusters.py b/src/controller/python/chip/clusters/CHIPClusters.py
index 85d26f14948e95..052caee654993c 100644
--- a/src/controller/python/chip/clusters/CHIPClusters.py
+++ b/src/controller/python/chip/clusters/CHIPClusters.py
@@ -4511,8 +4511,8 @@ class ChipClusters:
},
},
}
- _WASHER_CONTROLS_CLUSTER_INFO = {
- "clusterName": "WasherControls",
+ _LAUNDRY_WASHER_CONTROLS_CLUSTER_INFO = {
+ "clusterName": "LaundryWasherControls",
"clusterId": 0x00000053,
"commands": {
},
@@ -4538,7 +4538,7 @@ class ChipClusters:
"writable": True,
},
0x00000003: {
- "attributeName": "MaxRinses",
+ "attributeName": "SupportedRinses",
"attributeId": 0x00000003,
"type": "int",
"reportable": True,
@@ -15708,7 +15708,7 @@ class ChipClusters:
0x00000050: _MODE_SELECT_CLUSTER_INFO,
0x00000051: _LAUNDRY_WASHER_MODE_CLUSTER_INFO,
0x00000052: _REFRIGERATOR_AND_TEMPERATURE_CONTROLLED_CABINET_MODE_CLUSTER_INFO,
- 0x00000053: _WASHER_CONTROLS_CLUSTER_INFO,
+ 0x00000053: _LAUNDRY_WASHER_CONTROLS_CLUSTER_INFO,
0x00000054: _RVC_RUN_MODE_CLUSTER_INFO,
0x00000055: _RVC_CLEAN_MODE_CLUSTER_INFO,
0x00000056: _TEMPERATURE_CONTROL_CLUSTER_INFO,
@@ -15844,7 +15844,7 @@ class ChipClusters:
"ModeSelect": _MODE_SELECT_CLUSTER_INFO,
"LaundryWasherMode": _LAUNDRY_WASHER_MODE_CLUSTER_INFO,
"RefrigeratorAndTemperatureControlledCabinetMode": _REFRIGERATOR_AND_TEMPERATURE_CONTROLLED_CABINET_MODE_CLUSTER_INFO,
- "WasherControls": _WASHER_CONTROLS_CLUSTER_INFO,
+ "LaundryWasherControls": _LAUNDRY_WASHER_CONTROLS_CLUSTER_INFO,
"RvcRunMode": _RVC_RUN_MODE_CLUSTER_INFO,
"RvcCleanMode": _RVC_CLEAN_MODE_CLUSTER_INFO,
"TemperatureControl": _TEMPERATURE_CONTROL_CLUSTER_INFO,
diff --git a/src/controller/python/chip/clusters/Objects.py b/src/controller/python/chip/clusters/Objects.py
index 79369d295cf0bd..e9ee0c02b107a2 100644
--- a/src/controller/python/chip/clusters/Objects.py
+++ b/src/controller/python/chip/clusters/Objects.py
@@ -15684,7 +15684,7 @@ def attribute_type(cls) -> ClusterObjectFieldDescriptor:
@dataclass
-class WasherControls(Cluster):
+class LaundryWasherControls(Cluster):
id: typing.ClassVar[int] = 0x0053
@ChipUtility.classproperty
@@ -15693,8 +15693,8 @@ def descriptor(cls) -> ClusterObjectDescriptor:
Fields=[
ClusterObjectFieldDescriptor(Label="spinSpeeds", Tag=0x00000000, Type=typing.Optional[typing.List[str]]),
ClusterObjectFieldDescriptor(Label="spinSpeedCurrent", Tag=0x00000001, Type=typing.Union[None, Nullable, uint]),
- ClusterObjectFieldDescriptor(Label="numberOfRinses", Tag=0x00000002, Type=typing.Union[None, Nullable, uint]),
- ClusterObjectFieldDescriptor(Label="maxRinses", Tag=0x00000003, Type=typing.Optional[uint]),
+ ClusterObjectFieldDescriptor(Label="numberOfRinses", Tag=0x00000002, Type=typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum]),
+ ClusterObjectFieldDescriptor(Label="supportedRinses", Tag=0x00000003, Type=typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]]),
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]),
@@ -15705,8 +15705,8 @@ def descriptor(cls) -> ClusterObjectDescriptor:
spinSpeeds: 'typing.Optional[typing.List[str]]' = None
spinSpeedCurrent: 'typing.Union[None, Nullable, uint]' = None
- numberOfRinses: 'typing.Union[None, Nullable, uint]' = None
- maxRinses: 'typing.Optional[uint]' = None
+ numberOfRinses: 'typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum]' = None
+ supportedRinses: 'typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]]' = None
generatedCommandList: 'typing.List[uint]' = None
acceptedCommandList: 'typing.List[uint]' = None
eventList: 'typing.List[uint]' = None
@@ -15714,6 +15714,18 @@ def descriptor(cls) -> ClusterObjectDescriptor:
featureMap: 'uint' = None
clusterRevision: 'uint' = None
+ class Enums:
+ class NumberOfRinsesEnum(MatterIntEnum):
+ kNone = 0x00
+ kNormal = 0x01
+ kExtra = 0x02
+ kMax = 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 Bitmaps:
class Feature(IntFlag):
kSpin = 0x1
@@ -15764,12 +15776,12 @@ def attribute_id(cls) -> int:
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=typing.Union[None, Nullable, uint])
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum])
- value: 'typing.Union[None, Nullable, uint]' = None
+ value: 'typing.Optional[LaundryWasherControls.Enums.NumberOfRinsesEnum]' = None
@dataclass
- class MaxRinses(ClusterAttributeDescriptor):
+ class SupportedRinses(ClusterAttributeDescriptor):
@ChipUtility.classproperty
def cluster_id(cls) -> int:
return 0x0053
@@ -15780,9 +15792,9 @@ def attribute_id(cls) -> int:
@ChipUtility.classproperty
def attribute_type(cls) -> ClusterObjectFieldDescriptor:
- return ClusterObjectFieldDescriptor(Type=typing.Optional[uint])
+ return ClusterObjectFieldDescriptor(Type=typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]])
- value: 'typing.Optional[uint]' = None
+ value: 'typing.Optional[typing.List[LaundryWasherControls.Enums.NumberOfRinsesEnum]]' = None
@dataclass
class GeneratedCommandList(ClusterAttributeDescriptor):
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
index 4ea766a14fbd3c..9b864c81716e61 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeSpecifiedCheck.mm
@@ -1802,6 +1802,45 @@ static BOOL AttributeIsSpecifiedInModeSelectCluster(AttributeId aAttributeId)
}
}
}
+static BOOL AttributeIsSpecifiedInLaundryWasherControlsCluster(AttributeId aAttributeId)
+{
+ using namespace Clusters::LaundryWasherControls;
+ switch (aAttributeId) {
+ case Attributes::SpinSpeeds::Id: {
+ return YES;
+ }
+ case Attributes::SpinSpeedCurrent::Id: {
+ return YES;
+ }
+ case Attributes::NumberOfRinses::Id: {
+ return YES;
+ }
+ case Attributes::SupportedRinses::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 AttributeIsSpecifiedInTemperatureControlCluster(AttributeId aAttributeId)
{
using namespace Clusters::TemperatureControl;
@@ -5130,6 +5169,9 @@ BOOL MTRAttributeIsSpecified(ClusterId aClusterId, AttributeId aAttributeId)
case Clusters::ModeSelect::Id: {
return AttributeIsSpecifiedInModeSelectCluster(aAttributeId);
}
+ case Clusters::LaundryWasherControls::Id: {
+ return AttributeIsSpecifiedInLaundryWasherControlsCluster(aAttributeId);
+ }
case Clusters::TemperatureControl::Id: {
return AttributeIsSpecifiedInTemperatureControlCluster(aAttributeId);
}
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
index bd83f67882b035..24fef39fcc7eaf 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRAttributeTLVValueDecoder.mm
@@ -9250,6 +9250,228 @@ static id _Nullable DecodeAttributeValueForModeSelectCluster(
*aError = CHIP_ERROR_IM_MALFORMED_ATTRIBUTE_PATH_IB;
return nil;
}
+static id _Nullable DecodeAttributeValueForLaundryWasherControlsCluster(
+ AttributeId aAttributeId, TLV::TLVReader & aReader, CHIP_ERROR * aError)
+{
+ using namespace Clusters::LaundryWasherControls;
+ switch (aAttributeId) {
+ case Attributes::SpinSpeeds::Id: {
+ using TypeInfo = Attributes::SpinSpeeds::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();
+ NSString * newElement_0;
+ newElement_0 = AsString(entry_0);
+ if (newElement_0 == 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::SpinSpeedCurrent::Id: {
+ using TypeInfo = Attributes::SpinSpeedCurrent::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::NumberOfRinses::Id: {
+ using TypeInfo = Attributes::NumberOfRinses::TypeInfo;
+ TypeInfo::DecodableType cppValue;
+ *aError = DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR) {
+ return nil;
+ }
+ NSNumber * _Nonnull value;
+ value = [NSNumber numberWithUnsignedChar:chip::to_underlying(cppValue)];
+ return value;
+ }
+ case Attributes::SupportedRinses::Id: {
+ using TypeInfo = Attributes::SupportedRinses::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 numberWithUnsignedChar:chip::to_underlying(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::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 DecodeAttributeValueForTemperatureControlCluster(
AttributeId aAttributeId, TLV::TLVReader & aReader, CHIP_ERROR * aError)
{
@@ -24482,6 +24704,9 @@ id _Nullable MTRDecodeAttributeValue(const ConcreteAttributePath & aPath, TLV::T
case Clusters::ModeSelect::Id: {
return DecodeAttributeValueForModeSelectCluster(aPath.mAttributeId, aReader, aError);
}
+ case Clusters::LaundryWasherControls::Id: {
+ return DecodeAttributeValueForLaundryWasherControlsCluster(aPath.mAttributeId, aReader, aError);
+ }
case Clusters::TemperatureControl::Id: {
return DecodeAttributeValueForTemperatureControlCluster(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 cc51d60f80984e..bd94870198ca3d 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.h
@@ -7897,6 +7897,154 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
@end
+/**
+ * Cluster Laundry Washer Controls
+ *
+ * This cluster supports remotely monitoring and controling the different typs of functionality available to a washing device, such
+ * as a washing machine.
+ */
+MTR_NEWLY_AVAILABLE
+@interface MTRBaseClusterLaundryWasherControls : MTRCluster
+
+- (instancetype _Nullable)initWithDevice:(MTRBaseDevice *)device
+ endpointID:(NSNumber *)endpointID
+ queue:(dispatch_queue_t)queue NS_DESIGNATED_INITIALIZER MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeSpinSpeedsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeSpinSpeedsWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSpinSpeedsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeSpinSpeedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeSpinSpeedCurrentWithValue:(NSNumber * _Nullable)value
+ completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeSpinSpeedCurrentWithValue:(NSNumber * _Nullable)value
+ params:(MTRWriteParams * _Nullable)params
+ completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeSpinSpeedCurrentWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSpinSpeedCurrentWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value,
+ NSError * _Nullable error))completion MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeNumberOfRinsesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeNumberOfRinsesWithValue:(NSNumber * _Nonnull)value
+ completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
+- (void)writeAttributeNumberOfRinsesWithValue:(NSNumber * _Nonnull)value
+ params:(MTRWriteParams * _Nullable)params
+ completion:(MTRStatusCompletion)completion MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeNumberOfRinsesWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeNumberOfRinsesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+
+- (void)readAttributeSupportedRinsesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+ MTR_NEWLY_AVAILABLE;
+- (void)subscribeAttributeSupportedRinsesWithParams:(MTRSubscribeParams *)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+ MTR_NEWLY_AVAILABLE;
++ (void)readAttributeSupportedRinsesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _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 Temperature Control
*
@@ -24525,6 +24673,18 @@ typedef NS_OPTIONS(uint32_t, MTRModeSelectFeature) {
= 0x1,
} API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1));
+typedef NS_ENUM(uint8_t, MTRLaundryWasherControlsNumberOfRinses) {
+ MTRLaundryWasherControlsNumberOfRinsesNone MTR_NEWLY_AVAILABLE = 0x00,
+ MTRLaundryWasherControlsNumberOfRinsesNormal MTR_NEWLY_AVAILABLE = 0x01,
+ MTRLaundryWasherControlsNumberOfRinsesExtra MTR_NEWLY_AVAILABLE = 0x02,
+ MTRLaundryWasherControlsNumberOfRinsesMax MTR_NEWLY_AVAILABLE = 0x03,
+} MTR_NEWLY_AVAILABLE;
+
+typedef NS_OPTIONS(uint32_t, MTRLaundryWasherControlsFeature) {
+ MTRLaundryWasherControlsFeatureSpin MTR_NEWLY_AVAILABLE = 0x1,
+ MTRLaundryWasherControlsFeatureRinse MTR_NEWLY_AVAILABLE = 0x2,
+} MTR_NEWLY_AVAILABLE;
+
typedef NS_OPTIONS(uint32_t, MTRTemperatureControlFeature) {
MTRTemperatureControlFeatureTemperatureNumber MTR_NEWLY_AVAILABLE = 0x1,
MTRTemperatureControlFeatureTemperatureLevel MTR_NEWLY_AVAILABLE = 0x2,
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
index cb9479fc931ea6..5f5ca943653a49 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters.mm
@@ -47834,6 +47834,541 @@ - (nullable instancetype)initWithDevice:(MTRBaseDevice *)device endpoint:(uint16
@end
+@implementation MTRBaseClusterLaundryWasherControls
+
+- (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)readAttributeSpinSpeedsWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = LaundryWasherControls::Attributes::SpinSpeeds::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeSpinSpeedsWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = LaundryWasherControls::Attributes::SpinSpeeds::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeSpinSpeedsWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(LaundryWasherControlsSpinSpeedsListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = LaundryWasherControls::Attributes::SpinSpeeds::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)readAttributeSpinSpeedCurrentWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = LaundryWasherControls::Attributes::SpinSpeedCurrent::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)writeAttributeSpinSpeedCurrentWithValue:(NSNumber * _Nullable)value completion:(MTRStatusCompletion)completion
+{
+ [self writeAttributeSpinSpeedCurrentWithValue:(NSNumber * _Nullable) value params:nil completion:completion];
+}
+- (void)writeAttributeSpinSpeedCurrentWithValue:(NSNumber * _Nullable)value
+ params:(MTRWriteParams * _Nullable)params
+ completion:(MTRStatusCompletion)completion
+{
+ // Make a copy of params before we go async.
+ params = [params copy];
+ value = [value copy];
+
+ auto * bridge = new MTRDefaultSuccessCallbackBridge(
+ self.callbackQueue,
+ ^(id _Nullable ignored, NSError * _Nullable error) {
+ completion(error);
+ },
+ ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb,
+ MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+ chip::Optional timedWriteTimeout;
+ if (params != nil) {
+ if (params.timedWriteTimeout != nil) {
+ timedWriteTimeout.SetValue(params.timedWriteTimeout.unsignedShortValue);
+ }
+ }
+
+ ListFreer listFreer;
+ using TypeInfo = LaundryWasherControls::Attributes::SpinSpeedCurrent::TypeInfo;
+ TypeInfo::Type cppValue;
+ if (value == nil) {
+ cppValue.SetNull();
+ } else {
+ auto & nonNullValue_0 = cppValue.SetNonNull();
+ nonNullValue_0 = value.unsignedCharValue;
+ }
+
+ chip::Controller::ClusterBase cppCluster(exchangeManager, session, self->_endpoint);
+ return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
+ });
+ std::move(*bridge).DispatchAction(self.device);
+}
+
+- (void)subscribeAttributeSpinSpeedCurrentWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = LaundryWasherControls::Attributes::SpinSpeedCurrent::TypeInfo;
+ MTRSubscribeAttribute(params,
+ subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(),
+ TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeSpinSpeedCurrentWithClusterStateCache:(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 = LaundryWasherControls::Attributes::SpinSpeedCurrent::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)readAttributeNumberOfRinsesWithCompletion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = LaundryWasherControls::Attributes::NumberOfRinses::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)writeAttributeNumberOfRinsesWithValue:(NSNumber * _Nonnull)value completion:(MTRStatusCompletion)completion
+{
+ [self writeAttributeNumberOfRinsesWithValue:(NSNumber * _Nonnull) value params:nil completion:completion];
+}
+- (void)writeAttributeNumberOfRinsesWithValue:(NSNumber * _Nonnull)value
+ params:(MTRWriteParams * _Nullable)params
+ completion:(MTRStatusCompletion)completion
+{
+ // Make a copy of params before we go async.
+ params = [params copy];
+ value = [value copy];
+
+ auto * bridge = new MTRDefaultSuccessCallbackBridge(
+ self.callbackQueue,
+ ^(id _Nullable ignored, NSError * _Nullable error) {
+ completion(error);
+ },
+ ^(ExchangeManager & exchangeManager, const SessionHandle & session, DefaultSuccessCallbackType successCb,
+ MTRErrorCallback failureCb, MTRCallbackBridgeBase * bridge) {
+ chip::Optional timedWriteTimeout;
+ if (params != nil) {
+ if (params.timedWriteTimeout != nil) {
+ timedWriteTimeout.SetValue(params.timedWriteTimeout.unsignedShortValue);
+ }
+ }
+
+ ListFreer listFreer;
+ using TypeInfo = LaundryWasherControls::Attributes::NumberOfRinses::TypeInfo;
+ TypeInfo::Type cppValue;
+ cppValue = static_cast>(value.unsignedCharValue);
+
+ chip::Controller::ClusterBase cppCluster(exchangeManager, session, self->_endpoint);
+ return cppCluster.WriteAttribute(cppValue, bridge, successCb, failureCb, timedWriteTimeout);
+ });
+ std::move(*bridge).DispatchAction(self.device);
+}
+
+- (void)subscribeAttributeNumberOfRinsesWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = LaundryWasherControls::Attributes::NumberOfRinses::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeNumberOfRinsesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSNumber * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(LaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = LaundryWasherControls::Attributes::NumberOfRinses::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)readAttributeSupportedRinsesWithCompletion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ MTRReadParams * params = [[MTRReadParams alloc] init];
+ using TypeInfo = LaundryWasherControls::Attributes::SupportedRinses::TypeInfo;
+ return MTRReadAttribute(
+ params, completion, self.callbackQueue, self.device, self->_endpoint, TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
+- (void)subscribeAttributeSupportedRinsesWithParams:(MTRSubscribeParams * _Nonnull)params
+ subscriptionEstablished:(MTRSubscriptionEstablishedHandler _Nullable)subscriptionEstablished
+ reportHandler:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))reportHandler
+{
+ using TypeInfo = LaundryWasherControls::Attributes::SupportedRinses::TypeInfo;
+ MTRSubscribeAttribute(params, subscriptionEstablished, reportHandler, self.callbackQueue, self.device, self->_endpoint,
+ TypeInfo::GetClusterId(), TypeInfo::GetAttributeId());
+}
+
++ (void)readAttributeSupportedRinsesWithClusterStateCache:(MTRClusterStateCacheContainer *)clusterStateCacheContainer
+ endpoint:(NSNumber *)endpoint
+ queue:(dispatch_queue_t)queue
+ completion:(void (^)(NSArray * _Nullable value, NSError * _Nullable error))completion
+{
+ auto * bridge = new MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(LaundryWasherControlsSupportedRinsesListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = LaundryWasherControls::Attributes::SupportedRinses::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 = LaundryWasherControls::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 = LaundryWasherControls::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 MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(LaundryWasherControlsGeneratedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = LaundryWasherControls::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 = LaundryWasherControls::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 = LaundryWasherControls::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 MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(LaundryWasherControlsAcceptedCommandListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = LaundryWasherControls::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 = LaundryWasherControls::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 = LaundryWasherControls::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 MTRLaundryWasherControlsEventListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(LaundryWasherControlsEventListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = LaundryWasherControls::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 = LaundryWasherControls::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 = LaundryWasherControls::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 MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge(queue, completion);
+ std::move(*bridge).DispatchLocalAction(clusterStateCacheContainer.baseDevice,
+ ^(LaundryWasherControlsAttributeListListAttributeCallback successCb, MTRErrorCallback failureCb) {
+ if (clusterStateCacheContainer.cppClusterStateCache) {
+ chip::app::ConcreteAttributePath path;
+ using TypeInfo = LaundryWasherControls::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 = LaundryWasherControls::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 = LaundryWasherControls::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 = LaundryWasherControls::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 = LaundryWasherControls::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 = LaundryWasherControls::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 = LaundryWasherControls::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 MTRBaseClusterTemperatureControl
- (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 ba9b532fc8c3e1..bd1a048dae4e38 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRBaseClusters_Internal.h
@@ -200,6 +200,11 @@
@property (nonatomic, assign, readonly) chip::EndpointId endpoint;
@end
+@interface MTRBaseClusterLaundryWasherControls ()
+@property (nonatomic, strong, readonly) MTRBaseDevice * device;
+@property (nonatomic, assign, readonly) chip::EndpointId endpoint;
+@end
+
@interface MTRBaseClusterTemperatureControl ()
@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 79efa631ed7219..af36544e484c06 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.h
@@ -383,6 +383,10 @@ typedef void (*GroupKeyManagementClusterGroupKeySecurityPolicyEnumAttributeCallb
void *, chip::app::Clusters::GroupKeyManagement::GroupKeySecurityPolicyEnum);
typedef void (*NullableGroupKeyManagementClusterGroupKeySecurityPolicyEnumAttributeCallback)(
void *, const chip::app::DataModel::Nullable &);
+typedef void (*LaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallback)(
+ void *, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum);
+typedef void (*NullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallback)(
+ void *, const chip::app::DataModel::Nullable &);
typedef void (*AirQualityClusterAirQualityEnumAttributeCallback)(void *, chip::app::Clusters::AirQuality::AirQualityEnum);
typedef void (*NullableAirQualityClusterAirQualityEnumAttributeCallback)(
void *, const chip::app::DataModel::Nullable &);
@@ -1167,6 +1171,19 @@ typedef void (*ModeSelectEventListListAttributeCallback)(void * context,
const chip::app::DataModel::DecodableList & data);
typedef void (*ModeSelectAttributeListListAttributeCallback)(void * context,
const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsSpinSpeedsListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsSupportedRinsesListAttributeCallback)(
+ void * context,
+ const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsGeneratedCommandListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsAcceptedCommandListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsEventListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
+typedef void (*LaundryWasherControlsAttributeListListAttributeCallback)(
+ void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*TemperatureControlSupportedTemperatureLevelsListAttributeCallback)(
void * context, const chip::app::DataModel::DecodableList & data);
typedef void (*TemperatureControlGeneratedCommandListListAttributeCallback)(
@@ -8723,6 +8740,206 @@ class MTRModeSelectAttributeListListAttributeCallbackSubscriptionBridge
MTRSubscriptionEstablishedHandler mEstablishedHandler;
};
+class MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackSubscriptionBridge
+ : public MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void
+ OnSuccessFn(void * context,
+ const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackSubscriptionBridge
+ : public MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackSubscriptionBridge
+ : public MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackSubscriptionBridge
+ : public MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRLaundryWasherControlsEventListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsEventListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRLaundryWasherControlsEventListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRLaundryWasherControlsEventListListAttributeCallbackSubscriptionBridge
+ : public MTRLaundryWasherControlsEventListListAttributeCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsEventListListAttributeCallbackSubscriptionBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRLaundryWasherControlsEventListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRLaundryWasherControlsEventListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRLaundryWasherControlsEventListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, const chip::app::DataModel::DecodableList & value);
+};
+
+class MTRLaundryWasherControlsAttributeListListAttributeCallbackSubscriptionBridge
+ : public MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsAttributeListListAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
class MTRTemperatureControlSupportedTemperatureLevelsListAttributeCallbackBridge
: public MTRCallbackBridge
{
@@ -22033,6 +22250,77 @@ class MTRNullableGroupKeyManagementClusterGroupKeySecurityPolicyEnumAttributeCal
MTRSubscriptionEstablishedHandler mEstablishedHandler;
};
+class MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge(dispatch_queue_t queue, ResponseHandler handler,
+ MTRActionBlock action) :
+ MTRCallbackBridge(queue, handler, action, OnSuccessFn){};
+
+ static void OnSuccessFn(void * context, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value);
+};
+
+class MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackSubscriptionBridge
+ : public MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge
+{
+public:
+ MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
+class MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge
+ : public MTRCallbackBridge
+{
+public:
+ MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge(dispatch_queue_t queue,
+ ResponseHandler handler) :
+ MTRCallbackBridge(queue, handler, OnSuccessFn){};
+
+ MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge(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 MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackSubscriptionBridge
+ : public MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge
+{
+public:
+ MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackSubscriptionBridge(
+ dispatch_queue_t queue, ResponseHandler handler, MTRActionBlock action,
+ MTRSubscriptionEstablishedHandler establishedHandler) :
+ MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge(queue, handler, action),
+ mEstablishedHandler(establishedHandler)
+ {}
+
+ void OnSubscriptionEstablished();
+ using MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge::KeepAliveOnCallback;
+ using MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge::OnDone;
+
+private:
+ MTRSubscriptionEstablishedHandler mEstablishedHandler;
+};
+
class MTRAirQualityClusterAirQualityEnumAttributeCallbackBridge
: public MTRCallbackBridge
{
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
index 331717c7ff79f0..c310a4534c0228 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRCallbackBridge.mm
@@ -8205,6 +8205,239 @@
}
}
+void MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackBridge::OnSuccessFn(
+ void * context, const chip::app::DataModel::DecodableList & value)
+{
+ NSArray * _Nonnull objCValue;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = value.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSString * newElement_0;
+ newElement_0 = AsString(entry_0);
+ if (newElement_0 == nil) {
+ CHIP_ERROR err = CHIP_ERROR_INVALID_ARGUMENT;
+ OnFailureFn(context, err);
+ return;
+ }
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ OnFailureFn(context, err);
+ return;
+ }
+ objCValue = array_0;
+ }
+ DispatchSuccess(context, objCValue);
+};
+
+void MTRLaundryWasherControlsSpinSpeedsListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+{
+ if (!mQueue) {
+ return;
+ }
+
+ if (mEstablishedHandler != nil) {
+ dispatch_async(mQueue, mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ mEstablishedHandler = nil;
+ }
+}
+
+void MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackBridge::OnSuccessFn(void * context,
+ const chip::app::DataModel::DecodableList & value)
+{
+ NSArray * _Nonnull objCValue;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = value.begin();
+ while (iter_0.Next()) {
+ auto & entry_0 = iter_0.GetValue();
+ NSNumber * newElement_0;
+ newElement_0 = [NSNumber numberWithUnsignedChar:chip::to_underlying(entry_0)];
+ [array_0 addObject:newElement_0];
+ }
+ CHIP_ERROR err = iter_0.GetStatus();
+ if (err != CHIP_NO_ERROR) {
+ OnFailureFn(context, err);
+ return;
+ }
+ objCValue = array_0;
+ }
+ DispatchSuccess(context, objCValue);
+};
+
+void MTRLaundryWasherControlsSupportedRinsesListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+{
+ if (!mQueue) {
+ return;
+ }
+
+ if (mEstablishedHandler != nil) {
+ dispatch_async(mQueue, mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ mEstablishedHandler = nil;
+ }
+}
+
+void MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackBridge::OnSuccessFn(
+ void * context, const chip::app::DataModel::DecodableList & value)
+{
+ NSArray * _Nonnull objCValue;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = value.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) {
+ OnFailureFn(context, err);
+ return;
+ }
+ objCValue = array_0;
+ }
+ DispatchSuccess(context, objCValue);
+};
+
+void MTRLaundryWasherControlsGeneratedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+{
+ if (!mQueue) {
+ return;
+ }
+
+ if (mEstablishedHandler != nil) {
+ dispatch_async(mQueue, mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ mEstablishedHandler = nil;
+ }
+}
+
+void MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackBridge::OnSuccessFn(
+ void * context, const chip::app::DataModel::DecodableList & value)
+{
+ NSArray * _Nonnull objCValue;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = value.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) {
+ OnFailureFn(context, err);
+ return;
+ }
+ objCValue = array_0;
+ }
+ DispatchSuccess(context, objCValue);
+};
+
+void MTRLaundryWasherControlsAcceptedCommandListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+{
+ if (!mQueue) {
+ return;
+ }
+
+ if (mEstablishedHandler != nil) {
+ dispatch_async(mQueue, mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ mEstablishedHandler = nil;
+ }
+}
+
+void MTRLaundryWasherControlsEventListListAttributeCallbackBridge::OnSuccessFn(
+ void * context, const chip::app::DataModel::DecodableList & value)
+{
+ NSArray * _Nonnull objCValue;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = value.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) {
+ OnFailureFn(context, err);
+ return;
+ }
+ objCValue = array_0;
+ }
+ DispatchSuccess(context, objCValue);
+};
+
+void MTRLaundryWasherControlsEventListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+{
+ if (!mQueue) {
+ return;
+ }
+
+ if (mEstablishedHandler != nil) {
+ dispatch_async(mQueue, mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ mEstablishedHandler = nil;
+ }
+}
+
+void MTRLaundryWasherControlsAttributeListListAttributeCallbackBridge::OnSuccessFn(
+ void * context, const chip::app::DataModel::DecodableList & value)
+{
+ NSArray * _Nonnull objCValue;
+ { // Scope for our temporary variables
+ auto * array_0 = [NSMutableArray new];
+ auto iter_0 = value.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) {
+ OnFailureFn(context, err);
+ return;
+ }
+ objCValue = array_0;
+ }
+ DispatchSuccess(context, objCValue);
+};
+
+void MTRLaundryWasherControlsAttributeListListAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+{
+ if (!mQueue) {
+ return;
+ }
+
+ if (mEstablishedHandler != nil) {
+ dispatch_async(mQueue, mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ mEstablishedHandler = nil;
+ }
+}
+
void MTRTemperatureControlSupportedTemperatureLevelsListAttributeCallbackBridge::OnSuccessFn(
void * context, const chip::app::DataModel::DecodableList & value)
{
@@ -21301,6 +21534,56 @@
}
}
+void MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge::OnSuccessFn(
+ void * context, chip::app::Clusters::LaundryWasherControls::NumberOfRinsesEnum value)
+{
+ NSNumber * _Nonnull objCValue;
+ objCValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(value)];
+ DispatchSuccess(context, objCValue);
+};
+
+void MTRLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+{
+ if (!mQueue) {
+ return;
+ }
+
+ if (mEstablishedHandler != nil) {
+ dispatch_async(mQueue, mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ mEstablishedHandler = nil;
+ }
+}
+
+void MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackBridge::OnSuccessFn(
+ void * context, const chip::app::DataModel::Nullable & value)
+{
+ NSNumber * _Nullable objCValue;
+ if (value.IsNull()) {
+ objCValue = nil;
+ } else {
+ objCValue = [NSNumber numberWithUnsignedChar:chip::to_underlying(value.Value())];
+ }
+ DispatchSuccess(context, objCValue);
+};
+
+void MTRNullableLaundryWasherControlsClusterNumberOfRinsesEnumAttributeCallbackSubscriptionBridge::OnSubscriptionEstablished()
+{
+ if (!mQueue) {
+ return;
+ }
+
+ if (mEstablishedHandler != nil) {
+ dispatch_async(mQueue, mEstablishedHandler);
+ // On failure, mEstablishedHandler will be cleaned up by our destructor,
+ // but we can clean it up earlier on successful subscription
+ // establishment.
+ mEstablishedHandler = nil;
+ }
+}
+
void MTRAirQualityClusterAirQualityEnumAttributeCallbackBridge::OnSuccessFn(
void * context, chip::app::Clusters::AirQuality::AirQualityEnum value)
{
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
index 2df51da3a762a6..2d2266e158fccc 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusterConstants.h
@@ -276,6 +276,7 @@ typedef NS_ENUM(uint32_t, MTRClusterIDType) {
MTRClusterIDTypeProxyValidID API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x00000044,
MTRClusterIDTypeBooleanStateID API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x00000045,
MTRClusterIDTypeModeSelectID API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4)) = 0x00000050,
+ MTRClusterIDTypeLaundryWasherControlsID MTR_NEWLY_AVAILABLE = 0x00000053,
MTRClusterIDTypeTemperatureControlID MTR_NEWLY_AVAILABLE = 0x00000056,
MTRClusterIDTypeRefrigeratorAlarmID MTR_NEWLY_AVAILABLE = 0x00000057,
MTRClusterIDTypeAirQualityID MTR_NEWLY_AVAILABLE = 0x0000005B,
@@ -3733,6 +3734,24 @@ typedef NS_ENUM(uint32_t, MTRAttributeIDType) {
MTRAttributeIDTypeClusterModeSelectAttributeClusterRevisionID API_AVAILABLE(ios(16.4), macos(13.3), watchos(9.4), tvos(16.4))
= MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+ // Cluster LaundryWasherControls attributes
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeSpinSpeedsID MTR_NEWLY_AVAILABLE = 0x00000000,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeSpinSpeedCurrentID MTR_NEWLY_AVAILABLE = 0x00000001,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeNumberOfRinsesID MTR_NEWLY_AVAILABLE = 0x00000002,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeSupportedRinsesID MTR_NEWLY_AVAILABLE = 0x00000003,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeGeneratedCommandListID MTR_NEWLY_AVAILABLE
+ = MTRAttributeIDTypeGlobalAttributeGeneratedCommandListID,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeAcceptedCommandListID MTR_NEWLY_AVAILABLE
+ = MTRAttributeIDTypeGlobalAttributeAcceptedCommandListID,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeEventListID MTR_NEWLY_AVAILABLE
+ = MTRAttributeIDTypeGlobalAttributeEventListID,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeAttributeListID MTR_NEWLY_AVAILABLE
+ = MTRAttributeIDTypeGlobalAttributeAttributeListID,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeFeatureMapID MTR_NEWLY_AVAILABLE
+ = MTRAttributeIDTypeGlobalAttributeFeatureMapID,
+ MTRAttributeIDTypeClusterLaundryWasherControlsAttributeClusterRevisionID MTR_NEWLY_AVAILABLE
+ = MTRAttributeIDTypeGlobalAttributeClusterRevisionID,
+
// Cluster TemperatureControl attributes
MTRAttributeIDTypeClusterTemperatureControlAttributeTemperatureSetpointID MTR_NEWLY_AVAILABLE = 0x00000000,
MTRAttributeIDTypeClusterTemperatureControlAttributeMinTemperatureID MTR_NEWLY_AVAILABLE = 0x00000001,
diff --git a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
index 010e50e7101c93..0734c0058d23cb 100644
--- a/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
+++ b/src/darwin/Framework/CHIP/zap-generated/MTRClusters.h
@@ -2803,6 +2803,53 @@ API_AVAILABLE(ios(16.1), macos(13.0), watchos(9.1), tvos(16.1))
@end
+/**
+ * Cluster Laundry Washer Controls
+ * This cluster supports remotely monitoring and controling the different typs of functionality available to a washing device,
+ * such as a washing machine.
+ */
+MTR_NEWLY_AVAILABLE
+@interface MTRClusterLaundryWasherControls : MTRCluster
+
+- (instancetype _Nullable)initWithDevice:(MTRDevice *)device
+ endpointID:(NSNumber *)endpointID
+ queue:(dispatch_queue_t)queue NS_DESIGNATED_INITIALIZER MTR_NEWLY_AVAILABLE;
+
+- (NSDictionary