diff --git a/.github/workflows/beta.yml b/.github/workflows/beta.yml
index 0994bf5..103a4de 100644
--- a/.github/workflows/beta.yml
+++ b/.github/workflows/beta.yml
@@ -116,6 +116,7 @@ jobs:
mkdir -p resources/
mkdir -p src/
cp -vf release/*/nuki_hub_*.bin ota/beta/
+ cp -vf release/*/nuki_hub_*.elf ota/beta/
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
cp -vf master/src/Config.h src/Config.h
python3 resources/ota_manifest.py beta $Version
diff --git a/.github/workflows/nightly.yml b/.github/workflows/nightly.yml
index 7559b85..9713a6b 100644
--- a/.github/workflows/nightly.yml
+++ b/.github/workflows/nightly.yml
@@ -139,6 +139,7 @@ jobs:
mkdir -p resources/
mkdir -p src/
cp -vf release/*/nuki_hub_*.bin ota/master/
+ cp -vf release/*/nuki_hub_*.elf ota/master/
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
cp -vf master/src/Config.h src/Config.h
python3 resources/ota_manifest.py master $Version
diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml
index f8546b6..0113275 100644
--- a/.github/workflows/release.yml
+++ b/.github/workflows/release.yml
@@ -129,7 +129,7 @@ jobs:
cd ../..
done
-
+
# remove last character
ARTIFACTS="${ARTIFACTS%?}"
echo "artifacts=${ARTIFACTS}" | tee -a ${GITHUB_OUTPUT}
@@ -156,13 +156,15 @@ jobs:
mkdir -p ota/master/
mkdir -p resources/
mkdir -p src/
- cp -vf release/*/nuki_hub_*.bin ota/
+ cp -vf release/*/nuki_hub_*.bin ota/
+ cp -vf release/*/nuki_hub_*.elf ota/
cp -vf master/resources/ota_manifest.py resources/ota_manifest.py
cp -vf master/src/Config.h src/Config.h
python3 resources/ota_manifest.py release $Version
python3 resources/ota_manifest.py beta none
find * -not -path "ota*" -delete
rm -rf ota/beta/*.bin
+ rm -rf ota/beta/*.elf
rm -rf .github .gitignore .gitmodules
touch ota/beta/empty
touch ota/master/empty
@@ -178,3 +180,25 @@ jobs:
disable_globbing: true
add_options: '-f'
push_options: '-f'
+ next_version:
+ name: Set next release version
+ needs: release
+ runs-on: ubuntu-latest
+ steps:
+ - name: Git Checkout master
+ uses: actions/checkout@v4
+ with:
+ ref: master
+ - name: Set new version
+ run: |
+ python3 resources/next_version.py
+ - name: Commit config to master
+ uses: stefanzweifel/git-auto-commit-action@v5
+ with:
+ commit_message: "Set next release version"
+ file_pattern: 'src/Config.h'
+ branch: master
+ skip_dirty_check: true
+ skip_fetch: true
+ skip_checkout: true
+ disable_globbing: true
\ No newline at end of file
diff --git a/.gitignore b/.gitignore
index 449c400..ae61ad0 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,5 +1,6 @@
.dummy
.idea
+scripts/.idea
build
debug
release
@@ -28,4 +29,4 @@ sdkconfig
# NodeJS en pnpm
.pnpm
node_modules
-pnpm-lock.yaml
\ No newline at end of file
+pnpm-lock.yaml
diff --git a/README.md b/README.md
index 94aa692..2b0547a 100644
--- a/README.md
+++ b/README.md
@@ -5,7 +5,7 @@
The Nuki Hub software runs on a ESP32 module and acts as a bridge between Nuki devices and a Home Automation platform.
It communicates with a Nuki Lock and/or Opener through Bluetooth (BLE) and uses MQTT to integrate with other systems.
-
+
It exposes the lock state (and much more) through MQTT and allows executing commands like locking and unlocking as well as changing the Nuki Lock/Opener configuration through MQTT.
***Nuki Hub does not integrate with the Nuki mobile app, it can't register itself as a bridge in the official Nuki mobile app.***
@@ -1009,11 +1009,11 @@ Navigate to "MQTT Configuration" and change the "MQTT Nuki Hub Path" under "Basi
### The Nuki battery is draining quickly.
-This often is a result of enabling "Register as app" when not using [Hybrid mode](/HYBRID.md) (Official MQTT / Nuki Hub co-existance).
+This often is a result of enabling "Nuki Bridge is running alongside Nuki Hub" when not using [Hybrid mode](/HYBRID.md) (Official MQTT / Nuki Hub co-existance).
Doing so will cause Nuki Hub to constantly query the lock and as such cause excessive battery drain.
-To prevent this behaviour, unpair Nuki Hub, disable "Register as app", and re-pair.
+To prevent this behaviour, unpair Nuki Hub, disable "Nuki Bridge is running alongside Nuki Hub", and re-pair.
-Never enable "Register as app" unless you intend to use a Nuki Bridge in addition to Nuki Hub or you are using Hybrid mode!
+Never enable "Nuki Bridge is running alongside Nuki Hub" unless you intend to use a Nuki Bridge in addition to Nuki Hub or you are using Hybrid mode!
## Building from source
Docker (Preferred)
diff --git a/clion/CMakeLists.txt b/clion/CMakeLists.txt
index a2cb9b9..0584701 100644
--- a/clion/CMakeLists.txt
+++ b/clion/CMakeLists.txt
@@ -57,6 +57,7 @@ set(SRCFILES
../src/EspMillis.h
../src/enums/NukiPinState.h
../src/networkDevices/Tlk110Definitions.h
+ ../src/SerialReader.cpp
)
file(GLOB_RECURSE SRCFILESREC
diff --git a/lib/ArduinoJson/ArduinoJson.h b/lib/ArduinoJson/ArduinoJson.h
index 9939599..a0caed7 100644
--- a/lib/ArduinoJson/ArduinoJson.h
+++ b/lib/ArduinoJson/ArduinoJson.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include "src/ArduinoJson.h"
diff --git a/lib/ArduinoJson/CHANGELOG.md b/lib/ArduinoJson/CHANGELOG.md
index c0a8b4b..10e4629 100644
--- a/lib/ArduinoJson/CHANGELOG.md
+++ b/lib/ArduinoJson/CHANGELOG.md
@@ -1,6 +1,23 @@
ArduinoJson: change log
=======================
+v7.4.1 (2025-04-11)
+------
+
+* Fix crash with tiny Flash strings (issue #2170)
+
+v7.4.0 (2025-04-09)
+------
+
+* Optimize storage of tiny strings (up to 3 characters)
+* Fix support for `const char[]` (issue #2166)
+
+v7.3.1 (2025-02-27)
+------
+
+* Fix conversion from static string to number
+* Slightly reduce code size
+
v7.3.0 (2024-12-29)
------
diff --git a/lib/ArduinoJson/CMakeLists.txt b/lib/ArduinoJson/CMakeLists.txt
index b607bdb..bdeb803 100644
--- a/lib/ArduinoJson/CMakeLists.txt
+++ b/lib/ArduinoJson/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
cmake_minimum_required(VERSION 3.15)
@@ -10,7 +10,7 @@ if(ESP_PLATFORM)
return()
endif()
-project(ArduinoJson VERSION 7.3.0)
+project(ArduinoJson VERSION 7.4.1)
if(CMAKE_PROJECT_NAME STREQUAL PROJECT_NAME)
include(CTest)
diff --git a/lib/ArduinoJson/LICENSE.txt b/lib/ArduinoJson/LICENSE.txt
index 56bb92b..782b05d 100644
--- a/lib/ArduinoJson/LICENSE.txt
+++ b/lib/ArduinoJson/LICENSE.txt
@@ -1,7 +1,7 @@
The MIT License (MIT)
---------------------
-Copyright © 2014-2024, Benoit BLANCHON
+Copyright © 2014-2025, Benoit BLANCHON
Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the “Software”), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions:
diff --git a/lib/ArduinoJson/appveyor.yml b/lib/ArduinoJson/appveyor.yml
index cdcadc1..6802e15 100644
--- a/lib/ArduinoJson/appveyor.yml
+++ b/lib/ArduinoJson/appveyor.yml
@@ -1,4 +1,4 @@
-version: 7.3.0.{build}
+version: 7.4.1.{build}
environment:
matrix:
- APPVEYOR_BUILD_WORKER_IMAGE: Visual Studio 2022
diff --git a/lib/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino b/lib/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino
index cd94064..32ad3a5 100644
--- a/lib/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino
+++ b/lib/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to store your project configuration in a file.
diff --git a/lib/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino b/lib/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino
index 1c20fe9..16e49dd 100644
--- a/lib/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino
+++ b/lib/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to use DeserializationOption::Filter
diff --git a/lib/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino b/lib/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino
index d67b885..ffbc9a1 100644
--- a/lib/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino
+++ b/lib/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to generate a JSON document with ArduinoJson.
diff --git a/lib/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino b/lib/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino
index 9315118..c2d3846 100644
--- a/lib/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino
+++ b/lib/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to parse a JSON document in an HTTP response.
diff --git a/lib/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino b/lib/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino
index 7220dcf..7b32616 100644
--- a/lib/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino
+++ b/lib/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to deserialize a JSON document with ArduinoJson.
diff --git a/lib/ArduinoJson/examples/JsonServer/JsonServer.ino b/lib/ArduinoJson/examples/JsonServer/JsonServer.ino
index d8b65c8..51fdf3c 100644
--- a/lib/ArduinoJson/examples/JsonServer/JsonServer.ino
+++ b/lib/ArduinoJson/examples/JsonServer/JsonServer.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to implement an HTTP server that sends a JSON document
diff --git a/lib/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino b/lib/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino
index 6a4e08f..d6ecb55 100644
--- a/lib/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino
+++ b/lib/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to send a JSON document to a UDP socket.
diff --git a/lib/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino b/lib/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino
index dd7d7b6..3649081 100644
--- a/lib/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino
+++ b/lib/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to deserialize a MessagePack document with
diff --git a/lib/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino b/lib/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino
index ffeb79e..729cb8b 100644
--- a/lib/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino
+++ b/lib/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows the different ways you can use Flash strings with
diff --git a/lib/ArduinoJson/examples/StringExample/StringExample.ino b/lib/ArduinoJson/examples/StringExample/StringExample.ino
index fb5f243..845df9d 100644
--- a/lib/ArduinoJson/examples/StringExample/StringExample.ino
+++ b/lib/ArduinoJson/examples/StringExample/StringExample.ino
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows the different ways you can use String with ArduinoJson.
diff --git a/lib/ArduinoJson/extras/ci/espidf/CMakeLists.txt b/lib/ArduinoJson/extras/ci/espidf/CMakeLists.txt
index 38d393d..6135701 100644
--- a/lib/ArduinoJson/extras/ci/espidf/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/ci/espidf/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
cmake_minimum_required(VERSION 3.5)
diff --git a/lib/ArduinoJson/extras/ci/espidf/main/CMakeLists.txt b/lib/ArduinoJson/extras/ci/espidf/main/CMakeLists.txt
index e32eb7c..bf22507 100644
--- a/lib/ArduinoJson/extras/ci/espidf/main/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/ci/espidf/main/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
idf_component_register(
diff --git a/lib/ArduinoJson/extras/ci/espidf/main/main.cpp b/lib/ArduinoJson/extras/ci/espidf/main/main.cpp
index f65aa39..436eb40 100644
--- a/lib/ArduinoJson/extras/ci/espidf/main/main.cpp
+++ b/lib/ArduinoJson/extras/ci/espidf/main/main.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/fuzzing/CMakeLists.txt b/lib/ArduinoJson/extras/fuzzing/CMakeLists.txt
index cc6e05d..42c9260 100644
--- a/lib/ArduinoJson/extras/fuzzing/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/fuzzing/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
set(CMAKE_CXX_STANDARD 11)
diff --git a/lib/ArduinoJson/extras/fuzzing/reproducer.cpp b/lib/ArduinoJson/extras/fuzzing/reproducer.cpp
index 1595a9a..beeb2df 100644
--- a/lib/ArduinoJson/extras/fuzzing/reproducer.cpp
+++ b/lib/ArduinoJson/extras/fuzzing/reproducer.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
// This file is NOT use by Google's OSS fuzz
diff --git a/lib/ArduinoJson/extras/scripts/wandbox/JsonGeneratorExample.cpp b/lib/ArduinoJson/extras/scripts/wandbox/JsonGeneratorExample.cpp
index 313f93b..2e08b4c 100644
--- a/lib/ArduinoJson/extras/scripts/wandbox/JsonGeneratorExample.cpp
+++ b/lib/ArduinoJson/extras/scripts/wandbox/JsonGeneratorExample.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to generate a JSON document with ArduinoJson.
diff --git a/lib/ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp b/lib/ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp
index cf653a4..1969cf2 100644
--- a/lib/ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp
+++ b/lib/ArduinoJson/extras/scripts/wandbox/JsonParserExample.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to deserialize a JSON document with ArduinoJson.
diff --git a/lib/ArduinoJson/extras/scripts/wandbox/MsgPackParserExample.cpp b/lib/ArduinoJson/extras/scripts/wandbox/MsgPackParserExample.cpp
index cb797aa..81e6822 100644
--- a/lib/ArduinoJson/extras/scripts/wandbox/MsgPackParserExample.cpp
+++ b/lib/ArduinoJson/extras/scripts/wandbox/MsgPackParserExample.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// This example shows how to generate a JSON document with ArduinoJson.
diff --git a/lib/ArduinoJson/extras/tests/CMakeLists.txt b/lib/ArduinoJson/extras/tests/CMakeLists.txt
index 212e31e..1b1f872 100644
--- a/lib/ArduinoJson/extras/tests/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
set(CMAKE_CXX_STANDARD 11)
diff --git a/lib/ArduinoJson/extras/tests/Cpp17/CMakeLists.txt b/lib/ArduinoJson/extras/tests/Cpp17/CMakeLists.txt
index ff5cc0e..8c566de 100644
--- a/lib/ArduinoJson/extras/tests/Cpp17/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/Cpp17/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
if(MSVC_VERSION LESS 1910)
diff --git a/lib/ArduinoJson/extras/tests/Cpp17/string_view.cpp b/lib/ArduinoJson/extras/tests/Cpp17/string_view.cpp
index 92e0a62..fb31084 100644
--- a/lib/ArduinoJson/extras/tests/Cpp17/string_view.cpp
+++ b/lib/ArduinoJson/extras/tests/Cpp17/string_view.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
// we expect ArduinoJson.h to include
diff --git a/lib/ArduinoJson/extras/tests/Cpp20/CMakeLists.txt b/lib/ArduinoJson/extras/tests/Cpp20/CMakeLists.txt
index 637af5c..6346d4d 100644
--- a/lib/ArduinoJson/extras/tests/Cpp20/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/Cpp20/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
if(MSVC_VERSION LESS 1910)
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/BasicJsonDocument.cpp b/lib/ArduinoJson/extras/tests/Deprecated/BasicJsonDocument.cpp
index 0b69aee..a350977 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/BasicJsonDocument.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/BasicJsonDocument.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -46,7 +46,7 @@ TEST_CASE("BasicJsonDocument") {
deserializeJson(doc, "{\"hello\":\"world\"}");
REQUIRE(doc.as() == "{\"hello\":\"world\"}");
doc.clear();
- REQUIRE(allocatorLog == "ARAARDDD");
+ REQUIRE(allocatorLog == "AARARDDD");
}
SECTION("copy") {
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/CMakeLists.txt b/lib/ArduinoJson/extras/tests/Deprecated/CMakeLists.txt
index c69fc44..bcf33e1 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/Deprecated/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
if(CMAKE_CXX_COMPILER_ID MATCHES "(GNU|Clang)")
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/DynamicJsonDocument.cpp b/lib/ArduinoJson/extras/tests/Deprecated/DynamicJsonDocument.cpp
index df9634b..7c6d44b 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/DynamicJsonDocument.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/DynamicJsonDocument.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/StaticJsonDocument.cpp b/lib/ArduinoJson/extras/tests/Deprecated/StaticJsonDocument.cpp
index 60ca6f2..39a363b 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/StaticJsonDocument.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/StaticJsonDocument.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/add.cpp b/lib/ArduinoJson/extras/tests/Deprecated/add.cpp
index de961d1..586e22b 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/add.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/add.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/containsKey.cpp b/lib/ArduinoJson/extras/tests/Deprecated/containsKey.cpp
index 846e98f..d001d40 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/containsKey.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/containsKey.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/createNestedArray.cpp b/lib/ArduinoJson/extras/tests/Deprecated/createNestedArray.cpp
index 6efbd88..858c022 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/createNestedArray.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/createNestedArray.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/createNestedObject.cpp b/lib/ArduinoJson/extras/tests/Deprecated/createNestedObject.cpp
index 8b73c8b..c035eb8 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/createNestedObject.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/createNestedObject.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/macros.cpp b/lib/ArduinoJson/extras/tests/Deprecated/macros.cpp
index 36610c7..2e73d5b 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/macros.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/macros.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/memoryUsage.cpp b/lib/ArduinoJson/extras/tests/Deprecated/memoryUsage.cpp
index 00b5bbb..89258f0 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/memoryUsage.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/memoryUsage.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Deprecated/shallowCopy.cpp b/lib/ArduinoJson/extras/tests/Deprecated/shallowCopy.cpp
index ab5d6c4..1f0d12e 100644
--- a/lib/ArduinoJson/extras/tests/Deprecated/shallowCopy.cpp
+++ b/lib/ArduinoJson/extras/tests/Deprecated/shallowCopy.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/FailingBuilds/CMakeLists.txt b/lib/ArduinoJson/extras/tests/FailingBuilds/CMakeLists.txt
index ebe15f8..08dbe52 100644
--- a/lib/ArduinoJson/extras/tests/FailingBuilds/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/FailingBuilds/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
macro(add_failing_build source_file)
diff --git a/lib/ArduinoJson/extras/tests/FailingBuilds/Issue978.cpp b/lib/ArduinoJson/extras/tests/FailingBuilds/Issue978.cpp
index 2ebbf94..3b9ec95 100644
--- a/lib/ArduinoJson/extras/tests/FailingBuilds/Issue978.cpp
+++ b/lib/ArduinoJson/extras/tests/FailingBuilds/Issue978.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/FailingBuilds/assign_char.cpp b/lib/ArduinoJson/extras/tests/FailingBuilds/assign_char.cpp
index b565376..888d23c 100644
--- a/lib/ArduinoJson/extras/tests/FailingBuilds/assign_char.cpp
+++ b/lib/ArduinoJson/extras/tests/FailingBuilds/assign_char.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/FailingBuilds/deserialize_object.cpp b/lib/ArduinoJson/extras/tests/FailingBuilds/deserialize_object.cpp
index 04845cd..b9313ed 100644
--- a/lib/ArduinoJson/extras/tests/FailingBuilds/deserialize_object.cpp
+++ b/lib/ArduinoJson/extras/tests/FailingBuilds/deserialize_object.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/FailingBuilds/read_long_long.cpp b/lib/ArduinoJson/extras/tests/FailingBuilds/read_long_long.cpp
index 7577698..daf1f40 100644
--- a/lib/ArduinoJson/extras/tests/FailingBuilds/read_long_long.cpp
+++ b/lib/ArduinoJson/extras/tests/FailingBuilds/read_long_long.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_USE_LONG_LONG 0
diff --git a/lib/ArduinoJson/extras/tests/FailingBuilds/variant_as_char.cpp b/lib/ArduinoJson/extras/tests/FailingBuilds/variant_as_char.cpp
index 37685a6..b1e86ee 100644
--- a/lib/ArduinoJson/extras/tests/FailingBuilds/variant_as_char.cpp
+++ b/lib/ArduinoJson/extras/tests/FailingBuilds/variant_as_char.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/FailingBuilds/write_long_long.cpp b/lib/ArduinoJson/extras/tests/FailingBuilds/write_long_long.cpp
index a8d1460..4aee656 100644
--- a/lib/ArduinoJson/extras/tests/FailingBuilds/write_long_long.cpp
+++ b/lib/ArduinoJson/extras/tests/FailingBuilds/write_long_long.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_USE_LONG_LONG 0
diff --git a/lib/ArduinoJson/extras/tests/Helpers/Allocators.hpp b/lib/ArduinoJson/extras/tests/Helpers/Allocators.hpp
index a551c31..17e05ca 100644
--- a/lib/ArduinoJson/extras/tests/Helpers/Allocators.hpp
+++ b/lib/ArduinoJson/extras/tests/Helpers/Allocators.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/extras/tests/Helpers/Arduino.h b/lib/ArduinoJson/extras/tests/Helpers/Arduino.h
index 4b8c27c..d12f872 100644
--- a/lib/ArduinoJson/extras/tests/Helpers/Arduino.h
+++ b/lib/ArduinoJson/extras/tests/Helpers/Arduino.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/extras/tests/Helpers/CustomReader.hpp b/lib/ArduinoJson/extras/tests/Helpers/CustomReader.hpp
index 66350a7..76a5138 100644
--- a/lib/ArduinoJson/extras/tests/Helpers/CustomReader.hpp
+++ b/lib/ArduinoJson/extras/tests/Helpers/CustomReader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/extras/tests/Helpers/Literals.hpp b/lib/ArduinoJson/extras/tests/Helpers/Literals.hpp
index 59164cf..07c079d 100644
--- a/lib/ArduinoJson/extras/tests/Helpers/Literals.hpp
+++ b/lib/ArduinoJson/extras/tests/Helpers/Literals.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/extras/tests/Helpers/api/Print.h b/lib/ArduinoJson/extras/tests/Helpers/api/Print.h
index c9ec191..cdf05bb 100644
--- a/lib/ArduinoJson/extras/tests/Helpers/api/Print.h
+++ b/lib/ArduinoJson/extras/tests/Helpers/api/Print.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -13,21 +13,21 @@ class Print {
virtual ~Print() {}
virtual size_t write(uint8_t) = 0;
- virtual size_t write(const uint8_t *buffer, size_t size) = 0;
+ virtual size_t write(const uint8_t* buffer, size_t size) = 0;
- size_t write(const char *str) {
+ size_t write(const char* str) {
if (!str)
return 0;
- return write(reinterpret_cast(str), strlen(str));
+ return write(reinterpret_cast(str), strlen(str));
}
- size_t write(const char *buffer, size_t size) {
- return write(reinterpret_cast(buffer), size);
+ size_t write(const char* buffer, size_t size) {
+ return write(reinterpret_cast(buffer), size);
}
};
class Printable {
public:
virtual ~Printable() {}
- virtual size_t printTo(Print &p) const = 0;
+ virtual size_t printTo(Print& p) const = 0;
};
diff --git a/lib/ArduinoJson/extras/tests/Helpers/api/Stream.h b/lib/ArduinoJson/extras/tests/Helpers/api/Stream.h
index 2cd4651..64b9eaf 100644
--- a/lib/ArduinoJson/extras/tests/Helpers/api/Stream.h
+++ b/lib/ArduinoJson/extras/tests/Helpers/api/Stream.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -10,5 +10,5 @@ class Stream // : public Print
public:
virtual ~Stream() {}
virtual int read() = 0;
- virtual size_t readBytes(char *buffer, size_t length) = 0;
+ virtual size_t readBytes(char* buffer, size_t length) = 0;
};
diff --git a/lib/ArduinoJson/extras/tests/Helpers/api/String.h b/lib/ArduinoJson/extras/tests/Helpers/api/String.h
index 2e8fdfe..1841610 100644
--- a/lib/ArduinoJson/extras/tests/Helpers/api/String.h
+++ b/lib/ArduinoJson/extras/tests/Helpers/api/String.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/extras/tests/Helpers/avr/pgmspace.h b/lib/ArduinoJson/extras/tests/Helpers/avr/pgmspace.h
index 2cdd182..8cbf44e 100644
--- a/lib/ArduinoJson/extras/tests/Helpers/avr/pgmspace.h
+++ b/lib/ArduinoJson/extras/tests/Helpers/avr/pgmspace.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/extras/tests/IntegrationTests/CMakeLists.txt b/lib/ArduinoJson/extras/tests/IntegrationTests/CMakeLists.txt
index adc0ebf..d3e4004 100644
--- a/lib/ArduinoJson/extras/tests/IntegrationTests/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/IntegrationTests/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(IntegrationTests
diff --git a/lib/ArduinoJson/extras/tests/IntegrationTests/gbathree.cpp b/lib/ArduinoJson/extras/tests/IntegrationTests/gbathree.cpp
index db649aa..fead9ff 100644
--- a/lib/ArduinoJson/extras/tests/IntegrationTests/gbathree.cpp
+++ b/lib/ArduinoJson/extras/tests/IntegrationTests/gbathree.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/IntegrationTests/issue772.cpp b/lib/ArduinoJson/extras/tests/IntegrationTests/issue772.cpp
index 57e0b2c..e81cf40 100644
--- a/lib/ArduinoJson/extras/tests/IntegrationTests/issue772.cpp
+++ b/lib/ArduinoJson/extras/tests/IntegrationTests/issue772.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/IntegrationTests/openweathermap.cpp b/lib/ArduinoJson/extras/tests/IntegrationTests/openweathermap.cpp
index 2d55b54..34dbba2 100644
--- a/lib/ArduinoJson/extras/tests/IntegrationTests/openweathermap.cpp
+++ b/lib/ArduinoJson/extras/tests/IntegrationTests/openweathermap.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/IntegrationTests/round_trip.cpp b/lib/ArduinoJson/extras/tests/IntegrationTests/round_trip.cpp
index 4fd5d2d..54bd6f4 100644
--- a/lib/ArduinoJson/extras/tests/IntegrationTests/round_trip.cpp
+++ b/lib/ArduinoJson/extras/tests/IntegrationTests/round_trip.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonArray/CMakeLists.txt
index 2ee1a34..0b8a562 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonArray/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonArrayTests
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/add.cpp b/lib/ArduinoJson/extras/tests/JsonArray/add.cpp
index f1ca5f2..0983e3b 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/add.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/add.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/clear.cpp b/lib/ArduinoJson/extras/tests/JsonArray/clear.cpp
index 8ac4548..069376d 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/clear.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/clear.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/compare.cpp b/lib/ArduinoJson/extras/tests/JsonArray/compare.cpp
index b18bcda..23f2ea9 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/compare.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/compare.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/copyArray.cpp b/lib/ArduinoJson/extras/tests/JsonArray/copyArray.cpp
index a82a6f8..dd31cf6 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/copyArray.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/copyArray.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/equals.cpp b/lib/ArduinoJson/extras/tests/JsonArray/equals.cpp
index 4f5af46..241aa71 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/equals.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/equals.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/isNull.cpp b/lib/ArduinoJson/extras/tests/JsonArray/isNull.cpp
index dc22f4b..77f1512 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/isNull.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/isNull.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/iterator.cpp b/lib/ArduinoJson/extras/tests/JsonArray/iterator.cpp
index 8158975..f6bb3ef 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/iterator.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/iterator.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/nesting.cpp b/lib/ArduinoJson/extras/tests/JsonArray/nesting.cpp
index a49b01c..434c418 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/nesting.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/nesting.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/remove.cpp b/lib/ArduinoJson/extras/tests/JsonArray/remove.cpp
index 82e3bab..8691171 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/remove.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/remove.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/size.cpp b/lib/ArduinoJson/extras/tests/JsonArray/size.cpp
index 599b37c..63bf55d 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/size.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/size.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/subscript.cpp b/lib/ArduinoJson/extras/tests/JsonArray/subscript.cpp
index 40b1736..fa0400c 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/subscript.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/subscript.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArray/unbound.cpp b/lib/ArduinoJson/extras/tests/JsonArray/unbound.cpp
index 21d4ebf..ba80018 100644
--- a/lib/ArduinoJson/extras/tests/JsonArray/unbound.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArray/unbound.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArrayConst/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonArrayConst/CMakeLists.txt
index 8608a89..4d69c71 100644
--- a/lib/ArduinoJson/extras/tests/JsonArrayConst/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonArrayConst/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonArrayConstTests
diff --git a/lib/ArduinoJson/extras/tests/JsonArrayConst/equals.cpp b/lib/ArduinoJson/extras/tests/JsonArrayConst/equals.cpp
index ba60d38..de939cc 100644
--- a/lib/ArduinoJson/extras/tests/JsonArrayConst/equals.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArrayConst/equals.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArrayConst/isNull.cpp b/lib/ArduinoJson/extras/tests/JsonArrayConst/isNull.cpp
index 26b64ae..d443a73 100644
--- a/lib/ArduinoJson/extras/tests/JsonArrayConst/isNull.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArrayConst/isNull.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArrayConst/iterator.cpp b/lib/ArduinoJson/extras/tests/JsonArrayConst/iterator.cpp
index 5eeb56a..0907af7 100644
--- a/lib/ArduinoJson/extras/tests/JsonArrayConst/iterator.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArrayConst/iterator.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArrayConst/nesting.cpp b/lib/ArduinoJson/extras/tests/JsonArrayConst/nesting.cpp
index 860754a..547d5d4 100644
--- a/lib/ArduinoJson/extras/tests/JsonArrayConst/nesting.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArrayConst/nesting.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArrayConst/size.cpp b/lib/ArduinoJson/extras/tests/JsonArrayConst/size.cpp
index a59551a..4bf000f 100644
--- a/lib/ArduinoJson/extras/tests/JsonArrayConst/size.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArrayConst/size.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonArrayConst/subscript.cpp b/lib/ArduinoJson/extras/tests/JsonArrayConst/subscript.cpp
index 28512b2..907cf31 100644
--- a/lib/ArduinoJson/extras/tests/JsonArrayConst/subscript.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonArrayConst/subscript.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonDeserializer/CMakeLists.txt
index a503f45..6faaaa8 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonDeserializerTests
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/DeserializationError.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/DeserializationError.cpp
index 17c8c40..edfcd3a 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/DeserializationError.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/DeserializationError.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/array.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/array.cpp
index f61083d..e6fb18d 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/array.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/array.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/destination_types.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/destination_types.cpp
index dc5c012..0f96b23 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/destination_types.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/destination_types.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/errors.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/errors.cpp
index 0c2444e..35d3ca3 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/errors.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/errors.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_DECODE_UNICODE 1
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/filter.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/filter.cpp
index 894df75..4f9d9b9 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/filter.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/filter.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_ENABLE_COMMENTS 1
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/input_types.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/input_types.cpp
index a8a9e56..e750fd6 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/input_types.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/input_types.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -26,8 +26,8 @@ TEST_CASE("deserializeJson(char*)") {
REQUIRE(spy.log() ==
AllocatorLog{
Allocate(sizeofStringBuffer()),
- Reallocate(sizeofStringBuffer(), sizeofString("hello")),
Allocate(sizeofPool()),
+ Reallocate(sizeofStringBuffer(), sizeofString("hello")),
Allocate(sizeofStringBuffer()),
Reallocate(sizeofStringBuffer(), sizeofString("world")),
Reallocate(sizeofPool(), sizeofObject(1)),
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/misc.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/misc.cpp
index cc5d10f..c13956b 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/misc.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/misc.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/nestingLimit.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/nestingLimit.cpp
index cd11841..07f8f19 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/nestingLimit.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/nestingLimit.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/number.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/number.cpp
index 5359573..a74e50b 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/number.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/number.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_USE_LONG_LONG 0
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/object.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/object.cpp
index 9f0aecb..34b357a 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/object.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/object.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -292,22 +292,23 @@ TEST_CASE("deserialize JSON object") {
}
SECTION("Repeated key") {
- DeserializationError err = deserializeJson(doc, "{a:{b:{c:1}},a:2}");
+ DeserializationError err =
+ deserializeJson(doc, "{alfa:{bravo:{charlie:1}},alfa:2}");
REQUIRE(err == DeserializationError::Ok);
- REQUIRE(doc.as() == "{\"a\":2}");
+ REQUIRE(doc.as() == "{\"alfa\":2}");
REQUIRE(spy.log() ==
AllocatorLog{
Allocate(sizeofStringBuffer()),
- Reallocate(sizeofStringBuffer(), sizeofString("a")),
Allocate(sizeofPool()),
+ Reallocate(sizeofStringBuffer(), sizeofString("alfa")),
Allocate(sizeofStringBuffer()),
- Reallocate(sizeofStringBuffer(), sizeofString("b")),
+ Reallocate(sizeofStringBuffer(), sizeofString("bravo")),
Allocate(sizeofStringBuffer()),
- Reallocate(sizeofStringBuffer(), sizeofString("c")),
+ Reallocate(sizeofStringBuffer(), sizeofString("charlie")),
Allocate(sizeofStringBuffer()),
- Deallocate(sizeofString("b")),
- Deallocate(sizeofString("c")),
+ Deallocate(sizeofString("bravo")),
+ Deallocate(sizeofString("charlie")),
Deallocate(sizeofStringBuffer()),
Reallocate(sizeofPool(), sizeofObject(2) + sizeofObject(1)),
});
@@ -378,7 +379,7 @@ TEST_CASE("deserialize JSON object under memory constraints") {
}
SECTION("pool allocation fails") {
- timebomb.setCountdown(2);
+ timebomb.setCountdown(1);
char input[] = "{\"a\":1}";
DeserializationError err = deserializeJson(doc, input);
@@ -389,11 +390,11 @@ TEST_CASE("deserialize JSON object under memory constraints") {
SECTION("string allocation fails") {
timebomb.setCountdown(3);
- char input[] = "{\"a\":\"b\"}";
+ char input[] = "{\"alfa\":\"bravo\"}";
DeserializationError err = deserializeJson(doc, input);
REQUIRE(err == DeserializationError::NoMemory);
- REQUIRE(doc.as() == "{\"a\":null}");
+ REQUIRE(doc.as() == "{\"alfa\":null}");
}
}
diff --git a/lib/ArduinoJson/extras/tests/JsonDeserializer/string.cpp b/lib/ArduinoJson/extras/tests/JsonDeserializer/string.cpp
index a760ae6..5ad8678 100644
--- a/lib/ArduinoJson/extras/tests/JsonDeserializer/string.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDeserializer/string.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_DECODE_UNICODE 1
@@ -133,8 +133,8 @@ TEST_CASE("Allocation of the key fails") {
REQUIRE(spy.log() ==
AllocatorLog{
Allocate(sizeofStringBuffer()),
- Reallocate(sizeofStringBuffer(), sizeofString("hello")),
Allocate(sizeofPool()),
+ Reallocate(sizeofStringBuffer(), sizeofString("hello")),
AllocateFail(sizeofStringBuffer()),
ReallocateFail(sizeofPool(), sizeofObject(1)),
});
@@ -155,8 +155,8 @@ TEST_CASE("Allocation of the key fails") {
REQUIRE(spy.log() ==
AllocatorLog{
Allocate(sizeofStringBuffer()),
- Reallocate(sizeofStringBuffer(), sizeofString("hello")),
Allocate(sizeofPool()),
+ Reallocate(sizeofStringBuffer(), sizeofString("hello")),
AllocateFail(sizeofStringBuffer()),
ReallocateFail(sizeofPool(), sizeofObject(1)),
});
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonDocument/CMakeLists.txt
index e85db02..dc8036a 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonDocumentTests
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/ElementProxy.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/ElementProxy.cpp
index 387dc88..9cf8855 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/ElementProxy.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/ElementProxy.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/MemberProxy.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/MemberProxy.cpp
index 4eb7468..c42edcc 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/MemberProxy.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/MemberProxy.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/add.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/add.cpp
index 8a1c48e..da898e6 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/add.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/add.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_ENABLE_ARDUINO_STRING 1
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/assignment.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/assignment.cpp
index 58a8391..4e59584 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/assignment.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/assignment.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/cast.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/cast.cpp
index 05c9ee7..0bb9caa 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/cast.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/cast.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/clear.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/clear.cpp
index 3b9f6ee..98d2499 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/clear.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/clear.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/compare.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/compare.cpp
index a1b8ef2..da7af58 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/compare.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/compare.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/constructor.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/constructor.cpp
index 239b3bf..1eaec20 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/constructor.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/constructor.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/isNull.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/isNull.cpp
index 219c306..d030842 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/isNull.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/isNull.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/nesting.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/nesting.cpp
index 4f4a3a5..2fb86e1 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/nesting.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/nesting.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/overflowed.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/overflowed.cpp
index 9dfa83f..44003eb 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/overflowed.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/overflowed.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/remove.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/remove.cpp
index 1656a4d..f017bb9 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/remove.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/remove.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/set.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/set.cpp
index 1205acf..88c33bb 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/set.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/set.cpp
@@ -87,6 +87,13 @@ TEST_CASE("JsonDocument::set()") {
});
}
+ SECTION("Flash tiny string") { // issue #2170
+ doc.set(F("abc"));
+
+ REQUIRE(doc.as() == "abc"_s);
+ REQUIRE(spy.log() == AllocatorLog{});
+ }
+
#ifdef HAS_VARIABLE_LENGTH_ARRAY
SECTION("VLA") {
size_t i = 16;
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/shrinkToFit.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/shrinkToFit.cpp
index 91b9d91..148b552 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/shrinkToFit.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/shrinkToFit.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/size.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/size.cpp
index 53af226..fad6584 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/size.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/size.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonDocument/subscript.cpp b/lib/ArduinoJson/extras/tests/JsonDocument/subscript.cpp
index 2150d15..17bdcc2 100644
--- a/lib/ArduinoJson/extras/tests/JsonDocument/subscript.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonDocument/subscript.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonObject/CMakeLists.txt
index 60ba1fe..3f44d98 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonObject/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonObjectTests
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/clear.cpp b/lib/ArduinoJson/extras/tests/JsonObject/clear.cpp
index 6673d1c..f6f8a22 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/clear.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/clear.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/compare.cpp b/lib/ArduinoJson/extras/tests/JsonObject/compare.cpp
index 0c3ff7e..faa0cbd 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/compare.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/compare.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/equals.cpp b/lib/ArduinoJson/extras/tests/JsonObject/equals.cpp
index 0ec4673..4a594a7 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/equals.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/equals.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/isNull.cpp b/lib/ArduinoJson/extras/tests/JsonObject/isNull.cpp
index 51f7880..8ddb51c 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/isNull.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/isNull.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/iterator.cpp b/lib/ArduinoJson/extras/tests/JsonObject/iterator.cpp
index 4918d27..e22d72a 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/iterator.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/iterator.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/nesting.cpp b/lib/ArduinoJson/extras/tests/JsonObject/nesting.cpp
index 39c26fa..a3fdaea 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/nesting.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/nesting.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/remove.cpp b/lib/ArduinoJson/extras/tests/JsonObject/remove.cpp
index 4c3e35d..052433d 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/remove.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/remove.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/set.cpp b/lib/ArduinoJson/extras/tests/JsonObject/set.cpp
index bad0674..e5c3044 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/set.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/set.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -100,13 +100,13 @@ TEST_CASE("JsonObject::set()") {
JsonDocument doc3(&timebomb);
JsonObject obj3 = doc3.to();
- obj1["a"_s] = 1;
- obj1["b"_s] = 2;
+ obj1["alpha"_s] = 1;
+ obj1["beta"_s] = 2;
bool success = obj3.set(obj1);
REQUIRE(success == false);
- REQUIRE(doc3.as() == "{\"a\":1}");
+ REQUIRE(doc3.as() == "{\"alpha\":1}");
}
SECTION("copy fails in the middle of an array") {
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/size.cpp b/lib/ArduinoJson/extras/tests/JsonObject/size.cpp
index 5f48645..5c5258e 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/size.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/size.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/std_string.cpp b/lib/ArduinoJson/extras/tests/JsonObject/std_string.cpp
index 85ca300..82b87b9 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/std_string.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/std_string.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/subscript.cpp b/lib/ArduinoJson/extras/tests/JsonObject/subscript.cpp
index 0acc01e..bdf900f 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/subscript.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/subscript.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObject/unbound.cpp b/lib/ArduinoJson/extras/tests/JsonObject/unbound.cpp
index cb2b687..0300502 100644
--- a/lib/ArduinoJson/extras/tests/JsonObject/unbound.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObject/unbound.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObjectConst/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonObjectConst/CMakeLists.txt
index 447e239..9eb1144 100644
--- a/lib/ArduinoJson/extras/tests/JsonObjectConst/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonObjectConst/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonObjectConstTests
diff --git a/lib/ArduinoJson/extras/tests/JsonObjectConst/equals.cpp b/lib/ArduinoJson/extras/tests/JsonObjectConst/equals.cpp
index 0efa3cf..c1ad6ff 100644
--- a/lib/ArduinoJson/extras/tests/JsonObjectConst/equals.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObjectConst/equals.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObjectConst/isNull.cpp b/lib/ArduinoJson/extras/tests/JsonObjectConst/isNull.cpp
index c689cce..c88b9d7 100644
--- a/lib/ArduinoJson/extras/tests/JsonObjectConst/isNull.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObjectConst/isNull.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObjectConst/iterator.cpp b/lib/ArduinoJson/extras/tests/JsonObjectConst/iterator.cpp
index 0ad911e..3b474f4 100644
--- a/lib/ArduinoJson/extras/tests/JsonObjectConst/iterator.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObjectConst/iterator.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObjectConst/nesting.cpp b/lib/ArduinoJson/extras/tests/JsonObjectConst/nesting.cpp
index 7bddd8f..6d72cdf 100644
--- a/lib/ArduinoJson/extras/tests/JsonObjectConst/nesting.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObjectConst/nesting.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObjectConst/size.cpp b/lib/ArduinoJson/extras/tests/JsonObjectConst/size.cpp
index 25de11a..10e1e13 100644
--- a/lib/ArduinoJson/extras/tests/JsonObjectConst/size.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObjectConst/size.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonObjectConst/subscript.cpp b/lib/ArduinoJson/extras/tests/JsonObjectConst/subscript.cpp
index 59714c0..d611b3c 100644
--- a/lib/ArduinoJson/extras/tests/JsonObjectConst/subscript.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonObjectConst/subscript.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonSerializer/CMakeLists.txt
index 8a6b19f..28ba51e 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonSerializerTests
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/CustomWriter.cpp b/lib/ArduinoJson/extras/tests/JsonSerializer/CustomWriter.cpp
index 002aa57..8e7f1de 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/CustomWriter.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/CustomWriter.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonArray.cpp b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonArray.cpp
index b4bf838..f33c152 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonArray.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonArray.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonArrayPretty.cpp b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonArrayPretty.cpp
index ede368c..7939bd9 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonArrayPretty.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonArrayPretty.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonObject.cpp b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonObject.cpp
index 7078886..c21d16d 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonObject.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonObject.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonObjectPretty.cpp b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonObjectPretty.cpp
index 01d7377..24e32fb 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonObjectPretty.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonObjectPretty.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonVariant.cpp b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonVariant.cpp
index 1ddaea6..dcb8aee 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/JsonVariant.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/JsonVariant.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/std_stream.cpp b/lib/ArduinoJson/extras/tests/JsonSerializer/std_stream.cpp
index 5fd89b9..28fd6f7 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/std_stream.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/std_stream.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonSerializer/std_string.cpp b/lib/ArduinoJson/extras/tests/JsonSerializer/std_string.cpp
index 33b8f50..0d23429 100644
--- a/lib/ArduinoJson/extras/tests/JsonSerializer/std_string.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonSerializer/std_string.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonVariant/CMakeLists.txt
index 282e6ce..6aec75f 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonVariantTests
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/add.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/add.cpp
index a81d792..3aaa724 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/add.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/add.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/as.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/as.cpp
index bfdea04..b123572 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/as.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/as.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -183,6 +183,7 @@ TEST_CASE("JsonVariant::as()") {
variant.set("42");
REQUIRE(variant.as() == 42L);
+ REQUIRE(variant.as() == 42);
REQUIRE(variant.as() == "42");
REQUIRE(variant.as().isStatic() == true);
}
@@ -198,7 +199,7 @@ TEST_CASE("JsonVariant::as()") {
REQUIRE(variant.as() == "hello");
}
- SECTION("set(std::string(\"4.2\"))") {
+ SECTION("set(std::string(\"4.2\")) (tiny string optimization)") {
variant.set("4.2"_s);
REQUIRE(variant.as() == true);
@@ -210,6 +211,18 @@ TEST_CASE("JsonVariant::as()") {
REQUIRE(variant.as().isStatic() == false);
}
+ SECTION("set(std::string(\"123.45\"))") {
+ variant.set("123.45"_s);
+
+ REQUIRE(variant.as() == true);
+ REQUIRE(variant.as() == 123L);
+ REQUIRE(variant.as() == Approx(123.45));
+ REQUIRE(variant.as() == "123.45"_s);
+ REQUIRE(variant.as() == "123.45"_s);
+ REQUIRE(variant.as() == "123.45");
+ REQUIRE(variant.as().isStatic() == false);
+ }
+
SECTION("set(\"true\")") {
variant.set("true");
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/clear.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/clear.cpp
index 8e292d2..6078d6b 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/clear.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/clear.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/compare.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/compare.cpp
index de7ced7..719566e 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/compare.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/compare.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/converters.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/converters.cpp
index 545c4be..10d7385 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/converters.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/converters.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/copy.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/copy.cpp
index 7a52c2e..b5da71f 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/copy.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/copy.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/is.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/is.cpp
index 4d07034..9e38b7b 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/is.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/is.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/isnull.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/isnull.cpp
index 75617e9..7683eb8 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/isnull.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/isnull.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/misc.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/misc.cpp
index 4b39cf8..6298344 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/misc.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/misc.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/nesting.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/nesting.cpp
index f2a703f..cb4e351 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/nesting.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/nesting.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/or.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/or.cpp
index 937a0cf..5886899 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/or.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/or.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/overflow.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/overflow.cpp
index 744805f..00dbed7 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/overflow.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/overflow.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/remove.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/remove.cpp
index 3371c2e..2926cfe 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/remove.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/remove.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/set.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/set.cpp
index b71c001..7d56818 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/set.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/set.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -63,6 +63,18 @@ TEST_CASE("JsonVariant::set() when there is enough memory") {
});
}
+ SECTION("char* (tiny string optimization)") {
+ char str[16];
+
+ strcpy(str, "abc");
+ bool result = variant.set(str);
+ strcpy(str, "def");
+
+ REQUIRE(result == true);
+ REQUIRE(variant == "abc"); // stores by copy
+ REQUIRE(spy.log() == AllocatorLog{});
+ }
+
SECTION("(char*)0") {
bool result = variant.set(static_cast(0));
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/size.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/size.cpp
index 2f8e8a7..e0c5bb4 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/size.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/size.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/stl_containers.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/stl_containers.cpp
index 6ffa580..53a23fd 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/stl_containers.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/stl_containers.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/subscript.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/subscript.cpp
index 7c3d1e4..0f9509c 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/subscript.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/subscript.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/types.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/types.cpp
index b04c91f..26a6265 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/types.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/types.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariant/unbound.cpp b/lib/ArduinoJson/extras/tests/JsonVariant/unbound.cpp
index 0f1740b..a19a8c4 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariant/unbound.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariant/unbound.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariantConst/CMakeLists.txt b/lib/ArduinoJson/extras/tests/JsonVariantConst/CMakeLists.txt
index b943f16..1cff558 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariantConst/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/JsonVariantConst/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(JsonVariantConstTests
diff --git a/lib/ArduinoJson/extras/tests/JsonVariantConst/as.cpp b/lib/ArduinoJson/extras/tests/JsonVariantConst/as.cpp
index 5ef1563..8584ff5 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariantConst/as.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariantConst/as.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariantConst/is.cpp b/lib/ArduinoJson/extras/tests/JsonVariantConst/is.cpp
index 24f9326..32c16ac 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariantConst/is.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariantConst/is.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariantConst/isnull.cpp b/lib/ArduinoJson/extras/tests/JsonVariantConst/isnull.cpp
index 14572c7..30996db 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariantConst/isnull.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariantConst/isnull.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariantConst/nesting.cpp b/lib/ArduinoJson/extras/tests/JsonVariantConst/nesting.cpp
index 827f766..4f035db 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariantConst/nesting.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariantConst/nesting.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariantConst/size.cpp b/lib/ArduinoJson/extras/tests/JsonVariantConst/size.cpp
index c047951..9a6943e 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariantConst/size.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariantConst/size.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/JsonVariantConst/subscript.cpp b/lib/ArduinoJson/extras/tests/JsonVariantConst/subscript.cpp
index a207c53..281e3d9 100644
--- a/lib/ArduinoJson/extras/tests/JsonVariantConst/subscript.cpp
+++ b/lib/ArduinoJson/extras/tests/JsonVariantConst/subscript.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/CMakeLists.txt b/lib/ArduinoJson/extras/tests/Misc/CMakeLists.txt
index 4230a9c..05be1ca 100644
--- a/lib/ArduinoJson/extras/tests/Misc/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/Misc/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(MiscTests
@@ -7,6 +7,7 @@ add_executable(MiscTests
conflicts.cpp
issue1967.cpp
issue2129.cpp
+ issue2166.cpp
JsonString.cpp
NoArduinoHeader.cpp
printable.cpp
diff --git a/lib/ArduinoJson/extras/tests/Misc/JsonString.cpp b/lib/ArduinoJson/extras/tests/Misc/JsonString.cpp
index 3a33677..a66f771 100644
--- a/lib/ArduinoJson/extras/tests/Misc/JsonString.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/JsonString.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/NoArduinoHeader.cpp b/lib/ArduinoJson/extras/tests/Misc/NoArduinoHeader.cpp
index b589127..efcd8e4 100644
--- a/lib/ArduinoJson/extras/tests/Misc/NoArduinoHeader.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/NoArduinoHeader.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINO 1
diff --git a/lib/ArduinoJson/extras/tests/Misc/Readers.cpp b/lib/ArduinoJson/extras/tests/Misc/Readers.cpp
index ffb6355..4077243 100644
--- a/lib/ArduinoJson/extras/tests/Misc/Readers.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/Readers.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/StringAdapters.cpp b/lib/ArduinoJson/extras/tests/Misc/StringAdapters.cpp
index 71e458b..9917897 100644
--- a/lib/ArduinoJson/extras/tests/Misc/StringAdapters.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/StringAdapters.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -128,6 +128,7 @@ TEST_CASE("IsString") {
CHECK(IsString::value == true);
CHECK(IsString::value == true);
CHECK(IsString::value == true);
+ CHECK(IsString::value == true);
CHECK(IsString<::String>::value == true);
CHECK(IsString<::StringSumHelper>::value == true);
CHECK(IsString::value == false);
diff --git a/lib/ArduinoJson/extras/tests/Misc/StringWriter.cpp b/lib/ArduinoJson/extras/tests/Misc/StringWriter.cpp
index 3bf60ec..6c22720 100644
--- a/lib/ArduinoJson/extras/tests/Misc/StringWriter.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/StringWriter.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/TypeTraits.cpp b/lib/ArduinoJson/extras/tests/Misc/TypeTraits.cpp
index 5d08106..4fad799 100644
--- a/lib/ArduinoJson/extras/tests/Misc/TypeTraits.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/TypeTraits.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/Utf16.cpp b/lib/ArduinoJson/extras/tests/Misc/Utf16.cpp
index 4b19fdb..39fbe3c 100644
--- a/lib/ArduinoJson/extras/tests/Misc/Utf16.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/Utf16.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/Utf8.cpp b/lib/ArduinoJson/extras/tests/Misc/Utf8.cpp
index 3a60281..740046d 100644
--- a/lib/ArduinoJson/extras/tests/Misc/Utf8.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/Utf8.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/arithmeticCompare.cpp b/lib/ArduinoJson/extras/tests/Misc/arithmeticCompare.cpp
index a879500..e955194 100644
--- a/lib/ArduinoJson/extras/tests/Misc/arithmeticCompare.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/arithmeticCompare.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/conflicts.cpp b/lib/ArduinoJson/extras/tests/Misc/conflicts.cpp
index 5ce6823..a00d019 100644
--- a/lib/ArduinoJson/extras/tests/Misc/conflicts.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/conflicts.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
// Include any header that might use the conflicting macros
diff --git a/lib/ArduinoJson/extras/tests/Misc/custom_string.hpp b/lib/ArduinoJson/extras/tests/Misc/custom_string.hpp
index 9be1f54..9982040 100644
--- a/lib/ArduinoJson/extras/tests/Misc/custom_string.hpp
+++ b/lib/ArduinoJson/extras/tests/Misc/custom_string.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/extras/tests/Misc/issue1967.cpp b/lib/ArduinoJson/extras/tests/Misc/issue1967.cpp
index 833fcf0..bb067f0 100644
--- a/lib/ArduinoJson/extras/tests/Misc/issue1967.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/issue1967.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
// we expect ArduinoJson.h to include
diff --git a/lib/ArduinoJson/extras/tests/Misc/issue2129.cpp b/lib/ArduinoJson/extras/tests/Misc/issue2129.cpp
index 8b336f2..022e232 100644
--- a/lib/ArduinoJson/extras/tests/Misc/issue2129.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/issue2129.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/issue2166.cpp b/lib/ArduinoJson/extras/tests/Misc/issue2166.cpp
new file mode 100644
index 0000000..f068bd6
--- /dev/null
+++ b/lib/ArduinoJson/extras/tests/Misc/issue2166.cpp
@@ -0,0 +1,22 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright © 2014-2025, Benoit BLANCHON
+// MIT License
+
+#include
+#include
+
+struct CCLASS {
+ static const char mszKey[];
+};
+
+TEST_CASE("Issue #2166") {
+ JsonDocument doc;
+ doc[CCLASS::mszKey] = 12;
+ REQUIRE(doc.as() == "{\"test3\":12}");
+
+ JsonObject obj = doc.to();
+ obj[CCLASS::mszKey] = 12;
+ REQUIRE(doc.as() == "{\"test3\":12}");
+}
+
+const char CCLASS::mszKey[] = "test3";
diff --git a/lib/ArduinoJson/extras/tests/Misc/printable.cpp b/lib/ArduinoJson/extras/tests/Misc/printable.cpp
index 6062cce..3e20a5b 100644
--- a/lib/ArduinoJson/extras/tests/Misc/printable.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/printable.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/unsigned_char.cpp b/lib/ArduinoJson/extras/tests/Misc/unsigned_char.cpp
index a1bb155..3e95027 100644
--- a/lib/ArduinoJson/extras/tests/Misc/unsigned_char.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/unsigned_char.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/version.cpp b/lib/ArduinoJson/extras/tests/Misc/version.cpp
index 2256fd2..136dbf3 100644
--- a/lib/ArduinoJson/extras/tests/Misc/version.cpp
+++ b/lib/ArduinoJson/extras/tests/Misc/version.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Misc/weird_strcmp.hpp b/lib/ArduinoJson/extras/tests/Misc/weird_strcmp.hpp
index c0e5c6c..dbe122f 100644
--- a/lib/ArduinoJson/extras/tests/Misc/weird_strcmp.hpp
+++ b/lib/ArduinoJson/extras/tests/Misc/weird_strcmp.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MixedConfiguration/CMakeLists.txt b/lib/ArduinoJson/extras/tests/MixedConfiguration/CMakeLists.txt
index b8cad8e..08d8888 100644
--- a/lib/ArduinoJson/extras/tests/MixedConfiguration/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/MixedConfiguration/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(MixedConfigurationTests
diff --git a/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_0.cpp b/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_0.cpp
index bffbe7a..f0904c5 100644
--- a/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_0.cpp
+++ b/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_0.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_ENABLE_COMMENTS 0
diff --git a/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_1.cpp b/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_1.cpp
index db9c263..7e135df 100644
--- a/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_1.cpp
+++ b/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_comments_1.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_ENABLE_COMMENTS 1
diff --git a/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_progmem_1.cpp b/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_progmem_1.cpp
index 3dc869c..312a87f 100644
--- a/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_progmem_1.cpp
+++ b/lib/ArduinoJson/extras/tests/MixedConfiguration/enable_progmem_1.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_ENABLE_PROGMEM 1
diff --git a/lib/ArduinoJson/extras/tests/MixedConfiguration/issue1707.cpp b/lib/ArduinoJson/extras/tests/MixedConfiguration/issue1707.cpp
index 5dc3c61..ff8d2ba 100644
--- a/lib/ArduinoJson/extras/tests/MixedConfiguration/issue1707.cpp
+++ b/lib/ArduinoJson/extras/tests/MixedConfiguration/issue1707.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINO
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/CMakeLists.txt b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/CMakeLists.txt
index 61dc8b9..96b4584 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(MsgPackDeserializerTests
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeArray.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeArray.cpp
index 053c765..03409a9 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeArray.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeArray.cpp
@@ -1,12 +1,15 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
#include
+#include "Allocators.hpp"
+
TEST_CASE("deserialize MsgPack array") {
- JsonDocument doc;
+ SpyingAllocator spy;
+ JsonDocument doc(&spy);
SECTION("fixarray") {
SECTION("empty") {
@@ -30,6 +33,24 @@ TEST_CASE("deserialize MsgPack array") {
REQUIRE(array[0] == 1);
REQUIRE(array[1] == 2);
}
+
+ SECTION("tiny strings") {
+ DeserializationError error =
+ deserializeMsgPack(doc, "\x92\xA3xxx\xA3yyy");
+
+ REQUIRE(error == DeserializationError::Ok);
+ REQUIRE(doc.is());
+ REQUIRE(doc.size() == 2);
+ REQUIRE(doc[0] == "xxx");
+ REQUIRE(doc[1] == "yyy");
+ REQUIRE(spy.log() == AllocatorLog{
+ Allocate(sizeofPool()),
+ Allocate(sizeofString("xxx")),
+ // Buffer is reused for the next string
+ Deallocate(sizeofString("xxx")),
+ Reallocate(sizeofPool(), sizeofPool(2)),
+ });
+ }
}
SECTION("array 16") {
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeObject.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeObject.cpp
index 675329e..75266f2 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeObject.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeObject.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeVariant.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeVariant.cpp
index 412d541..bbe88ed 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeVariant.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/deserializeVariant.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -348,13 +348,14 @@ TEST_CASE("deserializeMsgPack() under memory constaints") {
SECTION("{}") {
checkError(0, "\x80", DeserializationError::Ok);
}
- SECTION("{H:1}") {
- checkError(1, "\x81\xA1H\x01", DeserializationError::NoMemory);
- checkError(2, "\x81\xA1H\x01", DeserializationError::Ok);
+ SECTION("{Hello:1}") {
+ checkError(1, "\x81\xA5Hello\x01", DeserializationError::NoMemory);
+ checkError(2, "\x81\xA5Hello\x01", DeserializationError::Ok);
}
- SECTION("{H:1,W:2}") {
- checkError(2, "\x82\xA1H\x01\xA1W\x02", DeserializationError::NoMemory);
- checkError(3, "\x82\xA1H\x01\xA1W\x02", DeserializationError::Ok);
+ SECTION("{Hello:1,World:2}") {
+ checkError(2, "\x82\xA5Hello\x01\xA5World\x02",
+ DeserializationError::NoMemory);
+ checkError(3, "\x82\xA5Hello\x01\xA5World\x02", DeserializationError::Ok);
}
}
@@ -362,14 +363,16 @@ TEST_CASE("deserializeMsgPack() under memory constaints") {
SECTION("{}") {
checkError(0, "\xDE\x00\x00", DeserializationError::Ok);
}
- SECTION("{H:1}") {
- checkError(1, "\xDE\x00\x01\xA1H\x01", DeserializationError::NoMemory);
- checkError(2, "\xDE\x00\x01\xA1H\x01", DeserializationError::Ok);
- }
- SECTION("{H:1,W:2}") {
- checkError(2, "\xDE\x00\x02\xA1H\x01\xA1W\x02",
+ SECTION("{Hello:1}") {
+ checkError(1, "\xDE\x00\x01\xA5Hello\x01",
DeserializationError::NoMemory);
- checkError(3, "\xDE\x00\x02\xA1H\x01\xA1W\x02", DeserializationError::Ok);
+ checkError(2, "\xDE\x00\x01\xA5Hello\x01", DeserializationError::Ok);
+ }
+ SECTION("{Hello:1,World:2}") {
+ checkError(2, "\xDE\x00\x02\xA5Hello\x01\xA5World\x02",
+ DeserializationError::NoMemory);
+ checkError(3, "\xDE\x00\x02\xA5Hello\x01\xA5World\x02",
+ DeserializationError::Ok);
}
}
@@ -382,8 +385,8 @@ TEST_CASE("deserializeMsgPack() under memory constaints") {
DeserializationError::NoMemory);
checkError(2, "\xDF\x00\x00\x00\x01\xA1H\x01", DeserializationError::Ok);
}
- SECTION("{H:1,W:2}") {
- checkError(2, "\xDF\x00\x00\x00\x02\xA1H\x01\xA1W\x02",
+ SECTION("{Hello:1,World:2}") {
+ checkError(2, "\xDF\x00\x00\x00\x02\xA5Hello\x01\xA5World\x02",
DeserializationError::NoMemory);
checkError(3, "\xDF\x00\x00\x00\x02\xA1H\x01\xA1W\x02",
DeserializationError::Ok);
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/destination_types.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/destination_types.cpp
index f0d04d6..6b437ec 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/destination_types.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/destination_types.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/doubleToFloat.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/doubleToFloat.cpp
index 167261f..6eadd0e 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/doubleToFloat.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/doubleToFloat.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/errors.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/errors.cpp
index dff712a..9a8119e 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/errors.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/errors.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/filter.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/filter.cpp
index dcd2d54..6bcd7b1 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/filter.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/filter.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/input_types.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/input_types.cpp
index b581f20..42f6137 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/input_types.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/input_types.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/nestingLimit.cpp b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/nestingLimit.cpp
index 206600c..a41ea0a 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackDeserializer/nestingLimit.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackDeserializer/nestingLimit.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackSerializer/CMakeLists.txt b/lib/ArduinoJson/extras/tests/MsgPackSerializer/CMakeLists.txt
index 25b0384..8f484bb 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackSerializer/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/MsgPackSerializer/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(MsgPackSerializerTests
diff --git a/lib/ArduinoJson/extras/tests/MsgPackSerializer/destination_types.cpp b/lib/ArduinoJson/extras/tests/MsgPackSerializer/destination_types.cpp
index 569d5f7..160ca8a 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackSerializer/destination_types.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackSerializer/destination_types.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackSerializer/measure.cpp b/lib/ArduinoJson/extras/tests/MsgPackSerializer/measure.cpp
index e1480e2..882069b 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackSerializer/measure.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackSerializer/measure.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeArray.cpp b/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeArray.cpp
index 3e36b9f..9539041 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeArray.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeArray.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_SLOT_ID_SIZE 4 // required to reach 65536 elements
diff --git a/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeObject.cpp b/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeObject.cpp
index 07774d0..7dc1526 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeObject.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeObject.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeVariant.cpp b/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeVariant.cpp
index 505b56c..56faccd 100644
--- a/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeVariant.cpp
+++ b/lib/ArduinoJson/extras/tests/MsgPackSerializer/serializeVariant.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Numbers/CMakeLists.txt b/lib/ArduinoJson/extras/tests/Numbers/CMakeLists.txt
index e4ef2dd..6505ce7 100644
--- a/lib/ArduinoJson/extras/tests/Numbers/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/Numbers/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(NumbersTests
diff --git a/lib/ArduinoJson/extras/tests/Numbers/convertNumber.cpp b/lib/ArduinoJson/extras/tests/Numbers/convertNumber.cpp
index 7a2ae53..98cd676 100644
--- a/lib/ArduinoJson/extras/tests/Numbers/convertNumber.cpp
+++ b/lib/ArduinoJson/extras/tests/Numbers/convertNumber.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Numbers/decomposeFloat.cpp b/lib/ArduinoJson/extras/tests/Numbers/decomposeFloat.cpp
index 73de571..e0578f6 100644
--- a/lib/ArduinoJson/extras/tests/Numbers/decomposeFloat.cpp
+++ b/lib/ArduinoJson/extras/tests/Numbers/decomposeFloat.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Numbers/parseDouble.cpp b/lib/ArduinoJson/extras/tests/Numbers/parseDouble.cpp
index cd84ca4..a459279 100644
--- a/lib/ArduinoJson/extras/tests/Numbers/parseDouble.cpp
+++ b/lib/ArduinoJson/extras/tests/Numbers/parseDouble.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_USE_DOUBLE 1
diff --git a/lib/ArduinoJson/extras/tests/Numbers/parseFloat.cpp b/lib/ArduinoJson/extras/tests/Numbers/parseFloat.cpp
index f81428f..62c0917 100644
--- a/lib/ArduinoJson/extras/tests/Numbers/parseFloat.cpp
+++ b/lib/ArduinoJson/extras/tests/Numbers/parseFloat.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#define ARDUINOJSON_ENABLE_NAN 1
diff --git a/lib/ArduinoJson/extras/tests/Numbers/parseInteger.cpp b/lib/ArduinoJson/extras/tests/Numbers/parseInteger.cpp
index 2180304..aff2358 100644
--- a/lib/ArduinoJson/extras/tests/Numbers/parseInteger.cpp
+++ b/lib/ArduinoJson/extras/tests/Numbers/parseInteger.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/Numbers/parseNumber.cpp b/lib/ArduinoJson/extras/tests/Numbers/parseNumber.cpp
index bc5d3b3..37b12bb 100644
--- a/lib/ArduinoJson/extras/tests/Numbers/parseNumber.cpp
+++ b/lib/ArduinoJson/extras/tests/Numbers/parseNumber.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/CMakeLists.txt b/lib/ArduinoJson/extras/tests/ResourceManager/CMakeLists.txt
index 9214f5b..3a0908a 100644
--- a/lib/ArduinoJson/extras/tests/ResourceManager/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(ResourceManagerTests
@@ -8,6 +8,7 @@ add_executable(ResourceManagerTests
saveString.cpp
shrinkToFit.cpp
size.cpp
+ StringBuffer.cpp
StringBuilder.cpp
swap.cpp
)
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/StringBuffer.cpp b/lib/ArduinoJson/extras/tests/ResourceManager/StringBuffer.cpp
new file mode 100644
index 0000000..1fb2b01
--- /dev/null
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/StringBuffer.cpp
@@ -0,0 +1,50 @@
+// ArduinoJson - https://arduinojson.org
+// Copyright © 2014-2025, Benoit BLANCHON
+// MIT License
+
+#include
+#include
+
+#include "Allocators.hpp"
+#include "Literals.hpp"
+
+using namespace ArduinoJson::detail;
+
+TEST_CASE("StringBuffer") {
+ SpyingAllocator spy;
+ ResourceManager resources(&spy);
+ StringBuffer sb(&resources);
+ VariantData variant;
+
+ SECTION("Tiny string") {
+ auto ptr = sb.reserve(3);
+ strcpy(ptr, "hi!");
+ sb.save(&variant);
+
+ REQUIRE(variant.type() == VariantType::TinyString);
+ REQUIRE(variant.asString() == "hi!");
+ }
+
+ SECTION("Tiny string can't contain NUL") {
+ auto ptr = sb.reserve(3);
+ memcpy(ptr, "a\0b", 3);
+ sb.save(&variant);
+
+ REQUIRE(variant.type() == VariantType::OwnedString);
+
+ auto str = variant.asString();
+ REQUIRE(str.size() == 3);
+ REQUIRE(str.c_str()[0] == 'a');
+ REQUIRE(str.c_str()[1] == 0);
+ REQUIRE(str.c_str()[2] == 'b');
+ }
+
+ SECTION("Tiny string can't have 4 characters") {
+ auto ptr = sb.reserve(4);
+ strcpy(ptr, "alfa");
+ sb.save(&variant);
+
+ REQUIRE(variant.type() == VariantType::OwnedString);
+ REQUIRE(variant.asString() == "alfa");
+ }
+}
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/StringBuilder.cpp b/lib/ArduinoJson/extras/tests/ResourceManager/StringBuilder.cpp
index b649afe..a63661b 100644
--- a/lib/ArduinoJson/extras/tests/ResourceManager/StringBuilder.cpp
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/StringBuilder.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
@@ -7,6 +7,7 @@
#include "Allocators.hpp"
+using namespace ArduinoJson;
using namespace ArduinoJson::detail;
TEST_CASE("StringBuilder") {
@@ -16,17 +17,36 @@ TEST_CASE("StringBuilder") {
SECTION("Empty string") {
StringBuilder str(&resources);
+ VariantData data;
str.startString();
- str.save();
+ str.save(&data);
- REQUIRE(resources.size() == sizeofString(""));
REQUIRE(resources.overflowed() == false);
- REQUIRE(spyingAllocator.log() ==
- AllocatorLog{
- Allocate(sizeofStringBuffer()),
- Reallocate(sizeofStringBuffer(), sizeofString("")),
- });
+ REQUIRE(spyingAllocator.log() == AllocatorLog{
+ Allocate(sizeofStringBuffer()),
+ });
+ REQUIRE(data.type() == VariantType::TinyString);
+ }
+
+ SECTION("Tiny string") {
+ StringBuilder str(&resources);
+
+ str.startString();
+ str.append("url");
+
+ REQUIRE(str.isValid() == true);
+ REQUIRE(str.str() == "url");
+ REQUIRE(spyingAllocator.log() == AllocatorLog{
+ Allocate(sizeofStringBuffer()),
+ });
+
+ VariantData data;
+ str.save(&data);
+
+ REQUIRE(resources.overflowed() == false);
+ REQUIRE(data.type() == VariantType::TinyString);
+ REQUIRE(data.asString() == "url");
}
SECTION("Short string fits in first allocation") {
@@ -96,48 +116,69 @@ TEST_CASE("StringBuilder") {
}
}
-static StringNode* addStringToPool(ResourceManager& resources, const char* s) {
- StringBuilder str(&resources);
- str.startString();
- str.append(s);
- return str.save();
+static JsonString saveString(StringBuilder& builder, const char* s) {
+ VariantData data;
+ builder.startString();
+ builder.append(s);
+ builder.save(&data);
+ return data.asString();
}
TEST_CASE("StringBuilder::save() deduplicates strings") {
- ResourceManager resources;
+ SpyingAllocator spy;
+ ResourceManager resources(&spy);
+ StringBuilder builder(&resources);
SECTION("Basic") {
- auto s1 = addStringToPool(resources, "hello");
- auto s2 = addStringToPool(resources, "world");
- auto s3 = addStringToPool(resources, "hello");
+ auto s1 = saveString(builder, "hello");
+ auto s2 = saveString(builder, "world");
+ auto s3 = saveString(builder, "hello");
- REQUIRE(s1 == s3);
- REQUIRE(s2 != s3);
- REQUIRE(s1->references == 2);
- REQUIRE(s2->references == 1);
- REQUIRE(s3->references == 2);
- REQUIRE(resources.size() == sizeofString("hello") + sizeofString("world"));
+ REQUIRE(s1 == "hello");
+ REQUIRE(s2 == "world");
+ REQUIRE(+s1.c_str() == +s3.c_str()); // same address
+
+ REQUIRE(spy.log() ==
+ AllocatorLog{
+ Allocate(sizeofStringBuffer()),
+ Reallocate(sizeofStringBuffer(), sizeofString("hello")),
+ Allocate(sizeofStringBuffer()),
+ Reallocate(sizeofStringBuffer(), sizeofString("world")),
+ Allocate(sizeofStringBuffer()),
+ });
}
SECTION("Requires terminator") {
- auto s1 = addStringToPool(resources, "hello world");
- auto s2 = addStringToPool(resources, "hello");
+ auto s1 = saveString(builder, "hello world");
+ auto s2 = saveString(builder, "hello");
- REQUIRE(s2 != s1);
- REQUIRE(s1->references == 1);
- REQUIRE(s2->references == 1);
- REQUIRE(resources.size() ==
- sizeofString("hello world") + sizeofString("hello"));
+ REQUIRE(s1 == "hello world");
+ REQUIRE(s2 == "hello");
+ REQUIRE(+s2.c_str() != +s1.c_str()); // different address
+
+ REQUIRE(spy.log() ==
+ AllocatorLog{
+ Allocate(sizeofStringBuffer()),
+ Reallocate(sizeofStringBuffer(), sizeofString("hello world")),
+ Allocate(sizeofStringBuffer()),
+ Reallocate(sizeofStringBuffer(), sizeofString("hello")),
+ });
}
SECTION("Don't overrun") {
- auto s1 = addStringToPool(resources, "hello world");
- auto s2 = addStringToPool(resources, "wor");
+ auto s1 = saveString(builder, "hello world");
+ auto s2 = saveString(builder, "worl");
- REQUIRE(s2 != s1);
- REQUIRE(s1->references == 1);
- REQUIRE(s2->references == 1);
- REQUIRE(resources.size() ==
- sizeofString("hello world") + sizeofString("wor"));
+ REQUIRE(s1 == "hello world");
+ REQUIRE(s2 == "worl");
+ REQUIRE(s2.c_str() != s1.c_str()); // different address
+
+ REQUIRE(spy.log() ==
+ AllocatorLog{
+ Allocate(sizeofStringBuffer()),
+ Reallocate(sizeofStringBuffer(), sizeofString("hello world")),
+ Allocate(sizeofStringBuffer()),
+ Reallocate(sizeofStringBuffer(), sizeofString("worl")),
+ });
}
}
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/allocVariant.cpp b/lib/ArduinoJson/extras/tests/ResourceManager/allocVariant.cpp
index 3cfadf3..0568791 100644
--- a/lib/ArduinoJson/extras/tests/ResourceManager/allocVariant.cpp
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/allocVariant.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/clear.cpp b/lib/ArduinoJson/extras/tests/ResourceManager/clear.cpp
index a773603..e770776 100644
--- a/lib/ArduinoJson/extras/tests/ResourceManager/clear.cpp
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/clear.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/saveString.cpp b/lib/ArduinoJson/extras/tests/ResourceManager/saveString.cpp
index 88c242f..3c7a228 100644
--- a/lib/ArduinoJson/extras/tests/ResourceManager/saveString.cpp
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/saveString.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/shrinkToFit.cpp b/lib/ArduinoJson/extras/tests/ResourceManager/shrinkToFit.cpp
index d35ee34..4f1eb5d 100644
--- a/lib/ArduinoJson/extras/tests/ResourceManager/shrinkToFit.cpp
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/shrinkToFit.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/size.cpp b/lib/ArduinoJson/extras/tests/ResourceManager/size.cpp
index 8d4b799..17f3f42 100644
--- a/lib/ArduinoJson/extras/tests/ResourceManager/size.cpp
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/size.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/ResourceManager/swap.cpp b/lib/ArduinoJson/extras/tests/ResourceManager/swap.cpp
index a2b1fe9..f5d8fee 100644
--- a/lib/ArduinoJson/extras/tests/ResourceManager/swap.cpp
+++ b/lib/ArduinoJson/extras/tests/ResourceManager/swap.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/TextFormatter/CMakeLists.txt b/lib/ArduinoJson/extras/tests/TextFormatter/CMakeLists.txt
index 3b3b5bb..79618c7 100644
--- a/lib/ArduinoJson/extras/tests/TextFormatter/CMakeLists.txt
+++ b/lib/ArduinoJson/extras/tests/TextFormatter/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
add_executable(TextFormatterTests
diff --git a/lib/ArduinoJson/extras/tests/TextFormatter/writeFloat.cpp b/lib/ArduinoJson/extras/tests/TextFormatter/writeFloat.cpp
index a787712..1afcaec 100644
--- a/lib/ArduinoJson/extras/tests/TextFormatter/writeFloat.cpp
+++ b/lib/ArduinoJson/extras/tests/TextFormatter/writeFloat.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/TextFormatter/writeInteger.cpp b/lib/ArduinoJson/extras/tests/TextFormatter/writeInteger.cpp
index 1906750..47a864c 100644
--- a/lib/ArduinoJson/extras/tests/TextFormatter/writeInteger.cpp
+++ b/lib/ArduinoJson/extras/tests/TextFormatter/writeInteger.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/extras/tests/TextFormatter/writeString.cpp b/lib/ArduinoJson/extras/tests/TextFormatter/writeString.cpp
index 2d3d096..35ae297 100644
--- a/lib/ArduinoJson/extras/tests/TextFormatter/writeString.cpp
+++ b/lib/ArduinoJson/extras/tests/TextFormatter/writeString.cpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#include
diff --git a/lib/ArduinoJson/idf_component.yml b/lib/ArduinoJson/idf_component.yml
index 70641db..843f9f4 100644
--- a/lib/ArduinoJson/idf_component.yml
+++ b/lib/ArduinoJson/idf_component.yml
@@ -1,7 +1,7 @@
-version: "7.3.0"
+version: "7.4.1"
description: >-
A simple and efficient JSON library for embedded C++.
- ★ 6785 stars on GitHub!
+ ★ 6898 stars on GitHub!
Supports serialization, deserialization, MessagePack, streams, filtering, and more.
Fully tested and documented.
url: https://arduinojson.org/
diff --git a/lib/ArduinoJson/library.json b/lib/ArduinoJson/library.json
index ba5d224..369a552 100644
--- a/lib/ArduinoJson/library.json
+++ b/lib/ArduinoJson/library.json
@@ -1,13 +1,13 @@
{
"name": "ArduinoJson",
"keywords": "json, rest, http, web",
- "description": "A simple and efficient JSON library for embedded C++. ⭐ 6785 stars on GitHub! Supports serialization, deserialization, MessagePack, streams, filtering, and more. Fully tested and documented.",
+ "description": "A simple and efficient JSON library for embedded C++. ⭐ 6898 stars on GitHub! Supports serialization, deserialization, MessagePack, streams, filtering, and more. Fully tested and documented.",
"homepage": "https://arduinojson.org/?utm_source=meta&utm_medium=library.json",
"repository": {
"type": "git",
"url": "https://github.com/bblanchon/ArduinoJson.git"
},
- "version": "7.3.0",
+ "version": "7.4.1",
"authors": {
"name": "Benoit Blanchon",
"url": "https://blog.benoitblanchon.fr"
diff --git a/lib/ArduinoJson/library.properties b/lib/ArduinoJson/library.properties
index 6a153c0..c4f7784 100644
--- a/lib/ArduinoJson/library.properties
+++ b/lib/ArduinoJson/library.properties
@@ -1,9 +1,9 @@
name=ArduinoJson
-version=7.3.0
+version=7.4.1
author=Benoit Blanchon
maintainer=Benoit Blanchon
sentence=A simple and efficient JSON library for embedded C++.
-paragraph=⭐ 6785 stars on GitHub! Supports serialization, deserialization, MessagePack, streams, filtering, and more. Fully tested and documented.
+paragraph=⭐ 6898 stars on GitHub! Supports serialization, deserialization, MessagePack, streams, filtering, and more. Fully tested and documented.
category=Data Processing
url=https://arduinojson.org/?utm_source=meta&utm_medium=library.properties
architectures=*
diff --git a/lib/ArduinoJson/src/ArduinoJson.h b/lib/ArduinoJson/src/ArduinoJson.h
index fec64c3..eb4b94a 100644
--- a/lib/ArduinoJson/src/ArduinoJson.h
+++ b/lib/ArduinoJson/src/ArduinoJson.h
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson.hpp b/lib/ArduinoJson/src/ArduinoJson.hpp
index a14f2b1..5818de3 100644
--- a/lib/ArduinoJson/src/ArduinoJson.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
index f0f3175..79ade35 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
index de26193..b4fb126 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
index 06994a9..ec2ea54 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
index 7f02f98..436793a 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
index b053518..b4c138a 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
index 70bb28f..39ca45e 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp b/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
index 200cb66..d9ba143 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
index 5817c7a..937c10c 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
index c0a650c..559c0a5 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
index cf6fb38..696ce4c 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
index fd32a55..7ec685f 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
index 4c73934..0d31d2f 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
index 7670556..4cd5647 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
index d30402b..fb46102 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
index e728047..b8e896b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
index a4b1143..afa3696 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
index d55859f..da2f173 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
index fa8ff23..5b59b0c 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
index 5584ec5..5fc8ba5 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
index 4739d72..b778a24 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
index 947dd7f..5e1233b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
index 92f9541..23d7260 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp b/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
index c1963a8..4c3b229 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp b/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
index 0907623..63902c4 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
index 35a99d6..687f291 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
index fb03e69..288a22c 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -275,13 +275,11 @@ class JsonDeserializer {
if (memberFilter.allow()) {
auto member = object.getMember(adaptString(key), resources_);
if (!member) {
- // Save key in memory pool.
- auto savedKey = stringBuilder_.save();
-
- // Allocate slot in object
- member = object.addMember(savedKey, resources_);
- if (!member)
+ auto keyVariant = object.addPair(&member, resources_);
+ if (!keyVariant)
return DeserializationError::NoMemory;
+
+ stringBuilder_.save(keyVariant);
} else {
member->clear(resources_);
}
@@ -390,7 +388,7 @@ class JsonDeserializer {
if (err)
return err;
- variant.setOwnedString(stringBuilder_.save());
+ stringBuilder_.save(&variant);
return DeserializationError::Ok;
}
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp
index da57b6b..e95bfc7 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp
index f9d9e51..a7dcbe9 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp
index 7915c6c..2cfd177 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp
index 0fab396..91d5543 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp
index 2111451..7f63d08 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp b/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp
index ad659b5..8eb38e6 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp
index 65d6069..e844775 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp
index aadc368..e98c7bf 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp
index baa988f..4663a61 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp
index dc6503c..7da0806 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp
index c8e0d5b..f74c91b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp
index 427c9ad..a701c0d 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp
index e025966..4d5caa7 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -32,7 +32,26 @@ class StringBuffer {
return node_->data;
}
- StringNode* save() {
+ JsonString str() const {
+ ARDUINOJSON_ASSERT(node_ != nullptr);
+ return JsonString(node_->data, node_->length);
+ }
+
+ void save(VariantData* data) {
+ ARDUINOJSON_ASSERT(node_ != nullptr);
+ const char* s = node_->data;
+ if (isTinyString(s, size_))
+ data->setTinyString(adaptString(s, size_));
+ else
+ data->setOwnedString(commitStringNode());
+ }
+
+ void saveRaw(VariantData* data) {
+ data->setRawString(commitStringNode());
+ }
+
+ private:
+ StringNode* commitStringNode() {
ARDUINOJSON_ASSERT(node_ != nullptr);
node_->data[size_] = 0;
auto node = resources_->getString(adaptString(node_->data, size_));
@@ -52,13 +71,6 @@ class StringBuffer {
return node;
}
- JsonString str() const {
- ARDUINOJSON_ASSERT(node_ != nullptr);
-
- return JsonString(node_->data, node_->length);
- }
-
- private:
ResourceManager* resources_;
StringNode* node_ = nullptr;
size_t size_ = 0;
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp
index e789952..db6c354 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -25,10 +25,18 @@ class StringBuilder {
node_ = resources_->createString(initialCapacity);
}
- StringNode* save() {
+ void save(VariantData* variant) {
+ ARDUINOJSON_ASSERT(variant != nullptr);
ARDUINOJSON_ASSERT(node_ != nullptr);
- node_->data[size_] = 0;
- StringNode* node = resources_->getString(adaptString(node_->data, size_));
+
+ char* p = node_->data;
+ if (isTinyString(p, size_)) {
+ variant->setTinyString(adaptString(p, size_));
+ return;
+ }
+
+ p[size_] = 0;
+ StringNode* node = resources_->getString(adaptString(p, size_));
if (!node) {
node = resources_->resizeString(node_, size_);
ARDUINOJSON_ASSERT(node != nullptr); // realloc to smaller can't fail
@@ -37,7 +45,7 @@ class StringBuilder {
} else {
node->references++;
}
- return node;
+ variant->setOwnedString(node);
}
void append(const char* s) {
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp
index f60cc2e..26bd180 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp b/lib/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp
index 6121b29..0b71ed2 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp b/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp
index d3cb3d3..4269192 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp
index 674470d..904da17 100644
--- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -305,7 +305,7 @@ class MsgPackDeserializer {
if (err)
return err;
- variant->setOwnedString(stringBuffer_.save());
+ stringBuffer_.save(variant);
return DeserializationError::Ok;
}
@@ -334,7 +334,7 @@ class MsgPackDeserializer {
if (err)
return err;
- variant->setRawString(stringBuffer_.save());
+ stringBuffer_.saveRaw(variant);
return DeserializationError::Ok;
}
@@ -403,19 +403,16 @@ class MsgPackDeserializer {
JsonString key = stringBuffer_.str();
TFilter memberFilter = filter[key.c_str()];
- VariantData* member;
+ VariantData* member = 0;
if (memberFilter.allow()) {
ARDUINOJSON_ASSERT(object != 0);
- // Save key in memory pool.
- auto savedKey = stringBuffer_.save();
-
- member = object->addMember(savedKey, resources_);
- if (!member)
+ auto keyVariant = object->addPair(&member, resources_);
+ if (!keyVariant)
return DeserializationError::NoMemory;
- } else {
- member = 0;
+
+ stringBuffer_.save(keyVariant);
}
err = parseVariant(member, memberFilter, nestingLimit.decrement());
diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp
index 4eb5d2c..43f4cd2 100644
--- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp
index 94875cf..1328f9e 100644
--- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianness.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp b/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp
index 427a23a..ad8e2f0 100644
--- a/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp b/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp
index da7a449..feb580a 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp
index 536ae2a..4a06016 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp
index ea99625..65df838 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp
index e370f66..400cec4 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp
index d65805c..f626d09 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp
index 2cbc458..f9f30a2 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp
index 0b6ffdc..e83d6ce 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp b/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp
index 7f4b220..ab34528 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp
index 088cea9..662851b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp
index 6a7218f..99540c4 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp
index 74f75bf..90637f5 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp
index 923bd43..f0dcb50 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp
index f1e9b42..7e43d38 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp
index 7290e93..9b98962 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -10,9 +10,11 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
class ObjectData : public CollectionData {
public:
- template // also works with StringNode*
+ template
VariantData* addMember(TAdaptedString key, ResourceManager* resources);
+ VariantData* addPair(VariantData** value, ResourceManager* resources);
+
template
VariantData* getOrAddMember(TAdaptedString key, ResourceManager* resources);
diff --git a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp
index 024d772..67677d7 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -68,6 +68,22 @@ inline VariantData* ObjectData::addMember(TAdaptedString key,
return valueSlot.ptr();
}
+inline VariantData* ObjectData::addPair(VariantData** value,
+ ResourceManager* resources) {
+ auto keySlot = resources->allocVariant();
+ if (!keySlot)
+ return nullptr;
+
+ auto valueSlot = resources->allocVariant();
+ if (!valueSlot)
+ return nullptr;
+ *value = valueSlot.ptr();
+
+ CollectionData::appendPair(keySlot, valueSlot, resources);
+
+ return keySlot.ptr();
+}
+
// Returns the size (in bytes) of an object with n members.
constexpr size_t sizeofObject(size_t n) {
return 2 * n * ResourceManager::slotSize;
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp
index 1dec0a0..9529b05 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp
index a831559..e7d42a7 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp
index 268026f..99e1b33 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp
index 294e324..afb8e84 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp
index c56e1e9..6dded6f 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp
index cb07209..9e87bbd 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp
index 95a74f6..78375fd 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp
index 89a3179..bf061dd 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp
index d65de49..48df9e2 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp
index 9104ef2..8ee166d 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp
index ca565f7..8402cfd 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp
index 471d352..a4dd1d4 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp
index 75ebdd4..d699b6b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp
index 29b4b6e..9a1075c 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp
index 2fd8e91..b16b575 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp
index f1184f2..8fb8af4 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp
index 3b79873..9d95741 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp
index e263523..cc893d7 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp
index 17a4596..e259b2d 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp
index 8cb3c9d..5d93d78 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp
index 2e36b56..3946e59 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp
index 2adc86a..b8e848f 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp
index e906ab7..e48b353 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp
index 58a05ba..73a721b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp
index c84012b..2cba9e7 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp
index e12b228..08e4c47 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp
index 0d3b1d1..5a5e7ee 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp
index 5e28fb7..fe1dad8 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp
index f5b503b..25004e3 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp
index 6ac6117..2665c88 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp
index 6ea6df4..016e716 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp
index 22406e5..090f849 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp
index 67d75c6..114696e 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp
index 60e31b0..c3894c0 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp
index ea899f6..6325208 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp
index 7222025..c9bca15 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp b/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp
index caac765..afbac7c 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp
index e70ea1b..2e153be 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp
index caea19f..f736d86 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp
index d3ebd17..4061043 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp
index 7492e21..a308a4b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp
index 55bfe00..a3fe499 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp
index 042aac7..f9407c3 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp
index abb15a5..44758d4 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp
index 7acd24c..e2ffc72 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp
index fd2acf2..62d8fce 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp b/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp
index dc2f0fa..ad93ade 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp b/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp
index 29ca1c3..3658e8e 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp b/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp
index 5477b23..c269ffb 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -76,6 +76,16 @@ struct StringAdapter::value>> {
}
};
+template
+struct StringAdapter::value>> {
+ using AdaptedString = RamString;
+
+ static AdaptedString adapt(const TChar* p) {
+ auto str = reinterpret_cast(p);
+ return AdaptedString(str, str ? ::strlen(str) : 0);
+ }
+};
+
template
struct StringAdapter {
using AdaptedString = RamString;
@@ -90,8 +100,9 @@ struct StringAdapter::value>> {
using AdaptedString = RamString;
static AdaptedString adapt(const TChar* p) {
+ ARDUINOJSON_ASSERT(p);
auto str = reinterpret_cast(p);
- return AdaptedString(str, str ? ::strlen(str) : 0);
+ return AdaptedString(str, ::strlen(str));
}
};
diff --git a/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp b/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp
index 1547ab9..43bd330 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp b/lib/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp
index a71655d..094f53b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp b/lib/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp
index 76011da..98bae43 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp b/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp
index cd19e41..a31d2a5 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp b/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp
index e8ff181..e0ae9f3 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp b/lib/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp
index 797762b..bd1a50b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp
index 0275655..07f6a51 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp
index 296bf55..6c5fcda 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -230,9 +230,9 @@ class StringBuilderPrint : public Print {
copier_.startString();
}
- StringNode* save() {
+ void save(VariantData* data) {
ARDUINOJSON_ASSERT(!overflowed());
- return copier_.save();
+ copier_.save(data);
}
size_t write(uint8_t c) {
@@ -268,7 +268,7 @@ inline void convertToJson(const ::Printable& src, JsonVariant dst) {
src.printTo(print);
if (print.overflowed())
return;
- data->setOwnedString(print.save());
+ print.save(data);
}
#endif
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp
index 25fb3f2..aed1ba9 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp
index b1eb66e..4c96059 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp
index 659069d..6875c9a 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp
index 6069b6e..28f99ed 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp
index b75eb38..d97641b 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp
index 03e2227..5f56016 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp
index cae3f20..d6ee6c7 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -24,6 +24,7 @@ enum class VariantTypeBits : uint8_t {
enum class VariantType : uint8_t {
Null = 0, // 0000 0000
+ TinyString = 0x02, // 0000 0010
RawString = 0x03, // 0000 0011
LinkedString = 0x04, // 0000 0100
OwnedString = 0x05, // 0000 0101
@@ -46,6 +47,8 @@ inline bool operator&(VariantType type, VariantTypeBits bit) {
return (uint8_t(type) & uint8_t(bit)) != 0;
}
+const size_t tinyStringMaxLength = 3;
+
union VariantContent {
VariantContent() {}
@@ -61,6 +64,7 @@ union VariantContent {
CollectionData asCollection;
const char* asLinkedString;
struct StringNode* asOwnedString;
+ char asTinyString[tinyStringMaxLength + 1];
};
#if ARDUINOJSON_USE_EXTENSIONS
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp
index ba1bef8..6b0d474 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -17,6 +17,16 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE
template
T parseNumber(const char* s);
+template
+static bool isTinyString(const T& s, size_t n) {
+ if (n > tinyStringMaxLength)
+ return false;
+ bool containsNul = false;
+ for (uint8_t i = 0; i < uint8_t(n); i++)
+ containsNul |= !s[i];
+ return !containsNul;
+}
+
class VariantData {
VariantContent content_; // must be first to allow cast from array to variant
VariantType type_;
@@ -63,6 +73,9 @@ class VariantData {
case VariantType::Object:
return visit.visit(content_.asObject);
+ case VariantType::TinyString:
+ return visit.visit(JsonString(content_.asTinyString));
+
case VariantType::LinkedString:
return visit.visit(JsonString(content_.asLinkedString, true));
@@ -185,6 +198,7 @@ class VariantData {
#else
(void)resources; // silence warning
#endif
+ const char* str = nullptr;
switch (type_) {
case VariantType::Boolean:
return static_cast(content_.asBoolean);
@@ -198,9 +212,15 @@ class VariantData {
case VariantType::Int64:
return static_cast(extension->asInt64);
#endif
+ case VariantType::TinyString:
+ str = content_.asTinyString;
+ break;
case VariantType::LinkedString:
+ str = content_.asLinkedString;
+ break;
case VariantType::OwnedString:
- return parseNumber(content_.asOwnedString->data);
+ str = content_.asOwnedString->data;
+ break;
case VariantType::Float:
return static_cast(content_.asFloat);
#if ARDUINOJSON_USE_DOUBLE
@@ -208,8 +228,11 @@ class VariantData {
return static_cast(extension->asDouble);
#endif
default:
- return 0;
+ return 0.0;
}
+
+ ARDUINOJSON_ASSERT(str != nullptr);
+ return parseNumber(str);
}
template
@@ -220,6 +243,7 @@ class VariantData {
#else
(void)resources; // silence warning
#endif
+ const char* str = nullptr;
switch (type_) {
case VariantType::Boolean:
return content_.asBoolean;
@@ -233,10 +257,15 @@ class VariantData {
case VariantType::Int64:
return convertNumber(extension->asInt64);
#endif
+ case VariantType::TinyString:
+ str = content_.asTinyString;
+ break;
case VariantType::LinkedString:
- return parseNumber(content_.asLinkedString);
+ str = content_.asLinkedString;
+ break;
case VariantType::OwnedString:
- return parseNumber(content_.asOwnedString->data);
+ str = content_.asOwnedString->data;
+ break;
case VariantType::Float:
return convertNumber(content_.asFloat);
#if ARDUINOJSON_USE_DOUBLE
@@ -246,6 +275,9 @@ class VariantData {
default:
return 0;
}
+
+ ARDUINOJSON_ASSERT(str != nullptr);
+ return parseNumber(str);
}
ObjectData* asObject() {
@@ -268,6 +300,8 @@ class VariantData {
JsonString asString() const {
switch (type_) {
+ case VariantType::TinyString:
+ return JsonString(content_.asTinyString);
case VariantType::LinkedString:
return JsonString(content_.asLinkedString, true);
case VariantType::OwnedString:
@@ -382,7 +416,8 @@ class VariantData {
bool isString() const {
return type_ == VariantType::LinkedString ||
- type_ == VariantType::OwnedString;
+ type_ == VariantType::OwnedString ||
+ type_ == VariantType::TinyString;
}
size_t nesting(const ResourceManager* resources) const {
@@ -475,11 +510,6 @@ class VariantData {
template
bool setString(TAdaptedString value, ResourceManager* resources);
- bool setString(StringNode* s, ResourceManager*) {
- setOwnedString(s);
- return true;
- }
-
template
static void setString(VariantData* var, TAdaptedString value,
ResourceManager* resources) {
@@ -496,6 +526,23 @@ class VariantData {
content_.asLinkedString = s;
}
+ template
+ void setTinyString(const TAdaptedString& s) {
+ ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first
+ ARDUINOJSON_ASSERT(s.size() <= tinyStringMaxLength);
+
+ type_ = VariantType::TinyString;
+
+ auto n = uint8_t(s.size());
+ for (uint8_t i = 0; i < n; i++) {
+ char c = s[i];
+ ARDUINOJSON_ASSERT(c != 0); // no NUL in tiny string
+ content_.asTinyString[i] = c;
+ }
+
+ content_.asTinyString[n] = 0;
+ }
+
void setOwnedString(StringNode* s) {
ARDUINOJSON_ASSERT(type_ == VariantType::Null); // must call clear() first
ARDUINOJSON_ASSERT(s);
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp
index 662ab13..7df6187 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp
index 8e5b253..98289ed 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
@@ -31,6 +31,11 @@ inline bool VariantData::setString(TAdaptedString value,
return true;
}
+ if (isTinyString(value, value.size())) {
+ setTinyString(value);
+ return true;
+ }
+
auto dup = resources->saveString(value);
if (dup) {
setOwnedString(dup);
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp
index d17e7cb..30bbd66 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp
index 544fe42..975c961 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp
index 1c87cc1..da1b1e6 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp
index 23f360f..a476c30 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp
index f159aef..928d459 100644
--- a/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
diff --git a/lib/ArduinoJson/src/ArduinoJson/compatibility.hpp b/lib/ArduinoJson/src/ArduinoJson/compatibility.hpp
index 6b99c42..2e83e6d 100644
--- a/lib/ArduinoJson/src/ArduinoJson/compatibility.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/compatibility.hpp
@@ -1,5 +1,5 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
//
// clang-format off
diff --git a/lib/ArduinoJson/src/ArduinoJson/version.hpp b/lib/ArduinoJson/src/ArduinoJson/version.hpp
index 0d8cecb..13c9296 100644
--- a/lib/ArduinoJson/src/ArduinoJson/version.hpp
+++ b/lib/ArduinoJson/src/ArduinoJson/version.hpp
@@ -1,11 +1,11 @@
// ArduinoJson - https://arduinojson.org
-// Copyright © 2014-2024, Benoit BLANCHON
+// Copyright © 2014-2025, Benoit BLANCHON
// MIT License
#pragma once
-#define ARDUINOJSON_VERSION "7.3.0"
+#define ARDUINOJSON_VERSION "7.4.1"
#define ARDUINOJSON_VERSION_MAJOR 7
-#define ARDUINOJSON_VERSION_MINOR 3
-#define ARDUINOJSON_VERSION_REVISION 0
-#define ARDUINOJSON_VERSION_MACRO V730
+#define ARDUINOJSON_VERSION_MINOR 4
+#define ARDUINOJSON_VERSION_REVISION 1
+#define ARDUINOJSON_VERSION_MACRO V741
diff --git a/lib/ArduinoJson/src/CMakeLists.txt b/lib/ArduinoJson/src/CMakeLists.txt
index cc782e7..841185d 100644
--- a/lib/ArduinoJson/src/CMakeLists.txt
+++ b/lib/ArduinoJson/src/CMakeLists.txt
@@ -1,5 +1,5 @@
# ArduinoJson - https://arduinojson.org
-# Copyright © 2014-2024, Benoit BLANCHON
+# Copyright © 2014-2025, Benoit BLANCHON
# MIT License
# I have no idea what this is about, I simply followed the instructions from:
diff --git a/resources/next_version.py b/resources/next_version.py
new file mode 100644
index 0000000..a01ec03
--- /dev/null
+++ b/resources/next_version.py
@@ -0,0 +1,24 @@
+import re
+
+regex = r"\#define NUKI_HUB_VERSION \"(.*)\""
+regex2 = r"\#define NUKI_HUB_VERSION_INT \(uint32_t\)(.*)"
+version = "unknown"
+version_int = "unknown"
+content_new = ""
+
+with open('src/Config.h', 'r') as file:
+ file_content = file.read()
+ matches = re.finditer(regex, file_content, re.MULTILINE)
+
+ for matchNum, match in enumerate(matches, start=1):
+ for groupNum in range(0, len(match.groups())):
+ groupNum = groupNum + 1
+ version = match.group(groupNum)
+ version_int = int((float(version)*100)+0.1) + 1
+ version = float(version_int / 100)
+
+ content_new = re.sub(regex, "#define NUKI_HUB_VERSION \"" + str('{:.2f}'.format(version)) + "\"", file_content, flags = re.M)
+ content_new = re.sub(regex2, "#define NUKI_HUB_VERSION_INT (uint32_t)" + str(version_int), content_new, flags = re.M)
+
+with open('src/Config.h', 'w') as writefile:
+ writefile.write(content_new)
diff --git a/scripts/sendcfg/README.md b/scripts/sendcfg/README.md
new file mode 100644
index 0000000..e80961c
--- /dev/null
+++ b/scripts/sendcfg/README.md
@@ -0,0 +1,47 @@
+
+## About
+
+sendcfg.py allows to send the initial device configuration via the serial interface.
+This allows automated configuration without prior connecting to the ESPs access point. It could be especially useful if an ESP with LAN hardware is used, and no connection via Wifi is desired.
+In this case, sendcfg allows to configure the device without storing Wifi credentials on the device.
+This feature is for advanced users only. In certain cases it's necessary to check the C++ code for the desired configuration value, e. g. the network hardware setting.
+
+## Usage
+
+Calling the script itself is simple:
+
+sendcfg.py
+
+Prior to running the script, pyserial has to be installed via pip.
+The ESP will only accept a configuration via serial as long as the device in not configured yet, meaning the ESP Wifi access point is open.
+Once the ESP is connected to a network, it will ignore any commands send via the serial interface.
+To generate a configuration a configuration file, the export configuration function can be used.
+After exporting a configuration, it can be edited to the required values. Usually only specific valus like
+the IP address, Wifi credentials or network hardware are intended to be set. In that case all other configuration values can be deleted from the configuration.
+For example configurations, see the "example_configurations" subdirectory.
+
+## Common configuration entries
+
+All configuration entries are saved in JSON format.
+
+- wifiSSID: The SSID of the Wifi network
+- wifiPass: The pre-shared key of the Wifi network
+- dhcpena: Enable ("1") or disable ("0") DHCP
+- hostname: Host name of the device
+- mqttbroker: Address of the MQTT broker
+- mqttpath: MQTT Path used for this device
+- ipaddr: Static IP address
+- ipsub: Subnet mask (e. g. 255.255.255.0)
+- ipgtw: Gateway used to connect to the internet
+- dnssrv: DNS server used to resolve domain names
+- nwhw: Network hardware used. See WebCfgServer.cpp, method getNetworkDetectionOptions for possible values.
+At the time of writing: 1=Wifi, 2=Generic W5500, 3 = M5Stack Atom POE (W5500), 4 = "Olimex ESP32-POE / ESP-POE-ISO, 5 = WT32-ETH01, 6 = M5STACK PoESP32 Unit, 7 = LilyGO T-ETH-POE, 8 = GL-S10, 9 = ETH01-Evo, 10 = M5Stack Atom POE S3 (W5500), 11 = Custom LAN module, 12 = LilyGO T-ETH ELite, 13 = Waveshare ESP32-S3-ETH / ESP32-S3-ETH-POE, 14 = LilyGO T-ETH-Lite-ESP32S3
+
+## Serial commands
+
+The serial interface supports a few commands in addition to receiving the configuration:
+
+- uptime: Prints the uptime in seconds
+- printerror: Prints the last error code returned from deserializing the configuration
+- printcfgstr: Prints the raw configuration string received via the serial interface
+- printcfg: Prints the deserialized configuration that is stored in RAM
\ No newline at end of file
diff --git a/scripts/sendcfg/example_configurations/m5stack-w5500.json b/scripts/sendcfg/example_configurations/m5stack-w5500.json
new file mode 100644
index 0000000..6693d7f
--- /dev/null
+++ b/scripts/sendcfg/example_configurations/m5stack-w5500.json
@@ -0,0 +1,4 @@
+{
+ "hostname": "nuki-atom-w5500",
+ "nwhw": "3"
+}
\ No newline at end of file
diff --git a/scripts/sendcfg/example_configurations/wifi.json b/scripts/sendcfg/example_configurations/wifi.json
new file mode 100644
index 0000000..b650792
--- /dev/null
+++ b/scripts/sendcfg/example_configurations/wifi.json
@@ -0,0 +1,5 @@
+{
+ "hostname": "nuki-123456",
+ "wifiSSID": "YOUR_SSID",
+ "wifiPass": "YOUR_WIFI_PRESHARED_KEY"
+}
\ No newline at end of file
diff --git a/scripts/sendcfg/example_configurations/wifi_static_ip.json b/scripts/sendcfg/example_configurations/wifi_static_ip.json
new file mode 100644
index 0000000..8596f70
--- /dev/null
+++ b/scripts/sendcfg/example_configurations/wifi_static_ip.json
@@ -0,0 +1,12 @@
+{
+ "dhcpena": "0",
+ "hostname": "nuki-static",
+ "mqttbroker": "192.168.8.100",
+ "mqttpath": "nuki-1234",
+ "ipaddr" : "192.168.8.25",
+ "ipsub" : "255.255.255.0",
+ "ipgtw" : "192.168.8.1",
+ "dnssrv" : "1.1.1.1",
+ "wifiSSID": "YOUR_SSID",
+ "wifiPass": "YOUR_WIFI_PRESHARED_KEY"
+}
\ No newline at end of file
diff --git a/scripts/sendcfg/sendcfg.py b/scripts/sendcfg/sendcfg.py
new file mode 100644
index 0000000..a6206a0
--- /dev/null
+++ b/scripts/sendcfg/sendcfg.py
@@ -0,0 +1,57 @@
+import serial
+import time
+import sys
+import os
+
+def send_configuration(file_path, port, baudrate=9600, delay=0.1):
+ try:
+ # Open serial port
+ with serial.Serial(port, baudrate, timeout=1) as ser:
+ print(f"Opened serial port {port} at {baudrate} baud.")
+
+ ser.write("-- NUKI HUB CONFIG START --\n".encode('utf-8'))
+
+ # Read configuration file and send line by line
+ with open(file_path, 'r') as file:
+ for line in file:
+ ser.write(line.encode('utf-8')) # Send line
+ ser.write("\n".encode('utf-8')) # Send new line
+ print(f"Sent: {line.strip()}")
+ time.sleep(delay) # Optional delay between lines
+
+ ser.write("-- NUKI HUB CONFIG END --\n".encode('utf-8'))
+ time.sleep(delay)
+ print("Configuration sent.")
+
+ # persist previously sent configuration
+ ser.write("savecfg\n".encode('utf-8'))
+ time.sleep(delay)
+ print("Configuration saved.")
+
+ # restart ESP
+ ser.write("reset\n".encode('utf-8'))
+ print("ESP restarted.")
+ time.sleep(1)
+
+ except serial.SerialException as e:
+ print(f"Serial error: {e}")
+ except FileNotFoundError:
+ print(f"File not found: {file_path}")
+ except Exception as e:
+ print(f"Unexpected error: {e}")
+
+if __name__ == "__main__":
+
+ if(len(sys.argv) < 2):
+ print("Usage: sendcfg.py ")
+ sys.exit(1)
+
+ config_file = sys.argv[2]
+ if(not os.path.isfile(config_file)):
+ print(f"File not found: {config_file}")
+ sys.exit(2)
+
+ serial_port = sys.argv[1]
+ baud_rate = 115200
+
+ send_configuration(config_file, serial_port, baud_rate)
diff --git a/src/NukiNetwork.cpp b/src/NukiNetwork.cpp
index 480b150..879ebf4 100644
--- a/src/NukiNetwork.cpp
+++ b/src/NukiNetwork.cpp
@@ -311,7 +311,6 @@ void NukiNetwork::initialize()
for(int i=0; i < len; i++)
{
_mqttPass[i] = mqttPass.charAt(i);
-
}
}
diff --git a/src/NukiNetwork.h b/src/NukiNetwork.h
index 860c279..8fde0e7 100644
--- a/src/NukiNetwork.h
+++ b/src/NukiNetwork.h
@@ -144,7 +144,7 @@ private:
int64_t _nextReconnect = 0;
char _mqttBrokerAddr[101] = {0};
char _mqttUser[31] = {0};
- char _mqttPass[31] = {0};
+ char _mqttPass[41] = {0};
char _maintenancePathPrefix[181] = {0};
int _networkTimeout = 0;
std::vector _mqttReceivers;
diff --git a/src/RestartReason.h b/src/RestartReason.h
index f992615..cba9a4a 100644
--- a/src/RestartReason.h
+++ b/src/RestartReason.h
@@ -4,6 +4,7 @@ enum class RestartReason
{
RequestedViaMqtt,
RequestedViaWebServer,
+ RequestedViaSerial,
BLEError,
BLEBeaconWatchdog,
RestartOnDisconnectWatchdog,
@@ -72,6 +73,8 @@ inline static String getRestartReason()
return "RequestedViaMqtt";
case RestartReason::RequestedViaWebServer:
return "RequestedViaWebServer";
+ case RestartReason::RequestedViaSerial:
+ return "RequestedViaSerial";
case RestartReason::ReconfigureWebServer:
return "ReconfigureWebServer";
case RestartReason::BLEError:
diff --git a/src/SerialReader.cpp b/src/SerialReader.cpp
new file mode 100644
index 0000000..ac949bd
--- /dev/null
+++ b/src/SerialReader.cpp
@@ -0,0 +1,86 @@
+#include "SerialReader.h"
+#include "RestartReason.h"
+#include "EspMillis.h"
+
+SerialReader::SerialReader(ImportExport *importExport, NukiNetwork* network)
+: _importExport(importExport),
+ _network(network)
+{
+}
+
+
+void SerialReader::update()
+{
+ if(Serial.available())
+ {
+ String line = Serial.readStringUntil('\n');
+// Serial.println(line);
+
+ int64_t ts = espMillis();
+
+ if(ts - _lastCommandTs > 3000)
+ {
+ _receivingConfig = false;
+ }
+ _lastCommandTs = ts;
+
+
+ if(line == "reset")
+ {
+ restartEsp(RestartReason::RequestedViaSerial);
+ }
+
+ if(line == "uptime")
+ {
+ Serial.print("Uptime (seconds): ");
+ Serial.println(espMillis() / 1000);
+ }
+
+ if(line == "printerror")
+ {
+ Serial.println(_deserializationError);
+ }
+
+ if(line == "printcfgstr")
+ {
+ Serial.println();
+ Serial.println(config);
+ Serial.println();
+ }
+
+ if(line == "printcfg")
+ {
+ Serial.println();
+ serializeJsonPretty(json, Serial);
+ Serial.println();
+ }
+
+ if(line == "savecfg")
+ {
+ _importExport->importJson(json);
+ Serial.println("Configuration saved");
+ }
+
+ if(line == "-- NUKI HUB CONFIG END --")
+ {
+ Serial.println("Receive config end");
+ _receivingConfig = false;
+ json.clear();
+ DeserializationError error = deserializeJson(json, config);
+ _deserializationError = (int)error.code();
+ }
+
+ if(_receivingConfig)
+ {
+ config = config + line;
+ }
+
+ if(line == "-- NUKI HUB CONFIG START --")
+ {
+ Serial.println("Receive config start");
+ config = "";
+ _receivingConfig = true;
+ }
+ }
+}
+
diff --git a/src/SerialReader.h b/src/SerialReader.h
new file mode 100644
index 0000000..a70eef9
--- /dev/null
+++ b/src/SerialReader.h
@@ -0,0 +1,24 @@
+#pragma once
+
+#include "Arduino.h"
+#include "ImportExport.h"
+#include "NukiNetwork.h"
+#include
+
+class SerialReader
+{
+public:
+ explicit SerialReader(ImportExport* importExport, NukiNetwork* network);
+
+ void update();
+
+private:
+ String config = "";
+ JsonDocument json;
+ bool _receivingConfig = false;
+ int64_t _lastCommandTs = 0;
+ int _deserializationError = -1;
+
+ ImportExport* _importExport = nullptr;
+ NukiNetwork* _network = nullptr;
+};
\ No newline at end of file
diff --git a/src/WebCfgServer.cpp b/src/WebCfgServer.cpp
index 53614d2..2522f5e 100644
--- a/src/WebCfgServer.cpp
+++ b/src/WebCfgServer.cpp
@@ -5149,7 +5149,7 @@ esp_err_t WebCfgServer::buildMqttConfigHtml(PsychicRequest *request, PsychicResp
printInputField(&response, "MQTTSERVER", "MQTT Broker", _preferences->getString(preference_mqtt_broker).c_str(), 100, "");
printInputField(&response, "MQTTPORT", "MQTT Broker port", _preferences->getInt(preference_mqtt_broker_port), 5, "");
printInputField(&response, "MQTTUSER", "MQTT User (# to clear)", _preferences->getString(preference_mqtt_user).c_str(), 30, "", false, true);
- printInputField(&response, "MQTTPASS", "MQTT Password", "*", 30, "", true, true);
+ printInputField(&response, "MQTTPASS", "MQTT Password", "*", 40, "", true, true);
printInputField(&response, "MQTTPATH", "MQTT Nuki Hub Path", _preferences->getString(preference_mqtt_lock_path).c_str(), 180, "");
printCheckBox(&response, "ENHADISC", "Enable Home Assistant auto discovery", _preferences->getBool(preference_mqtt_hass_enabled), "chkHass");
response.print(" ");
diff --git a/src/idf_component.yml b/src/idf_component.yml
index 21eb4e5..87b6dd7 100644
--- a/src/idf_component.yml
+++ b/src/idf_component.yml
@@ -4,7 +4,7 @@ dependencies:
esp-nimble-cpp:
git: https://github.com/h2zero/esp-nimble-cpp.git
- version: 723cdf0a66587bba30c8694b38267a91a530f024
+ version: 0172cb4b394949e89ebe1d79b4a9787b481d890c
espressif/libsodium: "^1.0.20~2"
diff --git a/src/main.cpp b/src/main.cpp
index 3bc5efd..ae1692e 100644
--- a/src/main.cpp
+++ b/src/main.cpp
@@ -20,6 +20,7 @@
#endif
#ifndef NUKI_HUB_UPDATER
+#include "SerialReader.h"
#include "NukiWrapper.h"
#include "NukiNetworkLock.h"
#include "NukiOpenerWrapper.h"
@@ -50,6 +51,7 @@ NukiOpenerWrapper* nukiOpener = nullptr;
NukiDeviceId* deviceIdLock = nullptr;
NukiDeviceId* deviceIdOpener = nullptr;
Gpio* gpio = nullptr;
+SerialReader* serialReader = nullptr;
bool lockEnabled = false;
bool openerEnabled = false;
@@ -250,6 +252,12 @@ void networkTask(void *pvParameters)
}
}
+#ifndef NUKI_HUB_UPDATER
+ if(serialReader != nullptr)
+ {
+ serialReader->update();
+ }
+#endif
network->update();
bool connected = network->isConnected();
@@ -877,6 +885,9 @@ void setup()
doOta = false;
lockEnabled = false;
openerEnabled = false;
+#ifndef NUKI_HUB_UPDATER
+ serialReader = new SerialReader(importExport, network);
+#endif
}
if(lockEnabled || openerEnabled)
diff --git a/src/util/NetworkDeviceInstantiator.cpp b/src/util/NetworkDeviceInstantiator.cpp
index d57b6ec..05ef8c0 100644
--- a/src/util/NetworkDeviceInstantiator.cpp
+++ b/src/util/NetworkDeviceInstantiator.cpp
@@ -14,181 +14,181 @@ NetworkDevice *NetworkDeviceInstantiator::Create(NetworkDeviceType networkDevice
switch (networkDeviceType)
{
- case NetworkDeviceType::W5500:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "Generic W5500",
- ETH_PHY_ADDR_W5500,
- ETH_PHY_CS_GENERIC_W5500,
- ETH_PHY_IRQ_GENERIC_W5500,
- ETH_PHY_RST_GENERIC_W5500,
- ETH_PHY_SPI_SCK_GENERIC_W5500,
- ETH_PHY_SPI_MISO_GENERIC_W5500,
- ETH_PHY_SPI_MOSI_GENERIC_W5500,
- ETH_PHY_W5500);
- break;
- case NetworkDeviceType::W5500M5:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "M5Stack Atom POE",
- ETH_PHY_ADDR_W5500,
- ETH_PHY_CS_M5_W5500,
- ETH_PHY_IRQ_M5_W5500,
- ETH_PHY_RST_M5_W5500,
- ETH_PHY_SPI_SCK_M5_W5500,
- ETH_PHY_SPI_MISO_M5_W5500,
- ETH_PHY_SPI_MOSI_M5_W5500,
- ETH_PHY_W5500);
- break;
- case NetworkDeviceType::W5500M5S3:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "M5Stack Atom POE S3",
- ETH_PHY_ADDR_W5500,
- ETH_PHY_CS_M5_W5500_S3,
- ETH_PHY_IRQ_M5_W5500,
- ETH_PHY_RST_M5_W5500,
- ETH_PHY_SPI_SCK_M5_W5500_S3,
- ETH_PHY_SPI_MISO_M5_W5500_S3,
- ETH_PHY_SPI_MOSI_M5_W5500_S3,
- ETH_PHY_W5500);
- break;
- case NetworkDeviceType::Waveshare_ESP32_S3_ETH:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "Waveshare ESP32-S3-ETH / ESP32-S3-ETH-POE",
- ETH_ADDR_WAVESHARE_ESP32_S3_ETH,
- ETH_PHY_SPI_CS_WAVESHARE_ESP32_S3_ETH,
- ETH_PHY_SPI_IRQ_WAVESHARE_ESP32_S3_ETH,
- ETH_PHY_SPI_RST_WAVESHARE_ESP32_S3_ETH,
- ETH_PHY_SPI_SCK_WAVESHARE_ESP32_S3_ETH,
- ETH_PHY_SPI_MISO_WAVESHARE_ESP32_S3_ETH,
- ETH_PHY_SPI_MOSI_WAVESHARE_ESP32_S3_ETH,
- ETH_PHY_W5500);
- break;
- case NetworkDeviceType::ETH01_Evo:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "ETH01-Evo",
- ETH_PHY_ADDR_ETH01EVO,
- ETH_PHY_CS_ETH01EVO,
- ETH_PHY_IRQ_ETH01EVO,
- ETH_PHY_RST_ETH01EVO,
- ETH_PHY_SPI_SCK_ETH01EVO,
- ETH_PHY_SPI_MISO_ETH01EVO,
- ETH_PHY_SPI_MOSI_ETH01EVO,
- ETH_PHY_TYPE_DM9051);
- break;
- case NetworkDeviceType::LilyGO_T_ETH_ELite:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "LilyGO T-ETH ELite",
- ETH_PHY_ADDR_W5500,
- ETH_PHY_CS_ELITE_W5500,
- ETH_PHY_IRQ_ELITE_W5500,
- ETH_PHY_RST_ELITE_W5500,
- ETH_PHY_SPI_SCK_ELITE_W5500,
- ETH_PHY_SPI_MISO_ELITE_W5500,
- ETH_PHY_SPI_MOSI_ELITE_W5500,
- ETH_PHY_W5500);
- break;
- case NetworkDeviceType::LilyGO_T_ETH_Lite_S3:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "LilyGO T-ETH-Lite-ESP32S3",
- ETH_PHY_ADDR_W5500,
- ETH_PHY_CS_ETHLITES3_W5500,
- ETH_PHY_IRQ_ETHLITES3_W5500,
- ETH_PHY_RST_ETHLITES3_W5500,
- ETH_PHY_SPI_SCK_ETHLITES3_W5500,
- ETH_PHY_SPI_MISO_ETHLITES3_W5500,
- ETH_PHY_SPI_MOSI_ETHLITES3_W5500,
- ETH_PHY_W5500);
- break;
+ case NetworkDeviceType::W5500:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "Generic W5500",
+ ETH_PHY_ADDR_W5500,
+ ETH_PHY_CS_GENERIC_W5500,
+ ETH_PHY_IRQ_GENERIC_W5500,
+ ETH_PHY_RST_GENERIC_W5500,
+ ETH_PHY_SPI_SCK_GENERIC_W5500,
+ ETH_PHY_SPI_MISO_GENERIC_W5500,
+ ETH_PHY_SPI_MOSI_GENERIC_W5500,
+ ETH_PHY_W5500);
+ break;
+ case NetworkDeviceType::W5500M5:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "M5Stack Atom POE",
+ ETH_PHY_ADDR_W5500,
+ ETH_PHY_CS_M5_W5500,
+ ETH_PHY_IRQ_M5_W5500,
+ ETH_PHY_RST_M5_W5500,
+ ETH_PHY_SPI_SCK_M5_W5500,
+ ETH_PHY_SPI_MISO_M5_W5500,
+ ETH_PHY_SPI_MOSI_M5_W5500,
+ ETH_PHY_W5500);
+ break;
+ case NetworkDeviceType::W5500M5S3:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "M5Stack Atom POE S3",
+ ETH_PHY_ADDR_W5500,
+ ETH_PHY_CS_M5_W5500_S3,
+ ETH_PHY_IRQ_M5_W5500,
+ ETH_PHY_RST_M5_W5500,
+ ETH_PHY_SPI_SCK_M5_W5500_S3,
+ ETH_PHY_SPI_MISO_M5_W5500_S3,
+ ETH_PHY_SPI_MOSI_M5_W5500_S3,
+ ETH_PHY_W5500);
+ break;
+ case NetworkDeviceType::Waveshare_ESP32_S3_ETH:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "Waveshare ESP32-S3-ETH / ESP32-S3-ETH-POE",
+ ETH_ADDR_WAVESHARE_ESP32_S3_ETH,
+ ETH_PHY_SPI_CS_WAVESHARE_ESP32_S3_ETH,
+ ETH_PHY_SPI_IRQ_WAVESHARE_ESP32_S3_ETH,
+ ETH_PHY_SPI_RST_WAVESHARE_ESP32_S3_ETH,
+ ETH_PHY_SPI_SCK_WAVESHARE_ESP32_S3_ETH,
+ ETH_PHY_SPI_MISO_WAVESHARE_ESP32_S3_ETH,
+ ETH_PHY_SPI_MOSI_WAVESHARE_ESP32_S3_ETH,
+ ETH_PHY_W5500);
+ break;
+ case NetworkDeviceType::ETH01_Evo:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "ETH01-Evo",
+ ETH_PHY_ADDR_ETH01EVO,
+ ETH_PHY_CS_ETH01EVO,
+ ETH_PHY_IRQ_ETH01EVO,
+ ETH_PHY_RST_ETH01EVO,
+ ETH_PHY_SPI_SCK_ETH01EVO,
+ ETH_PHY_SPI_MISO_ETH01EVO,
+ ETH_PHY_SPI_MOSI_ETH01EVO,
+ ETH_PHY_TYPE_DM9051);
+ break;
+ case NetworkDeviceType::LilyGO_T_ETH_ELite:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "LilyGO T-ETH ELite",
+ ETH_PHY_ADDR_W5500,
+ ETH_PHY_CS_ELITE_W5500,
+ ETH_PHY_IRQ_ELITE_W5500,
+ ETH_PHY_RST_ELITE_W5500,
+ ETH_PHY_SPI_SCK_ELITE_W5500,
+ ETH_PHY_SPI_MISO_ELITE_W5500,
+ ETH_PHY_SPI_MOSI_ELITE_W5500,
+ ETH_PHY_W5500);
+ break;
+ case NetworkDeviceType::LilyGO_T_ETH_Lite_S3:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "LilyGO T-ETH-Lite-ESP32S3",
+ ETH_PHY_ADDR_W5500,
+ ETH_PHY_CS_ETHLITES3_W5500,
+ ETH_PHY_IRQ_ETHLITES3_W5500,
+ ETH_PHY_RST_ETHLITES3_W5500,
+ ETH_PHY_SPI_SCK_ETHLITES3_W5500,
+ ETH_PHY_SPI_MISO_ETHLITES3_W5500,
+ ETH_PHY_SPI_MOSI_ETHLITES3_W5500,
+ ETH_PHY_W5500);
+ break;
- case NetworkDeviceType::CUSTOM:
- {
- int custPHY = preferences->getInt(preference_network_custom_phy, 0);
-
- if(custPHY >= 1 && custPHY <= 3)
+ case NetworkDeviceType::CUSTOM:
{
- std::string custName;
- eth_phy_type_t custEthtype;
+ int custPHY = preferences->getInt(preference_network_custom_phy, 0);
- switch(custPHY)
+ if(custPHY >= 1 && custPHY <= 3)
{
- case 1:
- custName = "Custom (W5500)";
- custEthtype = ETH_PHY_W5500;
- break;
- case 2:
- custName = "Custom (DN9051)";
- custEthtype = ETH_PHY_DM9051;
- break;
- case 3:
- custName = "Custom (KSZ8851SNL)";
- custEthtype = ETH_PHY_KSZ8851;
- break;
- default:
- custName = "Custom (W5500)";
- custEthtype = ETH_PHY_W5500;
- break;
+ std::string custName;
+ eth_phy_type_t custEthtype;
+
+ switch(custPHY)
+ {
+ case 1:
+ custName = "Custom (W5500)";
+ custEthtype = ETH_PHY_W5500;
+ break;
+ case 2:
+ custName = "Custom (DN9051)";
+ custEthtype = ETH_PHY_DM9051;
+ break;
+ case 3:
+ custName = "Custom (KSZ8851SNL)";
+ custEthtype = ETH_PHY_KSZ8851;
+ break;
+ default:
+ custName = "Custom (W5500)";
+ custEthtype = ETH_PHY_W5500;
+ break;
+ }
+
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, custName,
+ preferences->getInt(preference_network_custom_addr, -1),
+ preferences->getInt(preference_network_custom_cs, -1),
+ preferences->getInt(preference_network_custom_irq, -1),
+ preferences->getInt(preference_network_custom_rst, -1),
+ preferences->getInt(preference_network_custom_sck, -1),
+ preferences->getInt(preference_network_custom_miso, -1),
+ preferences->getInt(preference_network_custom_mosi, -1),
+ custEthtype);
}
-
- device = new EthernetDevice(hostname, preferences, ipConfiguration, custName,
- preferences->getInt(preference_network_custom_addr, -1),
- preferences->getInt(preference_network_custom_cs, -1),
- preferences->getInt(preference_network_custom_irq, -1),
- preferences->getInt(preference_network_custom_rst, -1),
- preferences->getInt(preference_network_custom_sck, -1),
- preferences->getInt(preference_network_custom_miso, -1),
- preferences->getInt(preference_network_custom_mosi, -1),
- custEthtype);
- }
#if defined(CONFIG_IDF_TARGET_ESP32) || defined(CONFIG_IDF_TARGET_ESP32P4)
- else if(custPHY >= 4 && custPHY <= 9)
- {
- int custCLKpref = preferences->getInt(preference_network_custom_clk, 0);
+ else if(custPHY >= 4 && custPHY <= 9)
+ {
+ int custCLKpref = preferences->getInt(preference_network_custom_clk, 0);
- std::string custName = NetworkUtil::GetCustomEthernetDeviceName(custPHY);
- eth_phy_type_t custEthtype = NetworkUtil::GetCustomEthernetType(custPHY);
- eth_clock_mode_t custCLK = NetworkUtil::GetCustomClock(custCLKpref);
+ std::string custName = NetworkUtil::GetCustomEthernetDeviceName(custPHY);
+ eth_phy_type_t custEthtype = NetworkUtil::GetCustomEthernetType(custPHY);
+ eth_clock_mode_t custCLK = NetworkUtil::GetCustomClock(custCLKpref);
- device = new EthernetDevice(hostname, preferences, ipConfiguration, custName,
- preferences->getInt(preference_network_custom_addr, -1),
- preferences->getInt(preference_network_custom_pwr, -1),
- preferences->getInt(preference_network_custom_mdc, -1),
- preferences->getInt(preference_network_custom_mdio, -1),
- custEthtype,
- custCLK);
- }
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, custName,
+ preferences->getInt(preference_network_custom_addr, -1),
+ preferences->getInt(preference_network_custom_pwr, -1),
+ preferences->getInt(preference_network_custom_mdc, -1),
+ preferences->getInt(preference_network_custom_mdio, -1),
+ custEthtype,
+ custCLK);
+ }
#endif
#ifndef CONFIG_IDF_TARGET_ESP32H2
- else
- {
- device = new WifiDevice(hostname, preferences, ipConfiguration);
- }
+ else
+ {
+ device = new WifiDevice(hostname, preferences, ipConfiguration);
+ }
#endif
- }
- break;
+ }
+ break;
#if defined(CONFIG_IDF_TARGET_ESP32)
- case NetworkDeviceType::M5STACK_PoESP32_Unit:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "M5STACK PoESP32 Unit",
- ETH_PHY_ADDR_M5_POESP32,
- ETH_PHY_POWER_M5_POESP32,
- ETH_PHY_MDC_M5_POESP32,
- ETH_PHY_MDIO_M5_POESP32,
- ETH_CLK_MODE_M5_TYPE,
- ETH_CLK_MODE_M5_POESP32);
- break;
- case NetworkDeviceType::Olimex_LAN8720:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "Olimex (LAN8720)", ETH_PHY_ADDR_LAN8720, 12, ETH_PHY_MDC_LAN8720, ETH_PHY_MDIO_LAN8720, ETH_PHY_TYPE_LAN8720, ETH_CLOCK_GPIO17_OUT);
- break;
- case NetworkDeviceType::WT32_LAN8720:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "WT32-ETH01", 1, 16);
- break;
- case NetworkDeviceType::GL_S10:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "GL-S10", 1, 5, ETH_PHY_MDC_LAN8720, ETH_PHY_MDIO_LAN8720, ETH_PHY_IP101, ETH_CLOCK_GPIO0_IN);
- break;
- case NetworkDeviceType::LilyGO_T_ETH_POE:
- device = new EthernetDevice(hostname, preferences, ipConfiguration, "LilyGO T-ETH-POE", 0, -1, ETH_PHY_MDC_LAN8720, ETH_PHY_MDIO_LAN8720, ETH_PHY_TYPE_LAN8720, ETH_CLOCK_GPIO17_OUT);
- break;
+ case NetworkDeviceType::M5STACK_PoESP32_Unit:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "M5STACK PoESP32 Unit",
+ ETH_PHY_ADDR_M5_POESP32,
+ ETH_PHY_POWER_M5_POESP32,
+ ETH_PHY_MDC_M5_POESP32,
+ ETH_PHY_MDIO_M5_POESP32,
+ ETH_CLK_MODE_M5_TYPE,
+ ETH_CLK_MODE_M5_POESP32);
+ break;
+ case NetworkDeviceType::Olimex_LAN8720:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "Olimex (LAN8720)", ETH_PHY_ADDR_LAN8720, 12, ETH_PHY_MDC_LAN8720, ETH_PHY_MDIO_LAN8720, ETH_PHY_TYPE_LAN8720, ETH_CLOCK_GPIO17_OUT);
+ break;
+ case NetworkDeviceType::WT32_LAN8720:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "WT32-ETH01", 1, 16);
+ break;
+ case NetworkDeviceType::GL_S10:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "GL-S10", 1, 5, ETH_PHY_MDC_LAN8720, ETH_PHY_MDIO_LAN8720, ETH_PHY_IP101, ETH_CLOCK_GPIO0_IN);
+ break;
+ case NetworkDeviceType::LilyGO_T_ETH_POE:
+ device = new EthernetDevice(hostname, preferences, ipConfiguration, "LilyGO T-ETH-POE", 0, -1, ETH_PHY_MDC_LAN8720, ETH_PHY_MDIO_LAN8720, ETH_PHY_TYPE_LAN8720, ETH_CLOCK_GPIO17_OUT);
+ break;
#endif
#ifndef CONFIG_IDF_TARGET_ESP32H2
- case NetworkDeviceType::WiFi:
- device = new WifiDevice(hostname, preferences, ipConfiguration);
- break;
- default:
- device = new WifiDevice(hostname, preferences, ipConfiguration);
- break;
+ case NetworkDeviceType::WiFi:
+ device = new WifiDevice(hostname, preferences, ipConfiguration);
+ break;
+ default:
+ device = new WifiDevice(hostname, preferences, ipConfiguration);
+ break;
#else
- default:
+ default:
device = new EthernetDevice(hostname, preferences, ipConfiguration, "Custom (W5500)",
preferences->getInt(preference_network_custom_addr, -1),
preferences->getInt(preference_network_custom_cs, -1),
diff --git a/stacktrace/esp_exception_decoder_rs.js b/stacktrace/esp_exception_decoder_rs.js
new file mode 100644
index 0000000..ff3fe8d
--- /dev/null
+++ b/stacktrace/esp_exception_decoder_rs.js
@@ -0,0 +1,302 @@
+
+let wasm;
+
+const heap = new Array(32).fill(undefined);
+
+heap.push(undefined, null, true, false);
+
+function getObject(idx) { return heap[idx]; }
+
+let heap_next = heap.length;
+
+function dropObject(idx) {
+ if (idx < 36) return;
+ heap[idx] = heap_next;
+ heap_next = idx;
+}
+
+function takeObject(idx) {
+ const ret = getObject(idx);
+ dropObject(idx);
+ return ret;
+}
+
+let cachedTextDecoder = new TextDecoder('utf-8', { ignoreBOM: true, fatal: true });
+
+cachedTextDecoder.decode();
+
+let cachegetUint8Memory0 = null;
+function getUint8Memory0() {
+ if (cachegetUint8Memory0 === null || cachegetUint8Memory0.buffer !== wasm.memory.buffer) {
+ cachegetUint8Memory0 = new Uint8Array(wasm.memory.buffer);
+ }
+ return cachegetUint8Memory0;
+}
+
+function getStringFromWasm0(ptr, len) {
+ return cachedTextDecoder.decode(getUint8Memory0().subarray(ptr, ptr + len));
+}
+
+let cachegetInt32Memory0 = null;
+function getInt32Memory0() {
+ if (cachegetInt32Memory0 === null || cachegetInt32Memory0.buffer !== wasm.memory.buffer) {
+ cachegetInt32Memory0 = new Int32Array(wasm.memory.buffer);
+ }
+ return cachegetInt32Memory0;
+}
+
+const u32CvtShim = new Uint32Array(2);
+
+const uint64CvtShim = new BigUint64Array(u32CvtShim.buffer);
+
+function addHeapObject(obj) {
+ if (heap_next === heap.length) heap.push(heap.length + 1);
+ const idx = heap_next;
+ heap_next = heap[idx];
+
+ heap[idx] = obj;
+ return idx;
+}
+
+let WASM_VECTOR_LEN = 0;
+
+let cachedTextEncoder = new TextEncoder('utf-8');
+
+const encodeString = (typeof cachedTextEncoder.encodeInto === 'function'
+ ? function (arg, view) {
+ return cachedTextEncoder.encodeInto(arg, view);
+}
+ : function (arg, view) {
+ const buf = cachedTextEncoder.encode(arg);
+ view.set(buf);
+ return {
+ read: arg.length,
+ written: buf.length
+ };
+});
+
+function passStringToWasm0(arg, malloc, realloc) {
+
+ if (realloc === undefined) {
+ const buf = cachedTextEncoder.encode(arg);
+ const ptr = malloc(buf.length);
+ getUint8Memory0().subarray(ptr, ptr + buf.length).set(buf);
+ WASM_VECTOR_LEN = buf.length;
+ return ptr;
+ }
+
+ let len = arg.length;
+ let ptr = malloc(len);
+
+ const mem = getUint8Memory0();
+
+ let offset = 0;
+
+ for (; offset < len; offset++) {
+ const code = arg.charCodeAt(offset);
+ if (code > 0x7F) break;
+ mem[ptr + offset] = code;
+ }
+
+ if (offset !== len) {
+ if (offset !== 0) {
+ arg = arg.slice(offset);
+ }
+ ptr = realloc(ptr, len, len = offset + arg.length * 3);
+ const view = getUint8Memory0().subarray(ptr + offset, ptr + len);
+ const ret = encodeString(arg, view);
+
+ offset += ret.written;
+ }
+
+ WASM_VECTOR_LEN = offset;
+ return ptr;
+}
+
+function passArray8ToWasm0(arg, malloc) {
+ const ptr = malloc(arg.length * 1);
+ getUint8Memory0().set(arg, ptr / 1);
+ WASM_VECTOR_LEN = arg.length;
+ return ptr;
+}
+/**
+* @param {Uint8Array} bin
+* @param {string} dump
+* @returns {Array}
+*/
+export function decode(bin, dump) {
+ var ptr0 = passArray8ToWasm0(bin, wasm.__wbindgen_malloc);
+ var len0 = WASM_VECTOR_LEN;
+ var ptr1 = passStringToWasm0(dump, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len1 = WASM_VECTOR_LEN;
+ var ret = wasm.decode(ptr0, len0, ptr1, len1);
+ return takeObject(ret);
+}
+
+/**
+*/
+export class DecodedAddress {
+
+ static __wrap(ptr) {
+ const obj = Object.create(DecodedAddress.prototype);
+ obj.ptr = ptr;
+
+ return obj;
+ }
+
+ __destroy_into_raw() {
+ const ptr = this.ptr;
+ this.ptr = 0;
+
+ return ptr;
+ }
+
+ free() {
+ const ptr = this.__destroy_into_raw();
+ wasm.__wbg_decodedaddress_free(ptr);
+ }
+ /**
+ */
+ get address() {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.__wbg_get_decodedaddress_address(retptr, this.ptr);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ u32CvtShim[0] = r0;
+ u32CvtShim[1] = r1;
+ const n0 = uint64CvtShim[0];
+ return n0;
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ }
+ }
+ /**
+ * @param {BigInt} arg0
+ */
+ set address(arg0) {
+ uint64CvtShim[0] = arg0;
+ const low0 = u32CvtShim[0];
+ const high0 = u32CvtShim[1];
+ wasm.__wbg_set_decodedaddress_address(this.ptr, low0, high0);
+ }
+ /**
+ * @returns {string}
+ */
+ get function_name() {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.decodedaddress_function_name(retptr, this.ptr);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ return getStringFromWasm0(r0, r1);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ wasm.__wbindgen_free(r0, r1);
+ }
+ }
+ /**
+ * @param {string} function_name
+ */
+ set function_name(function_name) {
+ var ptr0 = passStringToWasm0(function_name, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ wasm.decodedaddress_set_function_name(this.ptr, ptr0, len0);
+ }
+ /**
+ * @returns {string}
+ */
+ get location() {
+ try {
+ const retptr = wasm.__wbindgen_add_to_stack_pointer(-16);
+ wasm.decodedaddress_location(retptr, this.ptr);
+ var r0 = getInt32Memory0()[retptr / 4 + 0];
+ var r1 = getInt32Memory0()[retptr / 4 + 1];
+ return getStringFromWasm0(r0, r1);
+ } finally {
+ wasm.__wbindgen_add_to_stack_pointer(16);
+ wasm.__wbindgen_free(r0, r1);
+ }
+ }
+ /**
+ * @param {string} location
+ */
+ set location(location) {
+ var ptr0 = passStringToWasm0(location, wasm.__wbindgen_malloc, wasm.__wbindgen_realloc);
+ var len0 = WASM_VECTOR_LEN;
+ wasm.decodedaddress_set_location(this.ptr, ptr0, len0);
+ }
+}
+
+async function load(module, imports) {
+ if (typeof Response === 'function' && module instanceof Response) {
+ if (typeof WebAssembly.instantiateStreaming === 'function') {
+ try {
+ return await WebAssembly.instantiateStreaming(module, imports);
+
+ } catch (e) {
+ if (module.headers.get('Content-Type') != 'application/wasm') {
+ console.warn("`WebAssembly.instantiateStreaming` failed because your server does not serve wasm with `application/wasm` MIME type. Falling back to `WebAssembly.instantiate` which is slower. Original error:\n", e);
+
+ } else {
+ throw e;
+ }
+ }
+ }
+
+ const bytes = await module.arrayBuffer();
+ return await WebAssembly.instantiate(bytes, imports);
+
+ } else {
+ const instance = await WebAssembly.instantiate(module, imports);
+
+ if (instance instanceof WebAssembly.Instance) {
+ return { instance, module };
+
+ } else {
+ return instance;
+ }
+ }
+}
+
+async function init(input) {
+ if (typeof input === 'undefined') {
+ input = new URL('esp_exception_decoder_rs_bg.wasm', import.meta.url);
+ }
+ const imports = {};
+ imports.wbg = {};
+ imports.wbg.__wbindgen_object_drop_ref = function(arg0) {
+ takeObject(arg0);
+ };
+ imports.wbg.__wbg_decodedaddress_new = function(arg0) {
+ var ret = DecodedAddress.__wrap(arg0);
+ return addHeapObject(ret);
+ };
+ imports.wbg.__wbg_new_949bbc1147195c4e = function() {
+ var ret = new Array();
+ return addHeapObject(ret);
+ };
+ imports.wbg.__wbg_push_284486ca27c6aa8b = function(arg0, arg1) {
+ var ret = getObject(arg0).push(getObject(arg1));
+ return ret;
+ };
+ imports.wbg.__wbindgen_throw = function(arg0, arg1) {
+ throw new Error(getStringFromWasm0(arg0, arg1));
+ };
+
+ if (typeof input === 'string' || (typeof Request === 'function' && input instanceof Request) || (typeof URL === 'function' && input instanceof URL)) {
+ input = fetch(input);
+ }
+
+
+
+ const { instance, module } = await load(await input, imports);
+
+ wasm = instance.exports;
+ init.__wbindgen_wasm_module = module;
+
+ return wasm;
+}
+
+export default init;
+
diff --git a/stacktrace/esp_exception_decoder_rs_bg.wasm b/stacktrace/esp_exception_decoder_rs_bg.wasm
new file mode 100644
index 0000000..e19f193
Binary files /dev/null and b/stacktrace/esp_exception_decoder_rs_bg.wasm differ
diff --git a/stacktrace/index.html b/stacktrace/index.html
new file mode 100644
index 0000000..c4f2a2a
--- /dev/null
+++ b/stacktrace/index.html
@@ -0,0 +1,181 @@
+
+
+
+
+
+ NukiHub Stack trace decoder
+
+
+
+
+
+
+
+
+ NukiHub Stack Trace Decoder
+
+
+
+
+ Binary:
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Stack trace:
+
+ Loading...
+
+
+
+
+
+
+
\ No newline at end of file