From 44f883733280ff798ec112318f75e2f088b9f378 Mon Sep 17 00:00:00 2001 From: jamesharrow <93921463+jamesharrow@users.noreply.github.com> Date: Wed, 4 Sep 2024 14:06:59 +0100 Subject: [PATCH] EVSE - Update FakeReadings when a MaxChargeCurrent change occurs (#35346) * Updated FakeReadings when a MaxChargeCurrent change is made so that the readings are more representative of a real EV. * Restyled by whitespace * Removed using namespace from header file and added chip:: back into the type defintion since build fails. * Apply suggestions from code review Co-authored-by: Andrei Litvin * Apply suggestions from code review * Restyled by clang-format --------- Co-authored-by: Restyled.io Co-authored-by: Andrei Litvin --- .../include/EVSEManufacturerImpl.h | 7 ++++++ .../energy-evse/src/EVSEManufacturerImpl.cpp | 9 +++++++ .../energy-reporting/include/FakeReadings.h | 10 ++++++++ .../energy-reporting/src/FakeReadings.cpp | 25 +++++++++++++++++++ 4 files changed, 51 insertions(+) diff --git a/examples/energy-management-app/energy-management-common/energy-evse/include/EVSEManufacturerImpl.h b/examples/energy-management-app/energy-management-common/energy-evse/include/EVSEManufacturerImpl.h index b94220d11b28f3..17d2c865bbaf53 100644 --- a/examples/energy-management-app/energy-management-common/energy-evse/include/EVSEManufacturerImpl.h +++ b/examples/energy-management-app/energy-management-common/energy-evse/include/EVSEManufacturerImpl.h @@ -213,6 +213,13 @@ class EVSEManufacturer : public DEMManufacturerDelegate */ static void FakeReadingsTimerExpiry(System::Layer * systemLayer, void * manufacturer); + /* + * @brief Updates the parameters used to generate fake power and energy readings + * + * @param maximumChargeCurrent Maximum Charge current in mA + */ + void UpdateEVFakeReadings(const Amperage_mA maximumChargeCurrent); + private: EnergyEvseManager * mEvseInstance; ElectricalPowerMeasurement::ElectricalPowerMeasurementInstance * mEPMInstance; diff --git a/examples/energy-management-app/energy-management-common/energy-evse/src/EVSEManufacturerImpl.cpp b/examples/energy-management-app/energy-management-common/energy-evse/src/EVSEManufacturerImpl.cpp index 359e7c8066551d..4f28c3249f6538 100644 --- a/examples/energy-management-app/energy-management-common/energy-evse/src/EVSEManufacturerImpl.cpp +++ b/examples/energy-management-app/energy-management-common/energy-evse/src/EVSEManufacturerImpl.cpp @@ -24,6 +24,7 @@ #include #include +#include #include #include #include @@ -551,6 +552,13 @@ CHIP_ERROR EVSEManufacturer::SendPeriodicEnergyReading(EndpointId aEndpointId, i return CHIP_NO_ERROR; } +void EVSEManufacturer::UpdateEVFakeReadings(const Amperage_mA maximumChargeCurrent) +{ + FakeReadings::GetInstance().SetCurrent(maximumChargeCurrent); + // Note we have to divide by 1000 to make ma * mv = mW + FakeReadings::GetInstance().SetPower((FakeReadings::GetInstance().GetVoltage() * maximumChargeCurrent) / 1000); +} + /** * @brief Main Callback handler - to be implemented by Manufacturer * @@ -573,6 +581,7 @@ void EVSEManufacturer::ApplicationCallbackHandler(const EVSECbInfo * cb, intptr_ ChipLogProgress(AppServer, "EVSE callback - maxChargeCurrent changed to %ld", static_cast(cb->ChargingCurrent.maximumChargeCurrent)); pClass->ComputeChargingSchedule(); + pClass->UpdateEVFakeReadings(cb->ChargingCurrent.maximumChargeCurrent); break; case EVSECallbackType::EnergyMeterReadingRequested: ChipLogProgress(AppServer, "EVSE callback - EnergyMeterReadingRequested"); diff --git a/examples/energy-management-app/energy-management-common/energy-reporting/include/FakeReadings.h b/examples/energy-management-app/energy-management-common/energy-reporting/include/FakeReadings.h index f8334ba2708b7e..4d8415ac39a40b 100644 --- a/examples/energy-management-app/energy-management-common/energy-reporting/include/FakeReadings.h +++ b/examples/energy-management-app/energy-management-common/energy-reporting/include/FakeReadings.h @@ -18,6 +18,7 @@ #pragma once +#include #include #include @@ -58,6 +59,15 @@ class FakeReadings */ void FakeReadingsUpdate(); + void SetPower(chip::Power_mW power_mW); + chip::Power_mW GetPower(); + + void SetVoltage(chip::Voltage_mV voltage_mV); + chip::Voltage_mV GetVoltage(); + + void SetCurrent(chip::Amperage_mA current_mA); + chip::Amperage_mA GetCurrent(); + /** * @brief Timer expiry callback to handle fake load */ diff --git a/examples/energy-management-app/energy-management-common/energy-reporting/src/FakeReadings.cpp b/examples/energy-management-app/energy-management-common/energy-reporting/src/FakeReadings.cpp index c887357a5f7b58..78795976c0bbc2 100644 --- a/examples/energy-management-app/energy-management-common/energy-reporting/src/FakeReadings.cpp +++ b/examples/energy-management-app/energy-management-common/energy-reporting/src/FakeReadings.cpp @@ -180,3 +180,28 @@ void FakeReadings::FakeReadingsTimerExpiry(System::Layer * systemLayer, void * m mn->FakeReadingsUpdate(); } + +void FakeReadings::SetPower(Power_mW aPower_mW) +{ + mPower_mW = aPower_mW; +} +Power_mW FakeReadings::GetPower() +{ + return mPower_mW; +}; +void FakeReadings::SetVoltage(Voltage_mV aVoltage_mV) +{ + mVoltage_mV = aVoltage_mV; +} +Voltage_mV FakeReadings::GetVoltage() +{ + return mVoltage_mV; +}; +void FakeReadings::SetCurrent(Amperage_mA aCurrent_mA) +{ + mCurrent_mA = aCurrent_mA; +} +Amperage_mA FakeReadings::GetCurrent() +{ + return mCurrent_mA; +}