@@ -34,6 +34,10 @@ using chip::app::Clusters::MeterIdentification::PowerThresholdSourceEnum;
34
34
constexpr size_t kUtilityNameSize = 16 ;
35
35
constexpr size_t kPointOfDeliverySize = 16 ;
36
36
37
+ namespace chip ::app::Clusters::MeterIdentification {
38
+ void RestartServer (uint32_t features);
39
+ }
40
+
37
41
CHIP_ERROR MeterIdentificationInstance::Init ()
38
42
{
39
43
return Instance::Init ();
@@ -74,6 +78,16 @@ CHIP_ERROR MeterIdentificationDelegate::LoadJson(Json::Value & root)
74
78
{
75
79
Json::Value value;
76
80
81
+ if (root.isMember (" Features" ))
82
+ {
83
+ value = root.get (" Features" , Json::Value ());
84
+ if (value.isUInt () && value.asUInt () <= 0x01 )
85
+ {
86
+ RestartServer (value.asUInt ());
87
+ return CHIP_NO_ERROR;
88
+ }
89
+ }
90
+
77
91
if (root.isMember (" MeterType" ))
78
92
{
79
93
value = root.get (" MeterType" , Json::Value ());
@@ -86,7 +100,7 @@ CHIP_ERROR MeterIdentificationDelegate::LoadJson(Json::Value & root)
86
100
SetMeterType (std::nullopt);
87
101
}
88
102
}
89
-
103
+
90
104
if (root.isMember (" UtilityName" ))
91
105
{
92
106
value = root.get (" UtilityName" , Json::Value ());
@@ -209,7 +223,7 @@ CHIP_ERROR MeterIdentificationDelegate::SetPointOfDelivery(DataModel::Nullable<C
209
223
return CHIP_NO_ERROR;
210
224
}
211
225
212
- CHIP_ERROR MeterIdentificationDelegate::SetPowerThreshold (DataModel::Nullable<uint64_t > newValue)
226
+ CHIP_ERROR MeterIdentificationDelegate::SetPowerThreshold (DataModel::Nullable<int64_t > newValue)
213
227
{
214
228
// DataModel::Nullable<uint64_t> oldValue = mPowerThreshold;
215
229
0 commit comments