From 673b9f4fa8b83e30674994aa1a3293c2376e9722 Mon Sep 17 00:00:00 2001 From: Bernhard Kirchen Date: Thu, 9 May 2024 22:23:42 +0200 Subject: [PATCH] powermeter refactor: use destructors to de-initialize --- include/PowerMeterHttpJson.h | 1 - include/PowerMeterHttpSml.h | 1 - include/PowerMeterMqtt.h | 3 ++- include/PowerMeterProvider.h | 1 - include/PowerMeterSerialSdm.h | 3 ++- include/PowerMeterSerialSml.h | 3 ++- include/PowerMeterUdpSmaHomeManager.h | 3 ++- src/PowerMeter.cpp | 5 +---- src/PowerMeterMqtt.cpp | 2 +- src/PowerMeterSerialSdm.cpp | 2 +- src/PowerMeterSerialSml.cpp | 2 +- src/PowerMeterUdpSmaHomeManager.cpp | 2 +- 12 files changed, 13 insertions(+), 15 deletions(-) diff --git a/include/PowerMeterHttpJson.h b/include/PowerMeterHttpJson.h index 4b7c8675..08c11372 100644 --- a/include/PowerMeterHttpJson.h +++ b/include/PowerMeterHttpJson.h @@ -16,7 +16,6 @@ public: ~PowerMeterHttpJson(); bool init() final { return true; } - void deinit() final { } void loop() final; float getPowerTotal() const final; void doMqttPublish() const final; diff --git a/include/PowerMeterHttpSml.h b/include/PowerMeterHttpSml.h index b27cd449..c6e46bdc 100644 --- a/include/PowerMeterHttpSml.h +++ b/include/PowerMeterHttpSml.h @@ -13,7 +13,6 @@ public: ~PowerMeterHttpSml(); bool init() final { return true; } - void deinit() final { } void loop() final; bool updateValues(); char tibberPowerMeterError[256]; diff --git a/include/PowerMeterMqtt.h b/include/PowerMeterMqtt.h index 3786fca6..8880f481 100644 --- a/include/PowerMeterMqtt.h +++ b/include/PowerMeterMqtt.h @@ -8,8 +8,9 @@ class PowerMeterMqtt : public PowerMeterProvider { public: + ~PowerMeterMqtt(); + bool init() final; - void deinit() final; void loop() final { } float getPowerTotal() const final; void doMqttPublish() const final; diff --git a/include/PowerMeterProvider.h b/include/PowerMeterProvider.h index 17704135..4cd1c888 100644 --- a/include/PowerMeterProvider.h +++ b/include/PowerMeterProvider.h @@ -21,7 +21,6 @@ public: // returns true if the provider is ready for use, false otherwise virtual bool init() = 0; - virtual void deinit() = 0; virtual void loop() = 0; virtual float getPowerTotal() const = 0; diff --git a/include/PowerMeterSerialSdm.h b/include/PowerMeterSerialSdm.h index 7e01c8f7..ff33bebd 100644 --- a/include/PowerMeterSerialSdm.h +++ b/include/PowerMeterSerialSdm.h @@ -7,8 +7,9 @@ class PowerMeterSerialSdm : public PowerMeterProvider { public: + ~PowerMeterSerialSdm(); + bool init() final; - void deinit() final; void loop() final; float getPowerTotal() const final; void doMqttPublish() const final; diff --git a/include/PowerMeterSerialSml.h b/include/PowerMeterSerialSml.h index 1dbf87d2..58e01961 100644 --- a/include/PowerMeterSerialSml.h +++ b/include/PowerMeterSerialSml.h @@ -6,8 +6,9 @@ class PowerMeterSerialSml : public PowerMeterSml { public: + ~PowerMeterSerialSml(); + bool init() final; - void deinit() final; void loop() final; private: diff --git a/include/PowerMeterUdpSmaHomeManager.h b/include/PowerMeterUdpSmaHomeManager.h index 34e47f4d..5d4b3a8d 100644 --- a/include/PowerMeterUdpSmaHomeManager.h +++ b/include/PowerMeterUdpSmaHomeManager.h @@ -9,8 +9,9 @@ class PowerMeterUdpSmaHomeManager : public PowerMeterProvider { public: + ~PowerMeterUdpSmaHomeManager(); + bool init() final; - void deinit() final; void loop() final; float getPowerTotal() const final { return _powerMeterPower; } void doMqttPublish() const final; diff --git a/src/PowerMeter.cpp b/src/PowerMeter.cpp index 37c3ab34..47261318 100644 --- a/src/PowerMeter.cpp +++ b/src/PowerMeter.cpp @@ -24,10 +24,7 @@ void PowerMeterClass::updateSettings() { std::lock_guard l(_mutex); - if (_upProvider) { - _upProvider->deinit(); - _upProvider = nullptr; - } + if (_upProvider) { _upProvider.reset(); } auto const& config = Configuration.get(); diff --git a/src/PowerMeterMqtt.cpp b/src/PowerMeterMqtt.cpp index 3204bf1f..48f6e459 100644 --- a/src/PowerMeterMqtt.cpp +++ b/src/PowerMeterMqtt.cpp @@ -26,7 +26,7 @@ bool PowerMeterMqtt::init() return _mqttSubscriptions.size() > 0; } -void PowerMeterMqtt::deinit() +PowerMeterMqtt::~PowerMeterMqtt() { for (auto const& t: _mqttSubscriptions) { MqttSettings.unsubscribe(t); } _mqttSubscriptions.clear(); diff --git a/src/PowerMeterSerialSdm.cpp b/src/PowerMeterSerialSdm.cpp index f040c173..1612bcbe 100644 --- a/src/PowerMeterSerialSdm.cpp +++ b/src/PowerMeterSerialSdm.cpp @@ -5,7 +5,7 @@ #include "MessageOutput.h" #include "SerialPortManager.h" -void PowerMeterSerialSdm::deinit() +PowerMeterSerialSdm::~PowerMeterSerialSdm() { if (_upSdmSerial) { _upSdmSerial->end(); diff --git a/src/PowerMeterSerialSml.cpp b/src/PowerMeterSerialSml.cpp index 96580dbe..5f5a64c1 100644 --- a/src/PowerMeterSerialSml.cpp +++ b/src/PowerMeterSerialSml.cpp @@ -25,7 +25,7 @@ bool PowerMeterSerialSml::init() return true; } -void PowerMeterSerialSml::deinit() +PowerMeterSerialSml::~PowerMeterSerialSml() { if (!_upSmlSerial) { return; } _upSmlSerial->end(); diff --git a/src/PowerMeterUdpSmaHomeManager.cpp b/src/PowerMeterUdpSmaHomeManager.cpp index 1347bfb4..2baa9c43 100644 --- a/src/PowerMeterUdpSmaHomeManager.cpp +++ b/src/PowerMeterUdpSmaHomeManager.cpp @@ -29,7 +29,7 @@ bool PowerMeterUdpSmaHomeManager::init() return true; } -void PowerMeterUdpSmaHomeManager::deinit() +PowerMeterUdpSmaHomeManager::~PowerMeterUdpSmaHomeManager() { SMAUdp.stop(); }