Skip to content

Commit 81175d3

Browse files
committed
Fixed bug where PowerAdjustReason wasn't calling MatterReportingAttributeChangeCallback when reason was changing.
1 parent 58e6bf3 commit 81175d3

File tree

2 files changed

+20
-8
lines changed

2 files changed

+20
-8
lines changed

examples/energy-management-app/energy-management-common/device-energy-management/include/DeviceEnergyManagementDelegateImpl.h

+1
Original file line numberDiff line numberDiff line change
@@ -189,6 +189,7 @@ class DeviceEnergyManagementDelegate : public DeviceEnergyManagement::Delegate
189189
CHIP_ERROR SetAbsMinPower(int64_t);
190190
CHIP_ERROR SetAbsMaxPower(int64_t);
191191
CHIP_ERROR SetPowerAdjustmentCapability(const DataModel::Nullable<Structs::PowerAdjustCapabilityStruct::Type> &);
192+
CHIP_ERROR SetPowerAdjustmentCapabilityPowerAdjustReason( const PowerAdjustReasonEnum );
192193

193194
// The DeviceEnergyManagementDelegate owns the master copy of the ForecastStruct object which is accessed via GetForecast and
194195
// SetForecast. The slots field of forecast is owned and managed by the object that implements the DEMManufacturerDelegate

examples/energy-management-app/energy-management-common/device-energy-management/src/DeviceEnergyManagementDelegateImpl.cpp

+19-8
Original file line numberDiff line numberDiff line change
@@ -120,11 +120,11 @@ Status DeviceEnergyManagementDelegate::PowerAdjustRequest(const int64_t powerMw,
120120
switch (cause)
121121
{
122122
case AdjustmentCauseEnum::kLocalOptimization:
123-
mPowerAdjustCapabilityStruct.Value().cause = PowerAdjustReasonEnum::kLocalOptimizationAdjustment;
123+
SetPowerAdjustmentCapabilityPowerAdjustReason(PowerAdjustReasonEnum::kLocalOptimizationAdjustment);
124124
break;
125125

126126
case AdjustmentCauseEnum::kGridOptimization:
127-
mPowerAdjustCapabilityStruct.Value().cause = PowerAdjustReasonEnum::kGridOptimizationAdjustment;
127+
SetPowerAdjustmentCapabilityPowerAdjustReason(PowerAdjustReasonEnum::kGridOptimizationAdjustment);
128128
break;
129129

130130
default:
@@ -175,7 +175,7 @@ void DeviceEnergyManagementDelegate::HandlePowerAdjustRequestFailure()
175175

176176
mPowerAdjustmentInProgress = false;
177177

178-
mPowerAdjustCapabilityStruct.Value().cause = PowerAdjustReasonEnum::kNoAdjustment;
178+
SetPowerAdjustmentCapabilityPowerAdjustReason(PowerAdjustReasonEnum::kNoAdjustment);
179179

180180
// TODO
181181
// Should we inform the mpDEMManufacturerDelegate that PowerAdjustRequest has failed?
@@ -210,7 +210,7 @@ void DeviceEnergyManagementDelegate::HandlePowerAdjustTimerExpiry()
210210

211211
SetESAState(ESAStateEnum::kOnline);
212212

213-
mPowerAdjustCapabilityStruct.Value().cause = PowerAdjustReasonEnum::kNoAdjustment;
213+
SetPowerAdjustmentCapabilityPowerAdjustReason(PowerAdjustReasonEnum::kNoAdjustment);
214214

215215
// Generate a PowerAdjustEnd event
216216
GeneratePowerAdjustEndEvent(CauseEnum::kNormalCompletion);
@@ -264,8 +264,7 @@ CHIP_ERROR DeviceEnergyManagementDelegate::CancelPowerAdjustRequestAndGenerateEv
264264
SetESAState(ESAStateEnum::kOnline);
265265

266266
mPowerAdjustmentInProgress = false;
267-
268-
mPowerAdjustCapabilityStruct.Value().cause = PowerAdjustReasonEnum::kNoAdjustment;
267+
SetPowerAdjustmentCapabilityPowerAdjustReason(PowerAdjustReasonEnum::kNoAdjustment);
269268

270269
CHIP_ERROR err = GeneratePowerAdjustEndEvent(cause);
271270

@@ -922,6 +921,18 @@ DeviceEnergyManagementDelegate::SetPowerAdjustmentCapability(
922921
return CHIP_NO_ERROR;
923922
}
924923

924+
CHIP_ERROR
925+
DeviceEnergyManagementDelegate::SetPowerAdjustmentCapabilityPowerAdjustReason(PowerAdjustReasonEnum powerAdjustReason)
926+
{
927+
assertChipStackLockedByCurrentThread();
928+
929+
mPowerAdjustCapabilityStruct.Value().cause = powerAdjustReason;
930+
931+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, PowerAdjustmentCapability::Id);
932+
933+
return CHIP_NO_ERROR;
934+
}
935+
925936
CHIP_ERROR DeviceEnergyManagementDelegate::SetForecast(const DataModel::Nullable<Structs::ForecastStruct::Type> & forecast)
926937
{
927938
assertChipStackLockedByCurrentThread();
@@ -962,9 +973,9 @@ CHIP_ERROR DeviceEnergyManagementDelegate::SetOptOutState(OptOutStateEnum newVal
962973
if (mPowerAdjustmentInProgress)
963974
{
964975
if ((newValue == OptOutStateEnum::kLocalOptOut &&
965-
mPowerAdjustCapabilityStruct.Value().cause == PowerAdjustReasonEnum::kLocalOptimizationAdjustment) ||
976+
GetPowerAdjustmentCapability().Value().cause == PowerAdjustReasonEnum::kLocalOptimizationAdjustment) ||
966977
(newValue == OptOutStateEnum::kGridOptOut &&
967-
mPowerAdjustCapabilityStruct.Value().cause == PowerAdjustReasonEnum::kGridOptimizationAdjustment) ||
978+
GetPowerAdjustmentCapability().Value().cause == PowerAdjustReasonEnum::kGridOptimizationAdjustment) ||
968979
newValue == OptOutStateEnum::kOptOut)
969980
{
970981
err = CancelPowerAdjustRequestAndGenerateEvent(DeviceEnergyManagement::CauseEnum::kUserOptOut);

0 commit comments

Comments
 (0)