From e95afbf2cc8e54442dd8b9393d4fc036bc63f275 Mon Sep 17 00:00:00 2001 From: Thomas Basler Date: Tue, 12 Dec 2023 13:26:07 +0100 Subject: [PATCH] Use references instead of pointers whenver possible --- include/Datastore.h | 2 +- include/Display_Graphic.h | 2 +- include/InverterSettings.h | 2 +- include/Led_Single.h | 2 +- include/MessageOutput.h | 2 +- include/MqttHandleDtu.h | 2 +- include/MqttHandleHass.h | 2 +- include/MqttHandleInverter.h | 2 +- include/MqttHandleInverterTotal.h | 2 +- include/NetworkSettings.h | 2 +- include/SunPosition.h | 2 +- include/WebApi.h | 2 +- include/WebApi_config.h | 2 +- include/WebApi_device.h | 2 +- include/WebApi_devinfo.h | 2 +- include/WebApi_dtu.h | 2 +- include/WebApi_eventlog.h | 2 +- include/WebApi_firmware.h | 2 +- include/WebApi_gridprofile.h | 2 +- include/WebApi_inverter.h | 2 +- include/WebApi_limit.h | 2 +- include/WebApi_maintenance.h | 2 +- include/WebApi_mqtt.h | 2 +- include/WebApi_network.h | 2 +- include/WebApi_ntp.h | 2 +- include/WebApi_power.h | 2 +- include/WebApi_prometheus.h | 2 +- include/WebApi_security.h | 2 +- include/WebApi_sysstatus.h | 2 +- include/WebApi_webapp.h | 2 +- include/WebApi_ws_console.h | 2 +- include/WebApi_ws_live.h | 2 +- lib/Hoymiles/src/Hoymiles.cpp | 12 ++--- lib/Hoymiles/src/Hoymiles.h | 2 +- lib/Hoymiles/src/HoymilesRadio.cpp | 14 +++--- lib/Hoymiles/src/HoymilesRadio.h | 4 +- lib/Hoymiles/src/HoymilesRadio_CMT.cpp | 20 ++++---- lib/Hoymiles/src/HoymilesRadio_CMT.h | 2 +- lib/Hoymiles/src/HoymilesRadio_NRF.cpp | 20 ++++---- lib/Hoymiles/src/HoymilesRadio_NRF.h | 2 +- .../commands/ActivePowerControlCommand.cpp | 16 +++---- .../src/commands/ActivePowerControlCommand.h | 4 +- .../src/commands/AlarmDataCommand.cpp | 18 ++++---- lib/Hoymiles/src/commands/AlarmDataCommand.h | 4 +- .../src/commands/ChannelChangeCommand.cpp | 2 +- .../src/commands/ChannelChangeCommand.h | 2 +- lib/Hoymiles/src/commands/CommandAbstract.cpp | 2 +- lib/Hoymiles/src/commands/CommandAbstract.h | 4 +- .../src/commands/DevControlCommand.cpp | 2 +- lib/Hoymiles/src/commands/DevControlCommand.h | 2 +- .../src/commands/DevInfoAllCommand.cpp | 12 ++--- lib/Hoymiles/src/commands/DevInfoAllCommand.h | 2 +- .../src/commands/DevInfoSimpleCommand.cpp | 12 ++--- .../src/commands/DevInfoSimpleCommand.h | 2 +- .../src/commands/GridOnProFilePara.cpp | 12 ++--- lib/Hoymiles/src/commands/GridOnProFilePara.h | 2 +- .../src/commands/MultiDataCommand.cpp | 2 +- lib/Hoymiles/src/commands/MultiDataCommand.h | 2 +- .../src/commands/PowerControlCommand.cpp | 10 ++-- .../src/commands/PowerControlCommand.h | 4 +- .../src/commands/RealTimeRunDataCommand.cpp | 20 ++++---- .../src/commands/RealTimeRunDataCommand.h | 4 +- .../src/commands/RequestFrameCommand.cpp | 2 +- .../src/commands/RequestFrameCommand.h | 2 +- .../src/commands/SystemConfigParaCommand.cpp | 20 ++++---- .../src/commands/SystemConfigParaCommand.h | 4 +- .../src/inverters/InverterAbstract.cpp | 18 ++++---- lib/Hoymiles/src/inverters/InverterAbstract.h | 2 +- lib/Hoymiles/src/parser/AlarmLogParser.cpp | 24 +++++----- lib/Hoymiles/src/parser/AlarmLogParser.h | 2 +- src/Datastore.cpp | 4 +- src/Display_Graphic.cpp | 7 ++- src/InverterSettings.cpp | 6 +-- src/Led_Single.cpp | 6 +-- src/MessageOutput.cpp | 6 +-- src/MqttHandleDtu.cpp | 6 +-- src/MqttHandleHass.cpp | 6 +-- src/MqttHandleInverter.cpp | 6 +-- src/MqttHandleInverterTotal.cpp | 4 +- src/NetworkSettings.cpp | 6 +-- src/SunPosition.cpp | 4 +- src/WebApi.cpp | 46 +++++++++---------- src/WebApi_config.cpp | 6 +-- src/WebApi_device.cpp | 6 +-- src/WebApi_devinfo.cpp | 6 +-- src/WebApi_dtu.cpp | 6 +-- src/WebApi_eventlog.cpp | 8 ++-- src/WebApi_firmware.cpp | 6 +-- src/WebApi_gridprofile.cpp | 6 +-- src/WebApi_inverter.cpp | 6 +-- src/WebApi_limit.cpp | 6 +-- src/WebApi_maintenance.cpp | 6 +-- src/WebApi_mqtt.cpp | 6 +-- src/WebApi_network.cpp | 6 +-- src/WebApi_ntp.cpp | 6 +-- src/WebApi_power.cpp | 6 +-- src/WebApi_prometheus.cpp | 6 +-- src/WebApi_security.cpp | 6 +-- src/WebApi_sysstatus.cpp | 6 +-- src/WebApi_webapp.cpp | 4 +- src/WebApi_ws_console.cpp | 6 +-- src/WebApi_ws_live.cpp | 6 +-- src/main.cpp | 26 +++++------ 103 files changed, 305 insertions(+), 302 deletions(-) diff --git a/include/Datastore.h b/include/Datastore.h index b667f9d..351a822 100644 --- a/include/Datastore.h +++ b/include/Datastore.h @@ -6,7 +6,7 @@ class DatastoreClass { public: - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); // Sum of yield total of all enabled inverters, a inverter which is just disabled at night is also included float getTotalAcYieldTotalEnabled(); diff --git a/include/Display_Graphic.h b/include/Display_Graphic.h index e2a4ccf..7c71c55 100644 --- a/include/Display_Graphic.h +++ b/include/Display_Graphic.h @@ -17,7 +17,7 @@ public: DisplayGraphicClass(); ~DisplayGraphicClass(); - void init(Scheduler* scheduler, const DisplayType_t type, const uint8_t data, const uint8_t clk, const uint8_t cs, const uint8_t reset); + void init(Scheduler& scheduler, const DisplayType_t type, const uint8_t data, const uint8_t clk, const uint8_t cs, const uint8_t reset); void setContrast(const uint8_t contrast); void setStatus(const bool turnOn); void setOrientation(const uint8_t rotation = DISPLAY_ROTATION); diff --git a/include/InverterSettings.h b/include/InverterSettings.h index 0f83386..aad05ed 100644 --- a/include/InverterSettings.h +++ b/include/InverterSettings.h @@ -8,7 +8,7 @@ class InverterSettingsClass { public: - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); private: void settingsLoop(); diff --git a/include/Led_Single.h b/include/Led_Single.h index 45e14e9..9404152 100644 --- a/include/Led_Single.h +++ b/include/Led_Single.h @@ -10,7 +10,7 @@ class LedSingleClass { public: LedSingleClass(); - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); void turnAllOff(); void turnAllOn(); diff --git a/include/MessageOutput.h b/include/MessageOutput.h index 9c28de2..94f915a 100644 --- a/include/MessageOutput.h +++ b/include/MessageOutput.h @@ -11,7 +11,7 @@ class MessageOutputClass : public Print { public: - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); size_t write(uint8_t c) override; size_t write(const uint8_t* buffer, size_t size) override; void register_ws_output(AsyncWebSocket* output); diff --git a/include/MqttHandleDtu.h b/include/MqttHandleDtu.h index e580542..01e1798 100644 --- a/include/MqttHandleDtu.h +++ b/include/MqttHandleDtu.h @@ -6,7 +6,7 @@ class MqttHandleDtuClass { public: - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); private: void loop(); diff --git a/include/MqttHandleHass.h b/include/MqttHandleHass.h index b501a41..02ff8bd 100644 --- a/include/MqttHandleHass.h +++ b/include/MqttHandleHass.h @@ -51,7 +51,7 @@ const byteAssign_fieldDeviceClass_t deviceFieldAssignment[] = { class MqttHandleHassClass { public: - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); void publishConfig(); void forceUpdate(); diff --git a/include/MqttHandleInverter.h b/include/MqttHandleInverter.h index c3771a4..3925935 100644 --- a/include/MqttHandleInverter.h +++ b/include/MqttHandleInverter.h @@ -8,7 +8,7 @@ class MqttHandleInverterClass { public: - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); static String getTopic(std::shared_ptr inv, const ChannelType_t type, const ChannelNum_t channel, const FieldId_t fieldId); diff --git a/include/MqttHandleInverterTotal.h b/include/MqttHandleInverterTotal.h index 1ff9567..1931781 100644 --- a/include/MqttHandleInverterTotal.h +++ b/include/MqttHandleInverterTotal.h @@ -5,7 +5,7 @@ class MqttHandleInverterTotalClass { public: - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); private: void loop(); diff --git a/include/NetworkSettings.h b/include/NetworkSettings.h index 8d4de18..1176a0e 100644 --- a/include/NetworkSettings.h +++ b/include/NetworkSettings.h @@ -39,7 +39,7 @@ typedef struct NetworkEventCbList { class NetworkSettingsClass { public: NetworkSettingsClass(); - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); void applyConfig(); void enableAdminMode(); String getApName() const; diff --git a/include/SunPosition.h b/include/SunPosition.h index 42f818e..49c9be4 100644 --- a/include/SunPosition.h +++ b/include/SunPosition.h @@ -8,7 +8,7 @@ class SunPositionClass { public: SunPositionClass(); - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); bool isDayPeriod() const; bool isSunsetAvailable() const; diff --git a/include/WebApi.h b/include/WebApi.h index e6d1b0c..61b9591 100644 --- a/include/WebApi.h +++ b/include/WebApi.h @@ -27,7 +27,7 @@ class WebApiClass { public: WebApiClass(); - void init(Scheduler* scheduler); + void init(Scheduler& scheduler); static bool checkCredentials(AsyncWebServerRequest* request); static bool checkCredentialsReadonly(AsyncWebServerRequest* request); diff --git a/include/WebApi_config.h b/include/WebApi_config.h index e022af6..edc8b29 100644 --- a/include/WebApi_config.h +++ b/include/WebApi_config.h @@ -5,7 +5,7 @@ class WebApiConfigClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_device.h b/include/WebApi_device.h index ae76edd..9fca20f 100644 --- a/include/WebApi_device.h +++ b/include/WebApi_device.h @@ -5,7 +5,7 @@ class WebApiDeviceClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_devinfo.h b/include/WebApi_devinfo.h index 0b8471e..6e5602b 100644 --- a/include/WebApi_devinfo.h +++ b/include/WebApi_devinfo.h @@ -5,7 +5,7 @@ class WebApiDevInfoClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_dtu.h b/include/WebApi_dtu.h index 4dcc235..45f58d3 100644 --- a/include/WebApi_dtu.h +++ b/include/WebApi_dtu.h @@ -5,7 +5,7 @@ class WebApiDtuClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_eventlog.h b/include/WebApi_eventlog.h index 311b528..ccc1658 100644 --- a/include/WebApi_eventlog.h +++ b/include/WebApi_eventlog.h @@ -5,7 +5,7 @@ class WebApiEventlogClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_firmware.h b/include/WebApi_firmware.h index f99b248..1b7e923 100644 --- a/include/WebApi_firmware.h +++ b/include/WebApi_firmware.h @@ -5,7 +5,7 @@ class WebApiFirmwareClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_gridprofile.h b/include/WebApi_gridprofile.h index 37a2421..8781659 100644 --- a/include/WebApi_gridprofile.h +++ b/include/WebApi_gridprofile.h @@ -5,7 +5,7 @@ class WebApiGridProfileClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_inverter.h b/include/WebApi_inverter.h index 9f2b067..a860515 100644 --- a/include/WebApi_inverter.h +++ b/include/WebApi_inverter.h @@ -5,7 +5,7 @@ class WebApiInverterClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_limit.h b/include/WebApi_limit.h index 026f7ef..c2d1a7d 100644 --- a/include/WebApi_limit.h +++ b/include/WebApi_limit.h @@ -5,7 +5,7 @@ class WebApiLimitClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_maintenance.h b/include/WebApi_maintenance.h index dd79153..db6dcf1 100644 --- a/include/WebApi_maintenance.h +++ b/include/WebApi_maintenance.h @@ -5,7 +5,7 @@ class WebApiMaintenanceClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_mqtt.h b/include/WebApi_mqtt.h index 91f7367..00a2b0b 100644 --- a/include/WebApi_mqtt.h +++ b/include/WebApi_mqtt.h @@ -7,7 +7,7 @@ class WebApiMqttClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_network.h b/include/WebApi_network.h index 693bf58..47ef8d9 100644 --- a/include/WebApi_network.h +++ b/include/WebApi_network.h @@ -5,7 +5,7 @@ class WebApiNetworkClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_ntp.h b/include/WebApi_ntp.h index fae8781..153aeee 100644 --- a/include/WebApi_ntp.h +++ b/include/WebApi_ntp.h @@ -5,7 +5,7 @@ class WebApiNtpClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_power.h b/include/WebApi_power.h index f8912c0..faed5c4 100644 --- a/include/WebApi_power.h +++ b/include/WebApi_power.h @@ -5,7 +5,7 @@ class WebApiPowerClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_prometheus.h b/include/WebApi_prometheus.h index 819f2c1..9fbf6e2 100644 --- a/include/WebApi_prometheus.h +++ b/include/WebApi_prometheus.h @@ -7,7 +7,7 @@ class WebApiPrometheusClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_security.h b/include/WebApi_security.h index 37c56fa..66e9210 100644 --- a/include/WebApi_security.h +++ b/include/WebApi_security.h @@ -5,7 +5,7 @@ class WebApiSecurityClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_sysstatus.h b/include/WebApi_sysstatus.h index 9b22a83..f63edd2 100644 --- a/include/WebApi_sysstatus.h +++ b/include/WebApi_sysstatus.h @@ -5,7 +5,7 @@ class WebApiSysstatusClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_webapp.h b/include/WebApi_webapp.h index ad16143..da50d96 100644 --- a/include/WebApi_webapp.h +++ b/include/WebApi_webapp.h @@ -5,7 +5,7 @@ class WebApiWebappClass { public: - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_ws_console.h b/include/WebApi_ws_console.h index 1d0fe10..4eea2c6 100644 --- a/include/WebApi_ws_console.h +++ b/include/WebApi_ws_console.h @@ -6,7 +6,7 @@ class WebApiWsConsoleClass { public: WebApiWsConsoleClass(); - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/include/WebApi_ws_live.h b/include/WebApi_ws_live.h index d0a0949..37c7fbd 100644 --- a/include/WebApi_ws_live.h +++ b/include/WebApi_ws_live.h @@ -8,7 +8,7 @@ class WebApiWsLiveClass { public: WebApiWsLiveClass(); - void init(AsyncWebServer* server); + void init(AsyncWebServer& server); void loop(); private: diff --git a/lib/Hoymiles/src/Hoymiles.cpp b/lib/Hoymiles/src/Hoymiles.cpp index 186910d..80b173f 100644 --- a/lib/Hoymiles/src/Hoymiles.cpp +++ b/lib/Hoymiles/src/Hoymiles.cpp @@ -198,9 +198,9 @@ std::shared_ptr HoymilesClass::getInverterBySerial(const uint6 return nullptr; } -std::shared_ptr HoymilesClass::getInverterByFragment(const fragment_t* fragment) +std::shared_ptr HoymilesClass::getInverterByFragment(const fragment_t& fragment) { - if (fragment->len <= 4) { + if (fragment.len <= 4) { return nullptr; } @@ -210,10 +210,10 @@ std::shared_ptr HoymilesClass::getInverterByFragment(const fra serial_u p; p.u64 = inv->serial(); - if ((p.b[3] == fragment->fragment[1]) - && (p.b[2] == fragment->fragment[2]) - && (p.b[1] == fragment->fragment[3]) - && (p.b[0] == fragment->fragment[4])) { + if ((p.b[3] == fragment.fragment[1]) + && (p.b[2] == fragment.fragment[2]) + && (p.b[1] == fragment.fragment[3]) + && (p.b[0] == fragment.fragment[4])) { return inv; } diff --git a/lib/Hoymiles/src/Hoymiles.h b/lib/Hoymiles/src/Hoymiles.h index 733817f..42724e0 100644 --- a/lib/Hoymiles/src/Hoymiles.h +++ b/lib/Hoymiles/src/Hoymiles.h @@ -26,7 +26,7 @@ public: std::shared_ptr addInverter(const char* name, const uint64_t serial); std::shared_ptr getInverterByPos(const uint8_t pos); std::shared_ptr getInverterBySerial(const uint64_t serial); - std::shared_ptr getInverterByFragment(const fragment_t* fragment); + std::shared_ptr getInverterByFragment(const fragment_t& fragment); void removeInverterBySerial(const uint64_t serial); size_t getNumInverters() const; diff --git a/lib/Hoymiles/src/HoymilesRadio.cpp b/lib/Hoymiles/src/HoymilesRadio.cpp index 8e49f98..9d28855 100644 --- a/lib/Hoymiles/src/HoymilesRadio.cpp +++ b/lib/Hoymiles/src/HoymilesRadio.cpp @@ -28,10 +28,10 @@ serial_u HoymilesRadio::convertSerialToRadioId(const serial_u serial) return radioId; } -bool HoymilesRadio::checkFragmentCrc(const fragment_t* fragment) const +bool HoymilesRadio::checkFragmentCrc(const fragment_t& fragment) const { - const uint8_t crc = crc8(fragment->fragment, fragment->len - 1); - return (crc == fragment->fragment[fragment->len - 1]); + const uint8_t crc = crc8(fragment.fragment, fragment.len - 1); + return (crc == fragment.fragment[fragment.len - 1]); } void HoymilesRadio::sendRetransmitPacket(const uint8_t fragment_id) @@ -41,14 +41,14 @@ void HoymilesRadio::sendRetransmitPacket(const uint8_t fragment_id) CommandAbstract* requestCmd = cmd->getRequestFrameCommand(fragment_id); if (requestCmd != nullptr) { - sendEsbPacket(requestCmd); + sendEsbPacket(*requestCmd); } } void HoymilesRadio::sendLastPacketAgain() { CommandAbstract* cmd = _commandQueue.front().get(); - sendEsbPacket(cmd); + sendEsbPacket(*cmd); } void HoymilesRadio::handleReceivedPackage() @@ -59,7 +59,7 @@ void HoymilesRadio::handleReceivedPackage() if (nullptr != inv) { CommandAbstract* cmd = _commandQueue.front().get(); - uint8_t verifyResult = inv->verifyAllFragments(cmd); + uint8_t verifyResult = inv->verifyAllFragments(*cmd); if (verifyResult == FRAGMENT_ALL_MISSING_RESEND) { Hoymiles.getMessageOutput()->println("Nothing received, resend whole request"); sendLastPacketAgain(); @@ -105,7 +105,7 @@ void HoymilesRadio::handleReceivedPackage() auto inv = Hoymiles.getInverterBySerial(cmd->getTargetAddress()); if (nullptr != inv) { inv->clearRxFragmentBuffer(); - sendEsbPacket(cmd); + sendEsbPacket(*cmd); } else { Hoymiles.getMessageOutput()->println("TX: Invalid inverter found"); _commandQueue.pop(); diff --git a/lib/Hoymiles/src/HoymilesRadio.h b/lib/Hoymiles/src/HoymilesRadio.h index 08ac08f..33b8c61 100644 --- a/lib/Hoymiles/src/HoymilesRadio.h +++ b/lib/Hoymiles/src/HoymilesRadio.h @@ -31,8 +31,8 @@ protected: static serial_u convertSerialToRadioId(const serial_u serial); static void dumpBuf(const uint8_t buf[], const uint8_t len, const bool appendNewline = true); - bool checkFragmentCrc(const fragment_t* fragment) const; - virtual void sendEsbPacket(CommandAbstract* cmd) = 0; + bool checkFragmentCrc(const fragment_t& fragment) const; + virtual void sendEsbPacket(CommandAbstract& cmd) = 0; void sendRetransmitPacket(const uint8_t fragment_id); void sendLastPacketAgain(); void handleReceivedPackage(); diff --git a/lib/Hoymiles/src/HoymilesRadio_CMT.cpp b/lib/Hoymiles/src/HoymilesRadio_CMT.cpp index b3d7dd4..eb8320a 100644 --- a/lib/Hoymiles/src/HoymilesRadio_CMT.cpp +++ b/lib/Hoymiles/src/HoymilesRadio_CMT.cpp @@ -122,7 +122,7 @@ void HoymilesRadio_CMT::loop() // Perform package parsing only if no packages are received if (!_rxBuffer.empty()) { fragment_t f = _rxBuffer.back(); - if (checkFragmentCrc(&f)) { + if (checkFragmentCrc(f)) { const serial_u dtuId = convertSerialToRadioId(_dtuSerial); @@ -130,7 +130,7 @@ void HoymilesRadio_CMT::loop() // Has to be done manually here. if (memcmp(&f.fragment[5], &dtuId.b[1], 4) == 0) { - std::shared_ptr inv = Hoymiles.getInverterByFragment(&f); + std::shared_ptr inv = Hoymiles.getInverterByFragment(f); if (nullptr != inv) { // Save packet in inverter rx buffer @@ -211,27 +211,27 @@ void ARDUINO_ISR_ATTR HoymilesRadio_CMT::handleInt2() _packetReceived = true; } -void HoymilesRadio_CMT::sendEsbPacket(CommandAbstract* cmd) +void HoymilesRadio_CMT::sendEsbPacket(CommandAbstract& cmd) { - cmd->incrementSendCount(); + cmd.incrementSendCount(); - cmd->setRouterAddress(DtuSerial().u64); + cmd.setRouterAddress(DtuSerial().u64); _radio->stopListening(); - if (cmd->getDataPayload()[0] == 0x56) { // @todo(tbnobody) Bad hack to identify ChannelChange Command + if (cmd.getDataPayload()[0] == 0x56) { // @todo(tbnobody) Bad hack to identify ChannelChange Command cmtSwitchDtuFreq(HOY_BOOT_FREQ / 1000); } Hoymiles.getMessageOutput()->printf("TX %s %.2f MHz --> ", - cmd->getCommandName().c_str(), getFrequencyFromChannel(_radio->getChannel())); - cmd->dumpDataPayload(Hoymiles.getMessageOutput()); + cmd.getCommandName().c_str(), getFrequencyFromChannel(_radio->getChannel())); + cmd.dumpDataPayload(Hoymiles.getMessageOutput()); - if (!_radio->write(cmd->getDataPayload(), cmd->getDataSize())) { + if (!_radio->write(cmd.getDataPayload(), cmd.getDataSize())) { Hoymiles.getMessageOutput()->println("TX SPI Timeout"); } cmtSwitchDtuFreq(_inverterTargetFrequency); _radio->startListening(); _busyFlag = true; - _rxTimeout.set(cmd->getTimeout()); + _rxTimeout.set(cmd.getTimeout()); } diff --git a/lib/Hoymiles/src/HoymilesRadio_CMT.h b/lib/Hoymiles/src/HoymilesRadio_CMT.h index 8a4bb1f..ee566c3 100644 --- a/lib/Hoymiles/src/HoymilesRadio_CMT.h +++ b/lib/Hoymiles/src/HoymilesRadio_CMT.h @@ -36,7 +36,7 @@ private: void ARDUINO_ISR_ATTR handleInt1(); void ARDUINO_ISR_ATTR handleInt2(); - void sendEsbPacket(CommandAbstract* cmd); + void sendEsbPacket(CommandAbstract& cmd); std::unique_ptr _radio; diff --git a/lib/Hoymiles/src/HoymilesRadio_NRF.cpp b/lib/Hoymiles/src/HoymilesRadio_NRF.cpp index 9cb2cc5..4bf104a 100644 --- a/lib/Hoymiles/src/HoymilesRadio_NRF.cpp +++ b/lib/Hoymiles/src/HoymilesRadio_NRF.cpp @@ -71,8 +71,8 @@ void HoymilesRadio_NRF::loop() // Perform package parsing only if no packages are received if (!_rxBuffer.empty()) { fragment_t f = _rxBuffer.back(); - if (checkFragmentCrc(&f)) { - std::shared_ptr inv = Hoymiles.getInverterByFragment(&f); + if (checkFragmentCrc(f)) { + std::shared_ptr inv = Hoymiles.getInverterByFragment(f); if (nullptr != inv) { // Save packet in inverter rx buffer @@ -169,29 +169,29 @@ void HoymilesRadio_NRF::switchRxCh() _radio->startListening(); } -void HoymilesRadio_NRF::sendEsbPacket(CommandAbstract* cmd) +void HoymilesRadio_NRF::sendEsbPacket(CommandAbstract& cmd) { - cmd->incrementSendCount(); + cmd.incrementSendCount(); - cmd->setRouterAddress(DtuSerial().u64); + cmd.setRouterAddress(DtuSerial().u64); _radio->stopListening(); _radio->setChannel(getTxNxtChannel()); serial_u s; - s.u64 = cmd->getTargetAddress(); + s.u64 = cmd.getTargetAddress(); openWritingPipe(s); _radio->setRetries(3, 15); Hoymiles.getMessageOutput()->printf("TX %s Channel: %d --> ", - cmd->getCommandName().c_str(), _radio->getChannel()); - cmd->dumpDataPayload(Hoymiles.getMessageOutput()); - _radio->write(cmd->getDataPayload(), cmd->getDataSize()); + cmd.getCommandName().c_str(), _radio->getChannel()); + cmd.dumpDataPayload(Hoymiles.getMessageOutput()); + _radio->write(cmd.getDataPayload(), cmd.getDataSize()); _radio->setRetries(0, 0); openReadingPipe(); _radio->setChannel(getRxNxtChannel()); _radio->startListening(); _busyFlag = true; - _rxTimeout.set(cmd->getTimeout()); + _rxTimeout.set(cmd.getTimeout()); } diff --git a/lib/Hoymiles/src/HoymilesRadio_NRF.h b/lib/Hoymiles/src/HoymilesRadio_NRF.h index a23c1e0..a6777ce 100644 --- a/lib/Hoymiles/src/HoymilesRadio_NRF.h +++ b/lib/Hoymiles/src/HoymilesRadio_NRF.h @@ -30,7 +30,7 @@ private: void openReadingPipe(); void openWritingPipe(const serial_u serial); - void sendEsbPacket(CommandAbstract* cmd); + void sendEsbPacket(CommandAbstract& cmd); std::unique_ptr _spiPtr; std::unique_ptr _radio; diff --git a/lib/Hoymiles/src/commands/ActivePowerControlCommand.cpp b/lib/Hoymiles/src/commands/ActivePowerControlCommand.cpp index 8e34d91..95af23c 100644 --- a/lib/Hoymiles/src/commands/ActivePowerControlCommand.cpp +++ b/lib/Hoymiles/src/commands/ActivePowerControlCommand.cpp @@ -62,24 +62,24 @@ void ActivePowerControlCommand::setActivePowerLimit(const float limit, const Pow udpateCRC(CRC_SIZE); } -bool ActivePowerControlCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool ActivePowerControlCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { if (!DevControlCommand::handleResponse(inverter, fragment, max_fragment_id)) { return false; } if ((getType() == PowerLimitControlType::RelativNonPersistent) || (getType() == PowerLimitControlType::RelativPersistent)) { - inverter->SystemConfigPara()->setLimitPercent(getLimit()); + inverter.SystemConfigPara()->setLimitPercent(getLimit()); } else { - const uint16_t max_power = inverter->DevInfo()->getMaxPower(); + const uint16_t max_power = inverter.DevInfo()->getMaxPower(); if (max_power > 0) { - inverter->SystemConfigPara()->setLimitPercent(static_cast(getLimit()) / max_power * 100); + inverter.SystemConfigPara()->setLimitPercent(static_cast(getLimit()) / max_power * 100); } else { // TODO(tbnobody): Not implemented yet because we only can publish the percentage value } } - inverter->SystemConfigPara()->setLastUpdateCommand(millis()); - inverter->SystemConfigPara()->setLastLimitCommandSuccess(CMD_OK); + inverter.SystemConfigPara()->setLastUpdateCommand(millis()); + inverter.SystemConfigPara()->setLastLimitCommandSuccess(CMD_OK); return true; } @@ -94,7 +94,7 @@ PowerLimitControlType ActivePowerControlCommand::getType() return (PowerLimitControlType)(((uint16_t)_payload[14] << 8) | _payload[15]); } -void ActivePowerControlCommand::gotTimeout(InverterAbstract* inverter) +void ActivePowerControlCommand::gotTimeout(InverterAbstract& inverter) { - inverter->SystemConfigPara()->setLastLimitCommandSuccess(CMD_NOK); + inverter.SystemConfigPara()->setLastLimitCommandSuccess(CMD_NOK); } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/ActivePowerControlCommand.h b/lib/Hoymiles/src/commands/ActivePowerControlCommand.h index b509a09..b7831fb 100644 --- a/lib/Hoymiles/src/commands/ActivePowerControlCommand.h +++ b/lib/Hoymiles/src/commands/ActivePowerControlCommand.h @@ -16,8 +16,8 @@ public: virtual String getCommandName() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); - virtual void gotTimeout(InverterAbstract* inverter); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual void gotTimeout(InverterAbstract& inverter); void setActivePowerLimit(const float limit, const PowerLimitControlType type = RelativNonPersistent); float getLimit() const; diff --git a/lib/Hoymiles/src/commands/AlarmDataCommand.cpp b/lib/Hoymiles/src/commands/AlarmDataCommand.cpp index 8416b1e..143a6cd 100644 --- a/lib/Hoymiles/src/commands/AlarmDataCommand.cpp +++ b/lib/Hoymiles/src/commands/AlarmDataCommand.cpp @@ -36,7 +36,7 @@ String AlarmDataCommand::getCommandName() const return "AlarmData"; } -bool AlarmDataCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool AlarmDataCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { // Check CRC of whole payload if (!MultiDataCommand::handleResponse(inverter, fragment, max_fragment_id)) { @@ -45,19 +45,19 @@ bool AlarmDataCommand::handleResponse(InverterAbstract* inverter, const fragment // Move all fragments into target buffer uint8_t offs = 0; - inverter->EventLog()->beginAppendFragment(); - inverter->EventLog()->clearBuffer(); + inverter.EventLog()->beginAppendFragment(); + inverter.EventLog()->clearBuffer(); for (uint8_t i = 0; i < max_fragment_id; i++) { - inverter->EventLog()->appendFragment(offs, fragment[i].fragment, fragment[i].len); + inverter.EventLog()->appendFragment(offs, fragment[i].fragment, fragment[i].len); offs += (fragment[i].len); } - inverter->EventLog()->endAppendFragment(); - inverter->EventLog()->setLastAlarmRequestSuccess(CMD_OK); - inverter->EventLog()->setLastUpdate(millis()); + inverter.EventLog()->endAppendFragment(); + inverter.EventLog()->setLastAlarmRequestSuccess(CMD_OK); + inverter.EventLog()->setLastUpdate(millis()); return true; } -void AlarmDataCommand::gotTimeout(InverterAbstract* inverter) +void AlarmDataCommand::gotTimeout(InverterAbstract& inverter) { - inverter->EventLog()->setLastAlarmRequestSuccess(CMD_NOK); + inverter.EventLog()->setLastAlarmRequestSuccess(CMD_NOK); } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/AlarmDataCommand.h b/lib/Hoymiles/src/commands/AlarmDataCommand.h index 1b61d5c..abdfc5f 100644 --- a/lib/Hoymiles/src/commands/AlarmDataCommand.h +++ b/lib/Hoymiles/src/commands/AlarmDataCommand.h @@ -9,6 +9,6 @@ public: virtual String getCommandName() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); - virtual void gotTimeout(InverterAbstract* inverter); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual void gotTimeout(InverterAbstract& inverter); }; \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/ChannelChangeCommand.cpp b/lib/Hoymiles/src/commands/ChannelChangeCommand.cpp index da111ab..1001790 100644 --- a/lib/Hoymiles/src/commands/ChannelChangeCommand.cpp +++ b/lib/Hoymiles/src/commands/ChannelChangeCommand.cpp @@ -47,7 +47,7 @@ uint8_t ChannelChangeCommand::getChannel() const return _payload[12]; } -bool ChannelChangeCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool ChannelChangeCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { return true; } diff --git a/lib/Hoymiles/src/commands/ChannelChangeCommand.h b/lib/Hoymiles/src/commands/ChannelChangeCommand.h index be598b9..a0b38ca 100644 --- a/lib/Hoymiles/src/commands/ChannelChangeCommand.h +++ b/lib/Hoymiles/src/commands/ChannelChangeCommand.h @@ -12,7 +12,7 @@ public: void setChannel(const uint8_t channel); uint8_t getChannel() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); virtual uint8_t getMaxResendCount(); }; \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/CommandAbstract.cpp b/lib/Hoymiles/src/commands/CommandAbstract.cpp index 5f612b4..dafe2b1 100644 --- a/lib/Hoymiles/src/commands/CommandAbstract.cpp +++ b/lib/Hoymiles/src/commands/CommandAbstract.cpp @@ -122,7 +122,7 @@ void CommandAbstract::convertSerialToPacketId(uint8_t buffer[], const uint64_t s buffer[0] = s.b[3]; } -void CommandAbstract::gotTimeout(InverterAbstract* inverter) +void CommandAbstract::gotTimeout(InverterAbstract& inverter) { } diff --git a/lib/Hoymiles/src/commands/CommandAbstract.h b/lib/Hoymiles/src/commands/CommandAbstract.h index fd90130..677fc0d 100644 --- a/lib/Hoymiles/src/commands/CommandAbstract.h +++ b/lib/Hoymiles/src/commands/CommandAbstract.h @@ -38,8 +38,8 @@ public: virtual CommandAbstract* getRequestFrameCommand(const uint8_t frame_no); - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) = 0; - virtual void gotTimeout(InverterAbstract* inverter); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) = 0; + virtual void gotTimeout(InverterAbstract& inverter); // Sets the amount how often the specific command is resent if all fragments where missing virtual uint8_t getMaxResendCount() const; diff --git a/lib/Hoymiles/src/commands/DevControlCommand.cpp b/lib/Hoymiles/src/commands/DevControlCommand.cpp index de9b703..a5e7d2b 100644 --- a/lib/Hoymiles/src/commands/DevControlCommand.cpp +++ b/lib/Hoymiles/src/commands/DevControlCommand.cpp @@ -39,7 +39,7 @@ void DevControlCommand::udpateCRC(const uint8_t len) _payload[10 + len + 1] = (uint8_t)(crc); } -bool DevControlCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool DevControlCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { for (uint8_t i = 0; i < max_fragment_id; i++) { if (fragment[i].mainCmd != (_payload[0] | 0x80)) { diff --git a/lib/Hoymiles/src/commands/DevControlCommand.h b/lib/Hoymiles/src/commands/DevControlCommand.h index 040c5e4..c24bc60 100644 --- a/lib/Hoymiles/src/commands/DevControlCommand.h +++ b/lib/Hoymiles/src/commands/DevControlCommand.h @@ -7,7 +7,7 @@ class DevControlCommand : public CommandAbstract { public: explicit DevControlCommand(const uint64_t target_address = 0, const uint64_t router_address = 0); - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); protected: void udpateCRC(const uint8_t len); diff --git a/lib/Hoymiles/src/commands/DevInfoAllCommand.cpp b/lib/Hoymiles/src/commands/DevInfoAllCommand.cpp index be16dbb..c7bd802 100644 --- a/lib/Hoymiles/src/commands/DevInfoAllCommand.cpp +++ b/lib/Hoymiles/src/commands/DevInfoAllCommand.cpp @@ -34,7 +34,7 @@ String DevInfoAllCommand::getCommandName() const return "DevInfoAll"; } -bool DevInfoAllCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool DevInfoAllCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { // Check CRC of whole payload if (!MultiDataCommand::handleResponse(inverter, fragment, max_fragment_id)) { @@ -43,13 +43,13 @@ bool DevInfoAllCommand::handleResponse(InverterAbstract* inverter, const fragmen // Move all fragments into target buffer uint8_t offs = 0; - inverter->DevInfo()->beginAppendFragment(); - inverter->DevInfo()->clearBufferAll(); + inverter.DevInfo()->beginAppendFragment(); + inverter.DevInfo()->clearBufferAll(); for (uint8_t i = 0; i < max_fragment_id; i++) { - inverter->DevInfo()->appendFragmentAll(offs, fragment[i].fragment, fragment[i].len); + inverter.DevInfo()->appendFragmentAll(offs, fragment[i].fragment, fragment[i].len); offs += (fragment[i].len); } - inverter->DevInfo()->endAppendFragment(); - inverter->DevInfo()->setLastUpdateAll(millis()); + inverter.DevInfo()->endAppendFragment(); + inverter.DevInfo()->setLastUpdateAll(millis()); return true; } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/DevInfoAllCommand.h b/lib/Hoymiles/src/commands/DevInfoAllCommand.h index 7ad4e18..3facffa 100644 --- a/lib/Hoymiles/src/commands/DevInfoAllCommand.h +++ b/lib/Hoymiles/src/commands/DevInfoAllCommand.h @@ -9,5 +9,5 @@ public: virtual String getCommandName() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); }; \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/DevInfoSimpleCommand.cpp b/lib/Hoymiles/src/commands/DevInfoSimpleCommand.cpp index 7fccf19..2afaae4 100644 --- a/lib/Hoymiles/src/commands/DevInfoSimpleCommand.cpp +++ b/lib/Hoymiles/src/commands/DevInfoSimpleCommand.cpp @@ -34,7 +34,7 @@ String DevInfoSimpleCommand::getCommandName() const return "DevInfoSimple"; } -bool DevInfoSimpleCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool DevInfoSimpleCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { // Check CRC of whole payload if (!MultiDataCommand::handleResponse(inverter, fragment, max_fragment_id)) { @@ -43,13 +43,13 @@ bool DevInfoSimpleCommand::handleResponse(InverterAbstract* inverter, const frag // Move all fragments into target buffer uint8_t offs = 0; - inverter->DevInfo()->beginAppendFragment(); - inverter->DevInfo()->clearBufferSimple(); + inverter.DevInfo()->beginAppendFragment(); + inverter.DevInfo()->clearBufferSimple(); for (uint8_t i = 0; i < max_fragment_id; i++) { - inverter->DevInfo()->appendFragmentSimple(offs, fragment[i].fragment, fragment[i].len); + inverter.DevInfo()->appendFragmentSimple(offs, fragment[i].fragment, fragment[i].len); offs += (fragment[i].len); } - inverter->DevInfo()->endAppendFragment(); - inverter->DevInfo()->setLastUpdateSimple(millis()); + inverter.DevInfo()->endAppendFragment(); + inverter.DevInfo()->setLastUpdateSimple(millis()); return true; } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/DevInfoSimpleCommand.h b/lib/Hoymiles/src/commands/DevInfoSimpleCommand.h index 56a20c9..66a7301 100644 --- a/lib/Hoymiles/src/commands/DevInfoSimpleCommand.h +++ b/lib/Hoymiles/src/commands/DevInfoSimpleCommand.h @@ -9,5 +9,5 @@ public: virtual String getCommandName() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); }; \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/GridOnProFilePara.cpp b/lib/Hoymiles/src/commands/GridOnProFilePara.cpp index 5b7b0ff..c98c7e5 100644 --- a/lib/Hoymiles/src/commands/GridOnProFilePara.cpp +++ b/lib/Hoymiles/src/commands/GridOnProFilePara.cpp @@ -35,7 +35,7 @@ String GridOnProFilePara::getCommandName() const return "GridOnProFilePara"; } -bool GridOnProFilePara::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool GridOnProFilePara::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { // Check CRC of whole payload if (!MultiDataCommand::handleResponse(inverter, fragment, max_fragment_id)) { @@ -44,13 +44,13 @@ bool GridOnProFilePara::handleResponse(InverterAbstract* inverter, const fragmen // Move all fragments into target buffer uint8_t offs = 0; - inverter->GridProfile()->beginAppendFragment(); - inverter->GridProfile()->clearBuffer(); + inverter.GridProfile()->beginAppendFragment(); + inverter.GridProfile()->clearBuffer(); for (uint8_t i = 0; i < max_fragment_id; i++) { - inverter->GridProfile()->appendFragment(offs, fragment[i].fragment, fragment[i].len); + inverter.GridProfile()->appendFragment(offs, fragment[i].fragment, fragment[i].len); offs += (fragment[i].len); } - inverter->GridProfile()->endAppendFragment(); - inverter->GridProfile()->setLastUpdate(millis()); + inverter.GridProfile()->endAppendFragment(); + inverter.GridProfile()->setLastUpdate(millis()); return true; } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/GridOnProFilePara.h b/lib/Hoymiles/src/commands/GridOnProFilePara.h index ff1c457..382ebcb 100644 --- a/lib/Hoymiles/src/commands/GridOnProFilePara.h +++ b/lib/Hoymiles/src/commands/GridOnProFilePara.h @@ -9,5 +9,5 @@ public: virtual String getCommandName() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); }; \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/MultiDataCommand.cpp b/lib/Hoymiles/src/commands/MultiDataCommand.cpp index af714ea..bbd3209 100644 --- a/lib/Hoymiles/src/commands/MultiDataCommand.cpp +++ b/lib/Hoymiles/src/commands/MultiDataCommand.cpp @@ -85,7 +85,7 @@ CommandAbstract* MultiDataCommand::getRequestFrameCommand(const uint8_t frame_no return &_cmdRequestFrame; } -bool MultiDataCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool MultiDataCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { // All fragments are available --> Check CRC uint16_t crc = 0xffff, crcRcv = 0; diff --git a/lib/Hoymiles/src/commands/MultiDataCommand.h b/lib/Hoymiles/src/commands/MultiDataCommand.h index 2a01a30..8210747 100644 --- a/lib/Hoymiles/src/commands/MultiDataCommand.h +++ b/lib/Hoymiles/src/commands/MultiDataCommand.h @@ -14,7 +14,7 @@ public: CommandAbstract* getRequestFrameCommand(const uint8_t frame_no); - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); protected: void setDataType(const uint8_t data_type); diff --git a/lib/Hoymiles/src/commands/PowerControlCommand.cpp b/lib/Hoymiles/src/commands/PowerControlCommand.cpp index 749b340..fbf12db 100644 --- a/lib/Hoymiles/src/commands/PowerControlCommand.cpp +++ b/lib/Hoymiles/src/commands/PowerControlCommand.cpp @@ -44,20 +44,20 @@ String PowerControlCommand::getCommandName() const return "PowerControl"; } -bool PowerControlCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool PowerControlCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { if (!DevControlCommand::handleResponse(inverter, fragment, max_fragment_id)) { return false; } - inverter->PowerCommand()->setLastUpdateCommand(millis()); - inverter->PowerCommand()->setLastPowerCommandSuccess(CMD_OK); + inverter.PowerCommand()->setLastUpdateCommand(millis()); + inverter.PowerCommand()->setLastPowerCommandSuccess(CMD_OK); return true; } -void PowerControlCommand::gotTimeout(InverterAbstract* inverter) +void PowerControlCommand::gotTimeout(InverterAbstract& inverter) { - inverter->PowerCommand()->setLastPowerCommandSuccess(CMD_NOK); + inverter.PowerCommand()->setLastPowerCommandSuccess(CMD_NOK); } void PowerControlCommand::setPowerOn(const bool state) diff --git a/lib/Hoymiles/src/commands/PowerControlCommand.h b/lib/Hoymiles/src/commands/PowerControlCommand.h index 1f13c06..8b9f11a 100644 --- a/lib/Hoymiles/src/commands/PowerControlCommand.h +++ b/lib/Hoymiles/src/commands/PowerControlCommand.h @@ -9,8 +9,8 @@ public: virtual String getCommandName() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); - virtual void gotTimeout(InverterAbstract* inverter); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual void gotTimeout(InverterAbstract& inverter); void setPowerOn(const bool state); void setRestart(); diff --git a/lib/Hoymiles/src/commands/RealTimeRunDataCommand.cpp b/lib/Hoymiles/src/commands/RealTimeRunDataCommand.cpp index 8e1c8dd..5f04c94 100644 --- a/lib/Hoymiles/src/commands/RealTimeRunDataCommand.cpp +++ b/lib/Hoymiles/src/commands/RealTimeRunDataCommand.cpp @@ -35,7 +35,7 @@ String RealTimeRunDataCommand::getCommandName() const return "RealTimeRunData"; } -bool RealTimeRunDataCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool RealTimeRunDataCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { // Check CRC of whole payload if (!MultiDataCommand::handleResponse(inverter, fragment, max_fragment_id)) { @@ -46,7 +46,7 @@ bool RealTimeRunDataCommand::handleResponse(InverterAbstract* inverter, const fr // In case of low power in the inverter it occours that some incomplete fragments // with a valid CRC are received. const uint8_t fragmentsSize = getTotalFragmentSize(fragment, max_fragment_id); - const uint8_t expectedSize = inverter->Statistics()->getExpectedByteCount(); + const uint8_t expectedSize = inverter.Statistics()->getExpectedByteCount(); if (fragmentsSize < expectedSize) { Hoymiles.getMessageOutput()->printf("ERROR in %s: Received fragment size: %d, min expected size: %d\r\n", getCommandName().c_str(), fragmentsSize, expectedSize); @@ -56,19 +56,19 @@ bool RealTimeRunDataCommand::handleResponse(InverterAbstract* inverter, const fr // Move all fragments into target buffer uint8_t offs = 0; - inverter->Statistics()->beginAppendFragment(); - inverter->Statistics()->clearBuffer(); + inverter.Statistics()->beginAppendFragment(); + inverter.Statistics()->clearBuffer(); for (uint8_t i = 0; i < max_fragment_id; i++) { - inverter->Statistics()->appendFragment(offs, fragment[i].fragment, fragment[i].len); + inverter.Statistics()->appendFragment(offs, fragment[i].fragment, fragment[i].len); offs += (fragment[i].len); } - inverter->Statistics()->endAppendFragment(); - inverter->Statistics()->resetRxFailureCount(); - inverter->Statistics()->setLastUpdate(millis()); + inverter.Statistics()->endAppendFragment(); + inverter.Statistics()->resetRxFailureCount(); + inverter.Statistics()->setLastUpdate(millis()); return true; } -void RealTimeRunDataCommand::gotTimeout(InverterAbstract* inverter) +void RealTimeRunDataCommand::gotTimeout(InverterAbstract& inverter) { - inverter->Statistics()->incrementRxFailureCount(); + inverter.Statistics()->incrementRxFailureCount(); } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/RealTimeRunDataCommand.h b/lib/Hoymiles/src/commands/RealTimeRunDataCommand.h index fe4309a..7a0eeec 100644 --- a/lib/Hoymiles/src/commands/RealTimeRunDataCommand.h +++ b/lib/Hoymiles/src/commands/RealTimeRunDataCommand.h @@ -9,6 +9,6 @@ public: virtual String getCommandName() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); - virtual void gotTimeout(InverterAbstract* inverter); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual void gotTimeout(InverterAbstract& inverter); }; \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/RequestFrameCommand.cpp b/lib/Hoymiles/src/commands/RequestFrameCommand.cpp index 832dfae..68c4977 100644 --- a/lib/Hoymiles/src/commands/RequestFrameCommand.cpp +++ b/lib/Hoymiles/src/commands/RequestFrameCommand.cpp @@ -47,7 +47,7 @@ uint8_t RequestFrameCommand::getFrameNo() const return _payload[9] & (~0x80); } -bool RequestFrameCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool RequestFrameCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { return true; } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/RequestFrameCommand.h b/lib/Hoymiles/src/commands/RequestFrameCommand.h index 6ac40c9..92663b7 100644 --- a/lib/Hoymiles/src/commands/RequestFrameCommand.h +++ b/lib/Hoymiles/src/commands/RequestFrameCommand.h @@ -12,5 +12,5 @@ public: void setFrameNo(const uint8_t frame_no); uint8_t getFrameNo() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); }; \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/SystemConfigParaCommand.cpp b/lib/Hoymiles/src/commands/SystemConfigParaCommand.cpp index 6c5fe1f..0c8e7de 100644 --- a/lib/Hoymiles/src/commands/SystemConfigParaCommand.cpp +++ b/lib/Hoymiles/src/commands/SystemConfigParaCommand.cpp @@ -35,7 +35,7 @@ String SystemConfigParaCommand::getCommandName() const return "SystemConfigPara"; } -bool SystemConfigParaCommand::handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id) +bool SystemConfigParaCommand::handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id) { // Check CRC of whole payload if (!MultiDataCommand::handleResponse(inverter, fragment, max_fragment_id)) { @@ -46,7 +46,7 @@ bool SystemConfigParaCommand::handleResponse(InverterAbstract* inverter, const f // In case of low power in the inverter it occours that some incomplete fragments // with a valid CRC are received. const uint8_t fragmentsSize = getTotalFragmentSize(fragment, max_fragment_id); - const uint8_t expectedSize = inverter->SystemConfigPara()->getExpectedByteCount(); + const uint8_t expectedSize = inverter.SystemConfigPara()->getExpectedByteCount(); if (fragmentsSize < expectedSize) { Hoymiles.getMessageOutput()->printf("ERROR in %s: Received fragment size: %d, min expected size: %d\r\n", getCommandName().c_str(), fragmentsSize, expectedSize); @@ -56,19 +56,19 @@ bool SystemConfigParaCommand::handleResponse(InverterAbstract* inverter, const f // Move all fragments into target buffer uint8_t offs = 0; - inverter->SystemConfigPara()->beginAppendFragment(); - inverter->SystemConfigPara()->clearBuffer(); + inverter.SystemConfigPara()->beginAppendFragment(); + inverter.SystemConfigPara()->clearBuffer(); for (uint8_t i = 0; i < max_fragment_id; i++) { - inverter->SystemConfigPara()->appendFragment(offs, fragment[i].fragment, fragment[i].len); + inverter.SystemConfigPara()->appendFragment(offs, fragment[i].fragment, fragment[i].len); offs += (fragment[i].len); } - inverter->SystemConfigPara()->endAppendFragment(); - inverter->SystemConfigPara()->setLastUpdateRequest(millis()); - inverter->SystemConfigPara()->setLastLimitRequestSuccess(CMD_OK); + inverter.SystemConfigPara()->endAppendFragment(); + inverter.SystemConfigPara()->setLastUpdateRequest(millis()); + inverter.SystemConfigPara()->setLastLimitRequestSuccess(CMD_OK); return true; } -void SystemConfigParaCommand::gotTimeout(InverterAbstract* inverter) +void SystemConfigParaCommand::gotTimeout(InverterAbstract& inverter) { - inverter->SystemConfigPara()->setLastLimitRequestSuccess(CMD_NOK); + inverter.SystemConfigPara()->setLastLimitRequestSuccess(CMD_NOK); } \ No newline at end of file diff --git a/lib/Hoymiles/src/commands/SystemConfigParaCommand.h b/lib/Hoymiles/src/commands/SystemConfigParaCommand.h index a5a750b..e2480a9 100644 --- a/lib/Hoymiles/src/commands/SystemConfigParaCommand.h +++ b/lib/Hoymiles/src/commands/SystemConfigParaCommand.h @@ -9,6 +9,6 @@ public: virtual String getCommandName() const; - virtual bool handleResponse(InverterAbstract* inverter, const fragment_t fragment[], const uint8_t max_fragment_id); - virtual void gotTimeout(InverterAbstract* inverter); + virtual bool handleResponse(InverterAbstract& inverter, const fragment_t fragment[], const uint8_t max_fragment_id); + virtual void gotTimeout(InverterAbstract& inverter); }; \ No newline at end of file diff --git a/lib/Hoymiles/src/inverters/InverterAbstract.cpp b/lib/Hoymiles/src/inverters/InverterAbstract.cpp index 4267680..d80d0e5 100644 --- a/lib/Hoymiles/src/inverters/InverterAbstract.cpp +++ b/lib/Hoymiles/src/inverters/InverterAbstract.cpp @@ -218,15 +218,15 @@ void InverterAbstract::addRxFragment(const uint8_t fragment[], const uint8_t len } // Returns Zero on Success or the Fragment ID for retransmit or error code -uint8_t InverterAbstract::verifyAllFragments(CommandAbstract* cmd) +uint8_t InverterAbstract::verifyAllFragments(CommandAbstract& cmd) { // All missing if (_rxFragmentLastPacketId == 0) { Hoymiles.getMessageOutput()->println("All missing"); - if (cmd->getSendCount() <= cmd->getMaxResendCount()) { + if (cmd.getSendCount() <= cmd.getMaxResendCount()) { return FRAGMENT_ALL_MISSING_RESEND; } else { - cmd->gotTimeout(this); + cmd.gotTimeout(*this); return FRAGMENT_ALL_MISSING_TIMEOUT; } } @@ -234,10 +234,10 @@ uint8_t InverterAbstract::verifyAllFragments(CommandAbstract* cmd) // Last fragment is missing (the one with 0x80) if (_rxFragmentMaxPacketId == 0) { Hoymiles.getMessageOutput()->println("Last missing"); - if (_rxFragmentRetransmitCnt++ < cmd->getMaxRetransmitCount()) { + if (_rxFragmentRetransmitCnt++ < cmd.getMaxRetransmitCount()) { return _rxFragmentLastPacketId + 1; } else { - cmd->gotTimeout(this); + cmd.gotTimeout(*this); return FRAGMENT_RETRANSMIT_TIMEOUT; } } @@ -246,17 +246,17 @@ uint8_t InverterAbstract::verifyAllFragments(CommandAbstract* cmd) for (uint8_t i = 0; i < _rxFragmentMaxPacketId - 1; i++) { if (!_rxFragmentBuffer[i].wasReceived) { Hoymiles.getMessageOutput()->println("Middle missing"); - if (_rxFragmentRetransmitCnt++ < cmd->getMaxRetransmitCount()) { + if (_rxFragmentRetransmitCnt++ < cmd.getMaxRetransmitCount()) { return i + 1; } else { - cmd->gotTimeout(this); + cmd.gotTimeout(*this); return FRAGMENT_RETRANSMIT_TIMEOUT; } } } - if (!cmd->handleResponse(this, _rxFragmentBuffer, _rxFragmentMaxPacketId)) { - cmd->gotTimeout(this); + if (!cmd.handleResponse(*this, _rxFragmentBuffer, _rxFragmentMaxPacketId)) { + cmd.gotTimeout(*this); return FRAGMENT_HANDLE_ERROR; } diff --git a/lib/Hoymiles/src/inverters/InverterAbstract.h b/lib/Hoymiles/src/inverters/InverterAbstract.h index d2fdb21..3d9929d 100644 --- a/lib/Hoymiles/src/inverters/InverterAbstract.h +++ b/lib/Hoymiles/src/inverters/InverterAbstract.h @@ -60,7 +60,7 @@ public: void clearRxFragmentBuffer(); void addRxFragment(const uint8_t fragment[], const uint8_t len); - uint8_t verifyAllFragments(CommandAbstract* cmd); + uint8_t verifyAllFragments(CommandAbstract& cmd); virtual bool sendStatsRequest() = 0; virtual bool sendAlarmLogRequest(const bool force = false) = 0; diff --git a/lib/Hoymiles/src/parser/AlarmLogParser.cpp b/lib/Hoymiles/src/parser/AlarmLogParser.cpp index 415dd1b..4086f8e 100644 --- a/lib/Hoymiles/src/parser/AlarmLogParser.cpp +++ b/lib/Hoymiles/src/parser/AlarmLogParser.cpp @@ -214,7 +214,7 @@ void AlarmLogParser::setMessageType(const AlarmMessageType_t type) _messageType = type; } -void AlarmLogParser::getLogEntry(const uint8_t entryId, AlarmLogEntry_t* entry, const AlarmMessageLocale_t locale) +void AlarmLogParser::getLogEntry(const uint8_t entryId, AlarmLogEntry_t& entry, const AlarmMessageLocale_t locale) { const uint8_t entryStartOffset = 2 + entryId * ALARM_LOG_ENTRY_SIZE; @@ -233,34 +233,34 @@ void AlarmLogParser::getLogEntry(const uint8_t entryId, AlarmLogEntry_t* entry, endTimeOffset = 12 * 60 * 60; } - entry->MessageId = _payloadAlarmLog[entryStartOffset + 1]; - entry->StartTime = (((uint16_t)_payloadAlarmLog[entryStartOffset + 4] << 8) | ((uint16_t)_payloadAlarmLog[entryStartOffset + 5])) + startTimeOffset + timezoneOffset; - entry->EndTime = ((uint16_t)_payloadAlarmLog[entryStartOffset + 6] << 8) | ((uint16_t)_payloadAlarmLog[entryStartOffset + 7]); + entry.MessageId = _payloadAlarmLog[entryStartOffset + 1]; + entry.StartTime = (((uint16_t)_payloadAlarmLog[entryStartOffset + 4] << 8) | ((uint16_t)_payloadAlarmLog[entryStartOffset + 5])) + startTimeOffset + timezoneOffset; + entry.EndTime = ((uint16_t)_payloadAlarmLog[entryStartOffset + 6] << 8) | ((uint16_t)_payloadAlarmLog[entryStartOffset + 7]); HOY_SEMAPHORE_GIVE(); - if (entry->EndTime > 0) { - entry->EndTime += (endTimeOffset + timezoneOffset); + if (entry.EndTime > 0) { + entry.EndTime += (endTimeOffset + timezoneOffset); } switch (locale) { case AlarmMessageLocale_t::DE: - entry->Message = "Unbekannt"; + entry.Message = "Unbekannt"; break; case AlarmMessageLocale_t::FR: - entry->Message = "Inconnu"; + entry.Message = "Inconnu"; break; default: - entry->Message = "Unknown"; + entry.Message = "Unknown"; } for (auto& msg : _alarmMessages) { - if (msg.MessageId == entry->MessageId) { + if (msg.MessageId == entry.MessageId) { if (msg.InverterType == _messageType) { - entry->Message = getLocaleMessage(&msg, locale); + entry.Message = getLocaleMessage(&msg, locale); break; } else if (msg.InverterType == AlarmMessageType_t::ALL) { - entry->Message = getLocaleMessage(&msg, locale); + entry.Message = getLocaleMessage(&msg, locale); } } } diff --git a/lib/Hoymiles/src/parser/AlarmLogParser.h b/lib/Hoymiles/src/parser/AlarmLogParser.h index 2c4264b..a6f0c10 100644 --- a/lib/Hoymiles/src/parser/AlarmLogParser.h +++ b/lib/Hoymiles/src/parser/AlarmLogParser.h @@ -43,7 +43,7 @@ public: void appendFragment(const uint8_t offset, const uint8_t* payload, const uint8_t len); uint8_t getEntryCount() const; - void getLogEntry(const uint8_t entryId, AlarmLogEntry_t* entry, const AlarmMessageLocale_t locale = AlarmMessageLocale_t::EN); + void getLogEntry(const uint8_t entryId, AlarmLogEntry_t& entry, const AlarmMessageLocale_t locale = AlarmMessageLocale_t::EN); void setLastAlarmRequestSuccess(const LastCommandSuccess status); LastCommandSuccess getLastAlarmRequestSuccess() const; diff --git a/src/Datastore.cpp b/src/Datastore.cpp index b0be1f6..1d4c2eb 100644 --- a/src/Datastore.cpp +++ b/src/Datastore.cpp @@ -8,9 +8,9 @@ DatastoreClass Datastore; -void DatastoreClass::init(Scheduler* scheduler) +void DatastoreClass::init(Scheduler& scheduler) { - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&DatastoreClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.setInterval(1 * TASK_SECOND); diff --git a/src/Display_Graphic.cpp b/src/Display_Graphic.cpp index 21ea7e8..89fcbc4 100644 --- a/src/Display_Graphic.cpp +++ b/src/Display_Graphic.cpp @@ -1,4 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later +/* + * Copyright (C) 2023 Thomas Basler and others + */ #include "Display_Graphic.h" #include "Datastore.h" #include @@ -39,7 +42,7 @@ DisplayGraphicClass::~DisplayGraphicClass() delete _display; } -void DisplayGraphicClass::init(Scheduler* scheduler, const DisplayType_t type, const uint8_t data, const uint8_t clk, const uint8_t cs, const uint8_t reset) +void DisplayGraphicClass::init(Scheduler& scheduler, const DisplayType_t type, const uint8_t data, const uint8_t clk, const uint8_t cs, const uint8_t reset) { _display_type = type; if (_display_type > DisplayType_t::None) { @@ -50,7 +53,7 @@ void DisplayGraphicClass::init(Scheduler* scheduler, const DisplayType_t type, c setStatus(true); } - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&DisplayGraphicClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.setInterval(_period); diff --git a/src/InverterSettings.cpp b/src/InverterSettings.cpp index 40ad928..506adac 100644 --- a/src/InverterSettings.cpp +++ b/src/InverterSettings.cpp @@ -25,7 +25,7 @@ InverterSettingsClass InverterSettings; -void InverterSettingsClass::init(Scheduler* scheduler) +void InverterSettingsClass::init(Scheduler& scheduler) { const CONFIG_T& config = Configuration.get(); const PinMapping_t& pin = PinMapping.get(); @@ -88,12 +88,12 @@ void InverterSettingsClass::init(Scheduler* scheduler) MessageOutput.println("Invalid pin config"); } - scheduler->addTask(_hoyTask); + scheduler.addTask(_hoyTask); _hoyTask.setCallback(std::bind(&InverterSettingsClass::hoyLoop, this)); _hoyTask.setIterations(TASK_FOREVER); _hoyTask.enable(); - scheduler->addTask(_settingsTask); + scheduler.addTask(_settingsTask); _settingsTask.setCallback(std::bind(&InverterSettingsClass::settingsLoop, this)); _settingsTask.setIterations(TASK_FOREVER); _settingsTask.setInterval(INVERTER_UPDATE_SETTINGS_INTERVAL); diff --git a/src/Led_Single.cpp b/src/Led_Single.cpp index c1ebf50..744c7b7 100644 --- a/src/Led_Single.cpp +++ b/src/Led_Single.cpp @@ -41,7 +41,7 @@ LedSingleClass::LedSingleClass() { } -void LedSingleClass::init(Scheduler* scheduler) +void LedSingleClass::init(Scheduler& scheduler) { bool ledActive = false; @@ -61,12 +61,12 @@ void LedSingleClass::init(Scheduler* scheduler) } if (ledActive) { - scheduler->addTask(_outputTask); + scheduler.addTask(_outputTask); _outputTask.setCallback(std::bind(&LedSingleClass::outputLoop, this)); _outputTask.setIterations(TASK_FOREVER); _outputTask.enable(); - scheduler->addTask(_setTask); + scheduler.addTask(_setTask); _setTask.setCallback(std::bind(&LedSingleClass::setLoop, this)); _setTask.setInterval(LEDSINGLE_UPDATE_INTERVAL * TASK_MILLISECOND); _setTask.setIterations(TASK_FOREVER); diff --git a/src/MessageOutput.cpp b/src/MessageOutput.cpp index abe2831..f602bee 100644 --- a/src/MessageOutput.cpp +++ b/src/MessageOutput.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "MessageOutput.h" @@ -8,9 +8,9 @@ MessageOutputClass MessageOutput; -void MessageOutputClass::init(Scheduler* scheduler) +void MessageOutputClass::init(Scheduler& scheduler) { - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&MessageOutputClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.enable(); diff --git a/src/MqttHandleDtu.cpp b/src/MqttHandleDtu.cpp index db991a8..c20ddb1 100644 --- a/src/MqttHandleDtu.cpp +++ b/src/MqttHandleDtu.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "MqttHandleDtu.h" #include "Configuration.h" @@ -10,9 +10,9 @@ MqttHandleDtuClass MqttHandleDtu; -void MqttHandleDtuClass::init(Scheduler* scheduler) +void MqttHandleDtuClass::init(Scheduler& scheduler) { - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&MqttHandleDtuClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.setInterval(Configuration.get().Mqtt.PublishInterval * TASK_SECOND); diff --git a/src/MqttHandleHass.cpp b/src/MqttHandleHass.cpp index 43e13fc..613defa 100644 --- a/src/MqttHandleHass.cpp +++ b/src/MqttHandleHass.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "MqttHandleHass.h" #include "MqttHandleInverter.h" @@ -9,9 +9,9 @@ MqttHandleHassClass MqttHandleHass; -void MqttHandleHassClass::init(Scheduler* scheduler) +void MqttHandleHassClass::init(Scheduler& scheduler) { - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&MqttHandleHassClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.enable(); diff --git a/src/MqttHandleInverter.cpp b/src/MqttHandleInverter.cpp index 9eff76e..8812109 100644 --- a/src/MqttHandleInverter.cpp +++ b/src/MqttHandleInverter.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "MqttHandleInverter.h" #include "MessageOutput.h" @@ -18,7 +18,7 @@ MqttHandleInverterClass MqttHandleInverter; -void MqttHandleInverterClass::init(Scheduler* scheduler) +void MqttHandleInverterClass::init(Scheduler& scheduler) { using std::placeholders::_1; using std::placeholders::_2; @@ -35,7 +35,7 @@ void MqttHandleInverterClass::init(Scheduler* scheduler) MqttSettings.subscribe(String(topic + "+/cmd/" + TOPIC_SUB_POWER).c_str(), 0, std::bind(&MqttHandleInverterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); MqttSettings.subscribe(String(topic + "+/cmd/" + TOPIC_SUB_RESTART).c_str(), 0, std::bind(&MqttHandleInverterClass::onMqttMessage, this, _1, _2, _3, _4, _5, _6)); - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&MqttHandleInverterClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.setInterval(Configuration.get().Mqtt.PublishInterval * TASK_SECOND); diff --git a/src/MqttHandleInverterTotal.cpp b/src/MqttHandleInverterTotal.cpp index 45b2c9b..db584b2 100644 --- a/src/MqttHandleInverterTotal.cpp +++ b/src/MqttHandleInverterTotal.cpp @@ -10,9 +10,9 @@ MqttHandleInverterTotalClass MqttHandleInverterTotal; -void MqttHandleInverterTotalClass::init(Scheduler* scheduler) +void MqttHandleInverterTotalClass::init(Scheduler& scheduler) { - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&MqttHandleInverterTotalClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.setInterval(Configuration.get().Mqtt.PublishInterval * TASK_SECOND); diff --git a/src/NetworkSettings.cpp b/src/NetworkSettings.cpp index 1597f41..c6818ae 100644 --- a/src/NetworkSettings.cpp +++ b/src/NetworkSettings.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "NetworkSettings.h" #include "Configuration.h" @@ -18,7 +18,7 @@ NetworkSettingsClass::NetworkSettingsClass() dnsServer.reset(new DNSServer()); } -void NetworkSettingsClass::init(Scheduler* scheduler) +void NetworkSettingsClass::init(Scheduler& scheduler) { using std::placeholders::_1; @@ -28,7 +28,7 @@ void NetworkSettingsClass::init(Scheduler* scheduler) WiFi.onEvent(std::bind(&NetworkSettingsClass::NetworkEvent, this, _1)); setupMode(); - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&NetworkSettingsClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.enable(); diff --git a/src/SunPosition.cpp b/src/SunPosition.cpp index db14dc5..a3a9f47 100644 --- a/src/SunPosition.cpp +++ b/src/SunPosition.cpp @@ -13,9 +13,9 @@ SunPositionClass::SunPositionClass() { } -void SunPositionClass::init(Scheduler* scheduler) +void SunPositionClass::init(Scheduler& scheduler) { - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&SunPositionClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.setInterval(5 * TASK_SECOND); diff --git a/src/WebApi.cpp b/src/WebApi.cpp index 37fb514..f4aea1d 100644 --- a/src/WebApi.cpp +++ b/src/WebApi.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi.h" #include "Configuration.h" @@ -12,32 +12,32 @@ WebApiClass::WebApiClass() { } -void WebApiClass::init(Scheduler* scheduler) +void WebApiClass::init(Scheduler& scheduler) { - _webApiConfig.init(&_server); - _webApiDevice.init(&_server); - _webApiDevInfo.init(&_server); - _webApiDtu.init(&_server); - _webApiEventlog.init(&_server); - _webApiFirmware.init(&_server); - _webApiGridprofile.init(&_server); - _webApiInverter.init(&_server); - _webApiLimit.init(&_server); - _webApiMaintenance.init(&_server); - _webApiMqtt.init(&_server); - _webApiNetwork.init(&_server); - _webApiNtp.init(&_server); - _webApiPower.init(&_server); - _webApiPrometheus.init(&_server); - _webApiSecurity.init(&_server); - _webApiSysstatus.init(&_server); - _webApiWebapp.init(&_server); - _webApiWsConsole.init(&_server); - _webApiWsLive.init(&_server); + _webApiConfig.init(_server); + _webApiDevice.init(_server); + _webApiDevInfo.init(_server); + _webApiDtu.init(_server); + _webApiEventlog.init(_server); + _webApiFirmware.init(_server); + _webApiGridprofile.init(_server); + _webApiInverter.init(_server); + _webApiLimit.init(_server); + _webApiMaintenance.init(_server); + _webApiMqtt.init(_server); + _webApiNetwork.init(_server); + _webApiNtp.init(_server); + _webApiPower.init(_server); + _webApiPrometheus.init(_server); + _webApiSecurity.init(_server); + _webApiSysstatus.init(_server); + _webApiWebapp.init(_server); + _webApiWsConsole.init(_server); + _webApiWsLive.init(_server); _server.begin(); - scheduler->addTask(_loopTask); + scheduler.addTask(_loopTask); _loopTask.setCallback(std::bind(&WebApiClass::loop, this)); _loopTask.setIterations(TASK_FOREVER); _loopTask.enable(); diff --git a/src/WebApi_config.cpp b/src/WebApi_config.cpp index 12b9a82..e466c79 100644 --- a/src/WebApi_config.cpp +++ b/src/WebApi_config.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_config.h" #include "Configuration.h" @@ -10,7 +10,7 @@ #include #include -void WebApiConfigClass::init(AsyncWebServer* server) +void WebApiConfigClass::init(AsyncWebServer& server) { using std::placeholders::_1; using std::placeholders::_2; @@ -19,7 +19,7 @@ void WebApiConfigClass::init(AsyncWebServer* server) using std::placeholders::_5; using std::placeholders::_6; - _server = server; + _server = &server; _server->on("/api/config/get", HTTP_GET, std::bind(&WebApiConfigClass::onConfigGet, this, _1)); _server->on("/api/config/delete", HTTP_POST, std::bind(&WebApiConfigClass::onConfigDelete, this, _1)); diff --git a/src/WebApi_device.cpp b/src/WebApi_device.cpp index 1c3da40..9b7de5c 100644 --- a/src/WebApi_device.cpp +++ b/src/WebApi_device.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_device.h" #include "Configuration.h" @@ -12,11 +12,11 @@ #include "helper.h" #include -void WebApiDeviceClass::init(AsyncWebServer* server) +void WebApiDeviceClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/device/config", HTTP_GET, std::bind(&WebApiDeviceClass::onDeviceAdminGet, this, _1)); _server->on("/api/device/config", HTTP_POST, std::bind(&WebApiDeviceClass::onDeviceAdminPost, this, _1)); diff --git a/src/WebApi_devinfo.cpp b/src/WebApi_devinfo.cpp index 31d1d0c..04b8a58 100644 --- a/src/WebApi_devinfo.cpp +++ b/src/WebApi_devinfo.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_devinfo.h" #include "WebApi.h" @@ -8,11 +8,11 @@ #include #include -void WebApiDevInfoClass::init(AsyncWebServer* server) +void WebApiDevInfoClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/devinfo/status", HTTP_GET, std::bind(&WebApiDevInfoClass::onDevInfoStatus, this, _1)); } diff --git a/src/WebApi_dtu.cpp b/src/WebApi_dtu.cpp index 8750b0e..e13d9f5 100644 --- a/src/WebApi_dtu.cpp +++ b/src/WebApi_dtu.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_dtu.h" #include "Configuration.h" @@ -9,11 +9,11 @@ #include #include -void WebApiDtuClass::init(AsyncWebServer* server) +void WebApiDtuClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/dtu/config", HTTP_GET, std::bind(&WebApiDtuClass::onDtuAdminGet, this, _1)); _server->on("/api/dtu/config", HTTP_POST, std::bind(&WebApiDtuClass::onDtuAdminPost, this, _1)); diff --git a/src/WebApi_eventlog.cpp b/src/WebApi_eventlog.cpp index 2b26727..e0c8b31 100644 --- a/src/WebApi_eventlog.cpp +++ b/src/WebApi_eventlog.cpp @@ -1,17 +1,17 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_eventlog.h" #include "WebApi.h" #include #include -void WebApiEventlogClass::init(AsyncWebServer* server) +void WebApiEventlogClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/eventlog/status", HTTP_GET, std::bind(&WebApiEventlogClass::onEventlogStatus, this, _1)); } @@ -59,7 +59,7 @@ void WebApiEventlogClass::onEventlogStatus(AsyncWebServerRequest* request) JsonObject eventsObject = eventsArray.createNestedObject(); AlarmLogEntry_t entry; - inv->EventLog()->getLogEntry(logEntry, &entry, locale); + inv->EventLog()->getLogEntry(logEntry, entry, locale); eventsObject["message_id"] = entry.MessageId; eventsObject["message"] = entry.Message; diff --git a/src/WebApi_firmware.cpp b/src/WebApi_firmware.cpp index 62cf561..cbc4d77 100644 --- a/src/WebApi_firmware.cpp +++ b/src/WebApi_firmware.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_firmware.h" #include "Configuration.h" @@ -10,7 +10,7 @@ #include "helper.h" #include -void WebApiFirmwareClass::init(AsyncWebServer* server) +void WebApiFirmwareClass::init(AsyncWebServer& server) { using std::placeholders::_1; using std::placeholders::_2; @@ -19,7 +19,7 @@ void WebApiFirmwareClass::init(AsyncWebServer* server) using std::placeholders::_5; using std::placeholders::_6; - _server = server; + _server = &server; _server->on("/api/firmware/update", HTTP_POST, std::bind(&WebApiFirmwareClass::onFirmwareUpdateFinish, this, _1), diff --git a/src/WebApi_gridprofile.cpp b/src/WebApi_gridprofile.cpp index bc9ce68..ee945bc 100644 --- a/src/WebApi_gridprofile.cpp +++ b/src/WebApi_gridprofile.cpp @@ -1,17 +1,17 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_gridprofile.h" #include "WebApi.h" #include #include -void WebApiGridProfileClass::init(AsyncWebServer* server) +void WebApiGridProfileClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/gridprofile/status", HTTP_GET, std::bind(&WebApiGridProfileClass::onGridProfileStatus, this, _1)); _server->on("/api/gridprofile/rawdata", HTTP_GET, std::bind(&WebApiGridProfileClass::onGridProfileRawdata, this, _1)); diff --git a/src/WebApi_inverter.cpp b/src/WebApi_inverter.cpp index 3cac267..88ddd37 100644 --- a/src/WebApi_inverter.cpp +++ b/src/WebApi_inverter.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_inverter.h" #include "Configuration.h" @@ -12,11 +12,11 @@ #include #include -void WebApiInverterClass::init(AsyncWebServer* server) +void WebApiInverterClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/inverter/list", HTTP_GET, std::bind(&WebApiInverterClass::onInverterList, this, _1)); _server->on("/api/inverter/add", HTTP_POST, std::bind(&WebApiInverterClass::onInverterAdd, this, _1)); diff --git a/src/WebApi_limit.cpp b/src/WebApi_limit.cpp index d120d6b..e173243 100644 --- a/src/WebApi_limit.cpp +++ b/src/WebApi_limit.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_limit.h" #include "WebApi.h" @@ -8,11 +8,11 @@ #include #include -void WebApiLimitClass::init(AsyncWebServer* server) +void WebApiLimitClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/limit/status", HTTP_GET, std::bind(&WebApiLimitClass::onLimitStatus, this, _1)); _server->on("/api/limit/config", HTTP_POST, std::bind(&WebApiLimitClass::onLimitPost, this, _1)); diff --git a/src/WebApi_maintenance.cpp b/src/WebApi_maintenance.cpp index 19e917e..8b65c93 100644 --- a/src/WebApi_maintenance.cpp +++ b/src/WebApi_maintenance.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_maintenance.h" @@ -9,11 +9,11 @@ #include "WebApi_errors.h" #include -void WebApiMaintenanceClass::init(AsyncWebServer* server) +void WebApiMaintenanceClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/maintenance/reboot", HTTP_POST, std::bind(&WebApiMaintenanceClass::onRebootPost, this, _1)); } diff --git a/src/WebApi_mqtt.cpp b/src/WebApi_mqtt.cpp index 1724550..4290b4d 100644 --- a/src/WebApi_mqtt.cpp +++ b/src/WebApi_mqtt.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_mqtt.h" #include "Configuration.h" @@ -11,11 +11,11 @@ #include "helper.h" #include -void WebApiMqttClass::init(AsyncWebServer* server) +void WebApiMqttClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/mqtt/status", HTTP_GET, std::bind(&WebApiMqttClass::onMqttStatus, this, _1)); _server->on("/api/mqtt/config", HTTP_GET, std::bind(&WebApiMqttClass::onMqttAdminGet, this, _1)); diff --git a/src/WebApi_network.cpp b/src/WebApi_network.cpp index 0d7b004..a6e91f3 100644 --- a/src/WebApi_network.cpp +++ b/src/WebApi_network.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_network.h" #include "Configuration.h" @@ -10,11 +10,11 @@ #include "helper.h" #include -void WebApiNetworkClass::init(AsyncWebServer* server) +void WebApiNetworkClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/network/status", HTTP_GET, std::bind(&WebApiNetworkClass::onNetworkStatus, this, _1)); _server->on("/api/network/config", HTTP_GET, std::bind(&WebApiNetworkClass::onNetworkAdminGet, this, _1)); diff --git a/src/WebApi_ntp.cpp b/src/WebApi_ntp.cpp index 1bb86d3..ed841ba 100644 --- a/src/WebApi_ntp.cpp +++ b/src/WebApi_ntp.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_ntp.h" #include "Configuration.h" @@ -11,11 +11,11 @@ #include "helper.h" #include -void WebApiNtpClass::init(AsyncWebServer* server) +void WebApiNtpClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/ntp/status", HTTP_GET, std::bind(&WebApiNtpClass::onNtpStatus, this, _1)); _server->on("/api/ntp/config", HTTP_GET, std::bind(&WebApiNtpClass::onNtpAdminGet, this, _1)); diff --git a/src/WebApi_power.cpp b/src/WebApi_power.cpp index 1e74234..3fa4798 100644 --- a/src/WebApi_power.cpp +++ b/src/WebApi_power.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_power.h" #include "WebApi.h" @@ -8,11 +8,11 @@ #include #include -void WebApiPowerClass::init(AsyncWebServer* server) +void WebApiPowerClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/power/status", HTTP_GET, std::bind(&WebApiPowerClass::onPowerStatus, this, _1)); _server->on("/api/power/config", HTTP_POST, std::bind(&WebApiPowerClass::onPowerPost, this, _1)); diff --git a/src/WebApi_prometheus.cpp b/src/WebApi_prometheus.cpp index 45fa614..f72d7bc 100644 --- a/src/WebApi_prometheus.cpp +++ b/src/WebApi_prometheus.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_prometheus.h" #include "Configuration.h" @@ -10,11 +10,11 @@ #include "WebApi.h" #include -void WebApiPrometheusClass::init(AsyncWebServer* server) +void WebApiPrometheusClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/prometheus/metrics", HTTP_GET, std::bind(&WebApiPrometheusClass::onPrometheusMetricsGet, this, _1)); } diff --git a/src/WebApi_security.cpp b/src/WebApi_security.cpp index 4c02fae..274d0eb 100644 --- a/src/WebApi_security.cpp +++ b/src/WebApi_security.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_security.h" #include "Configuration.h" @@ -9,11 +9,11 @@ #include "helper.h" #include -void WebApiSecurityClass::init(AsyncWebServer* server) +void WebApiSecurityClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/security/config", HTTP_GET, std::bind(&WebApiSecurityClass::onSecurityGet, this, _1)); _server->on("/api/security/config", HTTP_POST, std::bind(&WebApiSecurityClass::onSecurityPost, this, _1)); diff --git a/src/WebApi_sysstatus.cpp b/src/WebApi_sysstatus.cpp index 7a3be0f..35904bf 100644 --- a/src/WebApi_sysstatus.cpp +++ b/src/WebApi_sysstatus.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_sysstatus.h" #include "Configuration.h" @@ -16,11 +16,11 @@ #define AUTO_GIT_HASH "" #endif -void WebApiSysstatusClass::init(AsyncWebServer* server) +void WebApiSysstatusClass::init(AsyncWebServer& server) { using std::placeholders::_1; - _server = server; + _server = &server; _server->on("/api/system/status", HTTP_GET, std::bind(&WebApiSysstatusClass::onSystemStatus, this, _1)); } diff --git a/src/WebApi_webapp.cpp b/src/WebApi_webapp.cpp index 7bb763a..260566f 100644 --- a/src/WebApi_webapp.cpp +++ b/src/WebApi_webapp.cpp @@ -18,9 +18,9 @@ extern const uint8_t file_zones_json_end[] asm("_binary_webapp_dist_zones_json_g extern const uint8_t file_app_js_end[] asm("_binary_webapp_dist_js_app_js_gz_end"); extern const uint8_t file_site_webmanifest_end[] asm("_binary_webapp_dist_site_webmanifest_end"); -void WebApiWebappClass::init(AsyncWebServer* server) +void WebApiWebappClass::init(AsyncWebServer& server) { - _server = server; + _server = &server; _server->on("/", HTTP_GET, [](AsyncWebServerRequest* request) { AsyncWebServerResponse* response = request->beginResponse_P(200, "text/html", file_index_html_start, file_index_html_end - file_index_html_start); diff --git a/src/WebApi_ws_console.cpp b/src/WebApi_ws_console.cpp index 6e52243..5415938 100644 --- a/src/WebApi_ws_console.cpp +++ b/src/WebApi_ws_console.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_ws_console.h" #include "Configuration.h" @@ -13,9 +13,9 @@ WebApiWsConsoleClass::WebApiWsConsoleClass() { } -void WebApiWsConsoleClass::init(AsyncWebServer* server) +void WebApiWsConsoleClass::init(AsyncWebServer& server) { - _server = server; + _server = &server; _server->addHandler(&_ws); MessageOutput.register_ws_output(&_ws); } diff --git a/src/WebApi_ws_live.cpp b/src/WebApi_ws_live.cpp index 4135365..9b42b0e 100644 --- a/src/WebApi_ws_live.cpp +++ b/src/WebApi_ws_live.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "WebApi_ws_live.h" #include "Configuration.h" @@ -15,7 +15,7 @@ WebApiWsLiveClass::WebApiWsLiveClass() { } -void WebApiWsLiveClass::init(AsyncWebServer* server) +void WebApiWsLiveClass::init(AsyncWebServer& server) { using std::placeholders::_1; using std::placeholders::_2; @@ -24,7 +24,7 @@ void WebApiWsLiveClass::init(AsyncWebServer* server) using std::placeholders::_5; using std::placeholders::_6; - _server = server; + _server = &server; _server->on("/api/livedata/status", HTTP_GET, std::bind(&WebApiWsLiveClass::onLivedataStatus, this, _1)); _server->addHandler(&_ws); diff --git a/src/main.cpp b/src/main.cpp index cf9f4fa..7157a9d 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 Thomas Basler and others + * Copyright (C) 2022-2023 Thomas Basler and others */ #include "Configuration.h" #include "Datastore.h" @@ -36,7 +36,7 @@ void setup() while (!Serial) yield(); #endif - MessageOutput.init(&scheduler); + MessageOutput.init(scheduler); MessageOutput.println(); MessageOutput.println("Starting OpenDTU"); @@ -83,7 +83,7 @@ void setup() // Initialize WiFi MessageOutput.print("Initialize Network... "); - NetworkSettings.init(&scheduler); + NetworkSettings.init(scheduler); MessageOutput.println("done"); NetworkSettings.applyConfig(); @@ -94,27 +94,27 @@ void setup() // Initialize SunPosition MessageOutput.print("Initialize SunPosition... "); - SunPosition.init(&scheduler); + SunPosition.init(scheduler); MessageOutput.println("done"); // Initialize MqTT MessageOutput.print("Initialize MqTT... "); MqttSettings.init(); - MqttHandleDtu.init(&scheduler); - MqttHandleInverter.init(&scheduler); - MqttHandleInverterTotal.init(&scheduler); - MqttHandleHass.init(&scheduler); + MqttHandleDtu.init(scheduler); + MqttHandleInverter.init(scheduler); + MqttHandleInverterTotal.init(scheduler); + MqttHandleHass.init(scheduler); MessageOutput.println("done"); // Initialize WebApi MessageOutput.print("Initialize WebApi... "); - WebApi.init(&scheduler); + WebApi.init(scheduler); MessageOutput.println("done"); // Initialize Display MessageOutput.print("Initialize Display... "); Display.init( - &scheduler, + scheduler, static_cast(pin.display_type), pin.display_data, pin.display_clk, @@ -130,7 +130,7 @@ void setup() // Initialize Single LEDs MessageOutput.print("Initialize LEDs... "); - LedSingle.init(&scheduler); + LedSingle.init(scheduler); MessageOutput.println("done"); // Check for default DTU serial @@ -146,9 +146,9 @@ void setup() } MessageOutput.println("done"); - InverterSettings.init(&scheduler); + InverterSettings.init(scheduler); - Datastore.init(&scheduler); + Datastore.init(scheduler); } void loop()