diff --git a/lib/CMT2300a/cmt2300wrapper.cpp b/lib/CMT2300a/cmt2300wrapper.cpp index 016ef56f..2246ecb2 100644 --- a/lib/CMT2300a/cmt2300wrapper.cpp +++ b/lib/CMT2300a/cmt2300wrapper.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "cmt2300wrapper.h" #include "cmt2300a.h" diff --git a/lib/CpuTemperature/src/CpuTemperature.cpp b/lib/CpuTemperature/src/CpuTemperature.cpp index 535a4a7d..7ce635ed 100644 --- a/lib/CpuTemperature/src/CpuTemperature.cpp +++ b/lib/CpuTemperature/src/CpuTemperature.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2024 Thomas Basler and others + * Copyright (C) 2024-2026 Thomas Basler and others */ #include "CpuTemperature.h" diff --git a/lib/Hoymiles/src/commands/AlarmDataCommand.cpp b/lib/Hoymiles/src/commands/AlarmDataCommand.cpp index 98a97d0b..1059871b 100644 --- a/lib/Hoymiles/src/commands/AlarmDataCommand.cpp +++ b/lib/Hoymiles/src/commands/AlarmDataCommand.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/commands/ChannelChangeCommand.cpp b/lib/Hoymiles/src/commands/ChannelChangeCommand.cpp index 227ade1e..e697f44a 100644 --- a/lib/Hoymiles/src/commands/ChannelChangeCommand.cpp +++ b/lib/Hoymiles/src/commands/ChannelChangeCommand.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/commands/DevControlCommand.cpp b/lib/Hoymiles/src/commands/DevControlCommand.cpp index 8dc419d6..f0e9f305 100644 --- a/lib/Hoymiles/src/commands/DevControlCommand.cpp +++ b/lib/Hoymiles/src/commands/DevControlCommand.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/commands/DevInfoAllCommand.cpp b/lib/Hoymiles/src/commands/DevInfoAllCommand.cpp index 8a258ac2..98cc2414 100644 --- a/lib/Hoymiles/src/commands/DevInfoAllCommand.cpp +++ b/lib/Hoymiles/src/commands/DevInfoAllCommand.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/commands/DevInfoSimpleCommand.cpp b/lib/Hoymiles/src/commands/DevInfoSimpleCommand.cpp index d134a0ac..f73167ef 100644 --- a/lib/Hoymiles/src/commands/DevInfoSimpleCommand.cpp +++ b/lib/Hoymiles/src/commands/DevInfoSimpleCommand.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/commands/GridOnProFilePara.cpp b/lib/Hoymiles/src/commands/GridOnProFilePara.cpp index 77930377..18b8e5d7 100644 --- a/lib/Hoymiles/src/commands/GridOnProFilePara.cpp +++ b/lib/Hoymiles/src/commands/GridOnProFilePara.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/commands/ParaSetCommand.cpp b/lib/Hoymiles/src/commands/ParaSetCommand.cpp index 8b71867b..45ec5789 100644 --- a/lib/Hoymiles/src/commands/ParaSetCommand.cpp +++ b/lib/Hoymiles/src/commands/ParaSetCommand.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "ParaSetCommand.h" diff --git a/lib/Hoymiles/src/commands/PowerControlCommand.cpp b/lib/Hoymiles/src/commands/PowerControlCommand.cpp index 927c3330..d13d730c 100644 --- a/lib/Hoymiles/src/commands/PowerControlCommand.cpp +++ b/lib/Hoymiles/src/commands/PowerControlCommand.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/commands/RequestFrameCommand.cpp b/lib/Hoymiles/src/commands/RequestFrameCommand.cpp index 0abb5235..992f2a42 100644 --- a/lib/Hoymiles/src/commands/RequestFrameCommand.cpp +++ b/lib/Hoymiles/src/commands/RequestFrameCommand.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/commands/SingleDataCommand.cpp b/lib/Hoymiles/src/commands/SingleDataCommand.cpp index 3b648814..9956f69e 100644 --- a/lib/Hoymiles/src/commands/SingleDataCommand.cpp +++ b/lib/Hoymiles/src/commands/SingleDataCommand.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ /* diff --git a/lib/Hoymiles/src/inverters/HERF_1CH.cpp b/lib/Hoymiles/src/inverters/HERF_1CH.cpp index b35b13ba..4bef3804 100644 --- a/lib/Hoymiles/src/inverters/HERF_1CH.cpp +++ b/lib/Hoymiles/src/inverters/HERF_1CH.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "HERF_1CH.h" diff --git a/lib/Hoymiles/src/inverters/HERF_2CH.cpp b/lib/Hoymiles/src/inverters/HERF_2CH.cpp index 1e528b3a..f9d991d9 100644 --- a/lib/Hoymiles/src/inverters/HERF_2CH.cpp +++ b/lib/Hoymiles/src/inverters/HERF_2CH.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "HERF_2CH.h" diff --git a/lib/Hoymiles/src/inverters/HERF_4CH.cpp b/lib/Hoymiles/src/inverters/HERF_4CH.cpp index a3484734..c631765f 100644 --- a/lib/Hoymiles/src/inverters/HERF_4CH.cpp +++ b/lib/Hoymiles/src/inverters/HERF_4CH.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "HERF_4CH.h" diff --git a/lib/Hoymiles/src/inverters/HMS_1CH.cpp b/lib/Hoymiles/src/inverters/HMS_1CH.cpp index 0d24ad53..1b1a21f9 100644 --- a/lib/Hoymiles/src/inverters/HMS_1CH.cpp +++ b/lib/Hoymiles/src/inverters/HMS_1CH.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "HMS_1CH.h" diff --git a/lib/Hoymiles/src/inverters/HMS_1CHv2.cpp b/lib/Hoymiles/src/inverters/HMS_1CHv2.cpp index 81313df1..3f30584d 100644 --- a/lib/Hoymiles/src/inverters/HMS_1CHv2.cpp +++ b/lib/Hoymiles/src/inverters/HMS_1CHv2.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "HMS_1CHv2.h" diff --git a/lib/Hoymiles/src/inverters/HMS_2CH.cpp b/lib/Hoymiles/src/inverters/HMS_2CH.cpp index 5dd8c5f2..b1dd68ae 100644 --- a/lib/Hoymiles/src/inverters/HMS_2CH.cpp +++ b/lib/Hoymiles/src/inverters/HMS_2CH.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "HMS_2CH.h" diff --git a/lib/Hoymiles/src/inverters/HMS_4CH.cpp b/lib/Hoymiles/src/inverters/HMS_4CH.cpp index 4e71aee8..8074593b 100644 --- a/lib/Hoymiles/src/inverters/HMS_4CH.cpp +++ b/lib/Hoymiles/src/inverters/HMS_4CH.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "HMS_4CH.h" diff --git a/lib/Hoymiles/src/inverters/HMT_4CH.cpp b/lib/Hoymiles/src/inverters/HMT_4CH.cpp index c81a97f8..74c445c8 100644 --- a/lib/Hoymiles/src/inverters/HMT_4CH.cpp +++ b/lib/Hoymiles/src/inverters/HMT_4CH.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "HMT_4CH.h" diff --git a/lib/Hoymiles/src/inverters/HMT_6CH.cpp b/lib/Hoymiles/src/inverters/HMT_6CH.cpp index 5029f758..312f2c48 100644 --- a/lib/Hoymiles/src/inverters/HMT_6CH.cpp +++ b/lib/Hoymiles/src/inverters/HMT_6CH.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "HMT_6CH.h" diff --git a/lib/Hoymiles/src/inverters/HMT_Abstract.cpp b/lib/Hoymiles/src/inverters/HMT_Abstract.cpp index 095b3d2e..38e51688 100644 --- a/lib/Hoymiles/src/inverters/HMT_Abstract.cpp +++ b/lib/Hoymiles/src/inverters/HMT_Abstract.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "HMT_Abstract.h" #include "Hoymiles.h" diff --git a/lib/Hoymiles/src/inverters/HM_1CH.cpp b/lib/Hoymiles/src/inverters/HM_1CH.cpp index bdb99faf..2aef0df3 100644 --- a/lib/Hoymiles/src/inverters/HM_1CH.cpp +++ b/lib/Hoymiles/src/inverters/HM_1CH.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "HM_1CH.h" diff --git a/lib/Hoymiles/src/inverters/HM_2CH.cpp b/lib/Hoymiles/src/inverters/HM_2CH.cpp index e6eba140..640ece27 100644 --- a/lib/Hoymiles/src/inverters/HM_2CH.cpp +++ b/lib/Hoymiles/src/inverters/HM_2CH.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "HM_2CH.h" diff --git a/lib/Hoymiles/src/inverters/HM_4CH.cpp b/lib/Hoymiles/src/inverters/HM_4CH.cpp index a6999834..69a5e0d7 100644 --- a/lib/Hoymiles/src/inverters/HM_4CH.cpp +++ b/lib/Hoymiles/src/inverters/HM_4CH.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "HM_4CH.h" diff --git a/lib/Hoymiles/src/inverters/HM_Abstract.cpp b/lib/Hoymiles/src/inverters/HM_Abstract.cpp index 0f5d66c0..59d6cde2 100644 --- a/lib/Hoymiles/src/inverters/HM_Abstract.cpp +++ b/lib/Hoymiles/src/inverters/HM_Abstract.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "HM_Abstract.h" #include "HoymilesRadio.h" diff --git a/pio-scripts/decoder.py b/pio-scripts/decoder.py new file mode 100644 index 00000000..eb676227 --- /dev/null +++ b/pio-scripts/decoder.py @@ -0,0 +1,94 @@ +#!/usr/bin/env python + +import argparse +import re +import os +import subprocess +import sys + + +class ESP32CrashParser(object): + def __init__(self, toolchain_path, elf_path): + self.toolchain_path = toolchain_path + self.gdb_path = os.path.join(toolchain_path, "bin", "xtensa-esp32-elf-gdb.exe") + self.addr2line_path = os.path.join(toolchain_path, "bin", "xtensa-esp32-elf-addr2line.exe") + + if not os.path.exists(self.gdb_path): + raise Exception("GDB for ESP not found in {} - {} does not exist.\nUse --toolchain to point to " + "your toolchain folder.".format(self.toolchain_path, self.gdb_path)) + + if not os.path.exists(self.addr2line_path): + raise Exception("addr2line for ESP not found in {} - {} does not exist.\nUse --toolchain to point to " + "your toolchain folder.".format(self.toolchain_path, self.addr2line_path)) + + self.elf_path = elf_path + if not os.path.exists(self.elf_path): + raise Exception("ELF file not found: '{}'".format(self.elf_path)) + + def parse_text(self, text): + m = re.search('Backtrace: (.*)', text) + if m: + print ("Stack trace:") + for l in self.parse_stack(m.group(1)): + print (" {}".format(l).encode()) + else: + print ("No stack trace found.") + + ''' + Decode one stack or backtrace. + + See: https://github.com/me-no-dev/EspExceptionDecoder/blob/master/src/EspExceptionDecoder.java#L402 + ''' + def parse_stack(self, text): + r = re.compile('40[0-2][0-9a-fA-F]{5}') + m = r.findall(text) + return self.decode_function_addresses(m) + + def decode_function_address(self, address): + args = [self.addr2line_path, "-e", self.elf_path, "-aipfC", address] + return subprocess.check_output(args).strip() + + def decode_function_addresses(self, addresses): + out = [] + for a in addresses: + out.append(self.decode_function_address(a)) + return out + + ''' + GDB Should produce line number: https://github.com/me-no-dev/EspExceptionDecoder/commit/a78672da204151cc93979a96ed9f89139a73893f + However it does not produce anything for me. So not using it for now. + ''' + def decode_function_addresses_with_gdb(self, addresses): + args = [self.gdb_path, "--batch"] + + # Disable user config file which might interfere here + args.extend(["-iex", "set auto-load local-gdbinit off"]) + + args.append(self.elf_path) + + args.extend(["-ex", "set listsize 1"]) + for address in addresses: + args.append("-ex") + args.append("l *0x{}".format(address)) + args.extend(["-ex", "q"]) + + print ("Running: {}".format(args)) + out = subprocess.check_output(args) + print (out) + +def main(): + parser = argparse.ArgumentParser() + parser.add_argument("--toolchain", help="Path to the Xtensa toolchain", + default=os.path.join("c:\\users\\thomas\\.platformio\\packages\\toolchain-xtensa32")) + parser.add_argument("--elf", help="Path to the ELF file of the firmware", + default=".pio/build/lolin_s2_mini/firmware.elf") + parser.add_argument("input") + + args = parser.parse_args() + + crash_parser = ESP32CrashParser(args.toolchain, args.elf) + crash_parser.parse_text(args.input) + + +if __name__ == '__main__': + main() diff --git a/src/Datastore.cpp b/src/Datastore.cpp index 15a6dad0..0fc7dea9 100644 --- a/src/Datastore.cpp +++ b/src/Datastore.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "Datastore.h" #include "Configuration.h" diff --git a/src/Display_Graphic_Diagram.cpp b/src/Display_Graphic_Diagram.cpp index 0902852f..64e93996 100644 --- a/src/Display_Graphic_Diagram.cpp +++ b/src/Display_Graphic_Diagram.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "Display_Graphic_Diagram.h" #include "Configuration.h" diff --git a/src/Logging.cpp b/src/Logging.cpp index bcecd433..39e65e92 100644 --- a/src/Logging.cpp +++ b/src/Logging.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2026 Thomas Basler and others + * Copyright (C) 2025-2026 Thomas Basler and others */ #include "Logging.h" #include "Configuration.h" diff --git a/src/MessageOutput.cpp b/src/MessageOutput.cpp index 1757eccf..acb13b15 100644 --- a/src/MessageOutput.cpp +++ b/src/MessageOutput.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "MessageOutput.h" #include "SyslogLogger.h" diff --git a/src/MqttHandleInverter.cpp b/src/MqttHandleInverter.cpp index 802cd0fa..efc6c7ba 100644 --- a/src/MqttHandleInverter.cpp +++ b/src/MqttHandleInverter.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2025 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "MqttHandleInverter.h" #include "MqttSettings.h" diff --git a/src/MqttHandleInverterTotal.cpp b/src/MqttHandleInverterTotal.cpp index 5f5be6a9..0e53b916 100644 --- a/src/MqttHandleInverterTotal.cpp +++ b/src/MqttHandleInverterTotal.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023-2024 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "MqttHandleInverterTotal.h" #include "Configuration.h" diff --git a/src/MqttSettings.cpp b/src/MqttSettings.cpp index 723064ce..ca11d7e9 100644 --- a/src/MqttSettings.cpp +++ b/src/MqttSettings.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2025 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "MqttSettings.h" #include "Configuration.h" diff --git a/src/NetworkSettings.cpp b/src/NetworkSettings.cpp index 49339e72..b04ddf70 100644 --- a/src/NetworkSettings.cpp +++ b/src/NetworkSettings.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "NetworkSettings.h" #include "Configuration.h" diff --git a/src/NtpSettings.cpp b/src/NtpSettings.cpp index 8c4957e9..e938ce69 100644 --- a/src/NtpSettings.cpp +++ b/src/NtpSettings.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 - 2023 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "NtpSettings.h" #include "Configuration.h" diff --git a/src/PinMapping.cpp b/src/PinMapping.cpp index 5040864a..e3449842 100644 --- a/src/PinMapping.cpp +++ b/src/PinMapping.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022 - 2025 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "PinMapping.h" #include "Utils.h" diff --git a/src/RestartHelper.cpp b/src/RestartHelper.cpp index ab385ef6..96a452c2 100644 --- a/src/RestartHelper.cpp +++ b/src/RestartHelper.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2024 Thomas Basler and others + * Copyright (C) 2024-2026 Thomas Basler and others */ #include "RestartHelper.h" #include "Display_Graphic.h" diff --git a/src/Scheduler.cpp b/src/Scheduler.cpp index 79dfd9c8..7d34620f 100644 --- a/src/Scheduler.cpp +++ b/src/Scheduler.cpp @@ -1,7 +1,7 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2023 Thomas Basler and others + * Copyright (C) 2023-2026 Thomas Basler and others */ #include "Scheduler.h" -Scheduler scheduler; \ No newline at end of file +Scheduler scheduler; diff --git a/src/WebApi_device.cpp b/src/WebApi_device.cpp index c210b421..9fc4b91d 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_device.h" #include "Configuration.h" diff --git a/src/WebApi_devinfo.cpp b/src/WebApi_devinfo.cpp index d9a3b147..d5e36e29 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_devinfo.h" #include "WebApi.h" diff --git a/src/WebApi_dtu.cpp b/src/WebApi_dtu.cpp index 83480d1f..fafaf779 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_dtu.h" #include "Configuration.h" diff --git a/src/WebApi_eventlog.cpp b/src/WebApi_eventlog.cpp index bfff1bd2..6a89ddd1 100644 --- a/src/WebApi_eventlog.cpp +++ b/src/WebApi_eventlog.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2022-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_eventlog.h" #include "WebApi.h" diff --git a/src/WebApi_inverter.cpp b/src/WebApi_inverter.cpp index 0118e0dc..27ee0902 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_inverter.h" #include "Configuration.h" diff --git a/src/WebApi_limit.cpp b/src/WebApi_limit.cpp index b774fcc6..1e135384 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_limit.h" #include "WebApi.h" diff --git a/src/WebApi_logging.cpp b/src/WebApi_logging.cpp index 441d909d..3b39fe93 100644 --- a/src/WebApi_logging.cpp +++ b/src/WebApi_logging.cpp @@ -1,6 +1,6 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* - * Copyright (C) 2026 Thomas Basler and others + * Copyright (C) 2025-2026 Thomas Basler and others */ #include "WebApi_logging.h" #include "Configuration.h" diff --git a/src/WebApi_maintenance.cpp b/src/WebApi_maintenance.cpp index ad998832..77b8aece 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_maintenance.h" diff --git a/src/WebApi_mqtt.cpp b/src/WebApi_mqtt.cpp index 2d794f21..aaf99ba7 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_mqtt.h" #include "Configuration.h" diff --git a/src/WebApi_network.cpp b/src/WebApi_network.cpp index f62df847..056f7187 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_network.h" #include "Configuration.h" diff --git a/src/WebApi_ntp.cpp b/src/WebApi_ntp.cpp index b9feaaef..73de5b23 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_ntp.h" #include "Configuration.h" diff --git a/src/WebApi_power.cpp b/src/WebApi_power.cpp index d6d864a9..7867c8b9 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_power.h" #include "WebApi.h" diff --git a/src/WebApi_security.cpp b/src/WebApi_security.cpp index 91565517..d2e64bec 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-2024 Thomas Basler and others + * Copyright (C) 2022-2026 Thomas Basler and others */ #include "WebApi_security.h" #include "Configuration.h"