Skip to content

Commit 4703c7e

Browse files
committed
Ensure MatterReportingAttributeChangeCallback is called after forecast is changed
1 parent cdd8bd7 commit 4703c7e

File tree

1 file changed

+20
-0
lines changed

1 file changed

+20
-0
lines changed

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

+20
Original file line numberDiff line numberDiff line change
@@ -377,10 +377,14 @@ Status DeviceEnergyManagementDelegate::StartTimeAdjustRequest(const uint32_t req
377377
mForecast.Value().startTime = savedStartTime;
378378
mForecast.Value().endTime = savedEndTime;
379379

380+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
381+
380382
return Status::Failure;
381383
}
382384
}
383385

386+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
387+
384388
return Status::Success;
385389
}
386390

@@ -457,10 +461,14 @@ Status DeviceEnergyManagementDelegate::PauseRequest(const uint32_t durationS, Ad
457461
if (cause == AdjustmentCauseEnum::kLocalOptimization)
458462
{
459463
mForecast.Value().forecastUpdateReason = ForecastUpdateReasonEnum::kLocalOptimization;
464+
465+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
460466
}
461467
else if (cause == AdjustmentCauseEnum::kGridOptimization)
462468
{
463469
mForecast.Value().forecastUpdateReason = ForecastUpdateReasonEnum::kGridOptimization;
470+
471+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
464472
}
465473

466474
return Status::Success;
@@ -606,6 +614,8 @@ Status DeviceEnergyManagementDelegate::ResumeRequest()
606614
// The PauseRequest has effectively been cancelled so as a result the device should
607615
// go back to InternalOptimisation
608616
mForecast.Value().forecastUpdateReason = ForecastUpdateReasonEnum::kInternalOptimization;
617+
618+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
609619
}
610620

611621
CHIP_ERROR err = CancelPauseRequestAndGenerateEvent(CauseEnum::kCancelled);
@@ -672,6 +682,8 @@ Status DeviceEnergyManagementDelegate::ModifyForecastRequest(
672682
}
673683

674684
mForecast.Value().forecastID++;
685+
686+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
675687
}
676688

677689
return status;
@@ -725,6 +737,8 @@ Status DeviceEnergyManagementDelegate::RequestConstraintBasedForecast(
725737

726738
mForecast.Value().forecastID++;
727739

740+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
741+
728742
status = Status::Success;
729743
}
730744

@@ -748,6 +762,8 @@ Status DeviceEnergyManagementDelegate::CancelRequest()
748762

749763
mForecast.Value().forecastUpdateReason = ForecastUpdateReasonEnum::kInternalOptimization;
750764

765+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
766+
751767
/* It is expected the mpDEMManufacturerDelegate will cancel the effects of any previous adjustment
752768
* request commands, and re-evaluate its forecast for intended operation ignoring those previous
753769
* requests.
@@ -980,6 +996,8 @@ CHIP_ERROR DeviceEnergyManagementDelegate::SetOptOutState(OptOutStateEnum newVal
980996
if ((mOptOutState == OptOutStateEnum::kOptOut) || (mOptOutState == OptOutStateEnum::kLocalOptOut))
981997
{
982998
mForecast.Value().forecastUpdateReason = ForecastUpdateReasonEnum::kInternalOptimization;
999+
1000+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
9831001
// Generate a new forecast with Internal Optimization
9841002
// TODO
9851003
}
@@ -988,6 +1006,8 @@ CHIP_ERROR DeviceEnergyManagementDelegate::SetOptOutState(OptOutStateEnum newVal
9881006
if ((mOptOutState == OptOutStateEnum::kOptOut) || (mOptOutState == OptOutStateEnum::kGridOptOut))
9891007
{
9901008
mForecast.Value().forecastUpdateReason = ForecastUpdateReasonEnum::kInternalOptimization;
1009+
1010+
MatterReportingAttributeChangeCallback(mEndpointId, DeviceEnergyManagement::Id, Forecast::Id);
9911011
// Generate a new forecast with Internal Optimization
9921012
// TODO
9931013
}

0 commit comments

Comments
 (0)