From 419f6cc78c8807e2940743a4d2d07824185b9dd1 Mon Sep 17 00:00:00 2001 From: "DESKTOP-T3S0O41\\iris_lj" Date: Thu, 15 Jan 2026 15:00:21 +0800 Subject: [PATCH] V2.1 --- .../Adafruit BusIO/library.properties | 9 - .../library.properties | 10 - .../ArduinoHttpClient/.codespellrc | 7 + .../ArduinoHttpClient/.github/dependabot.yml | 12 + .../.github/workflows/check-arduino.yml | 28 + .../.github/workflows/compile-examples.yml | 63 + .../.github/workflows/report-size-deltas.yml | 24 + .../.github/workflows/spell-check.yml | 22 + .../.github/workflows/sync-labels.yml | 138 ++ .../ArduinoHttpClient/.gitignore | 1 + .../ArduinoHttpClient/.piopm | 2 +- .../ArduinoHttpClient/CHANGELOG.md | 2 +- .../ArduinoHttpClient/README.md | 4 + .../examples/BasicAuthGet/BasicAuthGet.ino | 2 +- .../examples/CustomHeader/CustomHeader.ino | 2 +- .../examples/DweetGet/DweetGet.ino | 2 +- .../examples/DweetPost/DweetPost.ino | 2 +- .../examples/HueBlink/HueBlink.ino | 12 +- .../examples/ParseURL/ParseURL.ino | 29 + .../PostWithHeaders/PostWithHeaders.ino | 4 +- .../examples/SimpleDelete/SimpleDelete.ino | 2 +- .../examples/SimpleGet/SimpleGet.ino | 2 +- .../SimpleHttpExample/SimpleHttpExample.ino | 8 +- .../examples/SimplePost/SimplePost.ino | 2 +- .../examples/SimplePut/SimplePut.ino | 2 +- .../SimpleWebSocket/SimpleWebSocket.ino | 2 +- .../ArduinoHttpClient/keywords.txt | 2 +- .../ArduinoHttpClient/library.json | 12 - .../ArduinoHttpClient/library.properties | 4 +- .../ArduinoHttpClient/src/HttpClient.cpp | 40 +- .../ArduinoHttpClient/src/HttpClient.h | 14 +- .../ArduinoHttpClient/src/URLParser.h | 108 + .../ArduinoHttpClient/src/WebSocketClient.h | 6 +- .../src/utility/URLParser/LICENSE | 23 + .../src/utility/URLParser/README.md | 5 + .../src/utility/URLParser/http_parser.c | 591 +++++ .../src/utility/URLParser/http_parser.h | 96 + .../esp32-s3-devkitc-1/ArduinoJson/.piopm | 2 +- .../ArduinoJson/ArduinoJson.h | 2 +- .../ArduinoJson/LICENSE.txt | 2 +- .../esp32-s3-devkitc-1/ArduinoJson/README.md | 84 +- .../JsonConfigFile/JsonConfigFile.ino | 30 +- .../JsonFilterExample/JsonFilterExample.ino | 11 +- .../JsonGeneratorExample.ino | 30 +- .../JsonHttpClient/JsonHttpClient.ino | 13 +- .../JsonParserExample/JsonParserExample.ino | 33 +- .../examples/JsonServer/JsonServer.ino | 19 +- .../examples/JsonUdpBeacon/JsonUdpBeacon.ino | 16 +- .../examples/MsgPackParser/MsgPackParser.ino | 34 +- .../ProgmemExample/ProgmemExample.ino | 6 +- .../examples/StringExample/StringExample.ino | 7 +- .../ArduinoJson/library.json | 4 +- .../ArduinoJson/library.properties | 4 +- .../ArduinoJson/src/ArduinoJson.h | 2 +- .../ArduinoJson/src/ArduinoJson.hpp | 23 +- .../src/ArduinoJson/Array/ArrayData.hpp | 66 + .../src/ArduinoJson/Array/ArrayImpl.hpp | 79 + .../src/ArduinoJson/Array/ElementProxy.hpp | 43 +- .../src/ArduinoJson/Array/JsonArray.hpp | 224 +- .../src/ArduinoJson/Array/JsonArrayConst.hpp | 134 +- .../src/ArduinoJson/Array/JsonArrayImpl.hpp | 36 - .../ArduinoJson/Array/JsonArrayIterator.hpp | 93 +- .../src/ArduinoJson/Array/Utilities.hpp | 56 +- .../ArduinoJson/Collection/CollectionData.hpp | 129 +- .../ArduinoJson/Collection/CollectionImpl.hpp | 266 +- .../src/ArduinoJson/Configuration.hpp | 114 +- .../Deserialization/DeserializationError.hpp | 2 +- .../DeserializationOptions.hpp | 2 +- .../ArduinoJson/Deserialization/Filter.hpp | 13 +- .../Deserialization/NestingLimit.hpp | 2 +- .../ArduinoJson/Deserialization/Reader.hpp | 11 +- .../Readers/ArduinoStreamReader.hpp | 7 +- .../Readers/ArduinoStringReader.hpp | 5 +- .../Deserialization/Readers/FlashReader.hpp | 2 +- .../Readers/IteratorReader.hpp | 11 +- .../Deserialization/Readers/RamReader.hpp | 8 +- .../Readers/StdStreamReader.hpp | 5 +- .../Deserialization/Readers/VariantReader.hpp | 4 +- .../Deserialization/deserialize.hpp | 81 +- .../Document/BasicJsonDocument.hpp | 168 -- .../Document/DynamicJsonDocument.hpp | 32 - .../src/ArduinoJson/Document/JsonDocument.hpp | 435 ++-- .../Document/StaticJsonDocument.hpp | 61 - .../src/ArduinoJson/Json/EscapeSequence.hpp | 6 +- .../src/ArduinoJson/Json/JsonDeserializer.hpp | 139 +- .../src/ArduinoJson/Json/JsonSerializer.hpp | 90 +- .../src/ArduinoJson/Json/Latch.hpp | 2 +- .../ArduinoJson/Json/PrettyJsonSerializer.hpp | 61 +- .../src/ArduinoJson/Json/TextFormatter.hpp | 14 +- .../src/ArduinoJson/Json/Utf16.hpp | 2 +- .../ArduinoJson/src/ArduinoJson/Json/Utf8.hpp | 2 +- .../src/ArduinoJson/Memory/Alignment.hpp | 2 +- .../src/ArduinoJson/Memory/Allocator.hpp | 49 + .../src/ArduinoJson/Memory/MemoryPool.hpp | 305 +-- .../src/ArduinoJson/Memory/MemoryPoolList.hpp | 214 ++ .../ArduinoJson/Memory/ResourceManager.hpp | 131 + .../Memory/ResourceManagerImpl.hpp | 52 + .../src/ArduinoJson/Memory/StringBuffer.hpp | 79 + .../src/ArduinoJson/Memory/StringBuilder.hpp | 88 + .../src/ArduinoJson/Memory/StringNode.hpp | 75 + .../src/ArduinoJson/Memory/StringPool.hpp | 102 + .../src/ArduinoJson/Misc/SerializedValue.hpp | 4 +- .../src/ArduinoJson/MsgPack/MsgPackBinary.hpp | 97 + .../MsgPack/MsgPackDeserializer.hpp | 506 ++-- .../ArduinoJson/MsgPack/MsgPackExtension.hpp | 120 + .../ArduinoJson/MsgPack/MsgPackSerializer.hpp | 85 +- .../MsgPack/{endianess.hpp => endianness.hpp} | 18 +- .../src/ArduinoJson/MsgPack/ieee754.hpp | 2 +- .../ArduinoJson/src/ArduinoJson/Namespace.hpp | 22 +- .../src/ArduinoJson/Numbers/FloatParts.hpp | 145 +- .../src/ArduinoJson/Numbers/FloatTraits.hpp | 46 +- .../src/ArduinoJson/Numbers/JsonFloat.hpp | 6 +- .../src/ArduinoJson/Numbers/JsonInteger.hpp | 12 +- .../ArduinoJson/Numbers/arithmeticCompare.hpp | 44 +- .../src/ArduinoJson/Numbers/convertNumber.hpp | 72 +- .../src/ArduinoJson/Numbers/parseNumber.hpp | 144 +- .../src/ArduinoJson/Object/JsonObject.hpp | 274 ++- .../ArduinoJson/Object/JsonObjectConst.hpp | 176 +- .../src/ArduinoJson/Object/JsonObjectImpl.hpp | 85 - .../ArduinoJson/Object/JsonObjectIterator.hpp | 94 +- .../src/ArduinoJson/Object/JsonPair.hpp | 30 +- .../src/ArduinoJson/Object/MemberProxy.hpp | 59 +- .../src/ArduinoJson/Object/ObjectData.hpp | 70 + .../src/ArduinoJson/Object/ObjectImpl.hpp | 92 + .../src/ArduinoJson/Polyfills/alias_cast.hpp | 2 +- .../src/ArduinoJson/Polyfills/assert.hpp | 2 +- .../src/ArduinoJson/Polyfills/attributes.hpp | 21 +- .../src/ArduinoJson/Polyfills/ctype.hpp | 2 +- .../src/ArduinoJson/Polyfills/integer.hpp | 19 +- .../src/ArduinoJson/Polyfills/limits.hpp | 14 +- .../src/ArduinoJson/Polyfills/math.hpp | 2 +- .../src/ArduinoJson/Polyfills/mpl/max.hpp | 2 +- .../src/ArduinoJson/Polyfills/pgmspace.hpp | 2 +- .../Polyfills/pgmspace_generic.hpp | 2 +- .../ArduinoJson/Polyfills/preprocessor.hpp | 8 +- .../src/ArduinoJson/Polyfills/type_traits.hpp | 6 +- .../Polyfills/type_traits/conditional.hpp | 10 +- .../Polyfills/type_traits/decay.hpp | 33 + .../Polyfills/type_traits/declval.hpp | 2 +- .../Polyfills/type_traits/enable_if.hpp | 7 +- .../Polyfills/type_traits/function_traits.hpp | 27 + .../type_traits/integral_constant.hpp | 9 +- .../Polyfills/type_traits/is_array.hpp | 2 +- .../Polyfills/type_traits/is_base_of.hpp | 6 +- .../Polyfills/type_traits/is_class.hpp | 2 +- .../Polyfills/type_traits/is_const.hpp | 2 +- .../Polyfills/type_traits/is_convertible.hpp | 4 +- .../Polyfills/type_traits/is_enum.hpp | 4 +- .../type_traits/is_floating_point.hpp | 9 +- .../Polyfills/type_traits/is_integral.hpp | 26 +- .../Polyfills/type_traits/is_pointer.hpp | 2 +- .../Polyfills/type_traits/is_same.hpp | 2 +- .../Polyfills/type_traits/is_signed.hpp | 18 +- .../Polyfills/type_traits/is_unsigned.hpp | 14 +- .../Polyfills/type_traits/make_unsigned.hpp | 5 +- .../Polyfills/type_traits/make_void.hpp | 14 - .../Polyfills/type_traits/remove_const.hpp | 9 +- .../Polyfills/type_traits/remove_cv.hpp | 13 +- .../type_traits/remove_reference.hpp | 9 +- .../Polyfills/type_traits/type_identity.hpp | 4 +- .../Polyfills/type_traits/void_t.hpp | 20 + .../src/ArduinoJson/Polyfills/utility.hpp | 21 +- .../Serialization/CountingDecorator.hpp | 2 +- .../src/ArduinoJson/Serialization/Writer.hpp | 4 +- .../Writers/ArduinoStringWriter.hpp | 8 +- .../Serialization/Writers/DummyWriter.hpp | 2 +- .../Serialization/Writers/PrintWriter.hpp | 7 +- .../Writers/StaticStringWriter.hpp | 2 +- .../Serialization/Writers/StdStreamWriter.hpp | 7 +- .../Serialization/Writers/StdStringWriter.hpp | 17 +- .../src/ArduinoJson/Serialization/measure.hpp | 9 +- .../ArduinoJson/Serialization/serialize.hpp | 21 +- .../StringStorage/StringCopier.hpp | 72 - .../ArduinoJson/StringStorage/StringMover.hpp | 48 - .../StringStorage/StringStorage.hpp | 24 - .../Strings/Adapters/FlashString.hpp | 18 +- .../Strings/Adapters/JsonString.hpp | 36 - .../Strings/Adapters/RamString.hpp | 152 +- .../Strings/Adapters/StringObject.hpp | 23 +- .../src/ArduinoJson/Strings/IsString.hpp | 5 +- .../src/ArduinoJson/Strings/JsonString.hpp | 62 +- .../src/ArduinoJson/Strings/StoragePolicy.hpp | 18 - .../src/ArduinoJson/Strings/StringAdapter.hpp | 30 +- .../ArduinoJson/Strings/StringAdapters.hpp | 15 +- .../src/ArduinoJson/Strings/StringTraits.hpp | 22 +- .../src/ArduinoJson/Variant/Converter.hpp | 7 +- .../src/ArduinoJson/Variant/ConverterImpl.hpp | 276 ++- .../src/ArduinoJson/Variant/JsonVariant.hpp | 39 +- .../ArduinoJson/Variant/JsonVariantConst.hpp | 181 +- .../ArduinoJson/Variant/JsonVariantCopier.hpp | 34 + .../Variant/JsonVariantVisitor.hpp | 61 + .../src/ArduinoJson/Variant/SlotFunctions.hpp | 45 - .../ArduinoJson/Variant/VariantAttorney.hpp | 27 +- .../ArduinoJson/Variant/VariantCompare.hpp | 142 +- .../ArduinoJson/Variant/VariantContent.hpp | 96 +- .../src/ArduinoJson/Variant/VariantData.hpp | 723 ++++-- .../Variant/VariantDataVisitor.hpp | 24 + .../ArduinoJson/Variant/VariantFunctions.hpp | 113 - .../src/ArduinoJson/Variant/VariantImpl.hpp | 281 +-- .../ArduinoJson/Variant/VariantOperators.hpp | 91 +- .../ArduinoJson/Variant/VariantRefBase.hpp | 350 +-- .../Variant/VariantRefBaseImpl.hpp | 175 ++ .../src/ArduinoJson/Variant/VariantSlot.hpp | 112 - .../src/ArduinoJson/Variant/VariantTag.hpp | 2 +- .../src/ArduinoJson/Variant/VariantTo.hpp | 8 +- .../src/ArduinoJson/Variant/Visitor.hpp | 54 - .../src/ArduinoJson/compatibility.hpp | 123 +- .../ArduinoJson/src/ArduinoJson/version.hpp | 12 +- .../ArduinoJson/src/CMakeLists.txt | 2 +- .../DallasTemperature/library.json | 38 - .../EspSoftwareSerial/library.json | 26 - .../EspSoftwareSerial/library.properties | 9 - .../InterpolationLib/library.properties | 9 - .../esp32-s3-devkitc-1/OneWire/library.json | 61 - .../OneWire/library.properties | 10 - .../PubSubClient/library.json | 18 - .../PubSubClient/library.properties | 9 - .../SolarCalculator/library.properties | 10 - .../library.properties | 9 - .../esp32-s3-devkitc-1/TinyGSM/library.json | 32 - .../TinyGSM/library.properties | 10 - .../esp32-s3-devkitc-1/Vector/library.json | 21 - .../Vector/library.properties | 9 - .pio/libdeps/esp32-s3-devkitc-1/integrity.dat | 14 +- .../esp32dev/ArduinoHttpClient/.gitignore | 5 - .../libdeps/esp32dev/ArduinoHttpClient/.piopm | 1 - .../esp32dev/ArduinoHttpClient/CHANGELOG.md | 33 - .../esp32dev/ArduinoHttpClient/README.md | 25 - .../examples/BasicAuthGet/BasicAuthGet.ino | 66 - .../examples/BasicAuthGet/arduino_secrets.h | 3 - .../examples/CustomHeader/CustomHeader.ino | 91 - .../examples/CustomHeader/arduino_secrets.h | 3 - .../examples/DweetGet/DweetGet.ino | 103 - .../examples/DweetGet/arduino_secrets.h | 3 - .../examples/DweetPost/DweetPost.ino | 79 - .../examples/DweetPost/arduino_secrets.h | 3 - .../examples/HueBlink/HueBlink.ino | 98 - .../examples/HueBlink/arduino_secrets.h | 3 - .../PostWithHeaders/PostWithHeaders.ino | 77 - .../PostWithHeaders/arduino_secrets.h | 3 - .../examples/SimpleDelete/SimpleDelete.ino | 68 - .../examples/SimpleDelete/arduino_secrets.h | 3 - .../examples/SimpleGet/SimpleGet.ino | 62 - .../examples/SimpleGet/arduino_secrets.h | 3 - .../SimpleHttpExample/SimpleHttpExample.ino | 133 - .../SimpleHttpExample/arduino_secrets.h | 3 - .../examples/SimplePost/SimplePost.ino | 66 - .../examples/SimplePost/arduino_secrets.h | 3 - .../examples/SimplePut/SimplePut.ino | 66 - .../examples/SimplePut/arduino_secrets.h | 3 - .../SimpleWebSocket/SimpleWebSocket.ino | 80 - .../SimpleWebSocket/arduino_secrets.h | 3 - .../examples/node_test_server/package.json | 13 - .../esp32dev/ArduinoHttpClient/keywords.txt | 67 - .../esp32dev/ArduinoHttpClient/library.json | 12 - .../ArduinoHttpClient/library.properties | 10 - .../ArduinoHttpClient/src/ArduinoHttpClient.h | 12 - .../ArduinoHttpClient/src/HttpClient.cpp | 862 ------- .../ArduinoHttpClient/src/HttpClient.h | 392 --- .../ArduinoHttpClient/src/URLEncoder.cpp | 53 - .../ArduinoHttpClient/src/URLEncoder.h | 25 - .../ArduinoHttpClient/src/WebSocketClient.cpp | 372 --- .../ArduinoHttpClient/src/WebSocketClient.h | 99 - .../esp32dev/ArduinoHttpClient/src/b64.cpp | 72 - .../esp32dev/ArduinoHttpClient/src/b64.h | 6 - .../esp32dev/EspSoftwareSerial/.gitignore | 33 - .../libdeps/esp32dev/EspSoftwareSerial/.piopm | 1 - .../esp32dev/EspSoftwareSerial/LICENSE | 502 ---- .../esp32dev/EspSoftwareSerial/README.md | 169 -- .../examples/bitpattern/bitpattern.ino | 71 - .../examples/loopback/loopback.ino | 279 --- .../examples/onewiretest/onewiretest.ino | 59 - .../examples/repeater/repeater.ino | 199 -- .../examples/servoTester/servoTester.ino | 113 - .../examples/swsertest/swsertest.ino | 79 - .../esp32dev/EspSoftwareSerial/keywords.txt | 43 - .../esp32dev/EspSoftwareSerial/library.json | 26 - .../EspSoftwareSerial/library.properties | 9 - .../EspSoftwareSerial/src/SoftwareSerial.cpp | 679 ------ .../EspSoftwareSerial/src/SoftwareSerial.h | 301 --- .../src/circular_queue/Delegate.h | 2130 ----------------- .../src/circular_queue/MultiDelegate.h | 567 ----- .../src/circular_queue/circular_queue.h | 393 --- .../src/circular_queue/circular_queue_mp.h | 200 -- .../src/circular_queue/ghostl.h | 94 - .pio/libdeps/esp32dev/PubSubClient/.gitignore | 5 - .pio/libdeps/esp32dev/PubSubClient/.piopm | 1 - .../libdeps/esp32dev/PubSubClient/.travis.yml | 7 - .../libdeps/esp32dev/PubSubClient/CHANGES.txt | 85 - .../libdeps/esp32dev/PubSubClient/LICENSE.txt | 20 - .pio/libdeps/esp32dev/PubSubClient/README.md | 50 - .../examples/mqtt_auth/mqtt_auth.ino | 43 - .../examples/mqtt_basic/mqtt_basic.ino | 77 - .../examples/mqtt_esp8266/mqtt_esp8266.ino | 129 - .../mqtt_large_message/mqtt_large_message.ino | 179 -- .../mqtt_publish_in_callback.ino | 60 - .../mqtt_reconnect_nonblocking.ino | 67 - .../examples/mqtt_stream/mqtt_stream.ino | 57 - .../esp32dev/PubSubClient/keywords.txt | 36 - .../esp32dev/PubSubClient/library.json | 18 - .../esp32dev/PubSubClient/library.properties | 9 - .../PubSubClient/src/PubSubClient.cpp | 769 ------ .../esp32dev/PubSubClient/src/PubSubClient.h | 184 -- .pio/libdeps/esp32dev/TinyGSM/.piopm | 1 - .pio/libdeps/esp32dev/TinyGSM/LICENSE | 165 -- .pio/libdeps/esp32dev/TinyGSM/README.md | 415 ---- .../examples/AllFunctions/AllFunctions.ino | 488 ---- .../examples/BlynkClient/BlynkClient.ino | 110 - .../examples/FileDownload/FileDownload.ino | 356 --- .../examples/HttpClient/HttpClient.ino | 261 -- .../examples/HttpsClient/HttpsClient.ino | 257 -- .../examples/MqttClient/MqttClient.ino | 290 --- .../TinyGSM/examples/WebClient/WebClient.ino | 244 -- .../examples/example_dependencies.json | 41 - .../more/Hologram_Dash/Hologram_Dash.ino | 136 -- .../examples/more/Industruino/Industruino.ino | 161 -- .../COMODORSACertificationAuthority.h | 36 - .../more/SIM800_SslSetCert/DSTRootCAX3.der.h | 74 - .../more/SIM800_SslSetCert/DSTRootCAX3.h | 22 - .../SIM800_SslSetCert/SIM800_SslSetCert.ino | 96 - .pio/libdeps/esp32dev/TinyGSM/keywords.txt | 29 - .pio/libdeps/esp32dev/TinyGSM/library.json | 32 - .../esp32dev/TinyGSM/library.properties | 10 - .../TinyGSM/src/ArduinoCompat/Client.h | 47 - .../TinyGSM/src/ArduinoCompat/IPAddress.h | 146 -- .pio/libdeps/esp32dev/TinyGSM/src/TinyGSM.h | 6 - .../esp32dev/TinyGSM/src/TinyGsmBattery.tpp | 98 - .../esp32dev/TinyGSM/src/TinyGsmBluetooth.tpp | 57 - .../esp32dev/TinyGSM/src/TinyGsmCalling.tpp | 90 - .../esp32dev/TinyGSM/src/TinyGsmClient.h | 121 - .../esp32dev/TinyGSM/src/TinyGsmClientA6.h | 580 ----- .../esp32dev/TinyGSM/src/TinyGsmClientBG96.h | 727 ------ .../TinyGSM/src/TinyGsmClientESP8266.h | 485 ---- .../esp32dev/TinyGSM/src/TinyGsmClientM590.h | 473 ---- .../esp32dev/TinyGSM/src/TinyGsmClientM95.h | 636 ----- .../esp32dev/TinyGSM/src/TinyGsmClientMC60.h | 622 ----- .../TinyGSM/src/TinyGsmClientSIM5360.h | 741 ------ .../TinyGSM/src/TinyGsmClientSIM7000.h | 534 ----- .../TinyGSM/src/TinyGsmClientSIM7000SSL.h | 730 ------ .../TinyGSM/src/TinyGsmClientSIM7080.h | 729 ------ .../TinyGSM/src/TinyGsmClientSIM70xx.h | 459 ---- .../TinyGSM/src/TinyGsmClientSIM7600.h | 866 ------- .../TinyGSM/src/TinyGsmClientSIM800.h | 771 ------ .../TinyGSM/src/TinyGsmClientSIM808.h | 168 -- .../TinyGSM/src/TinyGsmClientSaraR4.h | 900 ------- .../TinyGSM/src/TinyGsmClientSequansMonarch.h | 733 ------ .../esp32dev/TinyGSM/src/TinyGsmClientUBLOX.h | 854 ------- .../esp32dev/TinyGSM/src/TinyGsmClientXBee.h | 1562 ------------ .../esp32dev/TinyGSM/src/TinyGsmCommon.h | 120 - .../esp32dev/TinyGSM/src/TinyGsmFifo.h | 141 -- .../esp32dev/TinyGSM/src/TinyGsmGPRS.tpp | 171 -- .../esp32dev/TinyGSM/src/TinyGsmGPS.tpp | 82 - .../TinyGSM/src/TinyGsmGSMLocation.tpp | 149 -- .../esp32dev/TinyGSM/src/TinyGsmModem.tpp | 354 --- .../esp32dev/TinyGSM/src/TinyGsmNTP.tpp | 92 - .../esp32dev/TinyGSM/src/TinyGsmSMS.tpp | 224 -- .../esp32dev/TinyGSM/src/TinyGsmSSL.tpp | 71 - .../esp32dev/TinyGSM/src/TinyGsmTCP.tpp | 367 --- .../TinyGSM/src/TinyGsmTemperature.tpp | 40 - .../esp32dev/TinyGSM/src/TinyGsmTime.tpp | 106 - .../esp32dev/TinyGSM/src/TinyGsmWifi.tpp | 49 - .pio/libdeps/esp32dev/Vector/.gitignore | 9 - .pio/libdeps/esp32dev/Vector/.piopm | 1 - .pio/libdeps/esp32dev/Vector/LICENSE | 32 - .pio/libdeps/esp32dev/Vector/README.org | 47 - .../Vector/examples/PlatformIO/README.org | 45 - .../Vector/examples/PlatformIO/include/README | 38 - .../Vector/examples/PlatformIO/lib/README | 45 - .../Vector/examples/PlatformIO/platformio.ini | 32 - .../Vector/examples/PlatformIO/src/main.cpp | 45 - .../Vector/examples/PlatformIO/test/README | 10 - .../examples/PlatformIO/test/test_vector.cpp | 60 - .../examples/VectorTester/VectorTester.ino | 100 - .pio/libdeps/esp32dev/Vector/library.json | 21 - .../esp32dev/Vector/library.properties | 9 - .pio/libdeps/esp32dev/Vector/src/Vector.h | 99 - .../esp32dev/Vector/src/Vector/Vector.cpp | 8 - .../Vector/src/Vector/VectorDefinitions.h | 248 -- .../Vector/src/Vector/VectorIterator.h | 45 - .pio/libdeps/esp32dev/integrity.dat | 5 - lib/Adafruit BusIO/.clang-format | 243 ++ .../Adafruit BusIO/.github/ISSUE_TEMPLATE.md | 0 .../.github/PULL_REQUEST_TEMPLATE.md | 0 .../.github/workflows/githubci.yml | 0 .../Adafruit BusIO/.piopm | 0 .../Adafruit_BusIO_Register.cpp | 0 .../Adafruit BusIO/Adafruit_BusIO_Register.h | 0 lib/Adafruit BusIO/Adafruit_GenericDevice.cpp | 90 + lib/Adafruit BusIO/Adafruit_GenericDevice.h | 56 + .../Adafruit BusIO/Adafruit_I2CDevice.cpp | 0 .../Adafruit BusIO/Adafruit_I2CDevice.h | 0 .../Adafruit BusIO/Adafruit_I2CRegister.h | 0 .../Adafruit BusIO/Adafruit_SPIDevice.cpp | 0 .../Adafruit BusIO/Adafruit_SPIDevice.h | 0 .../Adafruit BusIO/CMakeLists.txt | 0 .../Adafruit BusIO/LICENSE | 0 .../Adafruit BusIO/README.md | 0 .../Adafruit BusIO/component.mk | 0 .../genericdevice_uartregtest/.uno.test.skip | 0 .../genericdevice_uartregtest.ino | 219 ++ .../genericdevice_uarttest/.uno.test.skip | 0 .../genericdevice_uarttest.ino | 98 + .../i2c_address_detect/i2c_address_detect.ino | 0 .../examples/i2c_readwrite/i2c_readwrite.ino | 0 .../examples/i2c_registers/i2c_registers.ino | 0 .../i2corspi_register/i2corspi_register.ino | 0 .../examples/spi_modetest/spi_modetest.ino | 0 .../examples/spi_readwrite/spi_readwrite.ino | 0 .../spi_register_bits/spi_register_bits.ino | 0 .../examples/spi_registers/spi_registers.ino | 0 lib/Adafruit BusIO/library.properties | 9 + .../.github/ISSUE_TEMPLATE.md | 0 .../.github/PULL_REQUEST_TEMPLATE.md | 0 .../.github/workflows/githubci.yml | 0 .../Adafruit MLX90614 Library/.piopm | 0 .../Adafruit_MLX90614.cpp | 0 .../Adafruit_MLX90614.h | 0 .../Adafruit MLX90614 Library/README.md | 0 .../code-of-conduct.md | 0 .../mlx_set_emissivity/mlx_set_emissivity.ino | 0 .../examples/mlxtest/mlxtest.ino | 0 .../library.properties | 10 + .../Adafruit MLX90614 Library/license.txt | 0 .../DallasTemperature/.arduino-ci.yml | 0 .../DallasTemperature/.gitattributes | 0 .../.github/workflows/arduino-lint.yml | 0 .../.github/workflows/arduino_test_runner.yml | 0 .../.github/workflows/jsoncheck.yml | 0 .../DallasTemperature/.gitignore | 0 .../DallasTemperature/.piopm | 0 .../DallasTemperature/DallasTemperature.cpp | 0 .../DallasTemperature/DallasTemperature.h | 0 .../DallasTemperature/README.md | 0 .../examples/Alarm/Alarm.ino | 0 .../examples/AlarmHandler/AlarmHandler.ino | 0 .../ExternalPullup/ExternalPullup.ino | 0 .../Multibus_simple/Multibus_simple.ino | 0 .../examples/Multiple/Multiple.ino | 0 .../SaveRecallScratchPad.ino | 0 .../examples/SetUserData/SetUserData.ino | 0 .../examples/Simple/Simple.ino | 0 .../examples/Single/Single.ino | 0 .../examples/Tester/Tester.ino | 0 .../examples/Timing/Timing.ino | 0 .../TwoPin_DS18B20/TwoPin_DS18B20.ino | 0 .../examples/UserDataDemo/UserDataDemo.ino | 0 .../UserDataWriteBatch/UserDataWriteBatch.ino | 0 .../WaitForConversion/WaitForConversion.ino | 0 .../WaitForConversion2/WaitForConversion2.ino | 0 .../examples/oneWireSearch/oneWireSearch.ino | 0 .../readPowerSupply/readPowerSupply.ino | 0 .../DallasTemperature/keywords.txt | 0 lib/DallasTemperature/library.json | 38 + .../DallasTemperature/library.properties | 0 .../EspSoftwareSerial/.gitignore | 0 .../EspSoftwareSerial/.piopm | 0 .../EspSoftwareSerial/LICENSE | 0 .../EspSoftwareSerial/README.md | 0 .../examples/bitpattern/bitpattern.ino | 0 .../examples/loopback/loopback.ino | 0 .../examples/onewiretest/onewiretest.ino | 0 .../examples/repeater/repeater.ino | 0 .../examples/servoTester/servoTester.ino | 0 .../examples/swsertest/swsertest.ino | 0 .../EspSoftwareSerial/keywords.txt | 0 lib/EspSoftwareSerial/library.json | 26 + lib/EspSoftwareSerial/library.properties | 9 + .../EspSoftwareSerial/src/SoftwareSerial.cpp | 0 .../EspSoftwareSerial/src/SoftwareSerial.h | 0 .../src/circular_queue/Delegate.h | 0 .../src/circular_queue/MultiDelegate.h | 0 .../src/circular_queue/circular_queue.h | 0 .../src/circular_queue/circular_queue_mp.h | 0 .../src/circular_queue/ghostl.h | 0 .../InterpolationLib/.piopm | 0 .../InterpolationLib/LICENSE | 0 .../InterpolationLib/README.md | 0 .../examples/Interpolation/Interpolation.ino | 0 .../InterpolationLib/examples/Map/Map.ino | 0 .../InterpolationLib/examples/Range/Range.ino | 0 .../InterpolationLib/keywords.txt | 0 lib/InterpolationLib/library.properties | 9 + .../InterpolationLib/src/InterpolationLib.cpp | 0 .../InterpolationLib/src/InterpolationLib.h | 0 .../esp32-s3-devkitc-1 => lib}/OneWire/.piopm | 0 .../OneWire/OneWire.cpp | 0 .../OneWire/OneWire.h | 0 .../DS18x20_Temperature.ino | 0 .../examples/DS2408_Switch/DS2408_Switch.ino | 0 .../examples/DS250x_PROM/DS250x_PROM.ino | 0 .../OneWire/keywords.txt | 0 lib/OneWire/library.json | 61 + lib/OneWire/library.properties | 10 + .../OneWire/util/OneWire_direct_gpio.h | 1 + .../OneWire/util/OneWire_direct_regtype.h | 0 .../PubSubClient/.gitignore | 0 .../PubSubClient/.piopm | 0 .../PubSubClient/.travis.yml | 0 .../PubSubClient/CHANGES.txt | 0 .../PubSubClient/LICENSE.txt | 0 .../PubSubClient/README.md | 0 .../examples/mqtt_auth/mqtt_auth.ino | 0 .../examples/mqtt_basic/mqtt_basic.ino | 0 .../examples/mqtt_esp8266/mqtt_esp8266.ino | 0 .../mqtt_large_message/mqtt_large_message.ino | 0 .../mqtt_publish_in_callback.ino | 0 .../mqtt_reconnect_nonblocking.ino | 0 .../examples/mqtt_stream/mqtt_stream.ino | 0 .../PubSubClient/keywords.txt | 0 lib/PubSubClient/library.json | 18 + lib/PubSubClient/library.properties | 9 + .../PubSubClient/src/PubSubClient.cpp | 0 .../PubSubClient/src/PubSubClient.h | 0 .../SolarCalculator/.piopm | 0 .../SolarCalculator/LICENSE | 0 .../SolarCalculator/README.md | 0 .../EquationOfTime/EquationOfTime.ino | 0 .../SolarCalculatorTimeLib.ino | 0 .../SolarTrackingTimeLib.ino | 0 .../examples/SunriseSunset/SunriseSunset.ino | 0 .../SunriseSunsetAltitude.ino | 0 .../SolarCalculator/keywords.txt | 0 lib/SolarCalculator/library.properties | 10 + .../SolarCalculator/src/SolarCalculator.cpp | 0 .../SolarCalculator/src/SolarCalculator.h | 0 .../.gitattributes | 0 .../.gitignore | 0 .../SparkFun u-blox Arduino Library/.piopm | 0 .../CONTRIBUTING.md | 0 .../ISSUE_TEMPLATE.md | 0 .../LICENSE.md | 0 .../SparkFun u-blox Arduino Library/README.md | 0 .../SparkFun u-blox Arduino Library/Theory.md | 0 .../Example1_calibrateSensor.ino | 0 .../Example2_getIMUData.ino | 0 .../Example3_getSensorStatus.ino | 0 .../Example4_vehicleDynamics.ino | 0 .../Example5_getHNRData.ino | 0 .../Example6_getAutoHNRData.ino | 0 .../Example10_AltitudeMSL.ino | 0 .../Example1_FactoryDefaultviaI2C.ino | 0 .../Example2_FactoryDefaultsviaSerial.ino | 0 .../Example12_UseUart/Example12_UseUart.ino | 0 .../Example1_AutoPVT/Example1_AutoPVT.ino | 0 .../Example2_AutoPVT_ExplicitUpdate.ino | 0 .../Example3_AssumeAutoPVTviaUart.ino | 0 .../Example14_DebugOutput.ino | 0 .../Example15_GetDateTime.ino | 0 .../Example16_Nanosecond_MaxOutput.ino | 0 .../Example16_PartialSecond_MaxOutput.ino | 0 .../Example17_Geofence/Example17_Geofence.ino | 0 .../Example18_PowerSaveMode.ino | 0 .../Example19_DynamicModel.ino | 0 .../Example1_BasicNMEARead.ino | 0 .../Example20_SendCustomCommand.ino | 0 .../Example21_ModuleInfo.ino | 0 .../Example22_PowerOff/Example22_PowerOff.ino | 0 .../Example2_NMEAParsing.ino | 0 .../Example3_GetPosition.ino | 0 .../Example4_FixType/Example4_FixType.ino | 0 .../Example5_SpeedHeadingPrecision.ino | 0 .../Example6_EnableNMEASentences.ino | 0 .../Example7_OutputRate.ino | 0 .../Example8_GetProtocolVersion.ino | 0 .../Example9_ChangeI2CAddress.ino | 0 .../Example1_EnableRTCM.ino | 0 .../Example2_StartRTCMBase.ino | 0 .../Example3_BaseWithLCD.ino | 0 ...Example1_GetPositionAndTime_Series_6_7.ino | 0 ...rkFun_Ublox_Arduino_Library_Series_6_7.cpp | 0 ...parkFun_Ublox_Arduino_Library_Series_6_7.h | 0 ...10_GetHighPrecisionPositionAndAccuracy.ino | 0 ...11_GetHighPrecisionPositionUsingDouble.ino | 0 .../Example12_setStaticPosition.ino | 0 .../Example13_autoHPPOSLLH.ino | 0 .../Example14_NTRIPServer.ino | 0 .../ZED-F9P/Example14_NTRIPServer/secrets.h | 0 .../Example1_GetPositionAccuracy.ino | 0 .../Example2_ValConfigurationMethod.ino | 0 .../Example3_StartRTCMBase.ino | 0 .../Example4_BaseWithLCD.ino | 0 ...xample5_RelativePositioningInformation.ino | 0 .../Example6_GetVal/Example6_GetVal.ino | 0 .../Example7_SetVal/Example7_SetVal.ino | 0 .../Example8_GetSetPortSettings.ino | 0 .../Example9_multiSetVal.ino | 0 .../CMakeLists.txt | 0 .../nrf52840dk_nrf52840.overlay | 0 .../prj.conf | 0 .../src/SparkFun_Ublox_Zephyr_Interface.cpp | 0 .../src/SparkFun_Ublox_Zephyr_Interface.h | 0 .../src/SparkFun_Ublox_Zephyr_Library.cpp | 0 .../src/SparkFun_Ublox_Zephyr_Library.h | 0 .../src/main.c | 0 .../img/Contributing.JPG | Bin .../keywords.txt | 0 .../library.properties | 9 + .../src/SparkFun_Ublox_Arduino_Library.cpp | 0 .../src/SparkFun_Ublox_Arduino_Library.h | 0 .../src/u-blox_config_keys.h | 0 .../esp32-s3-devkitc-1 => lib}/TinyGSM/.piopm | 0 .../TinyGSM/LICENSE | 0 .../TinyGSM/README.md | 0 .../examples/AllFunctions/AllFunctions.ino | 0 .../examples/BlynkClient/BlynkClient.ino | 0 .../examples/FileDownload/FileDownload.ino | 0 .../examples/HttpClient/HttpClient.ino | 0 .../examples/HttpsClient/HttpsClient.ino | 0 .../examples/MqttClient/MqttClient.ino | 0 .../TinyGSM/examples/WebClient/WebClient.ino | 0 .../examples/example_dependencies.json | 0 .../more/Hologram_Dash/Hologram_Dash.ino | 0 .../examples/more/Industruino/Industruino.ino | 0 .../COMODORSACertificationAuthority.h | 0 .../more/SIM800_SslSetCert/DSTRootCAX3.der.h | 0 .../more/SIM800_SslSetCert/DSTRootCAX3.h | 0 .../SIM800_SslSetCert/SIM800_SslSetCert.ino | 0 .../TinyGSM/keywords.txt | 0 lib/TinyGSM/library.json | 32 + lib/TinyGSM/library.properties | 10 + .../TinyGSM/src/ArduinoCompat/Client.h | 0 .../TinyGSM/src/ArduinoCompat/IPAddress.h | 0 .../TinyGSM/src/TinyGSM.h | 0 .../TinyGSM/src/TinyGsmBattery.tpp | 0 .../TinyGSM/src/TinyGsmBluetooth.tpp | 0 .../TinyGSM/src/TinyGsmCalling.tpp | 0 .../TinyGSM/src/TinyGsmClient.h | 0 .../TinyGSM/src/TinyGsmClientA6.h | 0 .../TinyGSM/src/TinyGsmClientBG96.h | 0 .../TinyGSM/src/TinyGsmClientESP8266.h | 0 .../TinyGSM/src/TinyGsmClientM590.h | 0 .../TinyGSM/src/TinyGsmClientM95.h | 0 .../TinyGSM/src/TinyGsmClientMC60.h | 0 .../TinyGSM/src/TinyGsmClientSIM5360.h | 0 .../TinyGSM/src/TinyGsmClientSIM7000.h | 0 .../TinyGSM/src/TinyGsmClientSIM7000SSL.h | 0 .../TinyGSM/src/TinyGsmClientSIM7080.h | 0 .../TinyGSM/src/TinyGsmClientSIM70xx.h | 0 .../TinyGSM/src/TinyGsmClientSIM7600.h | 0 .../TinyGSM/src/TinyGsmClientSIM800.h | 0 .../TinyGSM/src/TinyGsmClientSIM808.h | 0 .../TinyGSM/src/TinyGsmClientSaraR4.h | 0 .../TinyGSM/src/TinyGsmClientSequansMonarch.h | 0 .../TinyGSM/src/TinyGsmClientUBLOX.h | 0 .../TinyGSM/src/TinyGsmClientXBee.h | 0 .../TinyGSM/src/TinyGsmCommon.h | 9 +- .../TinyGSM/src/TinyGsmFifo.h | 0 .../TinyGSM/src/TinyGsmGPRS.tpp | 0 .../TinyGSM/src/TinyGsmGPS.tpp | 0 .../TinyGSM/src/TinyGsmGSMLocation.tpp | 0 .../TinyGSM/src/TinyGsmModem.tpp | 0 .../TinyGSM/src/TinyGsmNTP.tpp | 0 .../TinyGSM/src/TinyGsmSMS.tpp | 0 .../TinyGSM/src/TinyGsmSSL.tpp | 0 .../TinyGSM/src/TinyGsmTCP.tpp | 0 .../TinyGSM/src/TinyGsmTemperature.tpp | 0 .../TinyGSM/src/TinyGsmTime.tpp | 0 .../TinyGSM/src/TinyGsmWifi.tpp | 0 .../Vector/.gitignore | 0 .../esp32-s3-devkitc-1 => lib}/Vector/.piopm | 0 .../esp32-s3-devkitc-1 => lib}/Vector/LICENSE | 0 .../Vector/README.org | 0 .../Vector/examples/PlatformIO/README.org | 0 .../Vector/examples/PlatformIO/include/README | 0 .../Vector/examples/PlatformIO/lib/README | 0 .../Vector/examples/PlatformIO/platformio.ini | 0 .../Vector/examples/PlatformIO/src/main.cpp | 0 .../Vector/examples/PlatformIO/test/README | 0 .../examples/PlatformIO/test/test_vector.cpp | 0 .../examples/VectorTester/VectorTester.ino | 0 lib/Vector/library.json | 21 + lib/Vector/library.properties | 9 + .../Vector/src/Vector.h | 0 .../Vector/src/Vector/Vector.cpp | 0 .../Vector/src/Vector/VectorDefinitions.h | 0 .../Vector/src/Vector/VectorIterator.h | 0 partitions.csv | 8 + platformio.ini | 74 +- src/Communication_Protocol.h | 4 +- src/GSMMannager.cpp | 72 +- src/GSMMannager.h | 18 +- src/SDmanger.cpp | 14 +- src/SensorIS11.cpp | 31 +- src/SensorIS11.h | 8 +- src/TCPserver.cpp | 6 +- src/adc.cpp | 7 +- src/adc.h | 2 +- src/beep.cpp | 18 +- src/comon.h | 15 +- src/gaoguangpu.code-workspace | 57 +- src/gsmm_http.cpp | 341 +++ src/gsmm_http.h | 31 + src/gsmm_mqtt.cpp | 432 ++++ src/gsmm_mqtt.h | 36 + src/head.h | 105 + src/log.cpp | 16 +- src/main.cpp | 1593 ++++++------ src/my74hc595.cpp | 2 +- src/mymsc.cpp | 123 + src/mymsc.h | 18 + src/servo.cpp | 42 +- src/servo.h | 5 + src/tuigan.cpp | 18 + src/tuigan.h | 3 +- src/updatebyme.cpp | 4 +- 705 files changed, 9981 insertions(+), 35723 deletions(-) delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/Adafruit BusIO/library.properties delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/Adafruit MLX90614 Library/library.properties create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.codespellrc create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/dependabot.yml create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/check-arduino.yml create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/compile-examples.yml create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/report-size-deltas.yml create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/spell-check.yml create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/sync-labels.yml create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/ParseURL/ParseURL.ino delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/library.json create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/URLParser.h create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/LICENSE create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/README.md create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/http_parser.c create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/http_parser.h create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Memory/Allocator.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Memory/MemoryPoolList.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Memory/ResourceManager.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Memory/ResourceManagerImpl.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Memory/StringBuffer.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Memory/StringBuilder.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Memory/StringNode.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Memory/StringPool.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackBinary.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackExtension.hpp rename .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/MsgPack/{endianess.hpp => endianness.hpp} (52%) delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Object/JsonObjectImpl.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Object/ObjectData.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Object/ObjectImpl.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/decay.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/function_traits.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_void.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/void_t.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Strings/Adapters/JsonString.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Variant/JsonVariantCopier.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Variant/JsonVariantVisitor.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Variant/VariantDataVisitor.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp create mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Variant/VariantRefBaseImpl.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Variant/Visitor.hpp delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/DallasTemperature/library.json delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/EspSoftwareSerial/library.json delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/EspSoftwareSerial/library.properties delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/InterpolationLib/library.properties delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/OneWire/library.json delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/OneWire/library.properties delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/PubSubClient/library.json delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/PubSubClient/library.properties delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/SolarCalculator/library.properties delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/SparkFun u-blox Arduino Library/library.properties delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/TinyGSM/library.json delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/TinyGSM/library.properties delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/Vector/library.json delete mode 100644 .pio/libdeps/esp32-s3-devkitc-1/Vector/library.properties delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/.gitignore delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/.piopm delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/CHANGELOG.md delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/README.md delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/BasicAuthGet/BasicAuthGet.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/BasicAuthGet/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/CustomHeader/CustomHeader.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/CustomHeader/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/DweetGet/DweetGet.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/DweetGet/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/DweetPost/DweetPost.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/DweetPost/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/HueBlink/HueBlink.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/HueBlink/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/PostWithHeaders/PostWithHeaders.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/PostWithHeaders/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimpleDelete/SimpleDelete.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimpleDelete/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimpleGet/SimpleGet.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimpleGet/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimpleHttpExample/SimpleHttpExample.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimpleHttpExample/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimplePost/SimplePost.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimplePost/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimplePut/SimplePut.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimplePut/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimpleWebSocket/SimpleWebSocket.ino delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/SimpleWebSocket/arduino_secrets.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/examples/node_test_server/package.json delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/keywords.txt delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/library.json delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/library.properties delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/ArduinoHttpClient.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/HttpClient.cpp delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/HttpClient.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/URLEncoder.cpp delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/URLEncoder.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/WebSocketClient.cpp delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/WebSocketClient.h delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/b64.cpp delete mode 100644 .pio/libdeps/esp32dev/ArduinoHttpClient/src/b64.h delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/.gitignore delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/.piopm delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/LICENSE delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/README.md delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/examples/bitpattern/bitpattern.ino delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/examples/loopback/loopback.ino delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/examples/onewiretest/onewiretest.ino delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/examples/repeater/repeater.ino delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/examples/servoTester/servoTester.ino delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/examples/swsertest/swsertest.ino delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/keywords.txt delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/library.json delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/library.properties delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/src/SoftwareSerial.cpp delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/src/SoftwareSerial.h delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/src/circular_queue/Delegate.h delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/src/circular_queue/MultiDelegate.h delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/src/circular_queue/circular_queue.h delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h delete mode 100644 .pio/libdeps/esp32dev/EspSoftwareSerial/src/circular_queue/ghostl.h delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/.gitignore delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/.piopm delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/.travis.yml delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/CHANGES.txt delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/LICENSE.txt delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/README.md delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/examples/mqtt_auth/mqtt_auth.ino delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/examples/mqtt_basic/mqtt_basic.ino delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/examples/mqtt_esp8266/mqtt_esp8266.ino delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/examples/mqtt_large_message/mqtt_large_message.ino delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/examples/mqtt_publish_in_callback/mqtt_publish_in_callback.ino delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/examples/mqtt_reconnect_nonblocking/mqtt_reconnect_nonblocking.ino delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/examples/mqtt_stream/mqtt_stream.ino delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/keywords.txt delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/library.json delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/library.properties delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/src/PubSubClient.cpp delete mode 100644 .pio/libdeps/esp32dev/PubSubClient/src/PubSubClient.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/.piopm delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/LICENSE delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/README.md delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/AllFunctions/AllFunctions.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/BlynkClient/BlynkClient.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/FileDownload/FileDownload.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/HttpClient/HttpClient.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/HttpsClient/HttpsClient.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/MqttClient/MqttClient.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/WebClient/WebClient.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/example_dependencies.json delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/more/Hologram_Dash/Hologram_Dash.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/more/Industruino/Industruino.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/more/SIM800_SslSetCert/COMODORSACertificationAuthority.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/more/SIM800_SslSetCert/DSTRootCAX3.der.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/more/SIM800_SslSetCert/DSTRootCAX3.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/examples/more/SIM800_SslSetCert/SIM800_SslSetCert.ino delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/keywords.txt delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/library.json delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/library.properties delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/ArduinoCompat/Client.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/ArduinoCompat/IPAddress.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGSM.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmBattery.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmBluetooth.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmCalling.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClient.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientA6.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientBG96.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientESP8266.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientM590.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientM95.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientMC60.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSIM5360.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSIM7000.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSIM7000SSL.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSIM7080.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSIM70xx.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSIM7600.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSIM800.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSIM808.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSaraR4.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientSequansMonarch.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientUBLOX.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmClientXBee.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmCommon.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmFifo.h delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmGPRS.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmGPS.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmGSMLocation.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmModem.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmNTP.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmSMS.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmSSL.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmTCP.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmTemperature.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmTime.tpp delete mode 100644 .pio/libdeps/esp32dev/TinyGSM/src/TinyGsmWifi.tpp delete mode 100644 .pio/libdeps/esp32dev/Vector/.gitignore delete mode 100644 .pio/libdeps/esp32dev/Vector/.piopm delete mode 100644 .pio/libdeps/esp32dev/Vector/LICENSE delete mode 100644 .pio/libdeps/esp32dev/Vector/README.org delete mode 100644 .pio/libdeps/esp32dev/Vector/examples/PlatformIO/README.org delete mode 100644 .pio/libdeps/esp32dev/Vector/examples/PlatformIO/include/README delete mode 100644 .pio/libdeps/esp32dev/Vector/examples/PlatformIO/lib/README delete mode 100644 .pio/libdeps/esp32dev/Vector/examples/PlatformIO/platformio.ini delete mode 100644 .pio/libdeps/esp32dev/Vector/examples/PlatformIO/src/main.cpp delete mode 100644 .pio/libdeps/esp32dev/Vector/examples/PlatformIO/test/README delete mode 100644 .pio/libdeps/esp32dev/Vector/examples/PlatformIO/test/test_vector.cpp delete mode 100644 .pio/libdeps/esp32dev/Vector/examples/VectorTester/VectorTester.ino delete mode 100644 .pio/libdeps/esp32dev/Vector/library.json delete mode 100644 .pio/libdeps/esp32dev/Vector/library.properties delete mode 100644 .pio/libdeps/esp32dev/Vector/src/Vector.h delete mode 100644 .pio/libdeps/esp32dev/Vector/src/Vector/Vector.cpp delete mode 100644 .pio/libdeps/esp32dev/Vector/src/Vector/VectorDefinitions.h delete mode 100644 .pio/libdeps/esp32dev/Vector/src/Vector/VectorIterator.h delete mode 100644 .pio/libdeps/esp32dev/integrity.dat create mode 100644 lib/Adafruit BusIO/.clang-format rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/.github/ISSUE_TEMPLATE.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/.github/PULL_REQUEST_TEMPLATE.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/.github/workflows/githubci.yml (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/Adafruit_BusIO_Register.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/Adafruit_BusIO_Register.h (100%) create mode 100644 lib/Adafruit BusIO/Adafruit_GenericDevice.cpp create mode 100644 lib/Adafruit BusIO/Adafruit_GenericDevice.h rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/Adafruit_I2CDevice.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/Adafruit_I2CDevice.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/Adafruit_I2CRegister.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/Adafruit_SPIDevice.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/Adafruit_SPIDevice.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/CMakeLists.txt (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/LICENSE (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/component.mk (100%) create mode 100644 lib/Adafruit BusIO/examples/genericdevice_uartregtest/.uno.test.skip create mode 100644 lib/Adafruit BusIO/examples/genericdevice_uartregtest/genericdevice_uartregtest.ino create mode 100644 lib/Adafruit BusIO/examples/genericdevice_uarttest/.uno.test.skip create mode 100644 lib/Adafruit BusIO/examples/genericdevice_uarttest/genericdevice_uarttest.ino rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/examples/i2c_address_detect/i2c_address_detect.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/examples/i2c_readwrite/i2c_readwrite.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/examples/i2c_registers/i2c_registers.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/examples/i2corspi_register/i2corspi_register.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/examples/spi_modetest/spi_modetest.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/examples/spi_readwrite/spi_readwrite.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/examples/spi_register_bits/spi_register_bits.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit BusIO/examples/spi_registers/spi_registers.ino (100%) create mode 100644 lib/Adafruit BusIO/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/.github/ISSUE_TEMPLATE.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/.github/PULL_REQUEST_TEMPLATE.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/.github/workflows/githubci.yml (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/Adafruit_MLX90614.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/Adafruit_MLX90614.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/code-of-conduct.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/examples/mlx_set_emissivity/mlx_set_emissivity.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/examples/mlxtest/mlxtest.ino (100%) create mode 100644 lib/Adafruit MLX90614 Library/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Adafruit MLX90614 Library/license.txt (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/.arduino-ci.yml (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/.gitattributes (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/.github/workflows/arduino-lint.yml (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/.github/workflows/arduino_test_runner.yml (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/.github/workflows/jsoncheck.yml (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/.gitignore (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/DallasTemperature.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/DallasTemperature.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/Alarm/Alarm.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/AlarmHandler/AlarmHandler.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/ExternalPullup/ExternalPullup.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/Multibus_simple/Multibus_simple.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/Multiple/Multiple.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/SaveRecallScratchPad/SaveRecallScratchPad.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/SetUserData/SetUserData.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/Simple/Simple.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/Single/Single.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/Tester/Tester.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/Timing/Timing.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/TwoPin_DS18B20/TwoPin_DS18B20.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/UserDataDemo/UserDataDemo.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/UserDataWriteBatch/UserDataWriteBatch.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/WaitForConversion/WaitForConversion.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/WaitForConversion2/WaitForConversion2.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/oneWireSearch/oneWireSearch.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/examples/readPowerSupply/readPowerSupply.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/keywords.txt (100%) create mode 100644 lib/DallasTemperature/library.json rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/DallasTemperature/library.properties (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/.gitignore (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/LICENSE (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/examples/bitpattern/bitpattern.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/examples/loopback/loopback.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/examples/onewiretest/onewiretest.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/examples/repeater/repeater.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/examples/servoTester/servoTester.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/examples/swsertest/swsertest.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/keywords.txt (100%) create mode 100644 lib/EspSoftwareSerial/library.json create mode 100644 lib/EspSoftwareSerial/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/src/SoftwareSerial.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/src/SoftwareSerial.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/src/circular_queue/Delegate.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/src/circular_queue/MultiDelegate.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/src/circular_queue/circular_queue.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/src/circular_queue/circular_queue_mp.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/EspSoftwareSerial/src/circular_queue/ghostl.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/LICENSE (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/examples/Interpolation/Interpolation.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/examples/Map/Map.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/examples/Range/Range.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/keywords.txt (100%) create mode 100644 lib/InterpolationLib/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/src/InterpolationLib.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/InterpolationLib/src/InterpolationLib.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/OneWire.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/OneWire.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/examples/DS18x20_Temperature/DS18x20_Temperature.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/examples/DS2408_Switch/DS2408_Switch.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/examples/DS250x_PROM/DS250x_PROM.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/keywords.txt (100%) create mode 100644 lib/OneWire/library.json create mode 100644 lib/OneWire/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/util/OneWire_direct_gpio.h (99%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/OneWire/util/OneWire_direct_regtype.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/.gitignore (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/.travis.yml (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/CHANGES.txt (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/LICENSE.txt (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/examples/mqtt_auth/mqtt_auth.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/examples/mqtt_basic/mqtt_basic.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/examples/mqtt_esp8266/mqtt_esp8266.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/examples/mqtt_large_message/mqtt_large_message.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/examples/mqtt_publish_in_callback/mqtt_publish_in_callback.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/examples/mqtt_reconnect_nonblocking/mqtt_reconnect_nonblocking.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/examples/mqtt_stream/mqtt_stream.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/keywords.txt (100%) create mode 100644 lib/PubSubClient/library.json create mode 100644 lib/PubSubClient/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/src/PubSubClient.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/PubSubClient/src/PubSubClient.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/LICENSE (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/examples/EquationOfTime/EquationOfTime.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/examples/SolarCalculatorTimeLib/SolarCalculatorTimeLib.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/examples/SolarTrackingTimeLib/SolarTrackingTimeLib.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/examples/SunriseSunset/SunriseSunset.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/examples/SunriseSunsetAltitude/SunriseSunsetAltitude.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/keywords.txt (100%) create mode 100644 lib/SolarCalculator/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/src/SolarCalculator.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SolarCalculator/src/SolarCalculator.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/.gitattributes (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/.gitignore (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/CONTRIBUTING.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/ISSUE_TEMPLATE.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/LICENSE.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/Theory.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Dead Reckoning/Example1_calibrateSensor/Example1_calibrateSensor.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Dead Reckoning/Example2_getIMUData/Example2_getIMUData.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Dead Reckoning/Example3_getSensorStatus/Example3_getSensorStatus.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Dead Reckoning/Example4_vehicleDynamics/Example4_vehicleDynamics.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Dead Reckoning/Example5_getHNRData/Example5_getHNRData.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Dead Reckoning/Example6_getAutoHNRData/Example6_getAutoHNRData.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example10_AltitudeMSL/Example10_AltitudeMSL.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example11_ResetModule/Example1_FactoryDefaultviaI2C/Example1_FactoryDefaultviaI2C.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example11_ResetModule/Example2_FactoryDefaultsviaSerial/Example2_FactoryDefaultsviaSerial.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example12_UseUart/Example12_UseUart.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example13_PVT/Example1_AutoPVT/Example1_AutoPVT.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example13_PVT/Example2_AutoPVT_ExplicitUpdate/Example2_AutoPVT_ExplicitUpdate.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example13_PVT/Example3_AssumeAutoPVTviaUart/Example3_AssumeAutoPVTviaUart.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example14_DebugOutput/Example14_DebugOutput.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example15_GetDateTime/Example15_GetDateTime.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example16_Nanosecond_MaxOutput/Example16_Nanosecond_MaxOutput.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example16_PartialSecond_MaxOutput/Example16_PartialSecond_MaxOutput.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example17_Geofence/Example17_Geofence.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example18_PowerSaveMode/Example18_PowerSaveMode.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example19_DynamicModel/Example19_DynamicModel.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example1_BasicNMEARead/Example1_BasicNMEARead.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example20_SendCustomCommand/Example20_SendCustomCommand.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example21_ModuleInfo/Example21_ModuleInfo.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example22_PowerOff/Example22_PowerOff.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example2_NMEAParsing/Example2_NMEAParsing.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example3_GetPosition/Example3_GetPosition.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example4_FixType/Example4_FixType.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example5_SpeedHeadingPrecision/Example5_SpeedHeadingPrecision.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example6_EnableNMEASentences/Example6_EnableNMEASentences.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example7_OutputRate/Example7_OutputRate.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example8_GetProtocolVersion/Example8_GetProtocolVersion.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Example9_ChangeI2CAddress/Example9_ChangeI2CAddress.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/NEO-M8P-2/Example1_EnableRTCM/Example1_EnableRTCM.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/NEO-M8P-2/Example2_StartRTCMBase/Example2_StartRTCMBase.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/NEO-M8P-2/Example3_BaseWithLCD/Example3_BaseWithLCD.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Series_6_7/Example1_GetPositionAndTime_Series_6_7/Example1_GetPositionAndTime_Series_6_7.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Series_6_7/Example1_GetPositionAndTime_Series_6_7/SparkFun_Ublox_Arduino_Library_Series_6_7.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Series_6_7/Example1_GetPositionAndTime_Series_6_7/SparkFun_Ublox_Arduino_Library_Series_6_7.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example10_GetHighPrecisionPositionAndAccuracy/Example10_GetHighPrecisionPositionAndAccuracy.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example11_GetHighPrecisionPositionUsingDouble/Example11_GetHighPrecisionPositionUsingDouble.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example12_setStaticPosition/Example12_setStaticPosition.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example13_autoHPPOSLLH/Example13_autoHPPOSLLH.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example14_NTRIPServer/Example14_NTRIPServer.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example14_NTRIPServer/secrets.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example1_GetPositionAccuracy/Example1_GetPositionAccuracy.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example2_ValConfigurationMethod/Example2_ValConfigurationMethod.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example3_StartRTCMBase/Example3_StartRTCMBase.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example4_BaseWithLCD/Example4_BaseWithLCD.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example5_RelativePositioningInformation/Example5_RelativePositioningInformation.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example6_GetVal/Example6_GetVal.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example7_SetVal/Example7_SetVal.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example8_GetSetPortSettings/Example8_GetSetPortSettings.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/ZED-F9P/Example9_multiSetVal/Example9_multiSetVal.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Zephyr/Example1_GetPositionAndTime_Zephyr/CMakeLists.txt (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Zephyr/Example1_GetPositionAndTime_Zephyr/nrf52840dk_nrf52840.overlay (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Zephyr/Example1_GetPositionAndTime_Zephyr/prj.conf (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Zephyr/Example1_GetPositionAndTime_Zephyr/src/SparkFun_Ublox_Zephyr_Interface.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Zephyr/Example1_GetPositionAndTime_Zephyr/src/SparkFun_Ublox_Zephyr_Interface.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Zephyr/Example1_GetPositionAndTime_Zephyr/src/SparkFun_Ublox_Zephyr_Library.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Zephyr/Example1_GetPositionAndTime_Zephyr/src/SparkFun_Ublox_Zephyr_Library.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/examples/Zephyr/Example1_GetPositionAndTime_Zephyr/src/main.c (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/img/Contributing.JPG (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/keywords.txt (100%) create mode 100644 lib/SparkFun u-blox Arduino Library/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/src/SparkFun_Ublox_Arduino_Library.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/src/SparkFun_Ublox_Arduino_Library.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/SparkFun u-blox Arduino Library/src/u-blox_config_keys.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/LICENSE (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/README.md (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/AllFunctions/AllFunctions.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/BlynkClient/BlynkClient.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/FileDownload/FileDownload.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/HttpClient/HttpClient.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/HttpsClient/HttpsClient.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/MqttClient/MqttClient.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/WebClient/WebClient.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/example_dependencies.json (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/more/Hologram_Dash/Hologram_Dash.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/more/Industruino/Industruino.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/more/SIM800_SslSetCert/COMODORSACertificationAuthority.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/more/SIM800_SslSetCert/DSTRootCAX3.der.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/more/SIM800_SslSetCert/DSTRootCAX3.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/examples/more/SIM800_SslSetCert/SIM800_SslSetCert.ino (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/keywords.txt (100%) create mode 100644 lib/TinyGSM/library.json create mode 100644 lib/TinyGSM/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/ArduinoCompat/Client.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/ArduinoCompat/IPAddress.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGSM.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmBattery.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmBluetooth.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmCalling.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClient.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientA6.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientBG96.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientESP8266.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientM590.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientM95.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientMC60.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSIM5360.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSIM7000.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSIM7000SSL.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSIM7080.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSIM70xx.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSIM7600.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSIM800.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSIM808.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSaraR4.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientSequansMonarch.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientUBLOX.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmClientXBee.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmCommon.h (91%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmFifo.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmGPRS.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmGPS.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmGSMLocation.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmModem.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmNTP.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmSMS.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmSSL.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmTCP.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmTemperature.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmTime.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/TinyGSM/src/TinyGsmWifi.tpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/.gitignore (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/.piopm (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/LICENSE (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/README.org (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/examples/PlatformIO/README.org (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/examples/PlatformIO/include/README (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/examples/PlatformIO/lib/README (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/examples/PlatformIO/platformio.ini (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/examples/PlatformIO/src/main.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/examples/PlatformIO/test/README (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/examples/PlatformIO/test/test_vector.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/examples/VectorTester/VectorTester.ino (100%) create mode 100644 lib/Vector/library.json create mode 100644 lib/Vector/library.properties rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/src/Vector.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/src/Vector/Vector.cpp (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/src/Vector/VectorDefinitions.h (100%) rename {.pio/libdeps/esp32-s3-devkitc-1 => lib}/Vector/src/Vector/VectorIterator.h (100%) create mode 100644 partitions.csv create mode 100644 src/gsmm_http.cpp create mode 100644 src/gsmm_http.h create mode 100644 src/gsmm_mqtt.cpp create mode 100644 src/gsmm_mqtt.h create mode 100644 src/head.h create mode 100644 src/mymsc.cpp create mode 100644 src/mymsc.h diff --git a/.pio/libdeps/esp32-s3-devkitc-1/Adafruit BusIO/library.properties b/.pio/libdeps/esp32-s3-devkitc-1/Adafruit BusIO/library.properties deleted file mode 100644 index 5a130f9..0000000 --- a/.pio/libdeps/esp32-s3-devkitc-1/Adafruit BusIO/library.properties +++ /dev/null @@ -1,9 +0,0 @@ -name=Adafruit BusIO -version=1.15.0 -author=Adafruit -maintainer=Adafruit -sentence=This is a library for abstracting away I2C and SPI interfacing -paragraph=This is a library for abstracting away I2C and SPI interfacing -category=Signal Input/Output -url=https://github.com/adafruit/Adafruit_BusIO -architectures=* diff --git a/.pio/libdeps/esp32-s3-devkitc-1/Adafruit MLX90614 Library/library.properties b/.pio/libdeps/esp32-s3-devkitc-1/Adafruit MLX90614 Library/library.properties deleted file mode 100644 index 7e2294b..0000000 --- a/.pio/libdeps/esp32-s3-devkitc-1/Adafruit MLX90614 Library/library.properties +++ /dev/null @@ -1,10 +0,0 @@ -name=Adafruit MLX90614 Library -version=2.1.5 -author=Adafruit -maintainer=Adafruit -sentence=Arduino library for the MLX90614 sensors in the Adafruit shop -paragraph=Arduino library for the MLX90614 sensors in the Adafruit shop -category=Sensors -url=https://github.com/adafruit/Adafruit-MLX90614-Library -architectures=* -depends=Adafruit BusIO diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.codespellrc b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.codespellrc new file mode 100644 index 0000000..c5233c0 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.codespellrc @@ -0,0 +1,7 @@ +# See: https://github.com/codespell-project/codespell#using-a-config-file +[codespell] +# In the event of a false positive, add the problematic word, in all lowercase, to a comma-separated list here: +ignore-words-list = , +check-filenames = +check-hidden = +skip = ./.git,./src/utility/URLParser diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/dependabot.yml b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/dependabot.yml new file mode 100644 index 0000000..fa738ec --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/dependabot.yml @@ -0,0 +1,12 @@ +# See: https://docs.github.com/en/github/administering-a-repository/configuration-options-for-dependency-updates#about-the-dependabotyml-file +version: 2 + +updates: + # Configure check for outdated GitHub Actions actions in workflows. + # See: https://docs.github.com/en/github/administering-a-repository/keeping-your-actions-up-to-date-with-dependabot + - package-ecosystem: github-actions + directory: / # Check the repository's workflows under /.github/workflows/ + schedule: + interval: daily + labels: + - "topic: infrastructure" diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/check-arduino.yml b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/check-arduino.yml new file mode 100644 index 0000000..adb330f --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/check-arduino.yml @@ -0,0 +1,28 @@ +name: Check Arduino + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + pull_request: + schedule: + # Run every Tuesday at 8 AM UTC to catch breakage caused by new rules added to Arduino Lint. + - cron: "0 8 * * TUE" + workflow_dispatch: + repository_dispatch: + +jobs: + lint: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Arduino Lint + uses: arduino/arduino-lint-action@v1 + with: + compliance: specification + library-manager: update + # Always use this setting for official repositories. Remove for 3rd party projects. + official: true + project-type: library diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/compile-examples.yml b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/compile-examples.yml new file mode 100644 index 0000000..0dd5ac7 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/compile-examples.yml @@ -0,0 +1,63 @@ +name: Compile Examples + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + paths: + - ".github/workflows/compile-examples.yml" + - "examples/**" + - "src/**" + pull_request: + paths: + - ".github/workflows/compile-examples.yml" + - "examples/**" + - "src/**" + schedule: + # Run every Tuesday at 8 AM UTC to catch breakage caused by changes to external resources (libraries, platforms). + - cron: "0 8 * * TUE" + workflow_dispatch: + repository_dispatch: + +jobs: + build: + name: ${{ matrix.board.fqbn }} + runs-on: ubuntu-latest + + env: + SKETCHES_REPORTS_PATH: sketches-reports + + strategy: + fail-fast: false + + matrix: + board: + - fqbn: arduino:samd:mkr1000 + platforms: | + - name: arduino:samd + artifact-name-suffix: arduino-samd-mkr1000 + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Compile examples + uses: arduino/compile-sketches@v1 + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + fqbn: ${{ matrix.board.fqbn }} + platforms: ${{ matrix.board.platforms }} + libraries: | + # Install the library from the local path. + - source-path: ./ + - name: WiFi101 + sketch-paths: | + - examples + enable-deltas-report: true + sketches-report-path: ${{ env.SKETCHES_REPORTS_PATH }} + + - name: Save sketches report as workflow artifact + uses: actions/upload-artifact@v4 + with: + if-no-files-found: error + path: ${{ env.SKETCHES_REPORTS_PATH }} + name: sketches-report-${{ matrix.board.artifact-name-suffix }} diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/report-size-deltas.yml b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/report-size-deltas.yml new file mode 100644 index 0000000..39e2a0a --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/report-size-deltas.yml @@ -0,0 +1,24 @@ +name: Report Size Deltas + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + paths: + - ".github/workflows/report-size-deltas.yml" + schedule: + # Run at the minimum interval allowed by GitHub Actions. + # Note: GitHub Actions periodically has outages which result in workflow failures. + # In this event, the workflows will start passing again once the service recovers. + - cron: "*/5 * * * *" + workflow_dispatch: + repository_dispatch: + +jobs: + report: + runs-on: ubuntu-latest + steps: + - name: Comment size deltas reports to PRs + uses: arduino/report-size-deltas@v1 + with: + # Regex matching the names of the workflow artifacts created by the "Compile Examples" workflow + sketches-reports-source: ^sketches-report-.+ diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/spell-check.yml b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/spell-check.yml new file mode 100644 index 0000000..ef7d894 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/spell-check.yml @@ -0,0 +1,22 @@ +name: Spell Check + +# See: https://docs.github.com/en/free-pro-team@latest/actions/reference/events-that-trigger-workflows +on: + push: + pull_request: + schedule: + # Run every Tuesday at 8 AM UTC to catch new misspelling detections resulting from dictionary updates. + - cron: "0 8 * * TUE" + workflow_dispatch: + repository_dispatch: + +jobs: + spellcheck: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Spell check + uses: codespell-project/actions-codespell@master diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/sync-labels.yml b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/sync-labels.yml new file mode 100644 index 0000000..53a9f54 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.github/workflows/sync-labels.yml @@ -0,0 +1,138 @@ +# Source: https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/sync-labels.md +name: Sync Labels + +# See: https://docs.github.com/en/actions/reference/events-that-trigger-workflows +on: + push: + paths: + - ".github/workflows/sync-labels.ya?ml" + - ".github/label-configuration-files/*.ya?ml" + pull_request: + paths: + - ".github/workflows/sync-labels.ya?ml" + - ".github/label-configuration-files/*.ya?ml" + schedule: + # Run daily at 8 AM UTC to sync with changes to shared label configurations. + - cron: "0 8 * * *" + workflow_dispatch: + repository_dispatch: + +env: + CONFIGURATIONS_FOLDER: .github/label-configuration-files + CONFIGURATIONS_ARTIFACT: label-configuration-files + +jobs: + check: + runs-on: ubuntu-latest + + steps: + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Download JSON schema for labels configuration file + id: download-schema + uses: carlosperate/download-file-action@v2 + with: + file-url: https://raw.githubusercontent.com/arduino/tooling-project-assets/main/workflow-templates/assets/sync-labels/arduino-tooling-gh-label-configuration-schema.json + location: ${{ runner.temp }}/label-configuration-schema + + - name: Install JSON schema validator + run: | + sudo npm install \ + --global \ + ajv-cli \ + ajv-formats + + - name: Validate local labels configuration + run: | + # See: https://github.com/ajv-validator/ajv-cli#readme + ajv validate \ + --all-errors \ + -c ajv-formats \ + -s "${{ steps.download-schema.outputs.file-path }}" \ + -d "${{ env.CONFIGURATIONS_FOLDER }}/*.{yml,yaml}" + + download: + needs: check + runs-on: ubuntu-latest + + strategy: + matrix: + filename: + # Filenames of the shared configurations to apply to the repository in addition to the local configuration. + # https://github.com/arduino/tooling-project-assets/blob/main/workflow-templates/assets/sync-labels + - universal.yml + + steps: + - name: Download + uses: carlosperate/download-file-action@v2 + with: + file-url: https://raw.githubusercontent.com/arduino/tooling-project-assets/main/workflow-templates/assets/sync-labels/${{ matrix.filename }} + + - name: Pass configuration files to next job via workflow artifact + uses: actions/upload-artifact@v4 + with: + path: | + *.yaml + *.yml + if-no-files-found: error + name: ${{ env.CONFIGURATIONS_ARTIFACT }} + + sync: + needs: download + runs-on: ubuntu-latest + + steps: + - name: Set environment variables + run: | + # See: https://docs.github.com/en/actions/reference/workflow-commands-for-github-actions#setting-an-environment-variable + echo "MERGED_CONFIGURATION_PATH=${{ runner.temp }}/labels.yml" >> "$GITHUB_ENV" + + - name: Determine whether to dry run + id: dry-run + if: > + github.event_name == 'pull_request' || + ( + ( + github.event_name == 'push' || + github.event_name == 'workflow_dispatch' + ) && + github.ref != format('refs/heads/{0}', github.event.repository.default_branch) + ) + run: | + # Use of this flag in the github-label-sync command will cause it to only check the validity of the + # configuration. + echo "::set-output name=flag::--dry-run" + + - name: Checkout repository + uses: actions/checkout@v4 + + - name: Download configuration files artifact + uses: actions/download-artifact@v4 + with: + name: ${{ env.CONFIGURATIONS_ARTIFACT }} + path: ${{ env.CONFIGURATIONS_FOLDER }} + + - name: Remove unneeded artifact + uses: geekyeggo/delete-artifact@v5 + with: + name: ${{ env.CONFIGURATIONS_ARTIFACT }} + + - name: Merge label configuration files + run: | + # Merge all configuration files + shopt -s extglob + cat "${{ env.CONFIGURATIONS_FOLDER }}"/*.@(yml|yaml) > "${{ env.MERGED_CONFIGURATION_PATH }}" + + - name: Install github-label-sync + run: sudo npm install --global github-label-sync + + - name: Sync labels + env: + GITHUB_ACCESS_TOKEN: ${{ secrets.GITHUB_TOKEN }} + run: | + # See: https://github.com/Financial-Times/github-label-sync + github-label-sync \ + --labels "${{ env.MERGED_CONFIGURATION_PATH }}" \ + ${{ steps.dry-run.outputs.flag }} \ + ${{ github.repository }} diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.gitignore b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.gitignore index 653acab..24a0007 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.gitignore +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.gitignore @@ -3,3 +3,4 @@ examples/node_test_server/node_modules/ *.DS_Store */.DS_Store examples/.DS_Store +.idea/ diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.piopm b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.piopm index 06188a7..6063c35 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.piopm +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/.piopm @@ -1 +1 @@ -{"type": "library", "name": "ArduinoHttpClient", "version": "0.4.0", "spec": {"owner": "arduino-libraries", "id": 798, "name": "ArduinoHttpClient", "requirements": null, "uri": null}} \ No newline at end of file +{"type": "library", "name": "ArduinoHttpClient", "version": "0.6.1", "spec": {"owner": "arduino-libraries", "id": 798, "name": "ArduinoHttpClient", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/CHANGELOG.md b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/CHANGELOG.md index ac78d18..fc0e879 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/CHANGELOG.md +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/CHANGELOG.md @@ -9,7 +9,7 @@ ## ArduinoHttpClient 0.3.1 - 2017.09.25 * Changed examples to support Arduino Create secret tabs -* Increase WebSocket secrect-key length to 24 characters +* Increase WebSocket secret-key length to 24 characters ## ArduinoHttpClient 0.3.0 - 2017.04.20 diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/README.md b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/README.md index 1b95559..e9c163b 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/README.md +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/README.md @@ -1,5 +1,9 @@ # ArduinoHttpClient +[![Check Arduino status](https://github.com/arduino-libraries/ArduinoHttpClient/actions/workflows/check-arduino.yml/badge.svg)](https://github.com/arduino-libraries/ArduinoHttpClient/actions/workflows/check-arduino.yml) +[![Compile Examples status](https://github.com/arduino-libraries/ArduinoHttpClient/actions/workflows/compile-examples.yml/badge.svg)](https://github.com/arduino-libraries/ArduinoHttpClient/actions/workflows/compile-examples.yml) +[![Spell Check status](https://github.com/arduino-libraries/ArduinoHttpClient/actions/workflows/spell-check.yml/badge.svg)](https://github.com/arduino-libraries/ArduinoHttpClient/actions/workflows/spell-check.yml) + ArduinoHttpClient is a library to make it easier to interact with web servers from Arduino. Derived from [Adrian McEwen's HttpClient library](https://github.com/amcewen/HttpClient) diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/BasicAuthGet/BasicAuthGet.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/BasicAuthGet/BasicAuthGet.ino index ca801b7..861acc1 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/BasicAuthGet/BasicAuthGet.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/BasicAuthGet/BasicAuthGet.ino @@ -15,7 +15,7 @@ #include #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/CustomHeader/CustomHeader.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/CustomHeader/CustomHeader.ino index e2131eb..4b8abbb 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/CustomHeader/CustomHeader.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/CustomHeader/CustomHeader.ino @@ -15,7 +15,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/DweetGet/DweetGet.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/DweetGet/DweetGet.ino index d191285..1c26c35 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/DweetGet/DweetGet.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/DweetGet/DweetGet.ino @@ -20,7 +20,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/DweetPost/DweetPost.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/DweetPost/DweetPost.ino index f1da2b9..17e76f5 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/DweetPost/DweetPost.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/DweetPost/DweetPost.ino @@ -16,7 +16,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/HueBlink/HueBlink.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/HueBlink/HueBlink.ino index eab74fe..0583fe9 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/HueBlink/HueBlink.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/HueBlink/HueBlink.ino @@ -10,7 +10,7 @@ The body of the PUT request looks like this: {"on": true} or {"on":false} - This example shows how to concatenate Strings to assemble the + This example shows how to concatenate Strings to assemble the PUT request and the body of the request. modified 15 Feb 2016 @@ -23,16 +23,16 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; -int status = WL_IDLE_STATUS; // the Wifi radio's status +int status = WL_IDLE_STATUS; // the WiFi radio's status char hueHubIP[] = "192.168.0.3"; // IP address of the HUE bridge String hueUserName = "huebridgeusername"; // hue bridge username -// make a wifi instance and a HttpClient instance: +// make a WiFiClient instance and a HttpClient instance: WiFiClient wifi; HttpClient httpClient = HttpClient(wifi, hueHubIP); @@ -42,7 +42,7 @@ void setup() { Serial.begin(9600); while (!Serial); // wait for serial port to connect. - // attempt to connect to Wifi network: + // attempt to connect to WiFi network: while ( status != WL_CONNECTED) { Serial.print("Attempting to connect to WPA SSID: "); Serial.println(ssid); @@ -95,4 +95,4 @@ void sendRequest(int light, String cmd, String value) { Serial.print("Server response: "); Serial.println(response); Serial.println(); -} \ No newline at end of file +} diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/ParseURL/ParseURL.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/ParseURL/ParseURL.ino new file mode 100644 index 0000000..410ac85 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/ParseURL/ParseURL.ino @@ -0,0 +1,29 @@ +#include "URLParser.h" + +void setup() { + + Serial.begin(9600); + + while(!Serial); + + Serial.println("starting"); + + ParsedUrl url( + "https://www.google.com/search?q=arduino" + ); + + Serial.print("parsed URL schema: \""); + Serial.print(url.schema()); + Serial.print("\"\nparsed URL host: \""); + Serial.print(url.host()); + Serial.print("\"\nparsed URL path: \""); + Serial.print(url.path()); + Serial.print("\"\nparsed URL query: \""); + Serial.print(url.query()); + Serial.print("\"\nparsed URL userinfo: \""); + Serial.print(url.userinfo()); + Serial.println("\""); + +} + +void loop() { } \ No newline at end of file diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/PostWithHeaders/PostWithHeaders.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/PostWithHeaders/PostWithHeaders.ino index c2b1f0a..f97439f 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/PostWithHeaders/PostWithHeaders.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/PostWithHeaders/PostWithHeaders.ino @@ -1,7 +1,7 @@ /* POST with headers client for ArduinoHttpClient library Connects to server once every five seconds, sends a POST request - with custome headers and a request body + with custom headers and a request body created 14 Feb 2016 by Tom Igoe @@ -18,7 +18,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleDelete/SimpleDelete.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleDelete/SimpleDelete.ino index 120f8d4..336cb7a 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleDelete/SimpleDelete.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleDelete/SimpleDelete.ino @@ -15,7 +15,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleGet/SimpleGet.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleGet/SimpleGet.ino index 90d1f68..759b13f 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleGet/SimpleGet.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleGet/SimpleGet.ino @@ -14,7 +14,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleHttpExample/SimpleHttpExample.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleHttpExample/SimpleHttpExample.ino index f64b9ba..449d6af 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleHttpExample/SimpleHttpExample.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleHttpExample/SimpleHttpExample.ino @@ -2,7 +2,7 @@ // Released under Apache License, version 2.0 // // Simple example to show how to use the HttpClient library -// Get's the web page given at http:// and +// Gets the web page given at http:// and // outputs the content to the serial port #include @@ -14,7 +14,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; @@ -42,7 +42,7 @@ void setup() ; // wait for serial port to connect. Needed for native USB port only } - // attempt to connect to Wifi network: + // attempt to connect to WiFi network: Serial.print("Attempting to connect to WPA SSID: "); Serial.println(ssid); while (WiFi.begin(ssid, pass) != WL_CONNECTED) { @@ -129,5 +129,3 @@ void loop() // And just stop, now that we've tried a download while(1); } - - diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimplePost/SimplePost.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimplePost/SimplePost.ino index a4704e5..8717438 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimplePost/SimplePost.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimplePost/SimplePost.ino @@ -14,7 +14,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimplePut/SimplePut.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimplePut/SimplePut.ino index 99af49f..06dcd15 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimplePut/SimplePut.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimplePut/SimplePut.ino @@ -14,7 +14,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleWebSocket/SimpleWebSocket.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleWebSocket/SimpleWebSocket.ino index b20d74b..32f74e1 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleWebSocket/SimpleWebSocket.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/examples/SimpleWebSocket/SimpleWebSocket.ino @@ -15,7 +15,7 @@ #include "arduino_secrets.h" ///////please enter your sensitive data in the Secret tab/arduino_secrets.h -/////// Wifi Settings /////// +/////// WiFi Settings /////// char ssid[] = SECRET_SSID; char pass[] = SECRET_PASS; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/keywords.txt b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/keywords.txt index 1b4bd2c..209c917 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/keywords.txt +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/keywords.txt @@ -1,5 +1,5 @@ ####################################### -# Syntax Coloring Map For HttpClient +# Syntax Coloring Map For ArduinoHttpClient ####################################### ####################################### diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/library.json b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/library.json deleted file mode 100644 index 28952cf..0000000 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/library.json +++ /dev/null @@ -1,12 +0,0 @@ -{ - "name": "ArduinoHttpClient", - "keywords": "http, web, client, ethernet, wifi, GSM", - "description": "Easily interact with web servers from Arduino, using HTTP and WebSocket's.", - "repository": { - "type": "git", - "url": "https://github.com/arduino-libraries/ArduinoHttpClient.git" - }, - "frameworks": "arduino", - "platforms": "*", - "version": "0.4.0" -} \ No newline at end of file diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/library.properties b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/library.properties index 632910e..c93d0de 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/library.properties +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/library.properties @@ -1,8 +1,8 @@ name=ArduinoHttpClient -version=0.4.0 +version=0.6.1 author=Arduino maintainer=Arduino -sentence=[EXPERIMENTAL] Easily interact with web servers from Arduino, using HTTP and WebSocket's. +sentence=[EXPERIMENTAL] Easily interact with web servers from Arduino, using HTTP and WebSockets. paragraph=This library can be used for HTTP (GET, POST, PUT, DELETE) requests to a web server. It also supports exchanging messages with WebSocket servers. Based on Adrian McEwen's HttpClient library. category=Communication url=https://github.com/arduino-libraries/ArduinoHttpClient diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/HttpClient.cpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/HttpClient.cpp index 0e4b0c2..31909d9 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/HttpClient.cpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/HttpClient.cpp @@ -4,6 +4,7 @@ #include "HttpClient.h" #include "b64.h" + // Initialize constants const char* HttpClient::kUserAgent = "Arduino/2.2.0"; const char* HttpClient::kContentLengthPrefix = HTTP_HEADER_CONTENT_LENGTH ": "; @@ -39,6 +40,7 @@ void HttpClient::resetState() iIsChunked = false; iChunkLength = 0; iHttpResponseTimeout = kHttpResponseTimeout; + iHttpWaitForDataDelay = kHttpWaitForDataDelay; } void HttpClient::stop() @@ -83,7 +85,7 @@ int HttpClient::startRequest(const char* aURLPath, const char* aHttpMethod, { if (iServerName) { - if (!iClient->connect(iServerName, iServerPort) > 0) + if (!(iClient->connect(iServerName, iServerPort) > 0)) { #ifdef LOGGING Serial.println("Connection failed"); @@ -93,7 +95,7 @@ int HttpClient::startRequest(const char* aURLPath, const char* aHttpMethod, } else { - if (!iClient->connect(iServerAddress, iServerPort) > 0) + if (!(iClient->connect(iServerAddress, iServerPort) > 0)) { #ifdef LOGGING Serial.println("Connection failed"); @@ -160,7 +162,7 @@ int HttpClient::sendInitialHeaders(const char* aURLPath, const char* aHttpMethod { iClient->print("Host: "); iClient->print(iServerName); - if (iServerPort != kHttpPort) + if (iServerPort != kHttpPort && iServerPort != kHttpsPort) { iClient->print(":"); iClient->print(iServerPort); @@ -420,7 +422,7 @@ int HttpClient::responseStatusCode() { if (available()) { - c = read(); + c = HttpClient::read(); if (c != -1) { switch(iState) @@ -472,7 +474,7 @@ int HttpClient::responseStatusCode() { // We haven't got any data, so let's pause to allow some to // arrive - delay(kHttpWaitForDataDelay); + delay(iHttpWaitForDataDelay); } } if ( (c == '\n') && (iStatusCode < 200 && iStatusCode != 101) ) @@ -521,7 +523,7 @@ int HttpClient::skipResponseHeaders() { // We haven't got any data, so let's pause to allow some to // arrive - delay(kHttpWaitForDataDelay); + delay(iHttpWaitForDataDelay); } } if (endOfHeadersReached()) @@ -541,7 +543,7 @@ bool HttpClient::endOfHeadersReached() return (iState == eReadingBody || iState == eReadingChunkLength || iState == eReadingBodyChunk); }; -int HttpClient::contentLength() +long HttpClient::contentLength() { // skip the response headers, if they haven't been read already if (!endOfHeadersReached()) @@ -586,7 +588,7 @@ String HttpClient::responseBody() } if (bodyLength > 0 && (unsigned int)bodyLength != response.length()) { - // failure, we did not read in reponse content length bytes + // failure, we did not read in response content length bytes return String((const char*)NULL); } @@ -684,12 +686,12 @@ int HttpClient::read() bool HttpClient::headerAvailable() { - // clear the currently store header line + // clear the currently stored header line iHeaderLine = ""; + while (!endOfHeadersReached()) - { - uint64_t i =0; - + { + // read a byte from the header int c = readHeader(); if (c == '\r' || c == '\n') @@ -705,13 +707,7 @@ bool HttpClient::headerAvailable() continue; } } - i++; - if(i > 1024*2) - { - return false; - } - // append byte to header line iHeaderLine += (char)c; } @@ -767,7 +763,7 @@ int HttpClient::read(uint8_t *buf, size_t size) int HttpClient::readHeader() { - char c = read(); + char c = HttpClient::read(); if (endOfHeadersReached()) { @@ -823,7 +819,11 @@ int HttpClient::readHeader() case eReadingContentLength: if (isdigit(c)) { - iContentLength = iContentLength*10 + (c - '0'); + long _iContentLength = iContentLength*10 + (c - '0'); + // Only apply if the value didn't wrap around + if (_iContentLength > iContentLength) { + iContentLength = _iContentLength; + } } else { diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/HttpClient.h b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/HttpClient.h index 38fd799..3d404af 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/HttpClient.h +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/HttpClient.h @@ -43,6 +43,7 @@ class HttpClient : public Client public: static const int kNoContentLengthHeader =-1; static const int kHttpPort =80; + static const int kHttpsPort =443; static const char* kUserAgent; // FIXME Write longer API request, using port and user-agent, example @@ -228,7 +229,7 @@ public: */ String readHeaderName(); - /** Read the vallue of the current response header. + /** Read the value of the current response header. Returns empty string if a header is not available. */ String readHeaderValue(); @@ -272,7 +273,7 @@ public: @return Length of the body, in bytes, or kNoContentLengthHeader if no Content-Length header was returned by the server */ - int contentLength(); + long contentLength(); /** Returns if the response body is chunked @return true if response body is chunked, false otherwise @@ -317,6 +318,8 @@ public: virtual operator bool() { return bool(iClient); }; virtual uint32_t httpResponseTimeout() { return iHttpResponseTimeout; }; virtual void setHttpResponseTimeout(uint32_t timeout) { iHttpResponseTimeout = timeout; }; + virtual uint32_t httpWaitForDataDelay() { return iHttpWaitForDataDelay; }; + virtual void setHttpWaitForDataDelay(uint32_t delay) { iHttpWaitForDataDelay = delay; }; protected: /** Reset internal state data back to the "just initialised" state */ @@ -340,8 +343,8 @@ protected: // Number of milliseconds that we wait each time there isn't any data // available to be read (during status code and header processing) - static const int kHttpWaitForDataDelay = 1000; - // Number of milliseconds that we'll wait in total without receiveing any + static const int kHttpWaitForDataDelay = 100; + // Number of milliseconds that we'll wait in total without receiving any // data before returning HTTP_ERROR_TIMED_OUT (during status code and header // processing) static const int kHttpResponseTimeout = 30*1000; @@ -372,7 +375,7 @@ protected: // Stores the status code for the response, once known int iStatusCode; // Stores the value of the Content-Length header, if present - int iContentLength; + long iContentLength; // How many bytes of the response body have been read by the user int iBodyLengthConsumed; // How far through a Content-Length header prefix we are @@ -384,6 +387,7 @@ protected: // Stores the value of the current chunk length, if present int iChunkLength; uint32_t iHttpResponseTimeout; + uint32_t iHttpWaitForDataDelay; bool iConnectionClose; bool iSendDefaultRequestHeaders; String iHeaderLine; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/URLParser.h b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/URLParser.h new file mode 100644 index 0000000..fd31e93 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/URLParser.h @@ -0,0 +1,108 @@ +/* + * PackageLicenseDeclared: Apache-2.0 + * Copyright (c) 2017 ARM Limited + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + */ + +/* + * The following class is defined in mbed libraries, in case of STM32H7 include the original library + */ +#if defined __has_include +# if __has_include() +# include +# else +# define NO_HTTP_PARSED +# endif +#endif + +#ifdef NO_HTTP_PARSED +#ifndef _MBED_HTTP_PARSED_URL_H_ +#define _MBED_HTTP_PARSED_URL_H_ + +#include "utility/URLParser/http_parser.h" + +class ParsedUrl { +public: + ParsedUrl(const char* url) { + struct http_parser_url parsed_url; + http_parser_parse_url(url, strlen(url), false, &parsed_url); + + for (size_t ix = 0; ix < UF_MAX; ix++) { + char* value; + if (parsed_url.field_set & (1 << ix)) { + value = (char*)calloc(parsed_url.field_data[ix].len + 1, 1); + memcpy(value, url + parsed_url.field_data[ix].off, + parsed_url.field_data[ix].len); + } + else { + value = (char*)calloc(1, 1); + } + + switch ((http_parser_url_fields)ix) { + case UF_SCHEMA: _schema = value; break; + case UF_HOST: _host = value; break; + case UF_PATH: _path = value; break; + case UF_QUERY: _query = value; break; + case UF_USERINFO: _userinfo = value; break; + default: + // PORT is already parsed, FRAGMENT is not relevant for HTTP requests + free(value); + break; + } + } + + _port = parsed_url.port; + if (!_port) { + if (strcmp(_schema, "https") == 0 || strcmp(_schema, "wss") == 0) { + _port = 443; + } + else { + _port = 80; + } + } + + if (strcmp(_path, "") == 0) { + free(_path); + _path = (char*)calloc(2, 1); + _path[0] = '/'; + } + } + + ~ParsedUrl() { + if (_schema) free(_schema); + if (_host) free(_host); + if (_path) free(_path); + if (_query) free(_query); + if (_userinfo) free(_userinfo); + } + + uint16_t port() const { return _port; } + char* schema() const { return _schema; } + char* host() const { return _host; } + char* path() const { return _path; } + char* query() const { return _query; } + char* userinfo() const { return _userinfo; } + +private: + uint16_t _port; + char* _schema; + char* _host; + char* _path; + char* _query; + char* _userinfo; +}; + +#endif // _MBED_HTTP_PARSED_URL_H_ +#endif // NO_HTTP_PARSED +#undef NO_HTTP_PARSED \ No newline at end of file diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/WebSocketClient.h b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/WebSocketClient.h index 4b009e6..96eb6d2 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/WebSocketClient.h +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/WebSocketClient.h @@ -8,6 +8,10 @@ #include "HttpClient.h" +#ifndef WS_TX_BUFFER_SIZE + #define WS_TX_BUFFER_SIZE 128 +#endif + static const int TYPE_CONTINUATION = 0x0; static const int TYPE_TEXT = 0x1; static const int TYPE_BINARY = 0x2; @@ -86,7 +90,7 @@ private: private: bool iTxStarted; uint8_t iTxMessageType; - uint8_t iTxBuffer[128]; + uint8_t iTxBuffer[WS_TX_BUFFER_SIZE]; uint64_t iTxSize; uint8_t iRxOpCode; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/LICENSE b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/LICENSE new file mode 100644 index 0000000..5baf7c0 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/LICENSE @@ -0,0 +1,23 @@ +http_parser.c is based on src/http/ngx_http_parse.c from NGINX copyright +Igor Sysoev. + +Additional changes are licensed under the same terms as NGINX and +copyright Joyent, Inc. and other Node contributors. All rights reserved. + +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: + +The above copyright notice and this permission notice shall be included in +all copies or substantial portions of the Software. + +THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING +FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS +IN THE SOFTWARE. diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/README.md b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/README.md new file mode 100644 index 0000000..56f8c96 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/README.md @@ -0,0 +1,5 @@ +# http_parser library + +This code is imported from: https://github.com/arduino/ArduinoCore-mbed/tree/4.1.1/libraries/SocketWrapper/src/utility/http_parser + +The code is shrinked in size by deleting all the unrelated code to url parse. diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/http_parser.c b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/http_parser.c new file mode 100644 index 0000000..a572a4c --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/http_parser.c @@ -0,0 +1,591 @@ +#if defined __has_include +# if ! __has_include() && ! __has_include() +# define NO_HTTP_PARSER +# endif +#endif + +#ifdef NO_HTTP_PARSER +/* Based on src/http/ngx_http_parse.c from NGINX copyright Igor Sysoev + * + * Additional changes are licensed under the same terms as NGINX and + * copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * 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: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#include "http_parser.h" +#include +#include +#include +#include +#include +#include + +#ifndef BIT_AT +# define BIT_AT(a, i) \ + (!!((unsigned int) (a)[(unsigned int) (i) >> 3] & \ + (1 << ((unsigned int) (i) & 7)))) +#endif + +#define SET_ERRNO(e) \ +do { \ + parser->http_errno = (e); \ +} while(0) + +#if HTTP_PARSER_STRICT +# define T(v) 0 +#else +# define T(v) v +#endif + + +static const uint8_t normal_url_char[32] = { +/* 0 nul 1 soh 2 stx 3 etx 4 eot 5 enq 6 ack 7 bel */ + 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0, +/* 8 bs 9 ht 10 nl 11 vt 12 np 13 cr 14 so 15 si */ + 0 | T(2) | 0 | 0 | T(16) | 0 | 0 | 0, +/* 16 dle 17 dc1 18 dc2 19 dc3 20 dc4 21 nak 22 syn 23 etb */ + 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0, +/* 24 can 25 em 26 sub 27 esc 28 fs 29 gs 30 rs 31 us */ + 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0, +/* 32 sp 33 ! 34 " 35 # 36 $ 37 % 38 & 39 ' */ + 0 | 2 | 4 | 0 | 16 | 32 | 64 | 128, +/* 40 ( 41 ) 42 * 43 + 44 , 45 - 46 . 47 / */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 48 0 49 1 50 2 51 3 52 4 53 5 54 6 55 7 */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 56 8 57 9 58 : 59 ; 60 < 61 = 62 > 63 ? */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 0, +/* 64 @ 65 A 66 B 67 C 68 D 69 E 70 F 71 G */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 72 H 73 I 74 J 75 K 76 L 77 M 78 N 79 O */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 80 P 81 Q 82 R 83 S 84 T 85 U 86 V 87 W */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 88 X 89 Y 90 Z 91 [ 92 \ 93 ] 94 ^ 95 _ */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 96 ` 97 a 98 b 99 c 100 d 101 e 102 f 103 g */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 104 h 105 i 106 j 107 k 108 l 109 m 110 n 111 o */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 112 p 113 q 114 r 115 s 116 t 117 u 118 v 119 w */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 128, +/* 120 x 121 y 122 z 123 { 124 | 125 } 126 ~ 127 del */ + 1 | 2 | 4 | 8 | 16 | 32 | 64 | 0, }; + +#undef T + +enum state + { s_dead = 1 /* important that this is > 0 */ + + , s_start_req + + , s_req_spaces_before_url + , s_req_schema + , s_req_schema_slash + , s_req_schema_slash_slash + , s_req_server_start + , s_req_server + , s_req_server_with_at + , s_req_path + , s_req_query_string_start + , s_req_query_string + , s_req_fragment_start + , s_req_fragment + , s_headers_done + }; + +enum http_host_state + { + s_http_host_dead = 1 + , s_http_userinfo_start + , s_http_userinfo + , s_http_host_start + , s_http_host_v6_start + , s_http_host + , s_http_host_v6 + , s_http_host_v6_end + , s_http_host_v6_zone_start + , s_http_host_v6_zone + , s_http_host_port_start + , s_http_host_port +}; + +/* Macros for character classes; depends on strict-mode */ +#define LOWER(c) (unsigned char)(c | 0x20) +#define IS_ALPHA(c) (LOWER(c) >= 'a' && LOWER(c) <= 'z') +#define IS_NUM(c) ((c) >= '0' && (c) <= '9') +#define IS_ALPHANUM(c) (IS_ALPHA(c) || IS_NUM(c)) +#define IS_HEX(c) (IS_NUM(c) || (LOWER(c) >= 'a' && LOWER(c) <= 'f')) +#define IS_MARK(c) ((c) == '-' || (c) == '_' || (c) == '.' || \ + (c) == '!' || (c) == '~' || (c) == '*' || (c) == '\'' || (c) == '(' || \ + (c) == ')') +#define IS_USERINFO_CHAR(c) (IS_ALPHANUM(c) || IS_MARK(c) || (c) == '%' || \ + (c) == ';' || (c) == ':' || (c) == '&' || (c) == '=' || (c) == '+' || \ + (c) == '$' || (c) == ',') + +#if HTTP_PARSER_STRICT +#define IS_URL_CHAR(c) (BIT_AT(normal_url_char, (unsigned char)c)) +#define IS_HOST_CHAR(c) (IS_ALPHANUM(c) || (c) == '.' || (c) == '-') +#else +#define IS_URL_CHAR(c) \ + (BIT_AT(normal_url_char, (unsigned char)c) || ((c) & 0x80)) +#define IS_HOST_CHAR(c) \ + (IS_ALPHANUM(c) || (c) == '.' || (c) == '-' || (c) == '_') +#endif + +/* Our URL parser. + * + * This is designed to be shared by http_parser_execute() for URL validation, + * hence it has a state transition + byte-for-byte interface. In addition, it + * is meant to be embedded in http_parser_parse_url(), which does the dirty + * work of turning state transitions URL components for its API. + * + * This function should only be invoked with non-space characters. It is + * assumed that the caller cares about (and can detect) the transition between + * URL and non-URL states by looking for these. + */ +static enum state +parse_url_char(enum state s, const char ch) +{ + if (ch == ' ' || ch == '\r' || ch == '\n') { + return s_dead; + } + +#if HTTP_PARSER_STRICT + if (ch == '\t' || ch == '\f') { + return s_dead; + } +#endif + + switch (s) { + case s_req_spaces_before_url: + /* Proxied requests are followed by scheme of an absolute URI (alpha). + * All methods except CONNECT are followed by '/' or '*'. + */ + + if (ch == '/' || ch == '*') { + return s_req_path; + } + + if (IS_ALPHA(ch)) { + return s_req_schema; + } + + break; + + case s_req_schema: + if (IS_ALPHA(ch)) { + return s; + } + + if (ch == ':') { + return s_req_schema_slash; + } + + break; + + case s_req_schema_slash: + if (ch == '/') { + return s_req_schema_slash_slash; + } + + break; + + case s_req_schema_slash_slash: + if (ch == '/') { + return s_req_server_start; + } + + break; + + case s_req_server_with_at: + if (ch == '@') { + return s_dead; + } + + /* FALLTHROUGH */ + case s_req_server_start: + case s_req_server: + if (ch == '/') { + return s_req_path; + } + + if (ch == '?') { + return s_req_query_string_start; + } + + if (ch == '@') { + return s_req_server_with_at; + } + + if (IS_USERINFO_CHAR(ch) || ch == '[' || ch == ']') { + return s_req_server; + } + + break; + + case s_req_path: + if (IS_URL_CHAR(ch)) { + return s; + } + + switch (ch) { + case '?': + return s_req_query_string_start; + + case '#': + return s_req_fragment_start; + } + + break; + + case s_req_query_string_start: + case s_req_query_string: + if (IS_URL_CHAR(ch)) { + return s_req_query_string; + } + + switch (ch) { + case '?': + /* allow extra '?' in query string */ + return s_req_query_string; + + case '#': + return s_req_fragment_start; + } + + break; + + case s_req_fragment_start: + if (IS_URL_CHAR(ch)) { + return s_req_fragment; + } + + switch (ch) { + case '?': + return s_req_fragment; + + case '#': + return s; + } + + break; + + case s_req_fragment: + if (IS_URL_CHAR(ch)) { + return s; + } + + switch (ch) { + case '?': + case '#': + return s; + } + + break; + + default: + break; + } + + /* We should never fall out of the switch above unless there's an error */ + return s_dead; +} + +static enum http_host_state +http_parse_host_char(enum http_host_state s, const char ch) { + switch(s) { + case s_http_userinfo: + case s_http_userinfo_start: + if (ch == '@') { + return s_http_host_start; + } + + if (IS_USERINFO_CHAR(ch)) { + return s_http_userinfo; + } + break; + + case s_http_host_start: + if (ch == '[') { + return s_http_host_v6_start; + } + + if (IS_HOST_CHAR(ch)) { + return s_http_host; + } + + break; + + case s_http_host: + if (IS_HOST_CHAR(ch)) { + return s_http_host; + } + + /* FALLTHROUGH */ + case s_http_host_v6_end: + if (ch == ':') { + return s_http_host_port_start; + } + + break; + + case s_http_host_v6: + if (ch == ']') { + return s_http_host_v6_end; + } + + /* FALLTHROUGH */ + case s_http_host_v6_start: + if (IS_HEX(ch) || ch == ':' || ch == '.') { + return s_http_host_v6; + } + + if (s == s_http_host_v6 && ch == '%') { + return s_http_host_v6_zone_start; + } + break; + + case s_http_host_v6_zone: + if (ch == ']') { + return s_http_host_v6_end; + } + + /* FALLTHROUGH */ + case s_http_host_v6_zone_start: + /* RFC 6874 Zone ID consists of 1*( unreserved / pct-encoded) */ + if (IS_ALPHANUM(ch) || ch == '%' || ch == '.' || ch == '-' || ch == '_' || + ch == '~') { + return s_http_host_v6_zone; + } + break; + + case s_http_host_port: + case s_http_host_port_start: + if (IS_NUM(ch)) { + return s_http_host_port; + } + + break; + + default: + break; + } + return s_http_host_dead; +} + +static int +http_parse_host(const char * buf, struct http_parser_url *u, int found_at) { + enum http_host_state s; + + const char *p; + uint32_t buflen = u->field_data[UF_HOST].off + u->field_data[UF_HOST].len; + + assert(u->field_set & (1 << UF_HOST)); + + u->field_data[UF_HOST].len = 0; + + s = found_at ? s_http_userinfo_start : s_http_host_start; + + for (p = buf + u->field_data[UF_HOST].off; p < buf + buflen; p++) { + enum http_host_state new_s = http_parse_host_char(s, *p); + + if (new_s == s_http_host_dead) { + return 1; + } + + switch(new_s) { + case s_http_host: + if (s != s_http_host) { + u->field_data[UF_HOST].off = p - buf; + } + u->field_data[UF_HOST].len++; + break; + + case s_http_host_v6: + if (s != s_http_host_v6) { + u->field_data[UF_HOST].off = p - buf; + } + u->field_data[UF_HOST].len++; + break; + + case s_http_host_v6_zone_start: + case s_http_host_v6_zone: + u->field_data[UF_HOST].len++; + break; + + case s_http_host_port: + if (s != s_http_host_port) { + u->field_data[UF_PORT].off = p - buf; + u->field_data[UF_PORT].len = 0; + u->field_set |= (1 << UF_PORT); + } + u->field_data[UF_PORT].len++; + break; + + case s_http_userinfo: + if (s != s_http_userinfo) { + u->field_data[UF_USERINFO].off = p - buf ; + u->field_data[UF_USERINFO].len = 0; + u->field_set |= (1 << UF_USERINFO); + } + u->field_data[UF_USERINFO].len++; + break; + + default: + break; + } + s = new_s; + } + + /* Make sure we don't end somewhere unexpected */ + switch (s) { + case s_http_host_start: + case s_http_host_v6_start: + case s_http_host_v6: + case s_http_host_v6_zone_start: + case s_http_host_v6_zone: + case s_http_host_port_start: + case s_http_userinfo: + case s_http_userinfo_start: + return 1; + default: + break; + } + + return 0; +} + +void +http_parser_url_init(struct http_parser_url *u) { + memset(u, 0, sizeof(*u)); +} + +int +http_parser_parse_url(const char *buf, uint32_t buflen, int is_connect, + struct http_parser_url *u) +{ + enum state s; + const char *p; + enum http_parser_url_fields uf, old_uf; + int found_at = 0; + + u->port = u->field_set = 0; + s = is_connect ? s_req_server_start : s_req_spaces_before_url; + old_uf = UF_MAX; + + for (p = buf; p < buf + buflen; p++) { + s = parse_url_char(s, *p); + + /* Figure out the next field that we're operating on */ + switch (s) { + case s_dead: + return 1; + + /* Skip delimeters */ + case s_req_schema_slash: + case s_req_schema_slash_slash: + case s_req_server_start: + case s_req_query_string_start: + case s_req_fragment_start: + continue; + + case s_req_schema: + uf = UF_SCHEMA; + break; + + case s_req_server_with_at: + found_at = 1; + + /* FALLTROUGH */ + case s_req_server: + uf = UF_HOST; + break; + + case s_req_path: + uf = UF_PATH; + break; + + case s_req_query_string: + uf = UF_QUERY; + break; + + case s_req_fragment: + uf = UF_FRAGMENT; + break; + + default: + assert(!"Unexpected state"); + return 1; + } + + /* Nothing's changed; soldier on */ + if (uf == old_uf) { + u->field_data[uf].len++; + continue; + } + + u->field_data[uf].off = p - buf; + u->field_data[uf].len = 1; + + u->field_set |= (1 << uf); + old_uf = uf; + } + + /* host must be present if there is a schema */ + /* parsing http:///toto will fail */ + if ((u->field_set & (1 << UF_SCHEMA)) && + (u->field_set & (1 << UF_HOST)) == 0) { + return 1; + } + + if (u->field_set & (1 << UF_HOST)) { + if (http_parse_host(buf, u, found_at) != 0) { + return 1; + } + } + + /* CONNECT requests can only contain "hostname:port" */ + if (is_connect && u->field_set != ((1 << UF_HOST)|(1 << UF_PORT))) { + return 1; + } + + if (u->field_set & (1 << UF_PORT)) { + /* Don't bother with endp; we've already validated the string */ + unsigned long v = strtoul(buf + u->field_data[UF_PORT].off, NULL, 10); + + /* Ports have a max value of 2^16 */ + if (v > 0xffff) { + return 1; + } + + u->port = (uint16_t) v; + } + + return 0; +} + +unsigned long +http_parser_version(void) { + return HTTP_PARSER_VERSION_MAJOR * 0x10000 | + HTTP_PARSER_VERSION_MINOR * 0x00100 | + HTTP_PARSER_VERSION_PATCH * 0x00001; +} + +#endif // NO_HTTP_PARSER \ No newline at end of file diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/http_parser.h b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/http_parser.h new file mode 100644 index 0000000..85a5238 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoHttpClient/src/utility/URLParser/http_parser.h @@ -0,0 +1,96 @@ +/* Copyright Joyent, Inc. and other Node contributors. All rights reserved. + * + * 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: + * + * The above copyright notice and this permission notice shall be included in + * all copies or substantial portions of the Software. + * + * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR + * IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, + * FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE + * AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER + * LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING + * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS + * IN THE SOFTWARE. + */ +#ifndef http_parser_h +#define http_parser_h + +#ifdef __cplusplus +extern "C" { +#endif + +/* Also update SONAME in the Makefile whenever you change these. */ +#define HTTP_PARSER_VERSION_MAJOR 2 +#define HTTP_PARSER_VERSION_MINOR 7 +#define HTTP_PARSER_VERSION_PATCH 1 + +#include + +/* Compile with -DHTTP_PARSER_STRICT=0 to make less checks, but run + * faster + */ +#ifndef HTTP_PARSER_STRICT +# define HTTP_PARSER_STRICT 1 +#endif + + +enum http_parser_url_fields + { UF_SCHEMA = 0 + , UF_HOST = 1 + , UF_PORT = 2 + , UF_PATH = 3 + , UF_QUERY = 4 + , UF_FRAGMENT = 5 + , UF_USERINFO = 6 + , UF_MAX = 7 + }; + + +/* Result structure for http_parser_parse_url(). + * + * Callers should index into field_data[] with UF_* values iff field_set + * has the relevant (1 << UF_*) bit set. As a courtesy to clients (and + * because we probably have padding left over), we convert any port to + * a uint16_t. + */ +struct http_parser_url { + uint16_t field_set; /* Bitmask of (1 << UF_*) values */ + uint16_t port; /* Converted UF_PORT string */ + + struct { + uint16_t off; /* Offset into buffer in which field starts */ + uint16_t len; /* Length of run in buffer */ + } field_data[UF_MAX]; +}; + + +/* Returns the library version. Bits 16-23 contain the major version number, + * bits 8-15 the minor version number and bits 0-7 the patch level. + * Usage example: + * + * unsigned long version = http_parser_version(); + * unsigned major = (version >> 16) & 255; + * unsigned minor = (version >> 8) & 255; + * unsigned patch = version & 255; + * printf("http_parser v%u.%u.%u\n", major, minor, patch); + */ +unsigned long http_parser_version(void); + +/* Initialize all http_parser_url members to 0 */ +void http_parser_url_init(struct http_parser_url *u); + +/* Parse a URL; return nonzero on failure */ +int http_parser_parse_url(const char *buf, uint32_t buflen, + int is_connect, + struct http_parser_url *u); + +#ifdef __cplusplus +} +#endif +#endif \ No newline at end of file diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/.piopm b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/.piopm index 3229151..307e2c1 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/.piopm +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/.piopm @@ -1 +1 @@ -{"type": "library", "name": "ArduinoJson", "version": "6.21.5", "spec": {"owner": "bblanchon", "id": 64, "name": "ArduinoJson", "requirements": null, "uri": null}} \ No newline at end of file +{"type": "library", "name": "ArduinoJson", "version": "7.4.2", "spec": {"owner": "bblanchon", "id": 64, "name": "ArduinoJson", "requirements": null, "uri": null}} \ No newline at end of file diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/ArduinoJson.h b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/ArduinoJson.h index 15c218f..a0caed7 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/ArduinoJson.h +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/ArduinoJson.h @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #include "src/ArduinoJson.h" diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/LICENSE.txt b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/LICENSE.txt index 15f1b9f..782b05d 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/LICENSE.txt +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/LICENSE.txt @@ -1,7 +1,7 @@ The MIT License (MIT) --------------------- -Copyright © 2014-2023, 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/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/README.md b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/README.md index 50e1974..e44171c 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/README.md +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/README.md @@ -4,13 +4,10 @@ --- -[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/bblanchon/ArduinoJson/ci.yml?branch=6.x&logo=github)](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A6.x) -[![Continuous Integration](https://ci.appveyor.com/api/projects/status/m7s53wav1l0abssg/branch/6.x?svg=true)](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x) +[![GitHub Workflow Status](https://img.shields.io/github/actions/workflow/status/bblanchon/ArduinoJson/ci.yml?branch=7.x&logo=github)](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22+branch%3A7.x) +[![Continuous Integration](https://ci.appveyor.com/api/projects/status/m7s53wav1l0abssg/branch/7.x?svg=true)](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/7.x) [![Fuzzing Status](https://oss-fuzz-build-logs.storage.googleapis.com/badges/arduinojson.svg)](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson) -[![Coveralls branch](https://img.shields.io/coveralls/github/bblanchon/ArduinoJson/6.x?logo=coveralls)](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.x) -[![Arduino Library Manager](https://img.shields.io/static/v1?label=Arduino&message=v6.21.5&logo=arduino&logoColor=white&color=blue)](https://www.ardu-badge.com/ArduinoJson/6.21.5) -[![PlatformIO Registry](https://badges.registry.platformio.org/packages/bblanchon/library/ArduinoJson.svg?version=6.21.5)](https://registry.platformio.org/packages/libraries/bblanchon/ArduinoJson?version=6.21.5) -[![ESP IDF](https://img.shields.io/static/v1?label=ESP+IDF&message=v6.21.5&logo=cpu&logoColor=white&color=blue)](https://components.espressif.com/components/bblanchon/arduinojson) +[![Coveralls branch](https://img.shields.io/coveralls/github/bblanchon/ArduinoJson/7.x?logo=coveralls)](https://coveralls.io/github/bblanchon/ArduinoJson?branch=7.x) [![GitHub stars](https://img.shields.io/github/stars/bblanchon/ArduinoJson?style=flat&logo=github&color=orange)](https://github.com/bblanchon/ArduinoJson/stargazers) [![GitHub Sponsors](https://img.shields.io/github/sponsors/bblanchon?logo=github&color=orange)](https://github.com/sponsors/bblanchon) @@ -18,31 +15,28 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things). ## Features -* [JSON deserialization](https://arduinojson.org/v6/api/json/deserializejson/) - * [Optionally decodes UTF-16 escape sequences to UTF-8](https://arduinojson.org/v6/api/config/decode_unicode/) - * [Optionally stores links to the input buffer (zero-copy)](https://arduinojson.org/v6/api/json/deserializejson/) - * [Optionally supports comments in the input](https://arduinojson.org/v6/api/config/enable_comments/) - * [Optionally filters the input to keep only desired values](https://arduinojson.org/v6/api/json/deserializejson/#filtering) +* [JSON deserialization](https://arduinojson.org/v7/api/json/deserializejson/) + * [Optionally decodes UTF-16 escape sequences to UTF-8](https://arduinojson.org/v7/api/config/decode_unicode/) + * [Optionally supports comments in the input](https://arduinojson.org/v7/api/config/enable_comments/) + * [Optionally filters the input to keep only desired values](https://arduinojson.org/v7/api/json/deserializejson/#filtering) * Supports single quotes as a string delimiter * Compatible with [NDJSON](http://ndjson.org/) and [JSON Lines](https://jsonlines.org/) -* [JSON serialization](https://arduinojson.org/v6/api/json/serializejson/) - * [Can write to a buffer or a stream](https://arduinojson.org/v6/api/json/serializejson/) - * [Optionally indents the document (prettified JSON)](https://arduinojson.org/v6/api/json/serializejsonpretty/) -* [MessagePack serialization](https://arduinojson.org/v6/api/msgpack/serializemsgpack/) -* [MessagePack deserialization](https://arduinojson.org/v6/api/msgpack/deserializemsgpack/) +* [JSON serialization](https://arduinojson.org/v7/api/json/serializejson/) + * [Can write to a buffer or a stream](https://arduinojson.org/v7/api/json/serializejson/) + * [Optionally indents the document (prettified JSON)](https://arduinojson.org/v7/api/json/serializejsonpretty/) +* [MessagePack serialization](https://arduinojson.org/v7/api/msgpack/serializemsgpack/) +* [MessagePack deserialization](https://arduinojson.org/v7/api/msgpack/deserializemsgpack/) * Efficient * [Twice smaller than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/) * [Almost 10% faster than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/) * [Consumes roughly 10% less RAM than the "official" Arduino_JSON library](https://arduinojson.org/2019/11/19/arduinojson-vs-arduino_json/) - * [Fixed memory allocation, no heap fragmentation](https://arduinojson.org/v6/api/jsondocument/) - * [Optionally works without heap memory (zero malloc)](https://arduinojson.org/v6/api/staticjsondocument/) * [Deduplicates strings](https://arduinojson.org/news/2020/08/01/version-6-16-0/) * Versatile - * Supports [custom allocators (to use external RAM chip, for example)](https://arduinojson.org/v6/how-to/use-external-ram-on-esp32/) - * Supports [`String`](https://arduinojson.org/v6/api/config/enable_arduino_string/), [`std::string`](https://arduinojson.org/v6/api/config/enable_std_string/), and [`std::string_view`](https://arduinojson.org/v6/api/config/enable_string_view/) - * Supports [`Stream`](https://arduinojson.org/v6/api/config/enable_arduino_stream/) and [`std::istream`/`std::ostream`](https://arduinojson.org/v6/api/config/enable_std_stream/) - * Supports [Flash strings](https://arduinojson.org/v6/api/config/enable_progmem/) - * Supports [custom readers](https://arduinojson.org/v6/api/json/deserializejson/#custom-reader) and [custom writers](https://arduinojson.org/v6/api/json/serializejson/#custom-writer) + * Supports [custom allocators (to use external RAM chip, for example)](https://arduinojson.org/v7/how-to/use-external-ram-on-esp32/) + * Supports [`String`](https://arduinojson.org/v7/api/config/enable_arduino_string/), [`std::string`](https://arduinojson.org/v7/api/config/enable_std_string/), and [`std::string_view`](https://arduinojson.org/v7/api/config/enable_string_view/) + * Supports [`Stream`](https://arduinojson.org/v7/api/config/enable_arduino_stream/) and [`std::istream`/`std::ostream`](https://arduinojson.org/v7/api/config/enable_std_stream/) + * Supports [Flash strings](https://arduinojson.org/v7/api/config/enable_progmem/) + * Supports [custom readers](https://arduinojson.org/v7/api/json/deserializejson/#custom-reader) and [custom writers](https://arduinojson.org/v7/api/json/serializejson/#custom-writer) * Supports [custom converters](https://arduinojson.org/news/2021/05/04/version-6-18-0/) * Portable * Usable on any C++ project (not limited to Arduino) @@ -72,29 +66,29 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things). * [Visual Micro](http://www.visualmicro.com/) * [Visual Studio](https://www.visualstudio.com/) * [Even works with online compilers like wandbox.org](https://wandbox.org/permlink/RlZSKy17DjJ6HcdN) - * [CMake friendly](https://arduinojson.org/v6/how-to/use-arduinojson-with-cmake/) + * [CMake friendly](https://arduinojson.org/v7/how-to/use-arduinojson-with-cmake/) * Well designed - * [Elegant API](http://arduinojson.org/v6/example/) + * [Elegant API](http://arduinojson.org/v7/example/) * [Thread-safe](https://en.wikipedia.org/wiki/Thread_safety) * Self-contained (no external dependency) * `const` friendly - * [`for` friendly](https://arduinojson.org/v6/api/jsonobject/begin_end/) + * [`for` friendly](https://arduinojson.org/v7/api/jsonobject/begin_end/) * [TMP friendly](https://en.wikipedia.org/wiki/Template_metaprogramming) - * Handles [integer overflows](https://arduinojson.org/v6/api/jsonvariant/as/#integer-overflows) + * Handles [integer overflows](https://arduinojson.org/v7/api/jsonvariant/as/#integer-overflows) * Well tested - * [Unit test coverage close to 100%](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.x) + * [Unit test coverage close to 100%](https://coveralls.io/github/bblanchon/ArduinoJson?branch=7.x) * Continuously tested on - * [Visual Studio 2017, 2019, 2022](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/6.x) - * [GCC 5, 6, 7, 8, 9, 10, 11](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22) - * [Clang 3.8, 3.9, 4.0, 5.0, 6.0, 7, 8, 9, 10](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22) + * [Visual Studio 2017, 2019, 2022](https://ci.appveyor.com/project/bblanchon/arduinojson/branch/7.x) + * [GCC 4.8, 5, 6, 7, 8, 9, 10, 11, 12](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22) + * [Clang 7 to 19](https://github.com/bblanchon/ArduinoJson/actions?query=workflow%3A%22Continuous+Integration%22) * [Continuously fuzzed with Google OSS Fuzz](https://bugs.chromium.org/p/oss-fuzz/issues/list?sort=-opened&can=1&q=proj:arduinojson) * Passes all default checks of [clang-tidy](https://releases.llvm.org/10.0.0/tools/clang/tools/extra/docs/clang-tidy/) * Well documented - * [Tutorials](https://arduinojson.org/v6/doc/deserialization/) - * [Examples](https://arduinojson.org/v6/example/) - * [How-tos](https://arduinojson.org/v6/example/) - * [FAQ](https://arduinojson.org/v6/faq/) - * [Troubleshooter](https://arduinojson.org/v6/troubleshooter/) + * [Tutorials](https://arduinojson.org/v7/doc/deserialization/) + * [Examples](https://arduinojson.org/v7/example/) + * [How-tos](https://arduinojson.org/v7/example/) + * [FAQ](https://arduinojson.org/v7/faq/) + * [Troubleshooter](https://arduinojson.org/v7/troubleshooter/) * [Book](https://arduinojson.org/book/) * [Changelog](CHANGELOG.md) * Vibrant user community @@ -109,9 +103,9 @@ ArduinoJson is a C++ JSON library for Arduino and IoT (Internet Of Things). Here is a program that parses a JSON document with ArduinoJson. ```c++ -char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; +const char* json = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; -DynamicJsonDocument doc(1024); +JsonDocument doc; deserializeJson(doc, json); const char* sensor = doc["sensor"]; @@ -120,14 +114,14 @@ double latitude = doc["data"][0]; double longitude = doc["data"][1]; ``` -See the [tutorial on arduinojson.org](https://arduinojson.org/v6/doc/deserialization/) +See the [tutorial on arduinojson.org](https://arduinojson.org/v7/doc/deserialization/) ### Serialization Here is a program that generates a JSON document with ArduinoJson: ```c++ -DynamicJsonDocument doc(1024); +JsonDocument doc; doc["sensor"] = "gps"; doc["time"] = 1351824120; @@ -139,21 +133,19 @@ serializeJson(doc, Serial); // {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]} ``` -See the [tutorial on arduinojson.org](https://arduinojson.org/v6/doc/serialization/) +See the [tutorial on arduinojson.org](https://arduinojson.org/v7/doc/serialization/) ## Sponsors ArduinoJson is thankful to its sponsors. Please give them a visit; they deserve it! -

- - Programming Electronics Academy - -

1technophile + + LArkema +

If you run a commercial project that embeds ArduinoJson, think about [sponsoring the library's development](https://github.com/sponsors/bblanchon): it ensures the code that your products rely on stays actively maintained. It can also give your project some exposure to the makers' community. diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino index b2819d5..32ad3a5 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows how to store your project configuration in a file. @@ -17,35 +17,28 @@ // * CLK <-> pin 13 // * CS <-> pin 4 // -// https://arduinojson.org/v6/example/config/ +// https://arduinojson.org/v7/example/config/ #include #include #include // Our configuration structure. -// -// Never use a JsonDocument to store the configuration! -// A JsonDocument is *not* a permanent storage; it's only a temporary storage -// used during the serialization phase. See: -// https://arduinojson.org/v6/faq/why-must-i-create-a-separate-config-object/ struct Config { char hostname[64]; int port; }; -const char *filename = "/config.txt"; // <- SD library uses 8.3 filenames +const char* filename = "/config.txt"; // <- SD library uses 8.3 filenames Config config; // <- global configuration object // Loads the configuration from a file -void loadConfiguration(const char *filename, Config &config) { +void loadConfiguration(const char* filename, Config& config) { // Open file for reading File file = SD.open(filename); // Allocate a temporary JsonDocument - // Don't forget to change the capacity to match your requirements. - // Use https://arduinojson.org/v6/assistant to compute the capacity. - StaticJsonDocument<512> doc; + JsonDocument doc; // Deserialize the JSON document DeserializationError error = deserializeJson(doc, file); @@ -63,7 +56,7 @@ void loadConfiguration(const char *filename, Config &config) { } // Saves the configuration to a file -void saveConfiguration(const char *filename, const Config &config) { +void saveConfiguration(const char* filename, const Config& config) { // Delete existing file, otherwise the configuration is appended to the file SD.remove(filename); @@ -75,9 +68,7 @@ void saveConfiguration(const char *filename, const Config &config) { } // Allocate a temporary JsonDocument - // Don't forget to change the capacity to match your requirements. - // Use https://arduinojson.org/assistant to compute the capacity. - StaticJsonDocument<256> doc; + JsonDocument doc; // Set the values in the document doc["hostname"] = config.hostname; @@ -93,7 +84,7 @@ void saveConfiguration(const char *filename, const Config &config) { } // Prints the content of a file to the Serial -void printFile(const char *filename) { +void printFile(const char* filename) { // Open file for reading File file = SD.open(filename); if (!file) { @@ -114,7 +105,8 @@ void printFile(const char *filename) { void setup() { // Initialize serial port Serial.begin(9600); - while (!Serial) continue; + while (!Serial) + continue; // Initialize SD library const int chipSelect = 4; @@ -144,7 +136,7 @@ void loop() { // ------------------ // // File is an unbuffered stream, which is not optimal for ArduinoJson. -// See: https://arduinojson.org/v6/how-to/improve-speed/ +// See: https://arduinojson.org/v7/how-to/improve-speed/ // See also // -------- diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino index 6937a00..16e49dd 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino @@ -1,17 +1,18 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows how to use DeserializationOption::Filter // -// https://arduinojson.org/v6/example/filter/ +// https://arduinojson.org/v7/example/filter/ #include void setup() { // Initialize serial port Serial.begin(9600); - while (!Serial) continue; + while (!Serial) + continue; // The huge input: an extract from OpenWeatherMap response auto input_json = F( @@ -33,12 +34,12 @@ void setup() { "1000000,\"timezone\":0,\"sunrise\":1581492085,\"sunset\":1581527294}}"); // The filter: it contains "true" for each value we want to keep - StaticJsonDocument<200> filter; + JsonDocument filter; filter["list"][0]["dt"] = true; filter["list"][0]["main"]["temp"] = true; // Deserialize the document - StaticJsonDocument<400> doc; + JsonDocument doc; deserializeJson(doc, input_json, DeserializationOption::Filter(filter)); // Print the result diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino index 749e413..55d9a81 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino @@ -1,43 +1,32 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows how to generate a JSON document with ArduinoJson. // -// https://arduinojson.org/v6/example/generator/ +// https://arduinojson.org/v7/example/generator/ #include void setup() { // Initialize Serial port Serial.begin(9600); - while (!Serial) continue; + while (!Serial) + continue; // Allocate the JSON document - // - // Inside the brackets, 200 is the RAM allocated to this document. - // Don't forget to change this value to match your requirement. - // Use https://arduinojson.org/v6/assistant to compute the capacity. - StaticJsonDocument<200> doc; - - // StaticJsonObject allocates memory on the stack, it can be - // replaced by DynamicJsonDocument which allocates in the heap. - // - // DynamicJsonDocument doc(200); + JsonDocument doc; // Add values in the document - // doc["sensor"] = "gps"; doc["time"] = 1351824120; - // Add an array. - // - JsonArray data = doc.createNestedArray("data"); + // Add an array + JsonArray data = doc["data"].to(); data.add(48.756080); data.add(2.302038); - // Generate the minified JSON and send it to the Serial port. - // + // Generate the minified JSON and send it to the Serial port serializeJson(doc, Serial); // The above line prints: // {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]} @@ -45,8 +34,7 @@ void setup() { // Start a new line Serial.println(); - // Generate the prettified JSON and send it to the Serial port. - // + // Generate the prettified JSON and send it to the Serial port serializeJsonPretty(doc, Serial); // The above line prints: // { diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino index 72f311f..c2d3846 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows how to parse a JSON document in an HTTP response. @@ -16,7 +16,7 @@ // ] // } // -// https://arduinojson.org/v6/example/http-client/ +// https://arduinojson.org/v7/example/http-client/ #include #include @@ -25,7 +25,8 @@ void setup() { // Initialize Serial port Serial.begin(9600); - while (!Serial) continue; + while (!Serial) + continue; // Initialize Ethernet library byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; @@ -77,9 +78,7 @@ void setup() { } // Allocate the JSON document - // Use https://arduinojson.org/v6/assistant to compute the capacity. - const size_t capacity = JSON_OBJECT_SIZE(3) + JSON_ARRAY_SIZE(2) + 60; - DynamicJsonDocument doc(capacity); + JsonDocument doc; // Parse JSON object DeserializationError error = deserializeJson(doc, client); @@ -109,7 +108,7 @@ void loop() { // ------------------ // // EthernetClient is an unbuffered stream, which is not optimal for ArduinoJson. -// See: https://arduinojson.org/v6/how-to/improve-speed/ +// See: https://arduinojson.org/v7/how-to/improve-speed/ // See also // -------- diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino index 1d2bd16..0c325eb 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino @@ -1,52 +1,37 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows how to deserialize a JSON document with ArduinoJson. // -// https://arduinojson.org/v6/example/parser/ +// https://arduinojson.org/v7/example/parser/ #include void setup() { // Initialize serial port Serial.begin(9600); - while (!Serial) continue; + while (!Serial) + continue; // Allocate the JSON document - // - // Inside the brackets, 200 is the capacity of the memory pool in bytes. - // Don't forget to change this value to match your JSON document. - // Use https://arduinojson.org/v6/assistant to compute the capacity. - StaticJsonDocument<200> doc; - - // StaticJsonDocument allocates memory on the stack, it can be - // replaced by DynamicJsonDocument which allocates in the heap. - // - // DynamicJsonDocument doc(200); + JsonDocument doc; // JSON input string. - // - // Using a char[], as shown here, enables the "zero-copy" mode. This mode uses - // the minimal amount of memory because the JsonDocument stores pointers to - // the input buffer. - // If you use another type of input, ArduinoJson must copy the strings from - // the input to the JsonDocument, so you need to increase the capacity of the - // JsonDocument. - char json[] = + const char* json = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; // Deserialize the JSON document DeserializationError error = deserializeJson(doc, json); - // Test if parsing succeeds. + // Test if parsing succeeds if (error) { Serial.print(F("deserializeJson() failed: ")); Serial.println(error.f_str()); return; } - // Fetch values. + // Fetch the values // // Most of the time, you can rely on the implicit casts. // In other case, you can do doc["time"].as(); @@ -55,7 +40,7 @@ void setup() { double latitude = doc["data"][0]; double longitude = doc["data"][1]; - // Print values. + // Print the values Serial.println(sensor); Serial.println(time); Serial.println(latitude, 6); diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonServer/JsonServer.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonServer/JsonServer.ino index a897fce..51fdf3c 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonServer/JsonServer.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonServer/JsonServer.ino @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows how to implement an HTTP server that sends a JSON document @@ -13,7 +13,7 @@ // "digital": [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0] // } // -// https://arduinojson.org/v6/example/http-server/ +// https://arduinojson.org/v7/example/http-server/ #include #include @@ -25,7 +25,8 @@ EthernetServer server(80); void setup() { // Initialize serial port Serial.begin(9600); - while (!Serial) continue; + while (!Serial) + continue; // Initialize Ethernet libary if (!Ethernet.begin(mac)) { @@ -52,14 +53,14 @@ void loop() { Serial.println(F("New client")); // Read the request (we ignore the content in this example) - while (client.available()) client.read(); + while (client.available()) + client.read(); // Allocate a temporary JsonDocument - // Use https://arduinojson.org/v6/assistant to compute the capacity. - StaticJsonDocument<500> doc; + JsonDocument doc; // Create the "analog" array - JsonArray analogValues = doc.createNestedArray("analog"); + JsonArray analogValues = doc["analog"].to(); for (int pin = 0; pin < 6; pin++) { // Read the analog input int value = analogRead(pin); @@ -69,7 +70,7 @@ void loop() { } // Create the "digital" array - JsonArray digitalValues = doc.createNestedArray("digital"); + JsonArray digitalValues = doc["digital"].to(); for (int pin = 0; pin < 14; pin++) { // Read the digital input int value = digitalRead(pin); @@ -101,7 +102,7 @@ void loop() { // ------------------ // // EthernetClient is an unbuffered stream, which is not optimal for ArduinoJson. -// See: https://arduinojson.org/v6/how-to/improve-speed/ +// See: https://arduinojson.org/v7/how-to/improve-speed/ // See also // -------- diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino index 6c369fa..d6ecb55 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows how to send a JSON document to a UDP socket. @@ -17,7 +17,7 @@ // $ ncat -ulp 8888 // See https://nmap.org/ncat/ // -// https://arduinojson.org/v6/example/udp-beacon/ +// https://arduinojson.org/v7/example/udp-beacon/ #include #include @@ -32,7 +32,8 @@ EthernetUDP udp; void setup() { // Initialize serial port Serial.begin(9600); - while (!Serial) continue; + while (!Serial) + continue; // Initialize Ethernet libary if (!Ethernet.begin(mac)) { @@ -46,11 +47,10 @@ void setup() { void loop() { // Allocate a temporary JsonDocument - // Use https://arduinojson.org/v6/assistant to compute the capacity. - StaticJsonDocument<500> doc; + JsonDocument doc; // Create the "analog" array - JsonArray analogValues = doc.createNestedArray("analog"); + JsonArray analogValues = doc["analog"].to(); for (int pin = 0; pin < 6; pin++) { // Read the analog input int value = analogRead(pin); @@ -60,7 +60,7 @@ void loop() { } // Create the "digital" array - JsonArray digitalValues = doc.createNestedArray("digital"); + JsonArray digitalValues = doc["digital"].to(); for (int pin = 0; pin < 14; pin++) { // Read the digital input int value = digitalRead(pin); @@ -90,7 +90,7 @@ void loop() { // ------------------ // // EthernetUDP is an unbuffered stream, which is not optimal for ArduinoJson. -// See: https://arduinojson.org/v6/how-to/improve-speed/ +// See: https://arduinojson.org/v7/how-to/improve-speed/ // See also // -------- diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino index 1a54c3b..3649081 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino @@ -1,39 +1,24 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows how to deserialize a MessagePack document with // ArduinoJson. // -// https://arduinojson.org/v6/example/msgpack-parser/ +// https://arduinojson.org/v7/example/msgpack-parser/ #include void setup() { // Initialize serial port Serial.begin(9600); - while (!Serial) continue; + while (!Serial) + continue; // Allocate the JSON document - // - // Inside the brackets, 200 is the capacity of the memory pool in bytes. - // Don't forget to change this value to match your JSON document. - // Use https://arduinojson.org/v6/assistant to compute the capacity. - StaticJsonDocument<200> doc; + JsonDocument doc; - // StaticJsonObject allocates memory on the stack, it can be - // replaced by DynamicJsonObject which allocates in the heap. - // - // DynamicJsonObject doc(200); - - // MessagePack input string. - // - // Using a char[], as shown here, enables the "zero-copy" mode. This mode uses - // the minimal amount of memory because the JsonDocument stores pointers to - // the input buffer. - // If you use another type of input, ArduinoJson must copy the strings from - // the input to the JsonDocument, so you need to increase the capacity of the - // JsonDocument. + // The MessagePack input string uint8_t input[] = {131, 166, 115, 101, 110, 115, 111, 114, 163, 103, 112, 115, 164, 116, 105, 109, 101, 206, 80, 147, 50, 248, 164, 100, 97, 116, 97, 146, 203, 64, 72, 96, 199, 58, 188, 148, @@ -45,16 +30,17 @@ void setup() { // "data": [48.75608, 2.302038] // } + // Parse the input DeserializationError error = deserializeMsgPack(doc, input); - // Test if parsing succeeded. + // Test if parsing succeeded if (error) { Serial.print("deserializeMsgPack() failed: "); Serial.println(error.f_str()); return; } - // Fetch values. + // Fetch the values // // Most of the time, you can rely on the implicit casts. // In other case, you can do doc["time"].as(); @@ -63,7 +49,7 @@ void setup() { double latitude = doc["data"][0]; double longitude = doc["data"][1]; - // Print values. + // Print the values Serial.println(sensor); Serial.println(time); Serial.println(latitude, 6); diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino index 68b8ec5..729cb8b 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows the different ways you can use Flash strings with @@ -9,12 +9,12 @@ // JsonDocument. Prefer plain old char*, as they are more efficient in term of // code size, speed, and memory usage. // -// https://arduinojson.org/v6/example/progmem/ +// https://arduinojson.org/v7/example/progmem/ #include void setup() { - DynamicJsonDocument doc(1024); + JsonDocument doc; // You can use a Flash String as your JSON input. // WARNING: the strings in the input will be duplicated in the JsonDocument. diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/StringExample/StringExample.ino b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/StringExample/StringExample.ino index 3e51b91..845df9d 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/StringExample/StringExample.ino +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/examples/StringExample/StringExample.ino @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License // // This example shows the different ways you can use String with ArduinoJson. @@ -8,12 +8,12 @@ // JsonDocument. Prefer plain old char[], as they are more efficient in term of // code size, speed, and memory usage. // -// https://arduinojson.org/v6/example/string/ +// https://arduinojson.org/v7/example/string/ #include void setup() { - DynamicJsonDocument doc(1024); + JsonDocument doc; // You can use a String as your JSON input. // WARNING: the string in the input will be duplicated in the JsonDocument. @@ -55,7 +55,6 @@ void setup() { } // Lastly, you can print the resulting JSON to a String - // WARNING: it doesn't replace the content but appends to it String output; serializeJson(doc, output); } diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/library.json b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/library.json index 0303e99..942a7a7 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/library.json +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/library.json @@ -1,13 +1,13 @@ { "name": "ArduinoJson", "keywords": "json, rest, http, web", - "description": "A simple and efficient JSON library for embedded C++. ArduinoJson supports ✔ serialization, ✔ deserialization, ✔ MessagePack, ✔ fixed allocation, ✔ zero-copy, ✔ streams, ✔ filtering, and more. It is the most popular Arduino library on GitHub ❤❤❤❤❤. Check out arduinojson.org for a comprehensive documentation.", + "description": "A simple and efficient JSON library for embedded C++. ⭐ 6953 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": "6.21.5", + "version": "7.4.2", "authors": { "name": "Benoit Blanchon", "url": "https://blog.benoitblanchon.fr" diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/library.properties b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/library.properties index aa6de9a..9e9e3be 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/library.properties +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/library.properties @@ -1,9 +1,9 @@ name=ArduinoJson -version=6.21.5 +version=7.4.2 author=Benoit Blanchon maintainer=Benoit Blanchon sentence=A simple and efficient JSON library for embedded C++. -paragraph=ArduinoJson supports ✔ serialization, ✔ deserialization, ✔ MessagePack, ✔ fixed allocation, ✔ zero-copy, ✔ streams, ✔ filtering, and more. It is the most popular Arduino library on GitHub ❤❤❤❤❤. Check out arduinojson.org for a comprehensive documentation. +paragraph=⭐ 6953 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/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson.h b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson.h index c9ac0ca..eb4b94a 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson.h +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson.h @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson.hpp index 2d1b0be..b3e71d3 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -26,27 +26,40 @@ # endif #endif +// Remove true and false macros defined by some cores, such as Arduino Due's +// See issues #2181 and arduino/ArduinoCore-sam#50 +#ifdef true +# undef true +#endif +#ifdef false +# undef false +#endif + #include "ArduinoJson/Array/JsonArray.hpp" #include "ArduinoJson/Object/JsonObject.hpp" #include "ArduinoJson/Variant/JsonVariantConst.hpp" -#include "ArduinoJson/Document/DynamicJsonDocument.hpp" -#include "ArduinoJson/Document/StaticJsonDocument.hpp" +#include "ArduinoJson/Document/JsonDocument.hpp" +#include "ArduinoJson/Array/ArrayImpl.hpp" #include "ArduinoJson/Array/ElementProxy.hpp" -#include "ArduinoJson/Array/JsonArrayImpl.hpp" #include "ArduinoJson/Array/Utilities.hpp" #include "ArduinoJson/Collection/CollectionImpl.hpp" -#include "ArduinoJson/Object/JsonObjectImpl.hpp" +#include "ArduinoJson/Memory/ResourceManagerImpl.hpp" #include "ArduinoJson/Object/MemberProxy.hpp" +#include "ArduinoJson/Object/ObjectImpl.hpp" #include "ArduinoJson/Variant/ConverterImpl.hpp" +#include "ArduinoJson/Variant/JsonVariantCopier.hpp" #include "ArduinoJson/Variant/VariantCompare.hpp" #include "ArduinoJson/Variant/VariantImpl.hpp" +#include "ArduinoJson/Variant/VariantRefBaseImpl.hpp" #include "ArduinoJson/Json/JsonDeserializer.hpp" #include "ArduinoJson/Json/JsonSerializer.hpp" #include "ArduinoJson/Json/PrettyJsonSerializer.hpp" +#include "ArduinoJson/MsgPack/MsgPackBinary.hpp" #include "ArduinoJson/MsgPack/MsgPackDeserializer.hpp" +#include "ArduinoJson/MsgPack/MsgPackExtension.hpp" #include "ArduinoJson/MsgPack/MsgPackSerializer.hpp" #include "ArduinoJson/compatibility.hpp" diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp new file mode 100644 index 0000000..79ade35 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ArrayData.hpp @@ -0,0 +1,66 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2025, Benoit BLANCHON +// MIT License + +#pragma once + +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +class ArrayData : public CollectionData { + public: + VariantData* addElement(ResourceManager* resources); + + static VariantData* addElement(ArrayData* array, ResourceManager* resources) { + if (!array) + return nullptr; + return array->addElement(resources); + } + + template + bool addValue(const T& value, ResourceManager* resources); + + template + static bool addValue(ArrayData* array, const T& value, + ResourceManager* resources) { + if (!array) + return false; + return array->addValue(value, resources); + } + + VariantData* getOrAddElement(size_t index, ResourceManager* resources); + + VariantData* getElement(size_t index, const ResourceManager* resources) const; + + static VariantData* getElement(const ArrayData* array, size_t index, + const ResourceManager* resources) { + if (!array) + return nullptr; + return array->getElement(index, resources); + } + + void removeElement(size_t index, ResourceManager* resources); + + static void removeElement(ArrayData* array, size_t index, + ResourceManager* resources) { + if (!array) + return; + array->removeElement(index, resources); + } + + void remove(iterator it, ResourceManager* resources) { + CollectionData::removeOne(it, resources); + } + + static void remove(ArrayData* array, iterator it, + ResourceManager* resources) { + if (array) + return array->remove(it, resources); + } + + private: + iterator at(size_t index, const ResourceManager* resources) const; +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp new file mode 100644 index 0000000..b4fb126 --- /dev/null +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ArrayImpl.hpp @@ -0,0 +1,79 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2025, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +inline ArrayData::iterator ArrayData::at( + size_t index, const ResourceManager* resources) const { + auto it = createIterator(resources); + while (!it.done() && index) { + it.next(resources); + --index; + } + return it; +} + +inline VariantData* ArrayData::addElement(ResourceManager* resources) { + auto slot = resources->allocVariant(); + if (!slot) + return nullptr; + CollectionData::appendOne(slot, resources); + return slot.ptr(); +} + +inline VariantData* ArrayData::getOrAddElement(size_t index, + ResourceManager* resources) { + auto it = createIterator(resources); + while (!it.done() && index > 0) { + it.next(resources); + index--; + } + if (it.done()) + index++; + VariantData* element = it.data(); + while (index > 0) { + element = addElement(resources); + if (!element) + return nullptr; + index--; + } + return element; +} + +inline VariantData* ArrayData::getElement( + size_t index, const ResourceManager* resources) const { + return at(index, resources).data(); +} + +inline void ArrayData::removeElement(size_t index, ResourceManager* resources) { + remove(at(index, resources), resources); +} + +template +inline bool ArrayData::addValue(const T& value, ResourceManager* resources) { + ARDUINOJSON_ASSERT(resources != nullptr); + auto slot = resources->allocVariant(); + if (!slot) + return false; + JsonVariant variant(slot.ptr(), resources); + if (!variant.set(value)) { + resources->freeVariant(slot); + return false; + } + CollectionData::appendOne(slot, resources); + return true; +} + +// Returns the size (in bytes) of an array with n elements. +constexpr size_t sizeofArray(size_t n) { + return n * ResourceManager::slotSize; +} + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp index d6e9aa5..ec2ea54 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -9,48 +9,63 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE // A proxy class to get or set an element of an array. -// https://arduinojson.org/v6/api/jsonarray/subscript/ +// https://arduinojson.org/v7/api/jsonarray/subscript/ template class ElementProxy : public VariantRefBase>, public VariantOperators> { friend class VariantAttorney; + friend class VariantRefBase>; + + template + friend class MemberProxy; + + template + friend class ElementProxy; + public: ElementProxy(TUpstream upstream, size_t index) : upstream_(upstream), index_(index) {} - ElementProxy(const ElementProxy& src) - : upstream_(src.upstream_), index_(src.index_) {} - - FORCE_INLINE ElementProxy& operator=(const ElementProxy& src) { + ElementProxy& operator=(const ElementProxy& src) { this->set(src); return *this; } template - FORCE_INLINE ElementProxy& operator=(const T& src) { + ElementProxy& operator=(const T& src) { this->set(src); return *this; } template - FORCE_INLINE ElementProxy& operator=(T* src) { + ElementProxy& operator=(T* src) { this->set(src); return *this; } private: - FORCE_INLINE MemoryPool* getPool() const { - return VariantAttorney::getPool(upstream_); + // clang-format off + ElementProxy(const ElementProxy& src) // Error here? See https://arduinojson.org/v7/proxy-non-copyable/ + : upstream_(src.upstream_), index_(src.index_) {} + // clang-format on + + ResourceManager* getResourceManager() const { + return VariantAttorney::getResourceManager(upstream_); } FORCE_INLINE VariantData* getData() const { - return variantGetElement(VariantAttorney::getData(upstream_), index_); + return VariantData::getElement( + VariantAttorney::getData(upstream_), index_, + VariantAttorney::getResourceManager(upstream_)); } - FORCE_INLINE VariantData* getOrCreateData() const { - return variantGetOrAddElement(VariantAttorney::getOrCreateData(upstream_), - index_, VariantAttorney::getPool(upstream_)); + VariantData* getOrCreateData() const { + auto data = VariantAttorney::getOrCreateData(upstream_); + if (!data) + return nullptr; + return data->getOrAddElement( + index_, VariantAttorney::getResourceManager(upstream_)); } TUpstream upstream_; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp index d208e41..436793a 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -12,163 +12,196 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE class JsonObject; // A reference to an array in a JsonDocument -// https://arduinojson.org/v6/api/jsonarray/ +// https://arduinojson.org/v7/api/jsonarray/ class JsonArray : public detail::VariantOperators { friend class detail::VariantAttorney; public: - typedef JsonArrayIterator iterator; + using iterator = JsonArrayIterator; // Constructs an unbound reference. - FORCE_INLINE JsonArray() : data_(0), pool_(0) {} + JsonArray() : data_(0), resources_(0) {} // INTERNAL USE ONLY - FORCE_INLINE JsonArray(detail::MemoryPool* pool, detail::CollectionData* data) - : data_(data), pool_(pool) {} + JsonArray(detail::ArrayData* data, detail::ResourceManager* resources) + : data_(data), resources_(resources) {} // Returns a JsonVariant pointing to the array. - // https://arduinojson.org/v6/api/jsonvariant/ + // https://arduinojson.org/v7/api/jsonvariant/ operator JsonVariant() { void* data = data_; // prevent warning cast-align - return JsonVariant(pool_, reinterpret_cast(data)); + return JsonVariant(reinterpret_cast(data), + resources_); } // Returns a read-only reference to the array. - // https://arduinojson.org/v6/api/jsonarrayconst/ + // https://arduinojson.org/v7/api/jsonarrayconst/ operator JsonArrayConst() const { - return JsonArrayConst(data_); + return JsonArrayConst(data_, resources_); + } + + // Appends a new (empty) element to the array. + // Returns a reference to the new element. + // https://arduinojson.org/v7/api/jsonarray/add/ + template ::value, int> = 0> + T add() const { + return add().to(); } // Appends a new (null) element to the array. // Returns a reference to the new element. - // https://arduinojson.org/v6/api/jsonarray/add/ + // https://arduinojson.org/v7/api/jsonarray/add/ + template ::value, int> = 0> JsonVariant add() const { - if (!data_) - return JsonVariant(); - return JsonVariant(pool_, data_->addElement(pool_)); + return JsonVariant(detail::ArrayData::addElement(data_, resources_), + resources_); } // Appends a value to the array. - // https://arduinojson.org/v6/api/jsonarray/add/ + // https://arduinojson.org/v7/api/jsonarray/add/ template - FORCE_INLINE bool add(const T& value) const { - return add().set(value); + bool add(const T& value) const { + return detail::ArrayData::addValue(data_, value, resources_); } // Appends a value to the array. - // https://arduinojson.org/v6/api/jsonarray/add/ - template - FORCE_INLINE bool add(T* value) const { - return add().set(value); + // https://arduinojson.org/v7/api/jsonarray/add/ + template ::value, int> = 0> + bool add(T* value) const { + return detail::ArrayData::addValue(data_, value, resources_); } // Returns an iterator to the first element of the array. - // https://arduinojson.org/v6/api/jsonarray/begin/ - FORCE_INLINE iterator begin() const { + // https://arduinojson.org/v7/api/jsonarray/begin/ + iterator begin() const { if (!data_) return iterator(); - return iterator(pool_, data_->head()); + return iterator(data_->createIterator(resources_), resources_); } // Returns an iterator following the last element of the array. - // https://arduinojson.org/v6/api/jsonarray/end/ - FORCE_INLINE iterator end() const { + // https://arduinojson.org/v7/api/jsonarray/end/ + iterator end() const { return iterator(); } // Copies an array. - // https://arduinojson.org/v6/api/jsonarray/set/ - FORCE_INLINE bool set(JsonArrayConst src) const { - if (!data_ || !src.data_) + // https://arduinojson.org/v7/api/jsonarray/set/ + bool set(JsonArrayConst src) const { + if (!data_) return false; - return data_->copyFrom(*src.data_, pool_); - } - // Compares the content of two arrays. - FORCE_INLINE bool operator==(JsonArray rhs) const { - return JsonArrayConst(data_) == JsonArrayConst(rhs.data_); + clear(); + for (auto element : src) { + if (!add(element)) + return false; + } + + return true; } // Removes the element at the specified iterator. - // ⚠️ Doesn't release the memory associated with the removed element. - // https://arduinojson.org/v6/api/jsonarray/remove/ - FORCE_INLINE void remove(iterator it) const { - if (!data_) - return; - data_->removeSlot(it.slot_); + // https://arduinojson.org/v7/api/jsonarray/remove/ + void remove(iterator it) const { + detail::ArrayData::remove(data_, it.iterator_, resources_); } // Removes the element at the specified index. - // ⚠️ Doesn't release the memory associated with the removed element. - // https://arduinojson.org/v6/api/jsonarray/remove/ - FORCE_INLINE void remove(size_t index) const { - if (!data_) - return; - data_->removeElement(index); + // https://arduinojson.org/v7/api/jsonarray/remove/ + void remove(size_t index) const { + detail::ArrayData::removeElement(data_, index, resources_); + } + + // Removes the element at the specified index. + // https://arduinojson.org/v7/api/jsonarray/remove/ + template ::value, int> = 0> + void remove(const TVariant& variant) const { + if (variant.template is()) + remove(variant.template as()); } // Removes all the elements of the array. - // ⚠️ Doesn't release the memory associated with the removed elements. - // https://arduinojson.org/v6/api/jsonarray/clear/ + // https://arduinojson.org/v7/api/jsonarray/clear/ void clear() const { - if (!data_) - return; - data_->clear(); + detail::ArrayData::clear(data_, resources_); } // Gets or sets the element at the specified index. - // https://arduinojson.org/v6/api/jsonarray/subscript/ - FORCE_INLINE detail::ElementProxy operator[](size_t index) const { - return {*this, index}; + // https://arduinojson.org/v7/api/jsonarray/subscript/ + template ::value, int> = 0> + detail::ElementProxy operator[](T index) const { + return {*this, size_t(index)}; } - // Creates an object and appends it to the array. - // https://arduinojson.org/v6/api/jsonarray/createnestedobject/ - FORCE_INLINE JsonObject createNestedObject() const; - - // Creates an array and appends it to the array. - // https://arduinojson.org/v6/api/jsonarray/createnestedarray/ - FORCE_INLINE JsonArray createNestedArray() const { - return add().to(); + // Gets or sets the element at the specified index. + // https://arduinojson.org/v7/api/jsonarray/subscript/ + template ::value, int> = 0> + detail::ElementProxy operator[](const TVariant& variant) const { + if (variant.template is()) + return {*this, variant.template as()}; + else + return {*this, size_t(-1)}; } operator JsonVariantConst() const { - return JsonVariantConst(collectionToVariant(data_)); + return JsonVariantConst(collectionToVariant(data_), resources_); } // Returns true if the reference is unbound. - // https://arduinojson.org/v6/api/jsonarray/isnull/ - FORCE_INLINE bool isNull() const { + // https://arduinojson.org/v7/api/jsonarray/isnull/ + bool isNull() const { return data_ == 0; } // Returns true if the reference is bound. - // https://arduinojson.org/v6/api/jsonarray/isnull/ - FORCE_INLINE operator bool() const { + // https://arduinojson.org/v7/api/jsonarray/isnull/ + operator bool() const { return data_ != 0; } - // Returns the number of bytes occupied by the array. - // https://arduinojson.org/v6/api/jsonarray/memoryusage/ - FORCE_INLINE size_t memoryUsage() const { - return data_ ? data_->memoryUsage() : 0; - } - // Returns the depth (nesting level) of the array. - // https://arduinojson.org/v6/api/jsonarray/nesting/ - FORCE_INLINE size_t nesting() const { - return variantNesting(collectionToVariant(data_)); + // https://arduinojson.org/v7/api/jsonarray/nesting/ + size_t nesting() const { + return detail::VariantData::nesting(collectionToVariant(data_), resources_); } // Returns the number of elements in the array. - // https://arduinojson.org/v6/api/jsonarray/size/ - FORCE_INLINE size_t size() const { - return data_ ? data_->size() : 0; + // https://arduinojson.org/v7/api/jsonarray/size/ + size_t size() const { + return data_ ? data_->size(resources_) : 0; + } + + // DEPRECATED: use add() instead + ARDUINOJSON_DEPRECATED("use add() instead") + JsonVariant add() const { + return add(); + } + + // DEPRECATED: use add() instead + ARDUINOJSON_DEPRECATED("use add() instead") + JsonArray createNestedArray() const { + return add(); + } + + // DEPRECATED: use add() instead + ARDUINOJSON_DEPRECATED("use add() instead") + JsonObject createNestedObject() const; + + // DEPRECATED: always returns zero + ARDUINOJSON_DEPRECATED("always returns zero") + size_t memoryUsage() const { + return 0; } private: - detail::MemoryPool* getPool() const { - return pool_; + detail::ResourceManager* getResourceManager() const { + return resources_; } detail::VariantData* getData() const { @@ -179,33 +212,8 @@ class JsonArray : public detail::VariantOperators { return collectionToVariant(data_); } - detail::CollectionData* data_; - detail::MemoryPool* pool_; -}; - -template <> -struct Converter : private detail::VariantAttorney { - static void toJson(JsonVariantConst src, JsonVariant dst) { - variantCopyFrom(getData(dst), getData(src), getPool(dst)); - } - - static JsonArray fromJson(JsonVariant src) { - auto data = getData(src); - auto pool = getPool(src); - return JsonArray(pool, data != 0 ? data->asArray() : 0); - } - - static detail::InvalidConversion fromJson( - JsonVariantConst); - - static bool checkJson(JsonVariantConst) { - return false; - } - - static bool checkJson(JsonVariant src) { - auto data = getData(src); - return data && data->isArray(); - } + detail::ArrayData* data_; + detail::ResourceManager* resources_; }; ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp index 6a6463c..b4c138a 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -13,98 +13,89 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE class JsonObject; // A read-only reference to an array in a JsonDocument -// https://arduinojson.org/v6/api/jsonarrayconst/ +// https://arduinojson.org/v7/api/jsonarrayconst/ class JsonArrayConst : public detail::VariantOperators { friend class JsonArray; friend class detail::VariantAttorney; public: - typedef JsonArrayConstIterator iterator; + using iterator = JsonArrayConstIterator; // Returns an iterator to the first element of the array. - // https://arduinojson.org/v6/api/jsonarrayconst/begin/ - FORCE_INLINE iterator begin() const { + // https://arduinojson.org/v7/api/jsonarrayconst/begin/ + iterator begin() const { if (!data_) return iterator(); - return iterator(data_->head()); + return iterator(data_->createIterator(resources_), resources_); } // Returns an iterator to the element following the last element of the array. - // https://arduinojson.org/v6/api/jsonarrayconst/end/ - FORCE_INLINE iterator end() const { + // https://arduinojson.org/v7/api/jsonarrayconst/end/ + iterator end() const { return iterator(); } // Creates an unbound reference. - FORCE_INLINE JsonArrayConst() : data_(0) {} + JsonArrayConst() : data_(0), resources_(0) {} // INTERNAL USE ONLY - FORCE_INLINE JsonArrayConst(const detail::CollectionData* data) - : data_(data) {} + JsonArrayConst(const detail::ArrayData* data, + const detail::ResourceManager* resources) + : data_(data), resources_(resources) {} - // Compares the content of two arrays. - // Returns true if the two arrays are equal. - FORCE_INLINE bool operator==(JsonArrayConst rhs) const { - if (data_ == rhs.data_) - return true; - if (!data_ || !rhs.data_) - return false; - - iterator it1 = begin(); - iterator it2 = rhs.begin(); - - for (;;) { - bool end1 = it1 == end(); - bool end2 = it2 == rhs.end(); - if (end1 && end2) - return true; - if (end1 || end2) - return false; - if (*it1 != *it2) - return false; - ++it1; - ++it2; - } + // Returns the element at the specified index. + // https://arduinojson.org/v7/api/jsonarrayconst/subscript/ + template ::value, int> = 0> + JsonVariantConst operator[](T index) const { + return JsonVariantConst( + detail::ArrayData::getElement(data_, size_t(index), resources_), + resources_); } // Returns the element at the specified index. - // https://arduinojson.org/v6/api/jsonarrayconst/subscript/ - FORCE_INLINE JsonVariantConst operator[](size_t index) const { - return JsonVariantConst(data_ ? data_->getElement(index) : 0); + // https://arduinojson.org/v7/api/jsonarrayconst/subscript/ + template ::value, int> = 0> + JsonVariantConst operator[](const TVariant& variant) const { + if (variant.template is()) + return operator[](variant.template as()); + else + return JsonVariantConst(); } operator JsonVariantConst() const { - return JsonVariantConst(collectionToVariant(data_)); + return JsonVariantConst(getData(), resources_); } // Returns true if the reference is unbound. - // https://arduinojson.org/v6/api/jsonarrayconst/isnull/ - FORCE_INLINE bool isNull() const { + // https://arduinojson.org/v7/api/jsonarrayconst/isnull/ + bool isNull() const { return data_ == 0; } // Returns true if the reference is bound. - // https://arduinojson.org/v6/api/jsonarrayconst/isnull/ - FORCE_INLINE operator bool() const { + // https://arduinojson.org/v7/api/jsonarrayconst/isnull/ + operator bool() const { return data_ != 0; } - // Returns the number of bytes occupied by the array. - // https://arduinojson.org/v6/api/jsonarrayconst/memoryusage/ - FORCE_INLINE size_t memoryUsage() const { - return data_ ? data_->memoryUsage() : 0; - } - // Returns the depth (nesting level) of the array. - // https://arduinojson.org/v6/api/jsonarrayconst/nesting/ - FORCE_INLINE size_t nesting() const { - return variantNesting(collectionToVariant(data_)); + // https://arduinojson.org/v7/api/jsonarrayconst/nesting/ + size_t nesting() const { + return detail::VariantData::nesting(getData(), resources_); } // Returns the number of elements in the array. - // https://arduinojson.org/v6/api/jsonarrayconst/size/ - FORCE_INLINE size_t size() const { - return data_ ? data_->size() : 0; + // https://arduinojson.org/v7/api/jsonarrayconst/size/ + size_t size() const { + return data_ ? data_->size(resources_) : 0; + } + + // DEPRECATED: always returns zero + ARDUINOJSON_DEPRECATED("always returns zero") + size_t memoryUsage() const { + return 0; } private: @@ -112,24 +103,31 @@ class JsonArrayConst : public detail::VariantOperators { return collectionToVariant(data_); } - const detail::CollectionData* data_; + const detail::ArrayData* data_; + const detail::ResourceManager* resources_; }; -template <> -struct Converter : private detail::VariantAttorney { - static void toJson(JsonVariantConst src, JsonVariant dst) { - variantCopyFrom(getData(dst), getData(src), getPool(dst)); - } +// Compares the content of two arrays. +// Returns true if the two arrays are equal. +inline bool operator==(JsonArrayConst lhs, JsonArrayConst rhs) { + if (!lhs && !rhs) + return true; + if (!lhs || !rhs) + return false; - static JsonArrayConst fromJson(JsonVariantConst src) { - auto data = getData(src); - return data ? data->asArray() : 0; - } + auto a = lhs.begin(); + auto b = rhs.begin(); - static bool checkJson(JsonVariantConst src) { - auto data = getData(src); - return data && data->isArray(); + for (;;) { + if (a == b) // same pointer or both null + return true; + if (a == lhs.end() || b == rhs.end()) + return false; + if (*a != *b) + return false; + ++a; + ++b; } -}; +} ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp deleted file mode 100644 index dc0487a..0000000 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp +++ /dev/null @@ -1,36 +0,0 @@ -// ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON -// MIT License - -#pragma once - -#include -#include - -ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE - -inline JsonObject JsonArray::createNestedObject() const { - return add().to(); -} - -ARDUINOJSON_END_PUBLIC_NAMESPACE - -ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE - -template -inline JsonArray VariantRefBase::createNestedArray() const { - return add().template to(); -} - -template -inline JsonObject VariantRefBase::createNestedObject() const { - return add().template to(); -} - -template -inline ElementProxy VariantRefBase::operator[]( - size_t index) const { - return ElementProxy(derived(), index); -} - -ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp index d9048b2..39ca45e 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp @@ -1,121 +1,96 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once #include -#include ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE -class VariantPtr { +template +class Ptr { public: - VariantPtr(detail::MemoryPool* pool, detail::VariantData* data) - : variant_(pool, data) {} + Ptr(T value) : value_(value) {} - JsonVariant* operator->() { - return &variant_; + T* operator->() { + return &value_; } - JsonVariant& operator*() { - return variant_; + T& operator*() { + return value_; } private: - JsonVariant variant_; + T value_; }; class JsonArrayIterator { friend class JsonArray; public: - JsonArrayIterator() : slot_(0) {} - explicit JsonArrayIterator(detail::MemoryPool* pool, - detail::VariantSlot* slot) - : pool_(pool), slot_(slot) {} + JsonArrayIterator() {} + explicit JsonArrayIterator(detail::ArrayData::iterator iterator, + detail::ResourceManager* resources) + : iterator_(iterator), resources_(resources) {} - JsonVariant operator*() const { - return JsonVariant(pool_, slot_->data()); + JsonVariant operator*() { + return JsonVariant(iterator_.data(), resources_); } - VariantPtr operator->() { - return VariantPtr(pool_, slot_->data()); + Ptr operator->() { + return operator*(); } bool operator==(const JsonArrayIterator& other) const { - return slot_ == other.slot_; + return iterator_ == other.iterator_; } bool operator!=(const JsonArrayIterator& other) const { - return slot_ != other.slot_; + return iterator_ != other.iterator_; } JsonArrayIterator& operator++() { - slot_ = slot_->next(); - return *this; - } - - JsonArrayIterator& operator+=(size_t distance) { - slot_ = slot_->next(distance); + iterator_.next(resources_); return *this; } private: - detail::MemoryPool* pool_; - detail::VariantSlot* slot_; -}; - -class VariantConstPtr { - public: - VariantConstPtr(const detail::VariantData* data) : variant_(data) {} - - JsonVariantConst* operator->() { - return &variant_; - } - - JsonVariantConst& operator*() { - return variant_; - } - - private: - JsonVariantConst variant_; + detail::ArrayData::iterator iterator_; + detail::ResourceManager* resources_; }; class JsonArrayConstIterator { friend class JsonArray; public: - JsonArrayConstIterator() : slot_(0) {} - explicit JsonArrayConstIterator(const detail::VariantSlot* slot) - : slot_(slot) {} + JsonArrayConstIterator() {} + explicit JsonArrayConstIterator(detail::ArrayData::iterator iterator, + const detail::ResourceManager* resources) + : iterator_(iterator), resources_(resources) {} JsonVariantConst operator*() const { - return JsonVariantConst(slot_->data()); + return JsonVariantConst(iterator_.data(), resources_); } - VariantConstPtr operator->() { - return VariantConstPtr(slot_->data()); + Ptr operator->() { + return operator*(); } bool operator==(const JsonArrayConstIterator& other) const { - return slot_ == other.slot_; + return iterator_ == other.iterator_; } bool operator!=(const JsonArrayConstIterator& other) const { - return slot_ != other.slot_; + return iterator_ != other.iterator_; } JsonArrayConstIterator& operator++() { - slot_ = slot_->next(); - return *this; - } - - JsonArrayConstIterator& operator+=(size_t distance) { - slot_ = slot_->next(distance); + iterator_.next(resources_); return *this; } private: - const detail::VariantSlot* slot_; + detail::ArrayData::iterator iterator_; + const detail::ResourceManager* resources_; }; ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp index 398e11d..d9ba143 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -11,30 +11,29 @@ ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE // Copies a value to a JsonVariant. // This is a degenerated form of copyArray() to stop the recursion. -template -inline typename detail::enable_if::value, bool>::type -copyArray(const T& src, JsonVariant dst) { +template ::value, int> = 0> +inline bool copyArray(const T& src, JsonVariant dst) { return dst.set(src); } // Copies values from an array to a JsonArray or a JsonVariant. -// https://arduinojson.org/v6/api/misc/copyarray/ -template -inline typename detail::enable_if< - !detail::is_base_of::value, bool>::type -copyArray(T (&src)[N], const TDestination& dst) { +// https://arduinojson.org/v7/api/misc/copyarray/ +template ::value, int> = 0> +inline bool copyArray(T (&src)[N], const TDestination& dst) { return copyArray(src, N, dst); } // Copies values from an array to a JsonArray or a JsonVariant. -// https://arduinojson.org/v6/api/misc/copyarray/ -template -inline typename detail::enable_if< - !detail::is_base_of::value, bool>::type -copyArray(const T* src, size_t len, const TDestination& dst) { +// https://arduinojson.org/v7/api/misc/copyarray/ +template ::value, int> = 0> +inline bool copyArray(const T* src, size_t len, const TDestination& dst) { bool ok = true; for (size_t i = 0; i < len; i++) { - ok &= copyArray(src[i], dst.add()); + ok &= copyArray(src[i], dst.template add()); } return ok; } @@ -47,14 +46,14 @@ inline bool copyArray(const char* src, size_t, const TDestination& dst) { } // Copies values from an array to a JsonDocument. -// https://arduinojson.org/v6/api/misc/copyarray/ +// https://arduinojson.org/v7/api/misc/copyarray/ template inline bool copyArray(const T& src, JsonDocument& dst) { return copyArray(src, dst.to()); } // Copies an array to a JsonDocument. -// https://arduinojson.org/v6/api/misc/copyarray/ +// https://arduinojson.org/v7/api/misc/copyarray/ template inline bool copyArray(const T* src, size_t len, JsonDocument& dst) { return copyArray(src, len, dst.to()); @@ -62,22 +61,21 @@ inline bool copyArray(const T* src, size_t len, JsonDocument& dst) { // Copies a value from a JsonVariant. // This is a degenerated form of copyArray() to stop the recursion. -template -inline typename detail::enable_if::value, size_t>::type -copyArray(JsonVariantConst src, T& dst) { +template ::value, int> = 0> +inline size_t copyArray(JsonVariantConst src, T& dst) { dst = src.as(); return 1; } // Copies values from a JsonArray or JsonVariant to an array. -// https://arduinojson.org/v6/api/misc/copyarray/ +// https://arduinojson.org/v7/api/misc/copyarray/ template inline size_t copyArray(JsonArrayConst src, T (&dst)[N]) { return copyArray(src, dst, N); } // Copies values from a JsonArray or JsonVariant to an array. -// https://arduinojson.org/v6/api/misc/copyarray/ +// https://arduinojson.org/v7/api/misc/copyarray/ template inline size_t copyArray(JsonArrayConst src, T* dst, size_t len) { size_t i = 0; @@ -101,13 +99,13 @@ inline size_t copyArray(JsonVariantConst src, char (&dst)[N]) { } // Copies values from a JsonDocument to an array. -// https://arduinojson.org/v6/api/misc/copyarray/ -template -inline typename detail::enable_if< - detail::is_array::value && - detail::is_base_of::value, - size_t>::type -copyArray(const TSource& src, T& dst) { +// https://arduinojson.org/v7/api/misc/copyarray/ +template < + typename TSource, typename T, + detail::enable_if_t::value && + detail::is_base_of::value, + int> = 0> +inline size_t copyArray(const TSource& src, T& dst) { return copyArray(src.template as(), dst); } diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp index 090c98b..937c10c 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp @@ -1,9 +1,10 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once +#include #include #include @@ -11,74 +12,100 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE -class MemoryPool; class VariantData; -class VariantSlot; +class ResourceManager; -class CollectionData { - VariantSlot* head_; - VariantSlot* tail_; +class CollectionIterator { + friend class CollectionData; public: - // Must be a POD! - // - no constructor - // - no destructor - // - no virtual - // - no inheritance + CollectionIterator() : slot_(nullptr), currentId_(NULL_SLOT) {} - // Array only + void next(const ResourceManager* resources); - VariantData* addElement(MemoryPool* pool); - - VariantData* getElement(size_t index) const; - - VariantData* getOrAddElement(size_t index, MemoryPool* pool); - - void removeElement(size_t index); - - // Object only - - template - VariantData* addMember(TAdaptedString key, MemoryPool* pool); - - template - VariantData* getMember(TAdaptedString key) const; - - template - VariantData* getOrAddMember(TAdaptedString key, MemoryPool* pool); - - template - void removeMember(TAdaptedString key) { - removeSlot(getSlot(key)); + bool done() const { + return slot_ == nullptr; } - template - bool containsKey(const TAdaptedString& key) const; + bool operator==(const CollectionIterator& other) const { + return slot_ == other.slot_; + } - // Generic + bool operator!=(const CollectionIterator& other) const { + return slot_ != other.slot_; + } - void clear(); - size_t memoryUsage() const; - size_t size() const; + VariantData* operator->() { + ARDUINOJSON_ASSERT(slot_ != nullptr); + return data(); + } - VariantSlot* addSlot(MemoryPool*); - void removeSlot(VariantSlot* slot); + VariantData& operator*() { + ARDUINOJSON_ASSERT(slot_ != nullptr); + return *data(); + } - bool copyFrom(const CollectionData& src, MemoryPool* pool); + const VariantData& operator*() const { + ARDUINOJSON_ASSERT(slot_ != nullptr); + return *data(); + } - VariantSlot* head() const { + VariantData* data() { + return reinterpret_cast(slot_); + } + + const VariantData* data() const { + return reinterpret_cast(slot_); + } + + private: + CollectionIterator(VariantData* slot, SlotId slotId); + + VariantData* slot_; + SlotId currentId_, nextId_; +}; + +class CollectionData { + SlotId head_ = NULL_SLOT; + SlotId tail_ = NULL_SLOT; + + public: + // Placement new + static void* operator new(size_t, void* p) noexcept { + return p; + } + + static void operator delete(void*, void*) noexcept {} + + using iterator = CollectionIterator; + + iterator createIterator(const ResourceManager* resources) const; + + size_t size(const ResourceManager*) const; + size_t nesting(const ResourceManager*) const; + + void clear(ResourceManager* resources); + + static void clear(CollectionData* collection, ResourceManager* resources) { + if (!collection) + return; + collection->clear(resources); + } + + SlotId head() const { return head_; } - void movePointers(ptrdiff_t stringDistance, ptrdiff_t variantDistance); + protected: + void appendOne(Slot slot, const ResourceManager* resources); + void appendPair(Slot key, Slot value, + const ResourceManager* resources); + + void removeOne(iterator it, ResourceManager* resources); + void removePair(iterator it, ResourceManager* resources); private: - VariantSlot* getSlot(size_t index) const; - - template - VariantSlot* getSlot(TAdaptedString key) const; - - VariantSlot* getPreviousSlot(VariantSlot*) const; + Slot getPreviousSlot(VariantData*, const ResourceManager*) const; }; inline const VariantData* collectionToVariant( diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp index 134d5bd..559c0a5 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp @@ -1,197 +1,137 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once #include -#include +#include #include +#include #include ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE -inline VariantSlot* CollectionData::addSlot(MemoryPool* pool) { - VariantSlot* slot = pool->allocVariant(); - if (!slot) - return 0; +inline CollectionIterator::CollectionIterator(VariantData* slot, SlotId slotId) + : slot_(slot), currentId_(slotId) { + nextId_ = slot_ ? slot_->next() : NULL_SLOT; +} - if (tail_) { - ARDUINOJSON_ASSERT(pool->owns(tail_)); // Can't alter a linked array/object - tail_->setNextNotNull(slot); - tail_ = slot; +inline void CollectionIterator::next(const ResourceManager* resources) { + ARDUINOJSON_ASSERT(currentId_ != NULL_SLOT); + slot_ = resources->getVariant(nextId_); + currentId_ = nextId_; + if (slot_) + nextId_ = slot_->next(); +} + +inline CollectionData::iterator CollectionData::createIterator( + const ResourceManager* resources) const { + return iterator(resources->getVariant(head_), head_); +} + +inline void CollectionData::appendOne(Slot slot, + const ResourceManager* resources) { + if (tail_ != NULL_SLOT) { + auto tail = resources->getVariant(tail_); + tail->setNext(slot.id()); + tail_ = slot.id(); } else { - head_ = slot; - tail_ = slot; + head_ = slot.id(); + tail_ = slot.id(); + } +} + +inline void CollectionData::appendPair(Slot key, + Slot value, + const ResourceManager* resources) { + key->setNext(value.id()); + + if (tail_ != NULL_SLOT) { + auto tail = resources->getVariant(tail_); + tail->setNext(key.id()); + tail_ = value.id(); + } else { + head_ = key.id(); + tail_ = value.id(); + } +} + +inline void CollectionData::clear(ResourceManager* resources) { + auto next = head_; + while (next != NULL_SLOT) { + auto currId = next; + auto slot = resources->getVariant(next); + next = slot->next(); + resources->freeVariant({slot, currId}); } - slot->clear(); - return slot; + head_ = NULL_SLOT; + tail_ = NULL_SLOT; } -inline VariantData* CollectionData::addElement(MemoryPool* pool) { - return slotData(addSlot(pool)); -} - -template -inline VariantData* CollectionData::addMember(TAdaptedString key, - MemoryPool* pool) { - VariantSlot* slot = addSlot(pool); - if (!slotSetKey(slot, key, pool)) { - removeSlot(slot); - return 0; - } - return slot->data(); -} - -inline void CollectionData::clear() { - head_ = 0; - tail_ = 0; -} - -template -inline bool CollectionData::containsKey(const TAdaptedString& key) const { - return getSlot(key) != 0; -} - -inline bool CollectionData::copyFrom(const CollectionData& src, - MemoryPool* pool) { - clear(); - for (VariantSlot* s = src.head_; s; s = s->next()) { - VariantData* var; - if (s->key() != 0) { - JsonString key(s->key(), - s->ownsKey() ? JsonString::Copied : JsonString::Linked); - var = addMember(adaptString(key), pool); - } else { - var = addElement(pool); - } - if (!var) - return false; - if (!var->copyFrom(*s->data(), pool)) - return false; - } - return true; -} - -template -inline VariantSlot* CollectionData::getSlot(TAdaptedString key) const { - if (key.isNull()) - return 0; - VariantSlot* slot = head_; - while (slot) { - if (stringEquals(key, adaptString(slot->key()))) +inline Slot CollectionData::getPreviousSlot( + VariantData* target, const ResourceManager* resources) const { + auto prev = Slot(); + auto currentId = head_; + while (currentId != NULL_SLOT) { + auto currentSlot = resources->getVariant(currentId); + if (currentSlot == target) break; - slot = slot->next(); + prev = Slot(currentSlot, currentId); + currentId = currentSlot->next(); } - return slot; + return prev; } -inline VariantSlot* CollectionData::getSlot(size_t index) const { - if (!head_) - return 0; - return head_->next(index); -} - -inline VariantSlot* CollectionData::getPreviousSlot(VariantSlot* target) const { - VariantSlot* current = head_; - while (current) { - VariantSlot* next = current->next(); - if (next == target) - return current; - current = next; - } - return 0; -} - -template -inline VariantData* CollectionData::getMember(TAdaptedString key) const { - VariantSlot* slot = getSlot(key); - return slot ? slot->data() : 0; -} - -template -inline VariantData* CollectionData::getOrAddMember(TAdaptedString key, - MemoryPool* pool) { - // ignore null key - if (key.isNull()) - return 0; - - // search a matching key - VariantSlot* slot = getSlot(key); - if (slot) - return slot->data(); - - return addMember(key, pool); -} - -inline VariantData* CollectionData::getElement(size_t index) const { - VariantSlot* slot = getSlot(index); - return slot ? slot->data() : 0; -} - -inline VariantData* CollectionData::getOrAddElement(size_t index, - MemoryPool* pool) { - VariantSlot* slot = head_; - while (slot && index > 0) { - slot = slot->next(); - index--; - } - if (!slot) - index++; - while (index > 0) { - slot = addSlot(pool); - index--; - } - return slotData(slot); -} - -inline void CollectionData::removeSlot(VariantSlot* slot) { - if (!slot) +inline void CollectionData::removeOne(iterator it, ResourceManager* resources) { + if (it.done()) return; - VariantSlot* prev = getPreviousSlot(slot); - VariantSlot* next = slot->next(); + auto curr = it.slot_; + auto prev = getPreviousSlot(curr, resources); + auto next = curr->next(); if (prev) prev->setNext(next); else head_ = next; - if (!next) - tail_ = prev; + if (next == NULL_SLOT) + tail_ = prev.id(); + resources->freeVariant({it.slot_, it.currentId_}); } -inline void CollectionData::removeElement(size_t index) { - removeSlot(getSlot(index)); -} - -inline size_t CollectionData::memoryUsage() const { - size_t total = 0; - for (VariantSlot* s = head_; s; s = s->next()) { - total += sizeof(VariantSlot) + s->data()->memoryUsage(); - if (s->ownsKey()) - total += strlen(s->key()) + 1; - } - return total; -} - -inline size_t CollectionData::size() const { - return slotSize(head_); -} - -template -inline void movePointer(T*& p, ptrdiff_t offset) { - if (!p) +inline void CollectionData::removePair(ObjectData::iterator it, + ResourceManager* resources) { + if (it.done()) return; - p = reinterpret_cast( - reinterpret_cast(reinterpret_cast(p) + offset)); - ARDUINOJSON_ASSERT(isAligned(p)); + + auto keySlot = it.slot_; + + auto valueId = it.nextId_; + auto valueSlot = resources->getVariant(valueId); + + // remove value slot + keySlot->setNext(valueSlot->next()); + resources->freeVariant({valueSlot, valueId}); + + // remove key slot + removeOne(it, resources); } -inline void CollectionData::movePointers(ptrdiff_t stringDistance, - ptrdiff_t variantDistance) { - movePointer(head_, variantDistance); - movePointer(tail_, variantDistance); - for (VariantSlot* slot = head_; slot; slot = slot->next()) - slot->movePointers(stringDistance, variantDistance); +inline size_t CollectionData::nesting(const ResourceManager* resources) const { + size_t maxChildNesting = 0; + for (auto it = createIterator(resources); !it.done(); it.next(resources)) { + size_t childNesting = it->nesting(resources); + if (childNesting > maxChildNesting) + maxChildNesting = childNesting; + } + return maxChildNesting + 1; +} + +inline size_t CollectionData::size(const ResourceManager* resources) const { + size_t count = 0; + for (auto it = createIterator(resources); !it.done(); it.next(resources)) + count++; + return count; } ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Configuration.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Configuration.hpp index ac0ea66..696ce4c 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Configuration.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Configuration.hpp @@ -1,10 +1,11 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once // Support std::istream and std::ostream +// https://arduinojson.org/v7/config/enable_std_stream/ #ifndef ARDUINOJSON_ENABLE_STD_STREAM # ifdef __has_include # if __has_include() && \ @@ -25,6 +26,7 @@ #endif // Support std::string +// https://arduinojson.org/v7/config/enable_std_string/ #ifndef ARDUINOJSON_ENABLE_STD_STRING # ifdef __has_include # if __has_include() && !defined(min) && !defined(max) @@ -54,51 +56,105 @@ # endif #endif +// Pointer size: a heuristic to set sensible defaults +#ifndef ARDUINOJSON_SIZEOF_POINTER +# if defined(__SIZEOF_POINTER__) +# define ARDUINOJSON_SIZEOF_POINTER __SIZEOF_POINTER__ +# elif defined(_WIN64) && _WIN64 +# define ARDUINOJSON_SIZEOF_POINTER 8 // 64 bits +# else +# define ARDUINOJSON_SIZEOF_POINTER 4 // assume 32 bits otherwise +# endif +#endif + // Store floating-point values with float (0) or double (1) +// https://arduinojson.org/v7/config/use_double/ #ifndef ARDUINOJSON_USE_DOUBLE -# define ARDUINOJSON_USE_DOUBLE 1 +# if ARDUINOJSON_SIZEOF_POINTER >= 4 // 32 & 64 bits systems +# define ARDUINOJSON_USE_DOUBLE 1 +# else +# define ARDUINOJSON_USE_DOUBLE 0 +# endif #endif // Store integral values with long (0) or long long (1) +// https://arduinojson.org/v7/config/use_long_long/ #ifndef ARDUINOJSON_USE_LONG_LONG -# if defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ >= 4 || \ - defined(_MSC_VER) +# if ARDUINOJSON_SIZEOF_POINTER >= 4 // 32 & 64 bits systems # define ARDUINOJSON_USE_LONG_LONG 1 +# else +# define ARDUINOJSON_USE_LONG_LONG 0 # endif #endif -#ifndef ARDUINOJSON_USE_LONG_LONG -# define ARDUINOJSON_USE_LONG_LONG 0 -#endif // Limit nesting as the stack is likely to be small +// https://arduinojson.org/v7/config/default_nesting_limit/ #ifndef ARDUINOJSON_DEFAULT_NESTING_LIMIT # define ARDUINOJSON_DEFAULT_NESTING_LIMIT 10 #endif -// Number of bits to store the pointer to next node -// (saves RAM but limits the number of values in a document) -#ifndef ARDUINOJSON_SLOT_OFFSET_SIZE -# if defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ <= 2 -// Address space == 16-bit => max 127 values -# define ARDUINOJSON_SLOT_OFFSET_SIZE 1 -# elif defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ >= 8 || \ - defined(_WIN64) && _WIN64 -// Address space == 64-bit => max 2147483647 values -# define ARDUINOJSON_SLOT_OFFSET_SIZE 4 +// Number of bytes to store a slot id +// https://arduinojson.org/v7/config/slot_id_size/ +#ifndef ARDUINOJSON_SLOT_ID_SIZE +# if ARDUINOJSON_SIZEOF_POINTER <= 2 +// 8-bit and 16-bit archs => up to 255 slots +# define ARDUINOJSON_SLOT_ID_SIZE 1 +# elif ARDUINOJSON_SIZEOF_POINTER == 4 +// 32-bit arch => up to 65535 slots +# define ARDUINOJSON_SLOT_ID_SIZE 2 # else -// Address space == 32-bit => max 32767 values -# define ARDUINOJSON_SLOT_OFFSET_SIZE 2 +// 64-bit arch => up to 4294967295 slots +# define ARDUINOJSON_SLOT_ID_SIZE 4 +# endif +#endif + +// Capacity of each variant pool (in slots) +#ifndef ARDUINOJSON_POOL_CAPACITY +# if ARDUINOJSON_SLOT_ID_SIZE == 1 +# define ARDUINOJSON_POOL_CAPACITY 16 // 96 bytes +# elif ARDUINOJSON_SLOT_ID_SIZE == 2 +# define ARDUINOJSON_POOL_CAPACITY 128 // 1024 bytes +# else +# define ARDUINOJSON_POOL_CAPACITY 256 // 4096 bytes +# endif +#endif + +// Initial capacity of the pool list +#ifndef ARDUINOJSON_INITIAL_POOL_COUNT +# define ARDUINOJSON_INITIAL_POOL_COUNT 4 +#endif + +// Automatically call shrinkToFit() from deserializeXxx() +// Disabled by default on 8-bit platforms because it's not worth the increase in +// code size +#ifndef ARDUINOJSON_AUTO_SHRINK +# if ARDUINOJSON_SIZEOF_POINTER <= 2 +# define ARDUINOJSON_AUTO_SHRINK 0 +# else +# define ARDUINOJSON_AUTO_SHRINK 1 +# endif +#endif + +// Number of bytes to store the length of a string +// https://arduinojson.org/v7/config/string_length_size/ +#ifndef ARDUINOJSON_STRING_LENGTH_SIZE +# if ARDUINOJSON_SIZEOF_POINTER <= 2 +# define ARDUINOJSON_STRING_LENGTH_SIZE 1 // up to 255 characters +# else +# define ARDUINOJSON_STRING_LENGTH_SIZE 2 // up to 65535 characters # endif #endif #ifdef ARDUINO // Enable support for Arduino's String class +// https://arduinojson.org/v7/config/enable_arduino_string/ # ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING # define ARDUINOJSON_ENABLE_ARDUINO_STRING 1 # endif // Enable support for Arduino's Stream class +// https://arduinojson.org/v7/config/enable_arduino_stream/ # ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM # define ARDUINOJSON_ENABLE_ARDUINO_STREAM 1 # endif @@ -109,6 +165,7 @@ # endif // Enable support for PROGMEM +// https://arduinojson.org/v7/config/enable_progmem/ # ifndef ARDUINOJSON_ENABLE_PROGMEM # define ARDUINOJSON_ENABLE_PROGMEM 1 # endif @@ -116,11 +173,13 @@ #else // ARDUINO // Disable support for Arduino's String class +// https://arduinojson.org/v7/config/enable_arduino_string/ # ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING # define ARDUINOJSON_ENABLE_ARDUINO_STRING 0 # endif // Disable support for Arduino's Stream class +// https://arduinojson.org/v7/config/enable_arduino_stream/ # ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM # define ARDUINOJSON_ENABLE_ARDUINO_STREAM 0 # endif @@ -131,6 +190,7 @@ # endif // Enable PROGMEM support on AVR only +// https://arduinojson.org/v7/config/enable_progmem/ # ifndef ARDUINOJSON_ENABLE_PROGMEM # ifdef __AVR__ # define ARDUINOJSON_ENABLE_PROGMEM 1 @@ -142,32 +202,38 @@ #endif // ARDUINO // Convert unicode escape sequence (\u0123) to UTF-8 +// https://arduinojson.org/v7/config/decode_unicode/ #ifndef ARDUINOJSON_DECODE_UNICODE # define ARDUINOJSON_DECODE_UNICODE 1 #endif // Ignore comments in input +// https://arduinojson.org/v7/config/enable_comments/ #ifndef ARDUINOJSON_ENABLE_COMMENTS # define ARDUINOJSON_ENABLE_COMMENTS 0 #endif // Support NaN in JSON +// https://arduinojson.org/v7/config/enable_nan/ #ifndef ARDUINOJSON_ENABLE_NAN # define ARDUINOJSON_ENABLE_NAN 0 #endif // Support Infinity in JSON +// https://arduinojson.org/v7/config/enable_infinity/ #ifndef ARDUINOJSON_ENABLE_INFINITY # define ARDUINOJSON_ENABLE_INFINITY 0 #endif // Control the exponentiation threshold for big numbers // CAUTION: cannot be more that 1e9 !!!! +// https://arduinojson.org/v7/config/positive_exponentiation_threshold/ #ifndef ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD # define ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD 1e7 #endif // Control the exponentiation threshold for small numbers +// https://arduinojson.org/v7/config/negative_exponentiation_threshold/ #ifndef ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD # define ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD 1e-5 #endif @@ -195,10 +261,6 @@ # define ARDUINOJSON_TAB " " #endif -#ifndef ARDUINOJSON_ENABLE_STRING_DEDUPLICATION -# define ARDUINOJSON_ENABLE_STRING_DEDUPLICATION 1 -#endif - #ifndef ARDUINOJSON_STRING_BUFFER_SIZE # define ARDUINOJSON_STRING_BUFFER_SIZE 32 #endif @@ -211,6 +273,12 @@ # endif #endif +#if ARDUINOJSON_USE_LONG_LONG || ARDUINOJSON_USE_DOUBLE +# define ARDUINOJSON_USE_EXTENSIONS 1 +#else +# define ARDUINOJSON_USE_EXTENSIONS 0 +#endif + #if defined(nullptr) # error nullptr is defined as a macro. Remove the faulty #define or #undef nullptr // See https://github.com/bblanchon/ArduinoJson/issues/1355 diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp index 1bfc393..7ec685f 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp index 8400cc0..0d31d2f 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp index 3988302..4cd5647 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp @@ -1,17 +1,24 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once -#include +#include +#include ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE namespace DeserializationOption { class Filter { public: - explicit Filter(JsonVariantConst v) : variant_(v) {} +#if ARDUINOJSON_AUTO_SHRINK + explicit Filter(JsonDocument& doc) : variant_(doc) { + doc.shrinkToFit(); + } +#endif + + explicit Filter(JsonVariantConst variant) : variant_(variant) {} bool allow() const { return variant_; diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp index 6434275..fb46102 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp index 4443768..b8e896b 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -11,7 +11,7 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE -// The default reader is a simple wrapper for Readers that are not copiable +// The default reader is a simple wrapper for Readers that are not copyable template struct Reader { public: @@ -19,7 +19,7 @@ struct Reader { int read() { // clang-format off - return source_->read(); // Error here? See https://arduinojson.org/v6/invalid-input/ + return source_->read(); // Error here? See https://arduinojson.org/v7/invalid-input/ // clang-format on } @@ -62,9 +62,8 @@ ARDUINOJSON_END_PRIVATE_NAMESPACE ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE template -Reader::type> makeReader(TInput&& input) { - return Reader::type>{ - detail::forward(input)}; +Reader> makeReader(TInput&& input) { + return Reader>{detail::forward(input)}; } template diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp index 8a87388..afa3696 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -9,13 +9,12 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE template -struct Reader::value>::type> { +struct Reader::value>> { public: explicit Reader(Stream& stream) : stream_(&stream) {} int read() { - // don't use stream_.read() as it ignores the timeout + // don't use stream_->read() as it ignores the timeout char c; return stream_->readBytes(&c, 1) ? static_cast(c) : -1; } diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp index 14491f4..da2f173 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -9,8 +9,7 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE template -struct Reader::value>::type> +struct Reader::value>> : BoundedReader { explicit Reader(const ::String& s) : BoundedReader(s.c_str(), s.length()) {} diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp index 97714af..5b59b0c 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp index c0ca4a7..5fc8ba5 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp @@ -1,9 +1,11 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once +#include + ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE template @@ -29,13 +31,8 @@ class IteratorReader { } }; -template -struct void_ { - typedef void type; -}; - template -struct Reader::type> +struct Reader> : IteratorReader { explicit Reader(const TSource& source) : IteratorReader(source.begin(), diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp index eff67ba..b778a24 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -19,8 +19,7 @@ template struct IsCharOrVoid : IsCharOrVoid {}; template -struct Reader::value>::type> { +struct Reader::value>> { const char* ptr_; public: @@ -39,8 +38,7 @@ struct Reader -struct BoundedReader::value>::type> +struct BoundedReader::value>> : public IteratorReader { public: explicit BoundedReader(const void* ptr, size_t len) diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp index 41e0c00..5e1233b 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -9,8 +9,7 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE template -struct Reader::value>::type> { +struct Reader::value>> { public: explicit Reader(std::istream& stream) : stream_(&stream) {} diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp index b60f1ce..23d7260 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -10,7 +10,7 @@ ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE template -struct Reader::value>::type> +struct Reader::value>> : Reader { explicit Reader(const TVariant& x) : Reader(x.template as()) {} diff --git a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp index 9f4d78e..4c3b229 100644 --- a/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp +++ b/.pio/libdeps/esp32-s3-devkitc-1/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp @@ -1,5 +1,5 @@ // ArduinoJson - https://arduinojson.org -// Copyright © 2014-2023, Benoit BLANCHON +// Copyright © 2014-2025, Benoit BLANCHON // MIT License #pragma once @@ -8,7 +8,6 @@ #include #include #include -#include ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE @@ -23,44 +22,58 @@ struct first_or_void { using type = T; }; -template