diff --git a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
index 754985f37dd4f4..2999f27a55bdb4 100644
--- a/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
+++ b/examples/all-clusters-app/all-clusters-common/all-clusters-app.matter
@@ -862,6 +862,21 @@ server cluster PowerSource = 47 {
kReplaceable = 0x8;
}
+ info event WiredFaultChange = 0 {
+ WiredFault current[] = 0;
+ WiredFault previous[] = 1;
+ }
+
+ info event BatFaultChange = 1 {
+ BatFault current[] = 0;
+ BatFault previous[] = 1;
+ }
+
+ info event BatChargeFaultChange = 2 {
+ BatChargeFault current[] = 0;
+ BatChargeFault previous[] = 1;
+ }
+
readonly attribute PowerSourceStatus status = 0;
readonly attribute int8u order = 1;
readonly attribute char_string<60> description = 2;
diff --git a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
index 58e0c12b20d3e9..0ea0a312a80a70 100644
--- a/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
+++ b/examples/all-clusters-minimal-app/all-clusters-common/all-clusters-minimal-app.matter
@@ -794,6 +794,21 @@ server cluster PowerSource = 47 {
kReplaceable = 0x8;
}
+ info event WiredFaultChange = 0 {
+ WiredFault current[] = 0;
+ WiredFault previous[] = 1;
+ }
+
+ info event BatFaultChange = 1 {
+ BatFault current[] = 0;
+ BatFault previous[] = 1;
+ }
+
+ info event BatChargeFaultChange = 2 {
+ BatChargeFault current[] = 0;
+ BatChargeFault previous[] = 1;
+ }
+
readonly attribute PowerSourceStatus status = 0;
readonly attribute int8u order = 1;
readonly attribute char_string<60> description = 2;
diff --git a/examples/lock-app/lock-common/lock-app.matter b/examples/lock-app/lock-common/lock-app.matter
index 72510069747932..283c91d72fed46 100644
--- a/examples/lock-app/lock-common/lock-app.matter
+++ b/examples/lock-app/lock-common/lock-app.matter
@@ -455,6 +455,21 @@ server cluster PowerSource = 47 {
kReplaceable = 0x8;
}
+ info event WiredFaultChange = 0 {
+ WiredFault current[] = 0;
+ WiredFault previous[] = 1;
+ }
+
+ info event BatFaultChange = 1 {
+ BatFault current[] = 0;
+ BatFault previous[] = 1;
+ }
+
+ info event BatChargeFaultChange = 2 {
+ BatChargeFault current[] = 0;
+ BatChargeFault previous[] = 1;
+ }
+
readonly attribute PowerSourceStatus status = 0;
readonly attribute int8u order = 1;
readonly attribute char_string<60> description = 2;
diff --git a/examples/placeholder/linux/apps/app1/config.matter b/examples/placeholder/linux/apps/app1/config.matter
index 383b1096765494..4ad37a9e6f581b 100644
--- a/examples/placeholder/linux/apps/app1/config.matter
+++ b/examples/placeholder/linux/apps/app1/config.matter
@@ -627,6 +627,21 @@ server cluster PowerSource = 47 {
kReplaceable = 0x8;
}
+ info event WiredFaultChange = 0 {
+ WiredFault current[] = 0;
+ WiredFault previous[] = 1;
+ }
+
+ info event BatFaultChange = 1 {
+ BatFault current[] = 0;
+ BatFault previous[] = 1;
+ }
+
+ info event BatChargeFaultChange = 2 {
+ BatChargeFault current[] = 0;
+ BatChargeFault previous[] = 1;
+ }
+
readonly attribute PowerSourceStatus status = 0;
readonly attribute int8u order = 1;
readonly attribute char_string<60> description = 2;
diff --git a/examples/placeholder/linux/apps/app2/config.matter b/examples/placeholder/linux/apps/app2/config.matter
index 383b1096765494..4ad37a9e6f581b 100644
--- a/examples/placeholder/linux/apps/app2/config.matter
+++ b/examples/placeholder/linux/apps/app2/config.matter
@@ -627,6 +627,21 @@ server cluster PowerSource = 47 {
kReplaceable = 0x8;
}
+ info event WiredFaultChange = 0 {
+ WiredFault current[] = 0;
+ WiredFault previous[] = 1;
+ }
+
+ info event BatFaultChange = 1 {
+ BatFault current[] = 0;
+ BatFault previous[] = 1;
+ }
+
+ info event BatChargeFaultChange = 2 {
+ BatChargeFault current[] = 0;
+ BatChargeFault previous[] = 1;
+ }
+
readonly attribute PowerSourceStatus status = 0;
readonly attribute int8u order = 1;
readonly attribute char_string<60> description = 2;
diff --git a/examples/window-app/common/window-app.matter b/examples/window-app/common/window-app.matter
index 578b658092fabc..cd0a0e789a10de 100644
--- a/examples/window-app/common/window-app.matter
+++ b/examples/window-app/common/window-app.matter
@@ -617,6 +617,21 @@ server cluster PowerSource = 47 {
kReplaceable = 0x8;
}
+ info event WiredFaultChange = 0 {
+ WiredFault current[] = 0;
+ WiredFault previous[] = 1;
+ }
+
+ info event BatFaultChange = 1 {
+ BatFault current[] = 0;
+ BatFault previous[] = 1;
+ }
+
+ info event BatChargeFaultChange = 2 {
+ BatChargeFault current[] = 0;
+ BatChargeFault previous[] = 1;
+ }
+
readonly attribute PowerSourceStatus status = 0;
readonly attribute int8u order = 1;
readonly attribute char_string<60> description = 2;
diff --git a/src/app/zap-templates/zcl/data-model/chip/power-source-cluster.xml b/src/app/zap-templates/zcl/data-model/chip/power-source-cluster.xml
index 28ba55b9f30983..76b350a52bf239 100644
--- a/src/app/zap-templates/zcl/data-model/chip/power-source-cluster.xml
+++ b/src/app/zap-templates/zcl/data-model/chip/power-source-cluster.xml
@@ -59,22 +59,23 @@ limitations under the License.
BatChargingCurrent
ActiveBatChargeFaults
-
@@ -131,7 +132,7 @@ limitations under the License.
-
+
@@ -152,6 +153,8 @@ limitations under the License.
+
@@ -170,4 +173,4 @@ limitations under the License.
-
\ No newline at end of file
+
diff --git a/src/controller/data_model/controller-clusters.matter b/src/controller/data_model/controller-clusters.matter
index d3ce74301608c7..4de517ed5d514e 100644
--- a/src/controller/data_model/controller-clusters.matter
+++ b/src/controller/data_model/controller-clusters.matter
@@ -995,6 +995,21 @@ client cluster PowerSource = 47 {
kReplaceable = 0x8;
}
+ info event WiredFaultChange = 0 {
+ WiredFault current[] = 0;
+ WiredFault previous[] = 1;
+ }
+
+ info event BatFaultChange = 1 {
+ BatFault current[] = 0;
+ BatFault previous[] = 1;
+ }
+
+ info event BatChargeFaultChange = 2 {
+ BatChargeFault current[] = 0;
+ BatChargeFault previous[] = 1;
+ }
+
readonly attribute PowerSourceStatus status = 0;
readonly attribute int8u order = 1;
readonly attribute char_string<60> description = 2;
diff --git a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
index d8b949d64e8a8c..8313fe238777cc 100644
--- a/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
+++ b/src/controller/java/zap-generated/CHIPEventTLVValueDecoder.cpp
@@ -967,6 +967,179 @@ jobject DecodeEventValue(const app::ConcreteEventPath & aPath, TLV::TLVReader &
using namespace app::Clusters::PowerSource;
switch (aPath.mEventId)
{
+ case Events::WiredFaultChange::Id: {
+ Events::WiredFaultChange::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value_current;
+ chip::JniReferences::GetInstance().CreateArrayList(value_current);
+
+ auto iter_value_current_0 = cppValue.current.begin();
+ while (iter_value_current_0.Next())
+ {
+ auto & entry_0 = iter_value_current_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_current, newElement_0);
+ }
+
+ jobject value_previous;
+ chip::JniReferences::GetInstance().CreateArrayList(value_previous);
+
+ auto iter_value_previous_0 = cppValue.previous.begin();
+ while (iter_value_previous_0.Next())
+ {
+ auto & entry_0 = iter_value_previous_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_previous, newElement_0);
+ }
+
+ jclass wiredFaultChangeStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$PowerSourceClusterWiredFaultChangeEvent", wiredFaultChangeStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$PowerSourceClusterWiredFaultChangeEvent");
+ return nullptr;
+ }
+ jmethodID wiredFaultChangeStructCtor =
+ env->GetMethodID(wiredFaultChangeStructClass, "", "(Ljava/util/ArrayList;Ljava/util/ArrayList;)V");
+ if (wiredFaultChangeStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$PowerSourceClusterWiredFaultChangeEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(wiredFaultChangeStructClass, wiredFaultChangeStructCtor, value_current, value_previous);
+
+ return value;
+ }
+ case Events::BatFaultChange::Id: {
+ Events::BatFaultChange::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value_current;
+ chip::JniReferences::GetInstance().CreateArrayList(value_current);
+
+ auto iter_value_current_0 = cppValue.current.begin();
+ while (iter_value_current_0.Next())
+ {
+ auto & entry_0 = iter_value_current_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_current, newElement_0);
+ }
+
+ jobject value_previous;
+ chip::JniReferences::GetInstance().CreateArrayList(value_previous);
+
+ auto iter_value_previous_0 = cppValue.previous.begin();
+ while (iter_value_previous_0.Next())
+ {
+ auto & entry_0 = iter_value_previous_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_previous, newElement_0);
+ }
+
+ jclass batFaultChangeStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$PowerSourceClusterBatFaultChangeEvent", batFaultChangeStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$PowerSourceClusterBatFaultChangeEvent");
+ return nullptr;
+ }
+ jmethodID batFaultChangeStructCtor =
+ env->GetMethodID(batFaultChangeStructClass, "", "(Ljava/util/ArrayList;Ljava/util/ArrayList;)V");
+ if (batFaultChangeStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$PowerSourceClusterBatFaultChangeEvent constructor");
+ return nullptr;
+ }
+
+ jobject value = env->NewObject(batFaultChangeStructClass, batFaultChangeStructCtor, value_current, value_previous);
+
+ return value;
+ }
+ case Events::BatChargeFaultChange::Id: {
+ Events::BatChargeFaultChange::DecodableType cppValue;
+ *aError = app::DataModel::Decode(aReader, cppValue);
+ if (*aError != CHIP_NO_ERROR)
+ {
+ return nullptr;
+ }
+ jobject value_current;
+ chip::JniReferences::GetInstance().CreateArrayList(value_current);
+
+ auto iter_value_current_0 = cppValue.current.begin();
+ while (iter_value_current_0.Next())
+ {
+ auto & entry_0 = iter_value_current_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_current, newElement_0);
+ }
+
+ jobject value_previous;
+ chip::JniReferences::GetInstance().CreateArrayList(value_previous);
+
+ auto iter_value_previous_0 = cppValue.previous.begin();
+ while (iter_value_previous_0.Next())
+ {
+ auto & entry_0 = iter_value_previous_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_previous, newElement_0);
+ }
+
+ jclass batChargeFaultChangeStructClass;
+ err = chip::JniReferences::GetInstance().GetClassRef(
+ env, "chip/devicecontroller/ChipEventStructs$PowerSourceClusterBatChargeFaultChangeEvent",
+ batChargeFaultChangeStructClass);
+ if (err != CHIP_NO_ERROR)
+ {
+ ChipLogError(Zcl, "Could not find class ChipEventStructs$PowerSourceClusterBatChargeFaultChangeEvent");
+ return nullptr;
+ }
+ jmethodID batChargeFaultChangeStructCtor =
+ env->GetMethodID(batChargeFaultChangeStructClass, "", "(Ljava/util/ArrayList;Ljava/util/ArrayList;)V");
+ if (batChargeFaultChangeStructCtor == nullptr)
+ {
+ ChipLogError(Zcl, "Could not find ChipEventStructs$PowerSourceClusterBatChargeFaultChangeEvent constructor");
+ return nullptr;
+ }
+
+ jobject value =
+ env->NewObject(batChargeFaultChangeStructClass, batChargeFaultChangeStructCtor, value_current, value_previous);
+
+ return value;
+ }
default:
*aError = CHIP_ERROR_IM_MALFORMED_EVENT_PATH_IB;
break;
diff --git a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
index fe77f3667f8c89..2040b030738a89 100644
--- a/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
+++ b/src/controller/java/zap-generated/chip/devicecontroller/ChipEventStructs.java
@@ -347,6 +347,81 @@ public String toString() {
}
}
+ public static class PowerSourceClusterWiredFaultChangeEvent {
+ public ArrayList