From 5f1b6cd8f0f2cfdc6e86c8f73bb79ce26ecc0dd8 Mon Sep 17 00:00:00 2001 From: Zygfryd Homonto <> Date: Sat, 20 Jul 2024 21:58:04 +0100 Subject: [PATCH] public --- 001-homekit_hub/.gitignore | 4 + 001-homekit_hub/CMakeLists.txt | 3 + 001-homekit_hub/README.md | 7 + 001-homekit_hub/changelog.txt | 2 + .../extra_scripts/erase_before_upload.py | 11 + 001-homekit_hub/extra_scripts/output_bins.py | 138 + 001-homekit_hub/include/README | 39 + 001-homekit_hub/lib/ArduinoJson/.piopm | 1 + 001-homekit_hub/lib/ArduinoJson/ArduinoJson.h | 5 + 001-homekit_hub/lib/ArduinoJson/LICENSE.txt | 10 + 001-homekit_hub/lib/ArduinoJson/README.md | 161 + .../JsonConfigFile/JsonConfigFile.ino | 160 + .../JsonFilterExample/JsonFilterExample.ino | 63 + .../JsonGeneratorExample.ino | 77 + .../JsonHttpClient/JsonHttpClient.ino | 126 + .../JsonParserExample/JsonParserExample.ino | 80 + .../examples/JsonServer/JsonServer.ino | 117 + .../examples/JsonUdpBeacon/JsonUdpBeacon.ino | 106 + .../examples/MsgPackParser/MsgPackParser.ino | 75 + .../ProgmemExample/ProgmemExample.ino | 63 + .../examples/StringExample/StringExample.ino | 77 + 001-homekit_hub/lib/ArduinoJson/library.json | 23 + .../lib/ArduinoJson/library.properties | 11 + .../lib/ArduinoJson/src/ArduinoJson.h | 17 + .../lib/ArduinoJson/src/ArduinoJson.hpp | 52 + .../src/ArduinoJson/Array/ElementProxy.hpp | 60 + .../src/ArduinoJson/Array/JsonArray.hpp | 211 + .../src/ArduinoJson/Array/JsonArrayConst.hpp | 135 + .../src/ArduinoJson/Array/JsonArrayImpl.hpp | 36 + .../ArduinoJson/Array/JsonArrayIterator.hpp | 121 + .../src/ArduinoJson/Array/Utilities.hpp | 114 + .../ArduinoJson/Collection/CollectionData.hpp | 95 + .../ArduinoJson/Collection/CollectionImpl.hpp | 197 + .../src/ArduinoJson/Configuration.hpp | 217 + .../Deserialization/DeserializationError.hpp | 106 + .../DeserializationOptions.hpp | 35 + .../ArduinoJson/Deserialization/Filter.hpp | 70 + .../Deserialization/NestingLimit.hpp | 32 + .../ArduinoJson/Deserialization/Reader.hpp | 75 + .../Readers/ArduinoStreamReader.hpp | 31 + .../Readers/ArduinoStringReader.hpp | 19 + .../Deserialization/Readers/FlashReader.hpp | 56 + .../Readers/IteratorReader.hpp | 45 + .../Deserialization/Readers/RamReader.hpp | 51 + .../Readers/StdStreamReader.hpp | 30 + .../Deserialization/Readers/VariantReader.hpp | 19 + .../Deserialization/deserialize.hpp | 66 + .../Document/BasicJsonDocument.hpp | 168 + .../Document/DynamicJsonDocument.hpp | 32 + .../src/ArduinoJson/Document/JsonDocument.hpp | 325 + .../Document/StaticJsonDocument.hpp | 61 + .../src/ArduinoJson/Json/EscapeSequence.hpp | 40 + .../src/ArduinoJson/Json/JsonDeserializer.hpp | 693 + .../src/ArduinoJson/Json/JsonSerializer.hpp | 155 + .../src/ArduinoJson/Json/Latch.hpp | 56 + .../ArduinoJson/Json/PrettyJsonSerializer.hpp | 101 + .../src/ArduinoJson/Json/TextFormatter.hpp | 173 + .../src/ArduinoJson/Json/Utf16.hpp | 67 + .../ArduinoJson/src/ArduinoJson/Json/Utf8.hpp | 46 + .../src/ArduinoJson/Memory/Alignment.hpp | 60 + .../src/ArduinoJson/Memory/MemoryPool.hpp | 253 + .../src/ArduinoJson/Misc/SerializedValue.hpp | 69 + .../MsgPack/MsgPackDeserializer.hpp | 585 + .../ArduinoJson/MsgPack/MsgPackSerializer.hpp | 227 + .../src/ArduinoJson/MsgPack/endianess.hpp | 46 + .../src/ArduinoJson/MsgPack/ieee754.hpp | 18 + .../ArduinoJson/src/ArduinoJson/Namespace.hpp | 42 + .../src/ArduinoJson/Numbers/FloatParts.hpp | 88 + .../src/ArduinoJson/Numbers/FloatTraits.hpp | 212 + .../src/ArduinoJson/Numbers/JsonFloat.hpp | 18 + .../src/ArduinoJson/Numbers/JsonInteger.hpp | 28 + .../ArduinoJson/Numbers/arithmeticCompare.hpp | 120 + .../src/ArduinoJson/Numbers/convertNumber.hpp | 135 + .../src/ArduinoJson/Numbers/parseNumber.hpp | 152 + .../src/ArduinoJson/Object/JsonObject.hpp | 251 + .../ArduinoJson/Object/JsonObjectConst.hpp | 156 + .../src/ArduinoJson/Object/JsonObjectImpl.hpp | 85 + .../ArduinoJson/Object/JsonObjectIterator.hpp | 123 + .../src/ArduinoJson/Object/JsonPair.hpp | 68 + .../src/ArduinoJson/Object/MemberProxy.hpp | 64 + .../src/ArduinoJson/Polyfills/alias_cast.hpp | 30 + .../src/ArduinoJson/Polyfills/assert.hpp | 14 + .../src/ArduinoJson/Polyfills/attributes.hpp | 32 + .../src/ArduinoJson/Polyfills/ctype.hpp | 21 + .../src/ArduinoJson/Polyfills/integer.hpp | 31 + .../src/ArduinoJson/Polyfills/limits.hpp | 45 + .../src/ArduinoJson/Polyfills/math.hpp | 27 + .../src/ArduinoJson/Polyfills/mpl/max.hpp | 27 + .../src/ArduinoJson/Polyfills/pgmspace.hpp | 144 + .../Polyfills/pgmspace_generic.hpp | 67 + .../ArduinoJson/Polyfills/preprocessor.hpp | 29 + .../src/ArduinoJson/Polyfills/type_traits.hpp | 25 + .../Polyfills/type_traits/conditional.hpp | 21 + .../Polyfills/type_traits/declval.hpp | 14 + .../Polyfills/type_traits/enable_if.hpp | 20 + .../type_traits/integral_constant.hpp | 19 + .../Polyfills/type_traits/is_array.hpp | 22 + .../Polyfills/type_traits/is_base_of.hpp | 27 + .../Polyfills/type_traits/is_class.hpp | 23 + .../Polyfills/type_traits/is_const.hpp | 18 + .../Polyfills/type_traits/is_convertible.hpp | 46 + .../Polyfills/type_traits/is_enum.hpp | 22 + .../type_traits/is_floating_point.hpp | 20 + .../Polyfills/type_traits/is_integral.hpp | 32 + .../Polyfills/type_traits/is_pointer.hpp | 17 + .../Polyfills/type_traits/is_same.hpp | 18 + .../Polyfills/type_traits/is_signed.hpp | 26 + .../Polyfills/type_traits/is_unsigned.hpp | 24 + .../Polyfills/type_traits/make_unsigned.hpp | 41 + .../Polyfills/type_traits/make_void.hpp | 14 + .../Polyfills/type_traits/remove_const.hpp | 21 + .../Polyfills/type_traits/remove_cv.hpp | 28 + .../type_traits/remove_reference.hpp | 21 + .../Polyfills/type_traits/type_identity.hpp | 16 + .../src/ArduinoJson/Polyfills/utility.hpp | 16 + .../Serialization/CountingDecorator.hpp | 33 + .../src/ArduinoJson/Serialization/Writer.hpp | 47 + .../Writers/ArduinoStringWriter.hpp | 53 + .../Serialization/Writers/DummyWriter.hpp | 22 + .../Serialization/Writers/PrintWriter.hpp | 30 + .../Writers/StaticStringWriter.hpp | 36 + .../Serialization/Writers/StdStreamWriter.hpp | 33 + .../Serialization/Writers/StdStringWriter.hpp | 43 + .../src/ArduinoJson/Serialization/measure.hpp | 19 + .../ArduinoJson/Serialization/serialize.hpp | 51 + .../StringStorage/StringCopier.hpp | 72 + .../ArduinoJson/StringStorage/StringMover.hpp | 48 + .../StringStorage/StringStorage.hpp | 24 + .../Strings/Adapters/FlashString.hpp | 89 + .../Strings/Adapters/JsonString.hpp | 36 + .../Strings/Adapters/RamString.hpp | 144 + .../Strings/Adapters/StringObject.hpp | 51 + .../src/ArduinoJson/Strings/IsString.hpp | 20 + .../src/ArduinoJson/Strings/JsonString.hpp | 84 + .../src/ArduinoJson/Strings/StoragePolicy.hpp | 18 + .../src/ArduinoJson/Strings/StringAdapter.hpp | 31 + .../ArduinoJson/Strings/StringAdapters.hpp | 77 + .../src/ArduinoJson/Strings/StringTraits.hpp | 79 + .../src/ArduinoJson/Variant/Converter.hpp | 26 + .../src/ArduinoJson/Variant/ConverterImpl.hpp | 332 + .../src/ArduinoJson/Variant/JsonVariant.hpp | 81 + .../ArduinoJson/Variant/JsonVariantConst.hpp | 144 + .../src/ArduinoJson/Variant/SlotFunctions.hpp | 45 + .../ArduinoJson/Variant/VariantAttorney.hpp | 48 + .../ArduinoJson/Variant/VariantCompare.hpp | 207 + .../ArduinoJson/Variant/VariantContent.hpp | 58 + .../src/ArduinoJson/Variant/VariantData.hpp | 322 + .../ArduinoJson/Variant/VariantFunctions.hpp | 113 + .../src/ArduinoJson/Variant/VariantImpl.hpp | 183 + .../ArduinoJson/Variant/VariantOperators.hpp | 195 + .../ArduinoJson/Variant/VariantRefBase.hpp | 287 + .../src/ArduinoJson/Variant/VariantSlot.hpp | 112 + .../src/ArduinoJson/Variant/VariantTag.hpp | 16 + .../src/ArduinoJson/Variant/VariantTo.hpp | 34 + .../src/ArduinoJson/Variant/Visitor.hpp | 54 + .../src/ArduinoJson/compatibility.hpp | 25 + .../ArduinoJson/src/ArduinoJson/version.hpp | 11 + .../lib/ArduinoJson/src/CMakeLists.txt | 91 + .../lib/AsyncElegantOTA/.gitattributes | 2 + .../.github/ISSUE_TEMPLATE/bug-report.md | 34 + .../.github/scripts/dep-install.sh | 5 + .../AsyncElegantOTA/.github/workflows/ci.yml | 44 + .../lib/AsyncElegantOTA/.gitignore | 60 + 001-homekit_hub/lib/AsyncElegantOTA/.piopm | 1 + 001-homekit_hub/lib/AsyncElegantOTA/LICENSE | 21 + 001-homekit_hub/lib/AsyncElegantOTA/README.md | 9 + .../examples/Async_Demo/Async_Demo.ino | 54 + .../lib/AsyncElegantOTA/keywords.txt | 2 + .../lib/AsyncElegantOTA/library.properties | 9 + .../lib/AsyncElegantOTA/platformio_upload.py | 53 + .../AsyncElegantOTA/src/AsyncElegantOTA.cpp | 129 + .../lib/AsyncElegantOTA/src/AsyncElegantOTA.h | 52 + .../lib/AsyncElegantOTA/src/Hash.h | 38 + .../lib/AsyncElegantOTA/src/elegantWebpage.h | 1799 ++ .../lib/AsyncElegantOTA/ui/README.md | 1 + .../scripts/install-arduino-core-esp32.sh | 36 + .../.github/scripts/install-arduino-ide.sh | 220 + .../.github/scripts/install-platformio.sh | 133 + .../.github/scripts/on-push.sh | 64 + .../AsyncTCP-esphome@2.0.0/.github/stale.yml | 31 + .../.github/workflows/push.yml | 32 + .../lib/AsyncTCP-esphome@2.0.0/.gitignore | 2 + .../lib/AsyncTCP-esphome@2.0.0/.piopm | 1 + .../lib/AsyncTCP-esphome@2.0.0/.travis.yml | 34 + .../lib/AsyncTCP-esphome@2.0.0/CMakeLists.txt | 15 + .../AsyncTCP-esphome@2.0.0/Kconfig.projbuild | 30 + .../lib/AsyncTCP-esphome@2.0.0/LICENSE | 165 + .../lib/AsyncTCP-esphome@2.0.0/README.md | 15 + .../lib/AsyncTCP-esphome@2.0.0/component.mk | 3 + .../lib/AsyncTCP-esphome@2.0.0/library.json | 20 + .../AsyncTCP-esphome@2.0.0/src/AsyncTCP.cpp | 1404 ++ .../lib/AsyncTCP-esphome@2.0.0/src/AsyncTCP.h | 231 + .../.github/ISSUE_TEMPLATE/bug_report.md | 35 + .../.github/ISSUE_TEMPLATE/feature_request.md | 28 + .../.github/pull_request_template.md | 15 + .../.github/workflows/platformio.yml | 33 + .../lib/ESP8266 Influxdb/.gitignore | 5 + 001-homekit_hub/lib/ESP8266 Influxdb/.piopm | 1 + .../lib/ESP8266 Influxdb/CHANGELOG.md | 164 + 001-homekit_hub/lib/ESP8266 Influxdb/LICENSE | 21 + .../lib/ESP8266 Influxdb/README.md | 697 + .../examples/BasicWrite/BasicWrite.ino | 98 + .../examples/Buckets/Buckets.ino | 136 + .../QueryAggregated/QueryAggregated.ino | 163 + .../examples/QueryParams/QueryParams.ino | 154 + .../examples/QueryTable/QueryTable.ino | 148 + .../SecureBatchWrite/SecureBatchWrite.ino | 167 + .../examples/SecureWrite/SecureWrite.ino | 113 + .../lib/ESP8266 Influxdb/library.properties | 10 + .../lib/ESP8266 Influxdb/platformio.ini | 52 + .../ESP8266 Influxdb/src/BucketsClient.cpp | 244 + .../lib/ESP8266 Influxdb/src/BucketsClient.h | 122 + .../lib/ESP8266 Influxdb/src/HTTPService.cpp | 219 + .../lib/ESP8266 Influxdb/src/HTTPService.h | 134 + .../lib/ESP8266 Influxdb/src/InfluxData.cpp | 39 + .../lib/ESP8266 Influxdb/src/InfluxData.h | 37 + .../lib/ESP8266 Influxdb/src/InfluxDb.cpp | 157 + .../lib/ESP8266 Influxdb/src/InfluxDb.h | 59 + .../ESP8266 Influxdb/src/InfluxDbClient.cpp | 785 + .../lib/ESP8266 Influxdb/src/InfluxDbClient.h | 273 + .../lib/ESP8266 Influxdb/src/InfluxDbCloud.h | 68 + .../lib/ESP8266 Influxdb/src/Options.cpp | 56 + .../lib/ESP8266 Influxdb/src/Options.h | 134 + .../lib/ESP8266 Influxdb/src/Platform.h | 20 + .../lib/ESP8266 Influxdb/src/Point.cpp | 221 + .../lib/ESP8266 Influxdb/src/Point.h | 105 + .../lib/ESP8266 Influxdb/src/Version.h | 32 + .../lib/ESP8266 Influxdb/src/WritePrecision.h | 43 + .../ESP8266 Influxdb/src/query/CsvReader.cpp | 108 + .../ESP8266 Influxdb/src/query/CsvReader.h | 51 + .../ESP8266 Influxdb/src/query/FluxParser.cpp | 275 + .../ESP8266 Influxdb/src/query/FluxParser.h | 109 + .../ESP8266 Influxdb/src/query/FluxTypes.cpp | 239 + .../ESP8266 Influxdb/src/query/FluxTypes.h | 178 + .../src/query/HttpStreamScanner.cpp | 104 + .../src/query/HttpStreamScanner.h | 64 + .../lib/ESP8266 Influxdb/src/query/Params.cpp | 151 + .../lib/ESP8266 Influxdb/src/query/Params.h | 95 + .../lib/ESP8266 Influxdb/src/util/debug.h | 41 + .../lib/ESP8266 Influxdb/src/util/helpers.cpp | 188 + .../lib/ESP8266 Influxdb/src/util/helpers.h | 63 + .../scripts/install-arduino-core-esp8266.sh | 29 + .../.github/scripts/install-arduino-ide.sh | 220 + .../.github/scripts/install-platformio.sh | 133 + .../.github/scripts/on-push.sh | 64 + .../lib/ESPAsyncTCP-esphome/.github/stale.yml | 31 + .../.github/workflows/push.yml | 21 + .../lib/ESPAsyncTCP-esphome/.gitignore | 2 + .../lib/ESPAsyncTCP-esphome/.piopm | 1 + .../lib/ESPAsyncTCP-esphome/.travis.yml | 34 + .../lib/ESPAsyncTCP-esphome/LICENSE.txt | 165 + .../lib/ESPAsyncTCP-esphome/README.md | 34 + .../examples/ClientServer/Client/Client.ino | 62 + .../examples/ClientServer/Client/config.h | 23 + .../examples/ClientServer/Server/Server.ino | 73 + .../examples/ClientServer/Server/config.h | 23 + .../examples/SyncClient/.esp31b.skip | 0 .../examples/SyncClient/SyncClient.ino | 54 + .../lib/ESPAsyncTCP-esphome/library.json | 22 + .../ESPAsyncTCP-esphome/src/AsyncPrinter.cpp | 214 + .../ESPAsyncTCP-esphome/src/AsyncPrinter.h | 73 + .../src/DebugPrintMacros.h | 112 + .../ESPAsyncTCP-esphome/src/ESPAsyncTCP.cpp | 1413 ++ .../lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.h | 326 + .../src/ESPAsyncTCPbuffer.cpp | 555 + .../src/ESPAsyncTCPbuffer.h | 118 + .../ESPAsyncTCP-esphome/src/SyncClient.cpp | 414 + .../lib/ESPAsyncTCP-esphome/src/SyncClient.h | 109 + .../ESPAsyncTCP-esphome/src/async_config.h | 42 + .../lib/ESPAsyncTCP-esphome/src/tcp_axtls.c | 613 + .../lib/ESPAsyncTCP-esphome/src/tcp_axtls.h | 98 + .../ssl/gen_server_cert.sh | 36 + .../lib/ESPAsyncTCP-esphome/ssl/server.cer | Bin 0 -> 587 bytes .../lib/ESPAsyncTCP-esphome/ssl/server.key | Bin 0 -> 611 bytes .../scripts/install-arduino-core-esp32.sh | 36 + .../scripts/install-arduino-core-esp8266.sh | 29 + .../.github/scripts/install-arduino-ide.sh | 228 + .../.github/scripts/install-platformio.sh | 140 + .../.github/scripts/on-push.sh | 71 + .../.github/stale.yml | 31 + .../.github/workflows/push.yml | 34 + .../lib/ESPAsyncWebServer-esphome/.gitignore | 4 + .../lib/ESPAsyncWebServer-esphome/.piopm | 1 + .../lib/ESPAsyncWebServer-esphome/.travis.yml | 46 + .../ESPAsyncWebServer-esphome/CMakeLists.txt | 17 + .../lib/ESPAsyncWebServer-esphome/README.md | 1418 ++ .../lib/ESPAsyncWebServer-esphome/_config.yml | 1 + .../ESPAsyncWebServer-esphome/component.mk | 3 + .../examples/CaptivePortal/CaptivePortal.ino | 47 + .../examples/regex_patterns/.test.build_flags | 1 + .../regex_patterns/regex_patterns.ino | 77 + .../examples/simple_server/simple_server.ino | 74 + .../ESPAsyncWebServer-esphome/keywords.txt | 3 + .../ESPAsyncWebServer-esphome/library.json | 39 + .../src/AsyncEventSource.cpp | 369 + .../src/AsyncEventSource.h | 137 + .../ESPAsyncWebServer-esphome/src/AsyncJson.h | 254 + .../src/AsyncWebSocket.cpp | 1291 ++ .../src/AsyncWebSocket.h | 350 + .../src/AsyncWebSynchronization.h | 87 + .../src/ESPAsyncWebServer.h | 471 + .../src/StringArray.h | 202 + .../src/WebAuthentication.cpp | 235 + .../src/WebAuthentication.h | 34 + .../src/WebHandlerImpl.h | 151 + .../src/WebHandlers.cpp | 220 + .../src/WebRequest.cpp | 1008 + .../src/WebResponseImpl.h | 136 + .../src/WebResponses.cpp | 699 + .../src/WebServer.cpp | 193 + .../lib/HomeSpan-release-1.8.1-dev/LICENSE | 21 + .../lib/HomeSpan-release-1.8.1-dev/README.md | 144 + .../01-SimpleLightBulb/01-SimpleLightBulb.ino | 128 + .../02-TwoSimpleLightBulbs.ino | 93 + .../03-CeilingFanWithLight.ino | 107 + .../04-AdvancedCeilingFan.ino | 100 + .../examples/05-WorkingLED/05-WorkingLED.ino | 112 + .../examples/05-WorkingLED/DEV_LED.h | 100 + .../06-DimmableLED/06-DimmableLED.ino | 86 + .../examples/06-DimmableLED/DEV_LED.h | 69 + .../07-AccessoryNames/07-AccessoryNames.ino | 96 + .../examples/07-AccessoryNames/DEV_LED.h | 69 + .../examples/08-Bridges/08-Bridges.ino | 94 + .../examples/08-Bridges/DEV_LED.h | 58 + .../09-MessageLogging/09-MessageLogging.ino | 107 + .../examples/09-MessageLogging/DEV_LED.h | 109 + .../examples/10-RGB_LED/10-RGB_LED.ino | 83 + .../examples/10-RGB_LED/DEV_LED.h | 194 + .../11-ServiceNames/11-ServiceNames.ino | 171 + .../12-ServiceLoops/12-ServiceLoops.ino | 118 + .../examples/12-ServiceLoops/DEV_Sensors.h | 117 + .../13-TargetStates/13-TargetStates.ino | 104 + .../13-TargetStates/DEV_DoorsWindows.h | 126 + .../14-EmulatedPushButtons.ino | 103 + .../14-EmulatedPushButtons/DEV_Blinker.h | 96 + .../15-RealPushButtons/15-RealPushButtons.ino | 267 + .../examples/15-RealPushButtons/DEV_LED.h | 168 + .../16-ProgrammableSwitches.ino | 92 + .../16-ProgrammableSwitches/DEV_ProgButton.h | 45 + .../17-LinkedServices/17-LinkedServices.ino | 170 + .../18-SavingStatus/18-SavingStatus.ino | 117 + .../examples/18-SavingStatus/DEV_LED.h | 75 + .../examples/19-WebLog/19-WebLog.ino | 89 + .../examples/19-WebLog/DEV_LED.h | 50 + .../20-AdvancedTechniques.ino | 251 + .../CustomService/CustomService.ino | 110 + .../Other Examples/FadingLED/FadingLED.ino | 113 + .../MaxAccessories/MaxAccessories.ino | 104 + .../MaxAccessories/partitions.csv | 14 + .../MotorizedWindowShade.ino | 143 + .../examples/Other Examples/Pixel/Pixel.ino | 204 + .../ProgrammableHub/ProgrammableHub.ino | 388 + .../RemoteControl/RemoteControl.ino | 73 + .../RemoteSensors/MainDevice/MainDevice.ino | 121 + .../RemoteDevice/RemoteDevice.ino | 79 + .../RemoteDevice8286/RemoteDevice8286.ino | 129 + .../RemoteTempSensor/RemoteTempSensor.ino | 109 + .../ServoControl/DEV_DoorsWindows.h | 68 + .../ServoControl/ServoControl.ino | 60 + .../Other Examples/TableLamp/TableLamp.ino | 72 + .../Other Examples/Television/Television.ino | 216 + .../library.properties | 9 + .../src/Characteristics.h | 201 + .../src/FeatherPins.h | 72 + .../HomeSpan-release-1.8.1-dev/src/HAP.cpp | 1755 ++ .../lib/HomeSpan-release-1.8.1-dev/src/HAP.h | 163 + .../src/HAPConstants.h | 89 + .../HomeSpan-release-1.8.1-dev/src/HKDF.cpp | 217 + .../lib/HomeSpan-release-1.8.1-dev/src/HKDF.h | 43 + .../HomeSpan-release-1.8.1-dev/src/HapQR.h | 59 + .../src/HomeSpan.cpp | 2562 +++ .../HomeSpan-release-1.8.1-dev/src/HomeSpan.h | 967 + .../src/Network.cpp | 419 + .../HomeSpan-release-1.8.1-dev/src/Network.h | 69 + .../HomeSpan-release-1.8.1-dev/src/SRP.cpp | 283 + .../lib/HomeSpan-release-1.8.1-dev/src/SRP.h | 92 + .../HomeSpan-release-1.8.1-dev/src/Settings.h | 148 + .../lib/HomeSpan-release-1.8.1-dev/src/Span.h | 582 + .../lib/HomeSpan-release-1.8.1-dev/src/TLV.h | 335 + .../HomeSpan-release-1.8.1-dev/src/Utils.cpp | 281 + .../HomeSpan-release-1.8.1-dev/src/Utils.h | 229 + .../src/data_structure.h | 1 + .../src/extras/Blinker.h | 30 + .../src/extras/Pixel.h | 30 + .../src/extras/PwmPin.h | 30 + .../src/extras/RFControl.h | 30 + .../src/extras/StepperControl.h | 30 + .../src/extras/Stepper_A3967.h | 30 + .../src/extras/Stepper_TB6612.h | 30 + .../src/src/extras/Blinker.cpp | 149 + .../src/src/extras/Blinker.h | 137 + .../src/src/extras/Pixel.cpp | 200 + .../src/src/extras/Pixel.h | 261 + .../src/src/extras/PwmPin.cpp | 270 + .../src/src/extras/PwmPin.h | 121 + .../src/src/extras/RFControl.cpp | 164 + .../src/src/extras/RFControl.h | 78 + .../src/src/extras/StepperControl.cpp | 205 + .../src/src/extras/StepperControl.h | 105 + .../src/src/extras/Stepper_A3967.h | 120 + .../src/src/extras/Stepper_TB6612.h | 182 + .../src/src/extras/extras.ino | 73 + 001-homekit_hub/lib/HttpClient/.piopm | 1 + 001-homekit_hub/lib/HttpClient/HttpClient.cpp | 565 + 001-homekit_hub/lib/HttpClient/HttpClient.h | 449 + 001-homekit_hub/lib/HttpClient/README.md | 23 + 001-homekit_hub/lib/HttpClient/b64.cpp | 70 + 001-homekit_hub/lib/HttpClient/b64.h | 6 + .../SimpleHttpExample/SimpleHttpExample.ino | 119 + 001-homekit_hub/lib/HttpClient/keywords.txt | 39 + .../lib/HttpClient/library.properties | 9 + 001-homekit_hub/lib/PubSubClient/.gitignore | 5 + 001-homekit_hub/lib/PubSubClient/.piopm | 1 + 001-homekit_hub/lib/PubSubClient/.travis.yml | 7 + 001-homekit_hub/lib/PubSubClient/CHANGES.txt | 85 + 001-homekit_hub/lib/PubSubClient/LICENSE.txt | 20 + 001-homekit_hub/lib/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 + 001-homekit_hub/lib/PubSubClient/keywords.txt | 36 + 001-homekit_hub/lib/PubSubClient/library.json | 18 + .../lib/PubSubClient/library.properties | 9 + .../lib/PubSubClient/src/PubSubClient.cpp | 769 + .../lib/PubSubClient/src/PubSubClient.h | 184 + 001-homekit_hub/lib/README | 46 + .../.gitattributes | 2 + .../.piopm | 1 + .../LICENSE | 21 + .../README.md | 38 + .../Example1_Simple/Example1_Simple.ino | 88 + .../Example2_AlternatePorts.ino | 92 + .../Example3_MAX17044/Example3_MAX17044.ino | 87 + .../Example4_MAX17048_KitchenSink.ino | 181 + .../keywords.txt | 65 + .../library.properties | 9 + ...un_MAX1704x_Fuel_Gauge_Arduino_Library.cpp | 958 + ...kFun_MAX1704x_Fuel_Gauge_Arduino_Library.h | 403 + 001-homekit_hub/lib/TFT_eSPI/.gitattributes | 17 + .../.github/ISSUE_TEMPLATE/issue-template.md | 36 + 001-homekit_hub/lib/TFT_eSPI/.gitignore | 52 + 001-homekit_hub/lib/TFT_eSPI/.piopm | 1 + 001-homekit_hub/lib/TFT_eSPI/CMakeLists.txt | 4 + .../lib/TFT_eSPI/Extensions/Button.cpp | 107 + .../lib/TFT_eSPI/Extensions/Button.h | 44 + .../lib/TFT_eSPI/Extensions/Smooth_font.cpp | 582 + .../lib/TFT_eSPI/Extensions/Smooth_font.h | 61 + .../lib/TFT_eSPI/Extensions/Sprite.cpp | 2698 +++ .../lib/TFT_eSPI/Extensions/Sprite.h | 188 + .../lib/TFT_eSPI/Extensions/Touch.cpp | 349 + .../lib/TFT_eSPI/Extensions/Touch.h | 42 + .../TFT_eSPI/Fonts/Custom/Orbitron_Light_24.h | 199 + .../TFT_eSPI/Fonts/Custom/Orbitron_Light_32.h | 199 + .../TFT_eSPI/Fonts/Custom/Roboto_Thin_24.h | 199 + .../lib/TFT_eSPI/Fonts/Custom/Satisfy_24.h | 199 + .../lib/TFT_eSPI/Fonts/Custom/Yellowtail_32.h | 199 + 001-homekit_hub/lib/TFT_eSPI/Fonts/Font16.c | 632 + 001-homekit_hub/lib/TFT_eSPI/Fonts/Font16.h | 10 + .../lib/TFT_eSPI/Fonts/Font32rle.c | 1065 + .../lib/TFT_eSPI/Fonts/Font32rle.h | 10 + .../lib/TFT_eSPI/Fonts/Font64rle.c | 299 + .../lib/TFT_eSPI/Fonts/Font64rle.h | 10 + .../lib/TFT_eSPI/Fonts/Font72rle.c | 369 + .../lib/TFT_eSPI/Fonts/Font72rle.h | 10 + .../lib/TFT_eSPI/Fonts/Font72x53rle.c | 245 + .../lib/TFT_eSPI/Fonts/Font72x53rle.h | 10 + .../lib/TFT_eSPI/Fonts/Font7srle.c | 266 + .../lib/TFT_eSPI/Fonts/Font7srle.h | 10 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeMono12pt7b.h | 227 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeMono18pt7b.h | 363 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeMono24pt7b.h | 577 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeMono9pt7b.h | 176 + .../TFT_eSPI/Fonts/GFXFF/FreeMonoBold12pt7b.h | 250 + .../TFT_eSPI/Fonts/GFXFF/FreeMonoBold18pt7b.h | 423 + .../TFT_eSPI/Fonts/GFXFF/FreeMonoBold24pt7b.h | 672 + .../TFT_eSPI/Fonts/GFXFF/FreeMonoBold9pt7b.h | 189 + .../Fonts/GFXFF/FreeMonoBoldOblique12pt7b.h | 269 + .../Fonts/GFXFF/FreeMonoBoldOblique18pt7b.h | 460 + .../Fonts/GFXFF/FreeMonoBoldOblique24pt7b.h | 742 + .../Fonts/GFXFF/FreeMonoBoldOblique9pt7b.h | 203 + .../Fonts/GFXFF/FreeMonoOblique12pt7b.h | 248 + .../Fonts/GFXFF/FreeMonoOblique18pt7b.h | 398 + .../Fonts/GFXFF/FreeMonoOblique24pt7b.h | 643 + .../Fonts/GFXFF/FreeMonoOblique9pt7b.h | 187 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeSans12pt7b.h | 270 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeSans18pt7b.h | 452 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeSans24pt7b.h | 727 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeSans9pt7b.h | 201 + .../TFT_eSPI/Fonts/GFXFF/FreeSansBold12pt7b.h | 288 + .../TFT_eSPI/Fonts/GFXFF/FreeSansBold18pt7b.h | 481 + .../TFT_eSPI/Fonts/GFXFF/FreeSansBold24pt7b.h | 784 + .../TFT_eSPI/Fonts/GFXFF/FreeSansBold9pt7b.h | 208 + .../Fonts/GFXFF/FreeSansBoldOblique12pt7b.h | 317 + .../Fonts/GFXFF/FreeSansBoldOblique18pt7b.h | 545 + .../Fonts/GFXFF/FreeSansBoldOblique24pt7b.h | 893 + .../Fonts/GFXFF/FreeSansBoldOblique9pt7b.h | 227 + .../Fonts/GFXFF/FreeSansOblique12pt7b.h | 302 + .../Fonts/GFXFF/FreeSansOblique18pt7b.h | 518 + .../Fonts/GFXFF/FreeSansOblique24pt7b.h | 840 + .../Fonts/GFXFF/FreeSansOblique9pt7b.h | 220 + .../TFT_eSPI/Fonts/GFXFF/FreeSerif12pt7b.h | 259 + .../TFT_eSPI/Fonts/GFXFF/FreeSerif18pt7b.h | 429 + .../TFT_eSPI/Fonts/GFXFF/FreeSerif24pt7b.h | 690 + .../lib/TFT_eSPI/Fonts/GFXFF/FreeSerif9pt7b.h | 195 + .../Fonts/GFXFF/FreeSerifBold12pt7b.h | 271 + .../Fonts/GFXFF/FreeSerifBold18pt7b.h | 462 + .../Fonts/GFXFF/FreeSerifBold24pt7b.h | 759 + .../TFT_eSPI/Fonts/GFXFF/FreeSerifBold9pt7b.h | 202 + .../Fonts/GFXFF/FreeSerifBoldItalic12pt7b.h | 292 + .../Fonts/GFXFF/FreeSerifBoldItalic18pt7b.h | 500 + .../Fonts/GFXFF/FreeSerifBoldItalic24pt7b.h | 793 + .../Fonts/GFXFF/FreeSerifBoldItalic9pt7b.h | 215 + .../Fonts/GFXFF/FreeSerifItalic12pt7b.h | 271 + .../Fonts/GFXFF/FreeSerifItalic18pt7b.h | 450 + .../Fonts/GFXFF/FreeSerifItalic24pt7b.h | 737 + .../Fonts/GFXFF/FreeSerifItalic9pt7b.h | 202 + .../lib/TFT_eSPI/Fonts/GFXFF/TomThumb.h | 474 + .../lib/TFT_eSPI/Fonts/GFXFF/gfxfont.h | 95 + .../lib/TFT_eSPI/Fonts/GFXFF/license.txt | 34 + .../lib/TFT_eSPI/Fonts/GFXFF/print.txt | 61 + .../Fonts/TrueType/Not_yet_supported.txt | 1 + 001-homekit_hub/lib/TFT_eSPI/Fonts/glcdfont.c | 267 + 001-homekit_hub/lib/TFT_eSPI/Kconfig | 407 + .../lib/TFT_eSPI/Processors/TFT_eSPI_ESP32.c | 854 + .../lib/TFT_eSPI/Processors/TFT_eSPI_ESP32.h | 591 + .../TFT_eSPI/Processors/TFT_eSPI_ESP32_C3.c | 861 + .../TFT_eSPI/Processors/TFT_eSPI_ESP32_C3.h | 598 + .../TFT_eSPI/Processors/TFT_eSPI_ESP32_S3.c | 898 + .../TFT_eSPI/Processors/TFT_eSPI_ESP32_S3.h | 612 + .../TFT_eSPI/Processors/TFT_eSPI_ESP8266.c | 447 + .../TFT_eSPI/Processors/TFT_eSPI_ESP8266.h | 245 + .../TFT_eSPI/Processors/TFT_eSPI_Generic.c | 263 + .../TFT_eSPI/Processors/TFT_eSPI_Generic.h | 188 + .../lib/TFT_eSPI/Processors/TFT_eSPI_RP2040.c | 718 + .../lib/TFT_eSPI/Processors/TFT_eSPI_RP2040.h | 499 + .../lib/TFT_eSPI/Processors/TFT_eSPI_STM32.c | 696 + .../lib/TFT_eSPI/Processors/TFT_eSPI_STM32.h | 1079 + .../Processors/pio_16bit_parallel.pio.h | 62 + .../Processors/pio_8bit_parallel.pio.h | 70 + .../Processors/pio_8bit_parallel_18bpp.pio.h | 73 + .../lib/TFT_eSPI/Processors/pio_SPI.pio.h | 74 + .../TFT_eSPI/Processors/pio_SPI_18bit.pio.h | 74 + 001-homekit_hub/lib/TFT_eSPI/README.md | 227 + 001-homekit_hub/lib/TFT_eSPI/README.txt | 7 + .../lib/TFT_eSPI/TFT_Drivers/EPD_Defines.h | 27 + .../lib/TFT_eSPI/TFT_Drivers/GC9A01_Defines.h | 40 + .../lib/TFT_eSPI/TFT_Drivers/GC9A01_Init.h | 232 + .../TFT_eSPI/TFT_Drivers/GC9A01_Rotation.h | 56 + .../TFT_eSPI/TFT_Drivers/HX8357B_Defines.h | 52 + .../lib/TFT_eSPI/TFT_Drivers/HX8357B_Init.h | 76 + .../TFT_eSPI/TFT_Drivers/HX8357B_Rotation.h | 47 + .../TFT_eSPI/TFT_Drivers/HX8357C_Defines.h | 52 + .../lib/TFT_eSPI/TFT_Drivers/HX8357C_Init.h | 116 + .../TFT_eSPI/TFT_Drivers/HX8357C_Rotation.h | 47 + .../TFT_eSPI/TFT_Drivers/HX8357D_Defines.h | 96 + .../lib/TFT_eSPI/TFT_Drivers/HX8357D_Init.h | 118 + .../TFT_eSPI/TFT_Drivers/HX8357D_Rotation.h | 26 + .../TFT_eSPI/TFT_Drivers/ILI9163_Defines.h | 65 + .../lib/TFT_eSPI/TFT_Drivers/ILI9163_Init.h | 41 + .../TFT_eSPI/TFT_Drivers/ILI9163_Rotation.h | 44 + .../TFT_eSPI/TFT_Drivers/ILI9225_Defines.h | 84 + .../lib/TFT_eSPI/TFT_Drivers/ILI9225_Init.h | 105 + .../TFT_eSPI/TFT_Drivers/ILI9225_Rotation.h | 39 + .../TFT_eSPI/TFT_Drivers/ILI9341_Defines.h | 143 + .../lib/TFT_eSPI/TFT_Drivers/ILI9341_Init.h | 248 + .../TFT_eSPI/TFT_Drivers/ILI9341_Rotation.h | 82 + .../TFT_eSPI/TFT_Drivers/ILI9481_Defines.h | 42 + .../lib/TFT_eSPI/TFT_Drivers/ILI9481_Init.h | 736 + .../TFT_eSPI/TFT_Drivers/ILI9481_Rotation.h | 27 + .../TFT_eSPI/TFT_Drivers/ILI9486_Defines.h | 64 + .../lib/TFT_eSPI/TFT_Drivers/ILI9486_Init.h | 84 + .../TFT_eSPI/TFT_Drivers/ILI9486_Rotation.h | 47 + .../TFT_eSPI/TFT_Drivers/ILI9488_Defines.h | 42 + .../lib/TFT_eSPI/TFT_Drivers/ILI9488_Init.h | 99 + .../TFT_eSPI/TFT_Drivers/ILI9488_Rotation.h | 27 + .../lib/TFT_eSPI/TFT_Drivers/R61581_Defines.h | 42 + .../lib/TFT_eSPI/TFT_Drivers/R61581_Init.h | 80 + .../TFT_eSPI/TFT_Drivers/R61581_Rotation.h | 27 + .../TFT_eSPI/TFT_Drivers/RM68120_Defines.h | 52 + .../lib/TFT_eSPI/TFT_Drivers/RM68120_Init.h | 269 + .../TFT_eSPI/TFT_Drivers/RM68120_Rotation.h | 29 + .../TFT_eSPI/TFT_Drivers/RM68140_Defines.h | 42 + .../lib/TFT_eSPI/TFT_Drivers/RM68140_Init.h | 77 + .../TFT_eSPI/TFT_Drivers/RM68140_Rotation.h | 44 + .../TFT_eSPI/TFT_Drivers/S6D02A1_Defines.h | 58 + .../lib/TFT_eSPI/TFT_Drivers/S6D02A1_Init.h | 47 + .../TFT_eSPI/TFT_Drivers/S6D02A1_Rotation.h | 28 + .../TFT_eSPI/TFT_Drivers/SSD1351_Defines.h | 20 + .../lib/TFT_eSPI/TFT_Drivers/SSD1351_Init.h | 35 + .../TFT_eSPI/TFT_Drivers/SSD1351_Rotation.h | 34 + .../TFT_eSPI/TFT_Drivers/SSD1963_Defines.h | 59 + .../lib/TFT_eSPI/TFT_Drivers/SSD1963_Init.h | 398 + .../TFT_eSPI/TFT_Drivers/SSD1963_Rotation.h | 29 + .../lib/TFT_eSPI/TFT_Drivers/ST7735_Defines.h | 179 + .../lib/TFT_eSPI/TFT_Drivers/ST7735_Init.h | 218 + .../TFT_eSPI/TFT_Drivers/ST7735_Rotation.h | 132 + .../TFT_eSPI/TFT_Drivers/ST7789_2_Defines.h | 178 + .../lib/TFT_eSPI/TFT_Drivers/ST7789_2_Init.h | 22 + .../TFT_eSPI/TFT_Drivers/ST7789_2_Rotation.h | 140 + .../lib/TFT_eSPI/TFT_Drivers/ST7789_Defines.h | 175 + .../lib/TFT_eSPI/TFT_Drivers/ST7789_Init.h | 238 + .../TFT_eSPI/TFT_Drivers/ST7789_Rotation.h | 140 + .../lib/TFT_eSPI/TFT_Drivers/ST7796_Defines.h | 107 + .../lib/TFT_eSPI/TFT_Drivers/ST7796_Init.h | 107 + .../TFT_eSPI/TFT_Drivers/ST7796_Rotation.h | 78 + 001-homekit_hub/lib/TFT_eSPI/TFT_config.h | 320 + 001-homekit_hub/lib/TFT_eSPI/TFT_eSPI.cpp | 6152 ++++++ 001-homekit_hub/lib/TFT_eSPI/TFT_eSPI.h | 1011 + .../Create_font/Create_font.pde | 570 + .../Create_font/FontFiles/Final-Frontier28.h | 1588 ++ .../Create_font/data/Final-Frontier.ttf | Bin 0 -> 19800 bytes .../Screenshot_client/Screenshot_client.pde | 525 + .../TFT_eSPI/Tools/bmp2array4bit/README.md | 26 + .../Tools/bmp2array4bit/bmp2array4bit.py | 251 + .../lib/TFT_eSPI/Tools/bmp2array4bit/star.bmp | Bin 0 -> 12986 bytes 001-homekit_hub/lib/TFT_eSPI/User_Setup.h | 389 + .../lib/TFT_eSPI/User_Setup_Select.h | 308 + .../lib/TFT_eSPI/User_Setups/Setup0_Sprite.h | 47 + .../Setup100_RP2040_ILI9488_parallel.h | 54 + .../Setup101_RP2040_ILI9481_parallel.h | 54 + .../Setup102_RP2040_ILI9341_parallel.h | 54 + .../Setup103_RP2040_ILI9486_parallel.h | 54 + .../Setup104_RP2040_ST7796_parallel.h | 54 + .../Setup105_RP2040_ST7796_16bit_parallel.h | 60 + .../Setup106_RP2040_ILI9481_16bit_parallel.h | 77 + .../Setup107_RP2040_ILI9341_16bit_parallel.h | 65 + .../User_Setups/Setup108_RP2040_ST7735.h | 44 + .../User_Setups/Setup10_RPi_touch_ILI9486.h | 33 + .../User_Setups/Setup11_RPi_touch_ILI9486.h | 32 + .../User_Setups/Setup12_M5Stack_Basic_Core.h | 33 + .../TFT_eSPI/User_Setups/Setup135_ST7789.h | 57 + .../User_Setups/Setup136_LilyGo_TTV.h | 35 + .../Setup137_LilyGo_TDisplay_RP2040.h | 33 + ...etup138_Pico_Explorer_Base_RP2040_ST7789.h | 32 + .../User_Setups/Setup13_ILI9481_Parallel.h | 36 + .../User_Setups/Setup14_ILI9341_Parallel.h | 36 + .../TFT_eSPI/User_Setups/Setup15_HX8357D.h | 36 + .../User_Setups/Setup16_ILI9488_Parallel.h | 36 + .../lib/TFT_eSPI/User_Setups/Setup17_ePaper.h | 16 + .../lib/TFT_eSPI/User_Setups/Setup18_ST7789.h | 45 + .../User_Setups/Setup19_RM68140_Parallel.h | 36 + .../lib/TFT_eSPI/User_Setups/Setup1_ILI9341.h | 34 + .../TFT_eSPI/User_Setups/Setup200_GC9A01.h | 32 + .../TFT_eSPI/User_Setups/Setup201_WT32_SC01.h | 49 + .../User_Setups/Setup202_SSD1351_128.h | 52 + .../TFT_eSPI/User_Setups/Setup203_ST7789.h | 57 + .../User_Setups/Setup204_ESP32_TouchDown.h | 32 + .../User_Setups/Setup205_ESP32_TouchDown_S3.h | 36 + .../Setup206_LilyGo_T_Display_S3.h | 47 + .../User_Setups/Setup207_LilyGo_T_HMI.h | 48 + .../User_Setups/Setup209_LilyGo_T_Dongle_S3.h | 52 + .../TFT_eSPI/User_Setups/Setup20_ILI9488.h | 33 + .../User_Setups/Setup210_LilyGo_T_Embed_S3.h | 43 + .../User_Setups/Setup211_LilyGo_T_QT_Pro_S3.h | 45 + .../User_Setups/Setup212_LilyGo_T_PicoPro.h | 45 + .../Setup213_LilyGo_T_Beam_Shield.h | 36 + .../TFT_eSPI/User_Setups/Setup21_ILI9488.h | 35 + .../TFT_eSPI/User_Setups/Setup22_TTGO_T4.h | 36 + .../User_Setups/Setup22_TTGO_T4_v1.3.h | 34 + .../TFT_eSPI/User_Setups/Setup23_TTGO_TM.h | 43 + .../lib/TFT_eSPI/User_Setups/Setup24_ST7789.h | 55 + .../User_Setups/Setup250_ESP32_S3_Box_Lite.h | 32 + .../User_Setups/Setup251_ESP32_S3_Box.h | 28 + .../User_Setups/Setup25_TTGO_T_Display.h | 40 + .../User_Setups/Setup26_TTGO_T_Wristband.h | 37 + .../User_Setups/Setup27_RPi_ST7796_ESP32.h | 102 + .../User_Setups/Setup28_RPi_ST7796_ESP8266.h | 106 + .../User_Setups/Setup29_ILI9341_STM32.h | 96 + .../User_Setups/Setup29b_ILI9341_STM32.h | 141 + .../lib/TFT_eSPI/User_Setups/Setup2_ST7735.h | 45 + .../User_Setups/Setup301_BW16_ST7735.h | 47 + .../Setup302_Waveshare_ESP32S3_GC9A01.h | 33 + .../Setup30_ILI9341_Parallel_STM32.h | 53 + .../Setup31_ST7796_Parallel_STM32.h | 52 + .../User_Setups/Setup32_ILI9341_STM32F103.h | 61 + .../User_Setups/Setup33_RPi_ILI9486_STM32.h | 67 + .../Setup34_ILI9481_Parallel_STM32.h | 51 + .../Setup35_ILI9341_STM32_Port_Bus.h | 59 + .../User_Setups/Setup36_RPi_touch_ST7796.h | 32 + .../lib/TFT_eSPI/User_Setups/Setup3_ILI9163.h | 37 + .../User_Setups/Setup42_ILI9341_ESP32.h | 36 + .../lib/TFT_eSPI/User_Setups/Setup43_ST7735.h | 52 + .../User_Setups/Setup44_TTGO_CameraPlus.h | 32 + .../User_Setups/Setup45_TTGO_T_Watch.h | 32 + .../User_Setups/Setup46_GC9A01_ESP32.h | 29 + .../lib/TFT_eSPI/User_Setups/Setup47_ST7735.h | 52 + .../lib/TFT_eSPI/User_Setups/Setup4_S6D02A1.h | 33 + .../User_Setups/Setup50_SSD1963_Parallel.h | 95 + .../User_Setups/Setup51_LilyPi_ILI9481.h | 27 + .../User_Setups/Setup52_LilyPi_ST7796.h | 28 + .../TFT_eSPI/User_Setups/Setup5_RPi_ILI9486.h | 30 + .../User_Setups/Setup60_RP2040_ILI9341.h | 187 + .../User_Setups/Setup60_RP2040_RPI_MHS.h | 29 + .../Setup61_RP2040_ILI9341_PIO_SPI.h | 44 + .../Setup62_RP2040_Nano_Connect_ILI9341.h | 198 + .../User_Setups/Setup66_Seeed_XIAO_Round.h | 29 + .../User_Setups/Setup6_RPi_Wr_ILI9486.h | 32 + .../User_Setups/Setup70_ESP32_S2_ILI9341.h | 37 + .../User_Setups/Setup70b_ESP32_S3_ILI9341.h | 37 + .../User_Setups/Setup70c_ESP32_C3_ILI9341.h | 56 + .../Setup70d_ILI9488_S3_Parallel.h | 36 + .../User_Setups/Setup70f_ESP32_S2_ST7735.h | 44 + .../User_Setups/Setup70h_ESP32_S3_GC9A01.h | 31 + .../User_Setups/Setup71_ESP32_S2_ST7789.h | 29 + .../Setup72_ESP32_ST7789_172x320.h | 31 + .../User_Setups/Setup7_ST7735_128x128.h | 45 + .../User_Setups/Setup8_ILI9163_128x128.h | 36 + .../User_Setups/Setup9_ST7735_Overlap.h | 56 + .../TFT_eSPI/User_Setups/SetupX_Template.h | 366 + .../TFT_eSPI/User_Setups/User_Custom_Fonts.h | 41 + .../TFT_eSPI/ZH_ST7789-240-240-from-Setup24.h | 79 + .../lib/TFT_eSPI/ZH_ST7789-240-240.h | 93 + .../160 x 128/Arduino_Life/Arduino_Life.ino | 170 + .../examples/160 x 128/Pong_v3/Pong_v3.ino | 222 + .../160 x 128/RLE_Font_test/RLE_Font_test.ino | 187 + .../TFT_Char_times/TFT_Char_times.ino | 128 + .../160 x 128/TFT_Clock/TFT_Clock.ino | 134 + .../TFT_Clock_Digital/TFT_Clock_Digital.ino | 135 + .../160 x 128/TFT_Ellipse/TFT_Ellipse.ino | 50 + .../160 x 128/TFT_Meter_5/TFT_Meter_5.ino | 210 + .../TFT_Print_Test/TFT_Print_Test.ino | 70 + .../160 x 128/TFT_Rainbow/TFT_Rainbow.ino | 127 + .../160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino | 212 + .../examples/160 x 128/TFT_flash_jpg/jpeg1.h | 211 + .../examples/160 x 128/TFT_flash_jpg/jpeg2.h | 299 + .../examples/160 x 128/TFT_flash_jpg/jpeg3.h | 283 + .../examples/160 x 128/TFT_flash_jpg/jpeg4.h | 167 + .../TFT_graphicstest_PDQ3.ino | 711 + .../TFT_graphicstest_small.ino | 274 + .../UTFT_demo_fast/UTFT_demo_fast.ino | 343 + .../All_Free_Fonts_Demo.ino | 396 + .../All_Free_Fonts_Demo/Free_Fonts.h | 377 + .../Cellular_Automata/Cellular_Automata.ino | 165 + .../Free_Font_Demo/Free_Font_Demo.ino | 320 + .../320 x 240/Free_Font_Demo/Free_Fonts.h | 377 + .../Keypad_240x320/Keypad_240x320.ino | 284 + .../320 x 240/RLE_Font_test/RLE_Font_test.ino | 302 + .../Read_ID_bitbash/Read_ID_bitbash.ino | 168 + .../320 x 240/TFT_ArcFill/TFT_ArcFill.ino | 168 + .../TFT_Char_times/TFT_Char_times.ino | 142 + .../320 x 240/TFT_Clock/TFT_Clock.ino | 148 + .../TFT_Clock_Digital/TFT_Clock_Digital.ino | 134 + .../TFT_Custom_Fonts/TFT_Custom_Fonts.ino | 150 + .../320 x 240/TFT_Ellipse/TFT_Ellipse.ino | 49 + .../TFT_FillArcSpiral/TFT_FillArcSpiral.ino | 154 + .../TFT_Float_Test/TFT_Float_Test.ino | 103 + .../TFT_Mandlebrot/TFT_Mandlebrot.ino | 94 + .../320 x 240/TFT_Matrix/TFT_Matrix.ino | 93 + .../TFT_Meter_linear/TFT_Meter_linear.ino | 212 + .../320 x 240/TFT_Meters/TFT_Meters.ino | 297 + .../320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino | 88 + .../examples/320 x 240/TFT_Pong/TFT_Pong.ino | 223 + .../TFT_Print_Test/TFT_Print_Test.ino | 77 + .../TFT_Rainbow_one_lib.ino | 156 + .../320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino | 143 + .../320 x 240/TFT_Spiro/TFT_Spiro.ino | 99 + .../320 x 240/TFT_Starfield/TFT_Starfield.ino | 89 + .../TFT_String_Align/TFT_String_Align.ino | 121 + .../320 x 240/TFT_Terminal/TFT_Terminal.ino | 148 + .../TFT_graphicstest_PDQ.ino | 754 + .../TFT_graphicstest_one_lib.ino | 370 + .../320 x 240/UTFT_demo/UTFT_demo.ino | 334 + .../Cellular_Automata/Cellular_Automata.ino | 165 + .../480 x 320/Demo_3D_cube/Demo_3D_cube.ino | 348 + .../Free_Font_Demo/Free_Font_Demo.ino | 289 + .../480 x 320/Free_Font_Demo/Free_Fonts.h | 379 + .../examples/480 x 320/Graph_2/Graph_2.ino | 328 + .../Keypad_480x320/Keypad_480x320.ino | 287 + .../TFT_Char_times/TFT_Char_times.ino | 151 + .../480 x 320/TFT_Ellipse/TFT_Ellipse.ino | 51 + .../480 x 320/TFT_Meter_4/TFT_Meter_4.ino | 214 + .../480 x 320/TFT_Meters/TFT_Meters.ino | 299 + .../TFT_Padding_demo/TFT_Padding_demo.ino | 208 + .../TFT_Print_Test/TFT_Print_Test.ino | 77 + .../TFT_Rainbow480/TFT_Rainbow480.ino | 158 + .../TFT_String_Align/TFT_String_Align.ino | 145 + .../480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino | 241 + .../examples/480 x 320/TFT_flash_jpg/jpeg1.h | 768 + .../examples/480 x 320/TFT_flash_jpg/jpeg2.h | 212 + .../examples/480 x 320/TFT_flash_jpg/jpeg3.h | 613 + .../examples/480 x 320/TFT_flash_jpg/jpeg4.h | 658 + .../TFT_graphicstest_one_lib.ino | 371 + .../examples/480 x 320/TFT_ring_meter/Alert.h | 41 + .../TFT_ring_meter/TFT_ring_meter.ino | 281 + .../Touch_Controller_Demo.ino | 76 + .../UTFT_Demo_480x320/UTFT_Demo_480x320.ino | 326 + .../Bouncy_Circles/Bouncy_Circles.ino | 208 + .../DMA test/Flash_Jpg_DMA/Flash_Jpg_DMA.ino | 111 + .../examples/DMA test/Flash_Jpg_DMA/panda.h | 816 + .../SpriteRotatingCube/SpriteRotatingCube.ino | 394 + .../DMA test/boing_ball/boing_ball.ino | 183 + .../examples/DMA test/boing_ball/graphic.h | 1377 ++ .../Buttons/Button_demo/Button_demo.ino | 191 + .../Buttons/Button_demo/Free_Fonts.h | 377 + .../Graphs/Graph_demo_1/Graph_demo_1.ino | 80 + .../Graphs/Graph_demo_2/Graph_demo_2.ino | 105 + .../Analogue_meters/Analogue_meters.ino | 87 + .../Sliders/Slider_demo/Free_Fonts.h | 377 + .../Sliders/Slider_demo/Slider_demo.ino | 201 + .../Animated_Eyes_1/Animated_Eyes_1.ino | 138 + .../examples/Generic/Animated_Eyes_1/config.h | 93 + .../Generic/Animated_Eyes_1/data/catEye.h | 11600 +++++++++++ .../Generic/Animated_Eyes_1/data/defaultEye.h | 13349 ++++++++++++ .../Generic/Animated_Eyes_1/data/doeEye.h | 15646 ++++++++++++++ .../Generic/Animated_Eyes_1/data/dragonEye.h | 17018 ++++++++++++++++ .../Generic/Animated_Eyes_1/data/goatEye.h | 12807 ++++++++++++ .../Generic/Animated_Eyes_1/data/logo.h | 101 + .../Generic/Animated_Eyes_1/data/naugaEye.h | 7609 +++++++ .../Generic/Animated_Eyes_1/data/newtEye.h | 13346 ++++++++++++ .../Animated_Eyes_1/data/noScleraEye.h | 17018 ++++++++++++++++ .../Generic/Animated_Eyes_1/data/owlEye.h | 7609 +++++++ .../Animated_Eyes_1/data/terminatorEye.h | 13346 ++++++++++++ .../Generic/Animated_Eyes_1/eye_functions.ino | 429 + .../examples/Generic/Animated_Eyes_1/user.cpp | 65 + .../Generic/Animated_Eyes_1/user_bat.cpp | 83 + .../Generic/Animated_Eyes_1/user_xmas.cpp | 64 + .../Animated_Eyes_2/Animated_Eyes_2.ino | 146 + .../examples/Generic/Animated_Eyes_2/config.h | 93 + .../Generic/Animated_Eyes_2/data/catEye.h | 11600 +++++++++++ .../Generic/Animated_Eyes_2/data/defaultEye.h | 13349 ++++++++++++ .../Generic/Animated_Eyes_2/data/doeEye.h | 15646 ++++++++++++++ .../Generic/Animated_Eyes_2/data/dragonEye.h | 17018 ++++++++++++++++ .../Generic/Animated_Eyes_2/data/goatEye.h | 12807 ++++++++++++ .../Generic/Animated_Eyes_2/data/logo.h | 101 + .../Generic/Animated_Eyes_2/data/naugaEye.h | 7609 +++++++ .../Generic/Animated_Eyes_2/data/newtEye.h | 13346 ++++++++++++ .../Animated_Eyes_2/data/noScleraEye.h | 17018 ++++++++++++++++ .../Generic/Animated_Eyes_2/data/owlEye.h | 7609 +++++++ .../Animated_Eyes_2/data/terminatorEye.h | 13346 ++++++++++++ .../Generic/Animated_Eyes_2/eye_functions.ino | 429 + .../examples/Generic/Animated_Eyes_2/user.cpp | 65 + .../Generic/Animated_Eyes_2/user_bat.cpp | 83 + .../Generic/Animated_Eyes_2/user_xmas.cpp | 64 + .../Generic/Animated_Eyes_2/wiring.ino | 31 + .../ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino | 268 + .../ESP8266_uncannyEyes.ino | 442 + .../Generic/ESP8266_uncannyEyes/defaultEye.h | 11966 +++++++++++ .../Generic/ESP8266_uncannyEyes/dragonEye.h | 15638 ++++++++++++++ .../Generic/ESP8266_uncannyEyes/goatEye.h | 11430 +++++++++++ .../Generic/ESP8266_uncannyEyes/noScleraEye.h | 15638 ++++++++++++++ .../screenshotToConsole.ino | 220 + .../Generic/Gradient_Fill/Gradient_Fill.ino | 38 + .../examples/Generic/Julia_Set/Julia_Set.ino | 83 + .../Local_Custom_Fonts/Local_Custom_Fonts.ino | 121 + .../Generic/Local_Custom_Fonts/MyFont.h | 3366 +++ .../Generic/On_Off_Button/On_Off_Button.ino | 206 + .../TFT_Button_Label_Datum.ino | 192 + .../examples/Generic/TFT_Flash_Bitmap/Alert.h | 39 + .../examples/Generic/TFT_Flash_Bitmap/Close.h | 39 + .../examples/Generic/TFT_Flash_Bitmap/Info.h | 39 + .../TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino | 72 + .../Generic/TFT_SPIFFS_BMP/BMP_functions.ino | 90 + .../Generic/TFT_SPIFFS_BMP/TFT_SPIFFS_BMP.ino | 64 + .../Generic/TFT_SPIFFS_BMP/data/parrot.bmp | Bin 0 -> 61496 bytes .../TFT_Screen_Capture/TFT_Screen_Capture.ino | 207 + .../TFT_Screen_Capture/processing_sketch.ino | 535 + .../TFT_Screen_Capture/screenServer.ino | 196 + .../Touch_calibrate/Touch_calibrate.ino | 104 + .../Generic/Viewport_Demo/Viewport_Demo.ino | 113 + .../Viewport_Demo/Viewport_commands.ino | 40 + .../Viewport_graphicstest.ino | 382 + .../alphaBlend_Test/alphaBlend_Test.ino | 194 + .../Generic/drawXBitmap/drawXBitmap.ino | 61 + .../examples/Generic/drawXBitmap/xbm.h | 50 + .../PNG Images/Flash_PNG/Flash_PNG.ino | 82 + .../examples/PNG Images/Flash_PNG/panda.h | 11425 +++++++++++ .../Flash_transparent_PNG.ino | 90 + .../Flash_transparent_PNG/SpongeBob.h | 1355 ++ .../Flash_transparent_PNG/png_support.ino | 19 + .../PNG Images/LittleFS_PNG/LittleFS_PNG.ino | 103 + .../LittleFS_PNG/PNG_FS_Support.ino | 28 + .../LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino | 111 + .../LittleFS_PNG_DMA/PNG_FS_Support.ino | 28 + .../Font_Demo_1_Array/Font_Demo_1_Array.ino | 165 + .../FLASH_Array/Font_Demo_1_Array/Notes.ino | 56 + .../Font_Demo_1_Array/NotoSansBold15.h | 694 + .../Font_Demo_1_Array/NotoSansBold36.h | 2782 +++ .../Font_Demo_2_Array/Font_Demo_2_Array.ino | 215 + .../FLASH_Array/Font_Demo_2_Array/Notes.ino | 56 + .../Font_Demo_2_Array/NotoSansBold15.h | 694 + .../Font_Demo_2_Array/NotoSansBold36.h | 2782 +++ .../Font_Demo_3_Array/Font_Demo_3_Array.ino | 212 + .../FLASH_Array/Font_Demo_3_Array/Notes.ino | 61 + .../Font_Demo_3_Array/NotoSansBold15.h | 694 + .../Font_Demo_3_Array/NotoSansBold36.h | 2782 +++ .../Font_Demo_3_Array/NotoSansMonoSCB20.h | 983 + .../Font_Demo_4_Array/Font_Demo_4_Array.ino | 119 + .../FLASH_Array/Font_Demo_4_Array/Notes.ino | 56 + .../Font_Demo_4_Array/NotoSansBold15.h | 694 + .../Font_Demo_4_Array/NotoSansBold36.h | 2782 +++ .../Print_Smooth_Font/Final_Frontier_28.h | 1602 ++ .../Print_Smooth_Font/Print_Smooth_Font.ino | 175 + .../Smooth_font_gradient/NotoSansBold15.h | 694 + .../Smooth_font_gradient/NotoSansBold36.h | 2782 +++ .../Smooth_font_gradient.ino | 95 + .../Smooth_font_reading_TFT/NotoSansBold15.h | 694 + .../Smooth_font_reading_TFT/NotoSansBold36.h | 2782 +++ .../Smooth_font_reading_TFT.ino | 138 + .../Unicode_test/Final_Frontier_28.h | 1602 ++ .../Unicode_test/Latin_Hiragana_24.h | 3426 ++++ .../Unicode_test/Unicode_Test_72.h | 2301 +++ .../FLASH_Array/Unicode_test/Unicode_test.ino | 147 + .../Unicode_test/data/Final-Frontier-28.vlw | Bin 0 -> 25287 bytes .../Unicode_test/data/Latin-Hiragana-24.vlw | Bin 0 -> 54478 bytes .../Unicode_test/data/Unicode-Test-72.vlw | Bin 0 -> 36469 bytes .../LittleFS/Font_Demo_1/Font_Demo_1.ino | 183 + .../LittleFS/Font_Demo_1/Notes.ino | 56 + .../Font_Demo_1/data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../Font_Demo_1/data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../LittleFS/Font_Demo_2/Font_Demo_2.ino | 234 + .../LittleFS/Font_Demo_2/Notes.ino | 56 + .../Font_Demo_2/data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../Font_Demo_2/data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../LittleFS/Font_Demo_3/Font_Demo_3.ino | 231 + .../LittleFS/Font_Demo_3/Notes.ino | 61 + .../Font_Demo_3/data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../Font_Demo_3/data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../Font_Demo_3/data/NotoSansMonoSCB20.vlw | Bin 0 -> 15382 bytes .../LittleFS/Font_Demo_4/Font_Demo_4.ino | 140 + .../LittleFS/Font_Demo_4/Notes.ino | 56 + .../Font_Demo_4/data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../Font_Demo_4/data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../Print_Smooth_Font/Print_Smooth_Font.ino | 149 + .../data/Final-Frontier-28.vlw | Bin 0 -> 25287 bytes .../Smooth_font_gradient.ino | 120 + .../data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../Smooth_font_reading_TFT.ino | 165 + .../data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../Unicode_test/LittleFS_functions.ino | 39 + .../LittleFS/Unicode_test/Unicode_test.ino | 152 + .../Unicode_test/data/Final-Frontier-28.vlw | Bin 0 -> 25287 bytes .../Unicode_test/data/Latin-Hiragana-24.vlw | Bin 0 -> 54478 bytes .../Unicode_test/data/Unicode-Test-72.vlw | Bin 0 -> 36469 bytes .../ESP32_Smooth_Font_SD.ino | 174 + .../data/Final-Frontier-28.vlw | Bin 0 -> 25287 bytes .../SPIFFS/Font_Demo_1/Font_Demo_1.ino | 184 + .../Smooth Fonts/SPIFFS/Font_Demo_1/Notes.ino | 56 + .../Font_Demo_1/data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../Font_Demo_1/data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../SPIFFS/Font_Demo_2/Font_Demo_2.ino | 235 + .../Smooth Fonts/SPIFFS/Font_Demo_2/Notes.ino | 56 + .../Font_Demo_2/data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../Font_Demo_2/data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../SPIFFS/Font_Demo_3/Font_Demo_3.ino | 231 + .../Smooth Fonts/SPIFFS/Font_Demo_3/Notes.ino | 61 + .../Font_Demo_3/data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../Font_Demo_3/data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../Font_Demo_3/data/NotoSansMonoSCB20.vlw | Bin 0 -> 15382 bytes .../SPIFFS/Font_Demo_4/Font_Demo_4.ino | 140 + .../Smooth Fonts/SPIFFS/Font_Demo_4/Notes.ino | 56 + .../Font_Demo_4/data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../Font_Demo_4/data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../Print_Smooth_Font/Print_Smooth_Font.ino | 195 + .../data/Final-Frontier-28.vlw | Bin 0 -> 25287 bytes .../Smooth_font_gradient.ino | 121 + .../data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../Smooth_font_reading_TFT.ino | 165 + .../data/NotoSansBold15.vlw | Bin 0 -> 10766 bytes .../data/NotoSansBold36.vlw | Bin 0 -> 44169 bytes .../SPIFFS/Unicode_test/SPIFFS_functions.ino | 83 + .../SPIFFS/Unicode_test/Unicode_test.ino | 148 + .../Unicode_test/data/Final-Frontier-28.vlw | Bin 0 -> 25287 bytes .../Unicode_test/data/Latin-Hiragana-24.vlw | Bin 0 -> 54478 bytes .../Unicode_test/data/Unicode-Test-72.vlw | Bin 0 -> 36469 bytes .../Anti-aliased_Clock/Anti-aliased_Clock.ino | 179 + .../Anti-aliased_Clock/NTP_Time.h | 364 + .../Anti-aliased_Clock/NotoSansBold15.h | 696 + .../Arc_meter_demo/Arc_meter_demo.ino | 208 + .../Arc_meter_demo/NotoSans_Bold.h | 732 + .../Colour_Wheel/Colour_Wheel.ino | 47 + .../Smooth Graphics/Draw_Arc/Draw_Arc.ino | 53 + .../Draw_Smooth_Circles.ino | 98 + .../Smooth Graphics/Smooth_Arc/Smooth_Arc.ino | 46 + .../Smooth_Graphics_Demo.ino | 181 + .../Smooth_Rounded_Rectangles.ino | 50 + .../Sprite/Animated_dial/Animated_dial.ino | 215 + .../Sprite/Animated_dial/NotoSansBold36.h | 380 + .../examples/Sprite/Animated_dial/dial.h | 1151 ++ .../One_bit_Sprite_Demo.ino | 106 + .../One_bit_Yin_Yang/One_bit_Yin_Yang.ino | 97 + .../examples/Sprite/Orrery/Orrery.ino | 163 + .../examples/Sprite/Orrery/astronomy.c | 8822 ++++++++ .../examples/Sprite/Orrery/astronomy.h | 904 + .../Rotated_Sprite_1/Rotated_Sprite_1.ino | 186 + .../Rotated_Sprite_2/Rotated_Sprite_2.ino | 181 + .../Rotated_Sprite_3/Rotated_Sprite_3.ino | 140 + .../Sprite_RLE_Font_test.ino | 197 + .../Sprite_TFT_Rainbow/Sprite_TFT_Rainbow.ino | 140 + .../Sprite/Sprite_draw/Sprite_draw.ino | 141 + .../Sprite_draw_4bit/Sprite_draw_4bit.ino | 198 + .../Sprite_image_4bit/Sprite_image_4bit.ino | 152 + .../Sprite/Sprite_image_4bit/sample_images.h | 3 + .../Sprite/Sprite_image_4bit/starImage.cpp | 1444 ++ .../Sprite/Sprite_scroll/Sprite_scroll.ino | 118 + .../Sprite_scroll_16bit.ino | 194 + .../Sprite_scroll_1bit/Sprite_scroll_1bit.ino | 131 + .../Sprite_scroll_4bit/Sprite_scroll_4bit.ino | 141 + .../Sprite_scroll_8bit/Sprite_scroll_8bit.ino | 205 + .../Sprite_scroll_wrap_1bit.ino | 139 + .../Transparent_Sprite_Demo.ino | 144 + .../Transparent_Sprite_Demo_4bit.ino | 146 + .../Colour_Test/Colour_Test.ino | 135 + .../Read_User_Setup/Read_User_Setup.ino | 188 + .../TFT_ReadWrite_Test/TFT_ReadWrite_Test.ino | 37 + .../Test_Touch_Controller.ino | 49 + .../ePaper/Floyd_Steinberg/EPD_Support.h | 117 + .../Floyd_Steinberg/Floyd_Steinberg.ino | 188 + .../Floyd_Steinberg/Floyd_Steinberg_BMP.ino | 200 + .../ePaper/Floyd_Steinberg/SPIFFS.ino | 92 + .../ePaper/Floyd_Steinberg/data/TestCard.bmp | Bin 0 -> 47542 bytes .../ePaper/Floyd_Steinberg/data/Tiger.bmp | Bin 0 -> 42262 bytes 001-homekit_hub/lib/TFT_eSPI/keywords.txt | 209 + 001-homekit_hub/lib/TFT_eSPI/library.json | 22 + .../lib/TFT_eSPI/library.properties | 11 + 001-homekit_hub/lib/TFT_eSPI/license.txt | 135 + 001-homekit_hub/platformio.ini | 128 + 001-homekit_hub/src/CMakeLists.txt | 6 + 001-homekit_hub/src/common_config.h | 126 + 001-homekit_hub/src/data_structure.h | 38 + 001-homekit_hub/src/devices_config.h | 176 + 001-homekit_hub/src/main.cpp | 2280 +++ 001-homekit_hub/src/mqtt-func.h | 161 + 001-homekit_hub/src/tft_functions.h | 165 + 001-homekit_sensors/.gitignore | 4 + 001-homekit_sensors/README.md | 3 + 001-homekit_sensors/changelog.txt | 2 + 001-homekit_sensors/comments.txt | 1 + .../extra_scripts/erase_before_upload.py | 11 + .../extra_scripts/output_bins.py | 138 + 001-homekit_sensors/include/README | 39 + .../lib/HomeSpan-release-1.8.1-dev/LICENSE | 21 + .../lib/HomeSpan-release-1.8.1-dev/README.md | 144 + .../01-SimpleLightBulb/01-SimpleLightBulb.ino | 128 + .../02-TwoSimpleLightBulbs.ino | 93 + .../03-CeilingFanWithLight.ino | 107 + .../04-AdvancedCeilingFan.ino | 100 + .../examples/05-WorkingLED/05-WorkingLED.ino | 112 + .../examples/05-WorkingLED/DEV_LED.h | 100 + .../06-DimmableLED/06-DimmableLED.ino | 86 + .../examples/06-DimmableLED/DEV_LED.h | 69 + .../07-AccessoryNames/07-AccessoryNames.ino | 96 + .../examples/07-AccessoryNames/DEV_LED.h | 69 + .../examples/08-Bridges/08-Bridges.ino | 94 + .../examples/08-Bridges/DEV_LED.h | 58 + .../09-MessageLogging/09-MessageLogging.ino | 107 + .../examples/09-MessageLogging/DEV_LED.h | 109 + .../examples/10-RGB_LED/10-RGB_LED.ino | 83 + .../examples/10-RGB_LED/DEV_LED.h | 194 + .../11-ServiceNames/11-ServiceNames.ino | 171 + .../12-ServiceLoops/12-ServiceLoops.ino | 118 + .../examples/12-ServiceLoops/DEV_Sensors.h | 117 + .../13-TargetStates/13-TargetStates.ino | 104 + .../13-TargetStates/DEV_DoorsWindows.h | 126 + .../14-EmulatedPushButtons.ino | 103 + .../14-EmulatedPushButtons/DEV_Blinker.h | 96 + .../15-RealPushButtons/15-RealPushButtons.ino | 267 + .../examples/15-RealPushButtons/DEV_LED.h | 168 + .../16-ProgrammableSwitches.ino | 92 + .../16-ProgrammableSwitches/DEV_ProgButton.h | 45 + .../17-LinkedServices/17-LinkedServices.ino | 170 + .../18-SavingStatus/18-SavingStatus.ino | 117 + .../examples/18-SavingStatus/DEV_LED.h | 75 + .../examples/19-WebLog/19-WebLog.ino | 89 + .../examples/19-WebLog/DEV_LED.h | 50 + .../20-AdvancedTechniques.ino | 251 + .../CustomService/CustomService.ino | 110 + .../Other Examples/FadingLED/FadingLED.ino | 113 + .../MaxAccessories/MaxAccessories.ino | 104 + .../MaxAccessories/partitions.csv | 14 + .../MotorizedWindowShade.ino | 143 + .../examples/Other Examples/Pixel/Pixel.ino | 204 + .../ProgrammableHub/ProgrammableHub.ino | 388 + .../RemoteControl/RemoteControl.ino | 73 + .../RemoteSensors/MainDevice/MainDevice.ino | 121 + .../RemoteDevice/RemoteDevice.ino | 79 + .../RemoteDevice8286/RemoteDevice8286.ino | 129 + .../RemoteTempSensor/RemoteTempSensor.ino | 109 + .../ServoControl/DEV_DoorsWindows.h | 68 + .../ServoControl/ServoControl.ino | 60 + .../Other Examples/TableLamp/TableLamp.ino | 72 + .../Other Examples/Television/Television.ino | 216 + .../library.properties | 9 + .../src/Characteristics.h | 201 + .../src/FeatherPins.h | 72 + .../HomeSpan-release-1.8.1-dev/src/HAP.cpp | 1755 ++ .../lib/HomeSpan-release-1.8.1-dev/src/HAP.h | 163 + .../src/HAPConstants.h | 89 + .../HomeSpan-release-1.8.1-dev/src/HKDF.cpp | 217 + .../lib/HomeSpan-release-1.8.1-dev/src/HKDF.h | 43 + .../HomeSpan-release-1.8.1-dev/src/HapQR.h | 59 + .../src/HomeSpan.cpp | 2517 +++ .../HomeSpan-release-1.8.1-dev/src/HomeSpan.h | 962 + .../src/Network.cpp | 419 + .../HomeSpan-release-1.8.1-dev/src/Network.h | 69 + .../HomeSpan-release-1.8.1-dev/src/SRP.cpp | 283 + .../lib/HomeSpan-release-1.8.1-dev/src/SRP.h | 92 + .../HomeSpan-release-1.8.1-dev/src/Settings.h | 148 + .../lib/HomeSpan-release-1.8.1-dev/src/Span.h | 582 + .../lib/HomeSpan-release-1.8.1-dev/src/TLV.h | 335 + .../HomeSpan-release-1.8.1-dev/src/Utils.cpp | 281 + .../HomeSpan-release-1.8.1-dev/src/Utils.h | 229 + .../src/extras/Blinker.h | 30 + .../src/extras/Pixel.h | 30 + .../src/extras/PwmPin.h | 30 + .../src/extras/RFControl.h | 30 + .../src/extras/StepperControl.h | 30 + .../src/extras/Stepper_A3967.h | 30 + .../src/extras/Stepper_TB6612.h | 30 + .../src/src/extras/Blinker.cpp | 149 + .../src/src/extras/Blinker.h | 137 + .../src/src/extras/Pixel.cpp | 200 + .../src/src/extras/Pixel.h | 261 + .../src/src/extras/PwmPin.cpp | 270 + .../src/src/extras/PwmPin.h | 121 + .../src/src/extras/RFControl.cpp | 164 + .../src/src/extras/RFControl.h | 78 + .../src/src/extras/StepperControl.cpp | 205 + .../src/src/extras/StepperControl.h | 105 + .../src/src/extras/Stepper_A3967.h | 120 + .../src/src/extras/Stepper_TB6612.h | 182 + .../src/src/extras/extras.ino | 73 + 001-homekit_sensors/lib/README | 46 + 001-homekit_sensors/platformio.ini | 156 + 001-homekit_sensors/src/check-charging.h | 40 + 001-homekit_sensors/src/devices_config.h | 344 + 001-homekit_sensors/src/espnow-func.h | 2 + 001-homekit_sensors/src/main.cpp | 2176 ++ 001-homekit_sensors/src/measure-battery.h | 53 + 001-homekit_sensors/src/measure-lux.h | 38 + 001-homekit_sensors/src/measure-temp-hum.h | 41 + 001-homekit_sensors/src/wifi-func.h | 2 + 1138 files changed, 555870 insertions(+) create mode 100755 001-homekit_hub/.gitignore create mode 100755 001-homekit_hub/CMakeLists.txt create mode 100644 001-homekit_hub/README.md create mode 100755 001-homekit_hub/changelog.txt create mode 100755 001-homekit_hub/extra_scripts/erase_before_upload.py create mode 100755 001-homekit_hub/extra_scripts/output_bins.py create mode 100755 001-homekit_hub/include/README create mode 100644 001-homekit_hub/lib/ArduinoJson/.piopm create mode 100644 001-homekit_hub/lib/ArduinoJson/ArduinoJson.h create mode 100644 001-homekit_hub/lib/ArduinoJson/LICENSE.txt create mode 100644 001-homekit_hub/lib/ArduinoJson/README.md create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/JsonServer/JsonServer.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/examples/StringExample/StringExample.ino create mode 100644 001-homekit_hub/lib/ArduinoJson/library.json create mode 100644 001-homekit_hub/lib/ArduinoJson/library.properties create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson.h create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Document/BasicJsonDocument.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Document/DynamicJsonDocument.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Document/JsonDocument.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Document/StaticJsonDocument.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Json/EscapeSequence.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Json/JsonDeserializer.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Json/JsonSerializer.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Json/Latch.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Json/PrettyJsonSerializer.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Json/TextFormatter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Json/Utf16.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Json/Utf8.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Memory/Alignment.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Memory/MemoryPool.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Misc/SerializedValue.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackDeserializer.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/MsgPack/MsgPackSerializer.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/MsgPack/endianess.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/MsgPack/ieee754.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Namespace.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatParts.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Numbers/FloatTraits.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonFloat.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Numbers/JsonInteger.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Numbers/arithmeticCompare.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Numbers/convertNumber.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Numbers/parseNumber.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Object/JsonObject.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectConst.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectImpl.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Object/JsonObjectIterator.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Object/JsonPair.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Object/MemberProxy.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/alias_cast.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/assert.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/attributes.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/ctype.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/integer.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/limits.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/math.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/mpl/max.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/pgmspace_generic.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/preprocessor.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/conditional.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/declval.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/enable_if.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/integral_constant.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_array.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_base_of.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_class.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_const.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_convertible.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_enum.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_floating_point.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_integral.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_pointer.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_same.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_signed.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/is_unsigned.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_unsigned.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/make_void.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_const.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_cv.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/remove_reference.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/type_traits/type_identity.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Polyfills/utility.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/CountingDecorator.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/Writer.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/ArduinoStringWriter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/DummyWriter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/PrintWriter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StaticStringWriter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStreamWriter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/Writers/StdStringWriter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/measure.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Serialization/serialize.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/StringStorage/StringCopier.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/StringStorage/StringMover.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/StringStorage/StringStorage.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/FlashString.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/JsonString.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/RamString.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/Adapters/StringObject.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/IsString.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/JsonString.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/StoragePolicy.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/StringAdapters.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Strings/StringTraits.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/Converter.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/ConverterImpl.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariant.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/JsonVariantConst.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/SlotFunctions.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantAttorney.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantCompare.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantContent.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantData.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantFunctions.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantImpl.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantOperators.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantRefBase.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantSlot.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTag.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/VariantTo.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Variant/Visitor.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/compatibility.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/version.hpp create mode 100644 001-homekit_hub/lib/ArduinoJson/src/CMakeLists.txt create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/.gitattributes create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/.github/ISSUE_TEMPLATE/bug-report.md create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/.github/scripts/dep-install.sh create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/.github/workflows/ci.yml create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/.gitignore create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/.piopm create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/LICENSE create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/README.md create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/examples/Async_Demo/Async_Demo.ino create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/keywords.txt create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/library.properties create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/platformio_upload.py create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/src/AsyncElegantOTA.cpp create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/src/AsyncElegantOTA.h create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/src/Hash.h create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/src/elegantWebpage.h create mode 100644 001-homekit_hub/lib/AsyncElegantOTA/ui/README.md create mode 100755 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.github/scripts/install-arduino-core-esp32.sh create mode 100755 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.github/scripts/install-arduino-ide.sh create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.github/scripts/install-platformio.sh create mode 100755 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.github/scripts/on-push.sh create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.github/stale.yml create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.github/workflows/push.yml create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.gitignore create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.piopm create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/.travis.yml create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/CMakeLists.txt create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/Kconfig.projbuild create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/LICENSE create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/README.md create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/component.mk create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/library.json create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/src/AsyncTCP.cpp create mode 100644 001-homekit_hub/lib/AsyncTCP-esphome@2.0.0/src/AsyncTCP.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/.github/ISSUE_TEMPLATE/bug_report.md create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/.github/ISSUE_TEMPLATE/feature_request.md create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/.github/pull_request_template.md create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/.github/workflows/platformio.yml create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/.gitignore create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/.piopm create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/CHANGELOG.md create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/LICENSE create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/README.md create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/examples/BasicWrite/BasicWrite.ino create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/examples/Buckets/Buckets.ino create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/examples/QueryAggregated/QueryAggregated.ino create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/examples/QueryParams/QueryParams.ino create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/examples/QueryTable/QueryTable.ino create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/examples/SecureBatchWrite/SecureBatchWrite.ino create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/examples/SecureWrite/SecureWrite.ino create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/library.properties create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/platformio.ini create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/BucketsClient.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/BucketsClient.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/HTTPService.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/HTTPService.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/InfluxData.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/InfluxData.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/InfluxDb.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/InfluxDb.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/InfluxDbClient.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/InfluxDbClient.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/InfluxDbCloud.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/Options.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/Options.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/Platform.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/Point.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/Point.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/Version.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/WritePrecision.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/CsvReader.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/CsvReader.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/FluxParser.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/FluxParser.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/FluxTypes.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/FluxTypes.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/HttpStreamScanner.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/HttpStreamScanner.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/Params.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/query/Params.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/util/debug.h create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/util/helpers.cpp create mode 100644 001-homekit_hub/lib/ESP8266 Influxdb/src/util/helpers.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-core-esp8266.sh create mode 100755 001-homekit_hub/lib/ESPAsyncTCP-esphome/.github/scripts/install-arduino-ide.sh create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/.github/scripts/install-platformio.sh create mode 100755 001-homekit_hub/lib/ESPAsyncTCP-esphome/.github/scripts/on-push.sh create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/.github/stale.yml create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/.github/workflows/push.yml create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/.gitignore create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/.piopm create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/.travis.yml create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/LICENSE.txt create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/README.md create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/Client.ino create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/examples/ClientServer/Client/config.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/Server.ino create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/examples/ClientServer/Server/config.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/examples/SyncClient/.esp31b.skip create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/examples/SyncClient/SyncClient.ino create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/library.json create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/AsyncPrinter.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/AsyncPrinter.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/DebugPrintMacros.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCP.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/ESPAsyncTCPbuffer.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/SyncClient.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/SyncClient.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/async_config.h create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/tcp_axtls.c create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/src/tcp_axtls.h create mode 100755 001-homekit_hub/lib/ESPAsyncTCP-esphome/ssl/gen_server_cert.sh create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/ssl/server.cer create mode 100644 001-homekit_hub/lib/ESPAsyncTCP-esphome/ssl/server.key create mode 100755 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.github/scripts/install-arduino-core-esp32.sh create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.github/scripts/install-arduino-core-esp8266.sh create mode 100755 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.github/scripts/install-arduino-ide.sh create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.github/scripts/install-platformio.sh create mode 100755 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.github/scripts/on-push.sh create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.github/stale.yml create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.github/workflows/push.yml create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.gitignore create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.piopm create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/.travis.yml create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/CMakeLists.txt create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/README.md create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/_config.yml create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/component.mk create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/examples/CaptivePortal/CaptivePortal.ino create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/examples/regex_patterns/.test.build_flags create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/examples/regex_patterns/regex_patterns.ino create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/examples/simple_server/simple_server.ino create mode 100755 001-homekit_hub/lib/ESPAsyncWebServer-esphome/keywords.txt create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/library.json create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/AsyncEventSource.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/AsyncEventSource.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/AsyncJson.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/AsyncWebSocket.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/AsyncWebSocket.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/AsyncWebSynchronization.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/ESPAsyncWebServer.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/StringArray.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/WebAuthentication.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/WebAuthentication.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/WebHandlerImpl.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/WebHandlers.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/WebRequest.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/WebResponseImpl.h create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/WebResponses.cpp create mode 100644 001-homekit_hub/lib/ESPAsyncWebServer-esphome/src/WebServer.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/LICENSE create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/README.md create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/01-SimpleLightBulb/01-SimpleLightBulb.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/02-TwoSimpleLightBulbs/02-TwoSimpleLightBulbs.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/03-CeilingFanWithLight/03-CeilingFanWithLight.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/04-AdvancedCeilingFan/04-AdvancedCeilingFan.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/05-WorkingLED/05-WorkingLED.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/05-WorkingLED/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/06-DimmableLED/06-DimmableLED.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/06-DimmableLED/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/07-AccessoryNames/07-AccessoryNames.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/07-AccessoryNames/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/08-Bridges/08-Bridges.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/08-Bridges/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/09-MessageLogging/09-MessageLogging.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/09-MessageLogging/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/10-RGB_LED/10-RGB_LED.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/10-RGB_LED/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/11-ServiceNames/11-ServiceNames.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/12-ServiceLoops/12-ServiceLoops.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/12-ServiceLoops/DEV_Sensors.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/13-TargetStates/13-TargetStates.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/13-TargetStates/DEV_DoorsWindows.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/14-EmulatedPushButtons/14-EmulatedPushButtons.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/14-EmulatedPushButtons/DEV_Blinker.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/15-RealPushButtons/15-RealPushButtons.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/15-RealPushButtons/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/16-ProgrammableSwitches/16-ProgrammableSwitches.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/16-ProgrammableSwitches/DEV_ProgButton.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/17-LinkedServices/17-LinkedServices.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/18-SavingStatus/18-SavingStatus.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/18-SavingStatus/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/19-WebLog/19-WebLog.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/19-WebLog/DEV_LED.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/20-AdvancedTechniques/20-AdvancedTechniques.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/CustomService/CustomService.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/FadingLED/FadingLED.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/MaxAccessories/MaxAccessories.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/MaxAccessories/partitions.csv create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/MotorizedWindowShade/MotorizedWindowShade.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/Pixel/Pixel.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/ProgrammableHub/ProgrammableHub.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteControl/RemoteControl.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteSensors/MainDevice/MainDevice.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteSensors/RemoteDevice/RemoteDevice.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteSensors/RemoteDevice8286/RemoteDevice8286.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteSensors/RemoteTempSensor/RemoteTempSensor.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/ServoControl/DEV_DoorsWindows.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/ServoControl/ServoControl.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/TableLamp/TableLamp.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/Television/Television.ino create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/library.properties create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/Characteristics.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/FeatherPins.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/HAP.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/HAP.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/HAPConstants.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/HKDF.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/HKDF.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/HapQR.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/HomeSpan.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/HomeSpan.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/Network.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/Network.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/SRP.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/SRP.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/Settings.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/Span.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/TLV.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/Utils.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/Utils.h create mode 120000 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/data_structure.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/extras/Blinker.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/extras/Pixel.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/extras/PwmPin.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/extras/RFControl.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/extras/StepperControl.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/extras/Stepper_A3967.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/extras/Stepper_TB6612.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Blinker.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Blinker.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Pixel.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Pixel.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/PwmPin.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/PwmPin.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/RFControl.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/RFControl.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/StepperControl.cpp create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/StepperControl.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Stepper_A3967.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Stepper_TB6612.h create mode 100644 001-homekit_hub/lib/HomeSpan-release-1.8.1-dev/src/src/extras/extras.ino create mode 100644 001-homekit_hub/lib/HttpClient/.piopm create mode 100644 001-homekit_hub/lib/HttpClient/HttpClient.cpp create mode 100644 001-homekit_hub/lib/HttpClient/HttpClient.h create mode 100644 001-homekit_hub/lib/HttpClient/README.md create mode 100644 001-homekit_hub/lib/HttpClient/b64.cpp create mode 100644 001-homekit_hub/lib/HttpClient/b64.h create mode 100644 001-homekit_hub/lib/HttpClient/examples/SimpleHttpExample/SimpleHttpExample.ino create mode 100644 001-homekit_hub/lib/HttpClient/keywords.txt create mode 100644 001-homekit_hub/lib/HttpClient/library.properties create mode 100644 001-homekit_hub/lib/PubSubClient/.gitignore create mode 100644 001-homekit_hub/lib/PubSubClient/.piopm create mode 100644 001-homekit_hub/lib/PubSubClient/.travis.yml create mode 100755 001-homekit_hub/lib/PubSubClient/CHANGES.txt create mode 100755 001-homekit_hub/lib/PubSubClient/LICENSE.txt create mode 100644 001-homekit_hub/lib/PubSubClient/README.md create mode 100755 001-homekit_hub/lib/PubSubClient/examples/mqtt_auth/mqtt_auth.ino create mode 100755 001-homekit_hub/lib/PubSubClient/examples/mqtt_basic/mqtt_basic.ino create mode 100644 001-homekit_hub/lib/PubSubClient/examples/mqtt_esp8266/mqtt_esp8266.ino create mode 100644 001-homekit_hub/lib/PubSubClient/examples/mqtt_large_message/mqtt_large_message.ino create mode 100644 001-homekit_hub/lib/PubSubClient/examples/mqtt_publish_in_callback/mqtt_publish_in_callback.ino create mode 100644 001-homekit_hub/lib/PubSubClient/examples/mqtt_reconnect_nonblocking/mqtt_reconnect_nonblocking.ino create mode 100644 001-homekit_hub/lib/PubSubClient/examples/mqtt_stream/mqtt_stream.ino create mode 100755 001-homekit_hub/lib/PubSubClient/keywords.txt create mode 100644 001-homekit_hub/lib/PubSubClient/library.json create mode 100644 001-homekit_hub/lib/PubSubClient/library.properties create mode 100755 001-homekit_hub/lib/PubSubClient/src/PubSubClient.cpp create mode 100755 001-homekit_hub/lib/PubSubClient/src/PubSubClient.h create mode 100755 001-homekit_hub/lib/README create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/.gitattributes create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/.piopm create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/LICENSE create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/README.md create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/examples/Example1_Simple/Example1_Simple.ino create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/examples/Example2_AlternatePorts/Example2_AlternatePorts.ino create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/examples/Example3_MAX17044/Example3_MAX17044.ino create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/examples/Example4_MAX17048_KitchenSink/Example4_MAX17048_KitchenSink.ino create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/keywords.txt create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/library.properties create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/src/SparkFun_MAX1704x_Fuel_Gauge_Arduino_Library.cpp create mode 100644 001-homekit_hub/lib/SparkFun MAX1704x Fuel Gauge Arduino Library/src/SparkFun_MAX1704x_Fuel_Gauge_Arduino_Library.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/.gitattributes create mode 100644 001-homekit_hub/lib/TFT_eSPI/.github/ISSUE_TEMPLATE/issue-template.md create mode 100644 001-homekit_hub/lib/TFT_eSPI/.gitignore create mode 100644 001-homekit_hub/lib/TFT_eSPI/.piopm create mode 100644 001-homekit_hub/lib/TFT_eSPI/CMakeLists.txt create mode 100644 001-homekit_hub/lib/TFT_eSPI/Extensions/Button.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/Extensions/Button.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Extensions/Smooth_font.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/Extensions/Smooth_font.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Extensions/Sprite.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/Extensions/Sprite.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Extensions/Touch.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/Extensions/Touch.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Custom/Orbitron_Light_24.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Custom/Orbitron_Light_32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Custom/Roboto_Thin_24.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Custom/Satisfy_24.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Custom/Yellowtail_32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font16.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font16.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font32rle.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font32rle.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font64rle.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font64rle.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font72rle.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font72rle.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font72x53rle.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font72x53rle.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font7srle.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/Font7srle.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMono12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMono18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMono24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMono9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoBold12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoBold18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoBold24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoBold9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoBoldOblique12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoBoldOblique18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoBoldOblique24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoBoldOblique9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoOblique12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoOblique18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoOblique24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeMonoOblique9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSans12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSans18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSans24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSans9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansBold12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansBold18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansBold24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansBold9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansBoldOblique12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansBoldOblique18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansBoldOblique24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansBoldOblique9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansOblique12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansOblique18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansOblique24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSansOblique9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerif12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerif18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerif24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerif9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifBold12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifBold18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifBold24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifBold9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifBoldItalic12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifBoldItalic18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifBoldItalic24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifBoldItalic9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifItalic12pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifItalic18pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifItalic24pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/FreeSerifItalic9pt7b.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/TomThumb.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/gfxfont.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/license.txt create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/GFXFF/print.txt create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/TrueType/Not_yet_supported.txt create mode 100644 001-homekit_hub/lib/TFT_eSPI/Fonts/glcdfont.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Kconfig create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_ESP32.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_ESP32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_ESP32_C3.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_ESP32_C3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_ESP32_S3.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_ESP32_S3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_ESP8266.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_ESP8266.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_Generic.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_Generic.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_RP2040.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_RP2040.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_STM32.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/TFT_eSPI_STM32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/pio_16bit_parallel.pio.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/pio_8bit_parallel.pio.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/pio_8bit_parallel_18bpp.pio.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/pio_SPI.pio.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Processors/pio_SPI_18bit.pio.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/README.md create mode 100644 001-homekit_hub/lib/TFT_eSPI/README.txt create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/EPD_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/GC9A01_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/GC9A01_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/GC9A01_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357B_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357B_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357B_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357C_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357C_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357C_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357D_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357D_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/HX8357D_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9163_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9163_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9163_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9225_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9225_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9225_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9341_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9341_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9341_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9481_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9481_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9481_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9486_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9486_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9486_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9488_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9488_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ILI9488_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/R61581_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/R61581_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/R61581_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/RM68120_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/RM68120_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/RM68120_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/RM68140_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/RM68140_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/RM68140_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/S6D02A1_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/S6D02A1_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/S6D02A1_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/SSD1351_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/SSD1351_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/SSD1351_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/SSD1963_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/SSD1963_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/SSD1963_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7735_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7735_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7735_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7789_2_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7789_2_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7789_2_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7789_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7789_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7789_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7796_Defines.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7796_Init.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_Drivers/ST7796_Rotation.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_config.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_eSPI.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/TFT_eSPI.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Tools/Create_Smooth_Font/Create_font/Create_font.pde create mode 100644 001-homekit_hub/lib/TFT_eSPI/Tools/Create_Smooth_Font/Create_font/FontFiles/Final-Frontier28.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/Tools/Create_Smooth_Font/Create_font/data/Final-Frontier.ttf create mode 100644 001-homekit_hub/lib/TFT_eSPI/Tools/Screenshot_client/Screenshot_client.pde create mode 100644 001-homekit_hub/lib/TFT_eSPI/Tools/bmp2array4bit/README.md create mode 100644 001-homekit_hub/lib/TFT_eSPI/Tools/bmp2array4bit/bmp2array4bit.py create mode 100644 001-homekit_hub/lib/TFT_eSPI/Tools/bmp2array4bit/star.bmp create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setup.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setup_Select.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup0_Sprite.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup100_RP2040_ILI9488_parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup101_RP2040_ILI9481_parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup102_RP2040_ILI9341_parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup103_RP2040_ILI9486_parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup104_RP2040_ST7796_parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup105_RP2040_ST7796_16bit_parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup106_RP2040_ILI9481_16bit_parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup107_RP2040_ILI9341_16bit_parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup108_RP2040_ST7735.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup10_RPi_touch_ILI9486.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup11_RPi_touch_ILI9486.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup12_M5Stack_Basic_Core.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup135_ST7789.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup136_LilyGo_TTV.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup137_LilyGo_TDisplay_RP2040.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup138_Pico_Explorer_Base_RP2040_ST7789.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup13_ILI9481_Parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup14_ILI9341_Parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup15_HX8357D.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup16_ILI9488_Parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup17_ePaper.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup18_ST7789.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup19_RM68140_Parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup1_ILI9341.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup200_GC9A01.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup201_WT32_SC01.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup202_SSD1351_128.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup203_ST7789.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup204_ESP32_TouchDown.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup205_ESP32_TouchDown_S3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup206_LilyGo_T_Display_S3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup207_LilyGo_T_HMI.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup209_LilyGo_T_Dongle_S3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup20_ILI9488.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup210_LilyGo_T_Embed_S3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup211_LilyGo_T_QT_Pro_S3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup212_LilyGo_T_PicoPro.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup213_LilyGo_T_Beam_Shield.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup21_ILI9488.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup22_TTGO_T4.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup22_TTGO_T4_v1.3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup23_TTGO_TM.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup24_ST7789.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup250_ESP32_S3_Box_Lite.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup251_ESP32_S3_Box.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup25_TTGO_T_Display.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup26_TTGO_T_Wristband.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup27_RPi_ST7796_ESP32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup28_RPi_ST7796_ESP8266.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup29_ILI9341_STM32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup29b_ILI9341_STM32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup2_ST7735.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup301_BW16_ST7735.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup302_Waveshare_ESP32S3_GC9A01.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup30_ILI9341_Parallel_STM32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup31_ST7796_Parallel_STM32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup32_ILI9341_STM32F103.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup33_RPi_ILI9486_STM32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup34_ILI9481_Parallel_STM32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup35_ILI9341_STM32_Port_Bus.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup36_RPi_touch_ST7796.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup3_ILI9163.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup42_ILI9341_ESP32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup43_ST7735.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup44_TTGO_CameraPlus.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup45_TTGO_T_Watch.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup46_GC9A01_ESP32.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup47_ST7735.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup4_S6D02A1.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup50_SSD1963_Parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup51_LilyPi_ILI9481.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup52_LilyPi_ST7796.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup5_RPi_ILI9486.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup60_RP2040_ILI9341.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup60_RP2040_RPI_MHS.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup61_RP2040_ILI9341_PIO_SPI.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup62_RP2040_Nano_Connect_ILI9341.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup66_Seeed_XIAO_Round.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup6_RPi_Wr_ILI9486.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup70_ESP32_S2_ILI9341.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup70b_ESP32_S3_ILI9341.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup70c_ESP32_C3_ILI9341.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup70d_ILI9488_S3_Parallel.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup70f_ESP32_S2_ST7735.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup70h_ESP32_S3_GC9A01.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup71_ESP32_S2_ST7789.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup72_ESP32_ST7789_172x320.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup7_ST7735_128x128.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup8_ILI9163_128x128.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/Setup9_ST7735_Overlap.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/SetupX_Template.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/User_Setups/User_Custom_Fonts.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/ZH_ST7789-240-240-from-Setup24.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/ZH_ST7789-240-240.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/Arduino_Life/Arduino_Life.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/Pong_v3/Pong_v3.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/RLE_Font_test/RLE_Font_test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_Char_times/TFT_Char_times.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_Clock/TFT_Clock.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_Clock_Digital/TFT_Clock_Digital.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_Ellipse/TFT_Ellipse.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_Meter_5/TFT_Meter_5.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_Print_Test/TFT_Print_Test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_Rainbow/TFT_Rainbow.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_flash_jpg/TFT_flash_jpg.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_flash_jpg/jpeg1.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_flash_jpg/jpeg2.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_flash_jpg/jpeg3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_flash_jpg/jpeg4.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_graphicstest_PDQ3/TFT_graphicstest_PDQ3.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/TFT_graphicstest_small/TFT_graphicstest_small.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/160 x 128/UTFT_demo_fast/UTFT_demo_fast.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/All_Free_Fonts_Demo/All_Free_Fonts_Demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/All_Free_Fonts_Demo/Free_Fonts.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/Cellular_Automata/Cellular_Automata.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/Free_Font_Demo/Free_Font_Demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/Free_Font_Demo/Free_Fonts.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/Keypad_240x320/Keypad_240x320.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/RLE_Font_test/RLE_Font_test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/Read_ID_bitbash/Read_ID_bitbash.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_ArcFill/TFT_ArcFill.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Char_times/TFT_Char_times.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Clock/TFT_Clock.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Clock_Digital/TFT_Clock_Digital.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Custom_Fonts/TFT_Custom_Fonts.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Ellipse/TFT_Ellipse.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_FillArcSpiral/TFT_FillArcSpiral.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Float_Test/TFT_Float_Test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Mandlebrot/TFT_Mandlebrot.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Matrix/TFT_Matrix.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Meter_linear/TFT_Meter_linear.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Meters/TFT_Meters.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Pie_Chart/TFT_Pie_Chart.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Pong/TFT_Pong.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Print_Test/TFT_Print_Test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Rainbow_one_lib/TFT_Rainbow_one_lib.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Read_Reg/TFT_Read_Reg.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Spiro/TFT_Spiro.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Starfield/TFT_Starfield.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_String_Align/TFT_String_Align.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_Terminal/TFT_Terminal.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_graphicstest_PDQ/TFT_graphicstest_PDQ.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/320 x 240/UTFT_demo/UTFT_demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/Cellular_Automata/Cellular_Automata.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/Demo_3D_cube/Demo_3D_cube.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/Free_Font_Demo/Free_Font_Demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/Free_Font_Demo/Free_Fonts.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/Graph_2/Graph_2.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/Keypad_480x320/Keypad_480x320.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_Char_times/TFT_Char_times.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_Ellipse/TFT_Ellipse.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_Meter_4/TFT_Meter_4.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_Meters/TFT_Meters.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_Padding_demo/TFT_Padding_demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_Print_Test/TFT_Print_Test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_Rainbow480/TFT_Rainbow480.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_String_Align/TFT_String_Align.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_flash_jpg/TFT_flash_jpg.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_flash_jpg/jpeg1.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_flash_jpg/jpeg2.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_flash_jpg/jpeg3.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_flash_jpg/jpeg4.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_graphicstest_one_lib/TFT_graphicstest_one_lib.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_ring_meter/Alert.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/TFT_ring_meter/TFT_ring_meter.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/Touch_Controller_Demo/Touch_Controller_Demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/480 x 320/UTFT_Demo_480x320/UTFT_Demo_480x320.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/DMA test/Bouncy_Circles/Bouncy_Circles.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/DMA test/Flash_Jpg_DMA/Flash_Jpg_DMA.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/DMA test/Flash_Jpg_DMA/panda.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/DMA test/SpriteRotatingCube/SpriteRotatingCube.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/DMA test/boing_ball/boing_ball.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/DMA test/boing_ball/graphic.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/GUI Widgets/Buttons/Button_demo/Button_demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/GUI Widgets/Buttons/Button_demo/Free_Fonts.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/GUI Widgets/Graphs/Graph_demo_1/Graph_demo_1.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/GUI Widgets/Graphs/Graph_demo_2/Graph_demo_2.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/GUI Widgets/Meters/Analogue_meters/Analogue_meters.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/GUI Widgets/Sliders/Slider_demo/Free_Fonts.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/GUI Widgets/Sliders/Slider_demo/Slider_demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/Animated_Eyes_1.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/config.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/catEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/defaultEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/doeEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/dragonEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/goatEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/logo.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/naugaEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/newtEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/noScleraEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/owlEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/data/terminatorEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/eye_functions.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/user.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/user_bat.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_1/user_xmas.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/Animated_Eyes_2.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/config.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/catEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/defaultEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/doeEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/dragonEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/goatEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/logo.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/naugaEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/newtEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/noScleraEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/owlEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/data/terminatorEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/eye_functions.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/user.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/user_bat.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/user_xmas.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Animated_Eyes_2/wiring.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/ESP32_SDcard_jpeg/ESP32_SDcard_jpeg.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/ESP8266_uncannyEyes/ESP8266_uncannyEyes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/ESP8266_uncannyEyes/defaultEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/ESP8266_uncannyEyes/dragonEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/ESP8266_uncannyEyes/goatEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/ESP8266_uncannyEyes/noScleraEye.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/ESP8266_uncannyEyes/screenshotToConsole.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Gradient_Fill/Gradient_Fill.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Julia_Set/Julia_Set.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Local_Custom_Fonts/Local_Custom_Fonts.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Local_Custom_Fonts/MyFont.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/On_Off_Button/On_Off_Button.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_Button_Label_Datum/TFT_Button_Label_Datum.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_Flash_Bitmap/Alert.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_Flash_Bitmap/Close.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_Flash_Bitmap/Info.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_Flash_Bitmap/TFT_Flash_Bitmap.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_SPIFFS_BMP/BMP_functions.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_SPIFFS_BMP/TFT_SPIFFS_BMP.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_SPIFFS_BMP/data/parrot.bmp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_Screen_Capture/TFT_Screen_Capture.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_Screen_Capture/processing_sketch.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/TFT_Screen_Capture/screenServer.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Touch_calibrate/Touch_calibrate.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Viewport_Demo/Viewport_Demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Viewport_Demo/Viewport_commands.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/Viewport_graphicstest/Viewport_graphicstest.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/alphaBlend_Test/alphaBlend_Test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/drawXBitmap/drawXBitmap.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Generic/drawXBitmap/xbm.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/Flash_PNG/Flash_PNG.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/Flash_PNG/panda.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/Flash_transparent_PNG/Flash_transparent_PNG.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/Flash_transparent_PNG/SpongeBob.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/Flash_transparent_PNG/png_support.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/LittleFS_PNG/LittleFS_PNG.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/LittleFS_PNG/PNG_FS_Support.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/LittleFS_PNG_DMA/LittleFS_PNG_DMA.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/PNG Images/LittleFS_PNG_DMA/PNG_FS_Support.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Font_Demo_1_Array.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold15.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_1_Array/NotoSansBold36.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Font_Demo_2_Array.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold15.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_2_Array/NotoSansBold36.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Font_Demo_3_Array.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold15.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansBold36.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_3_Array/NotoSansMonoSCB20.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Font_Demo_4_Array.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold15.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Font_Demo_4_Array/NotoSansBold36.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Final_Frontier_28.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Print_Smooth_Font/Print_Smooth_Font.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold15.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/NotoSansBold36.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Smooth_font_gradient/Smooth_font_gradient.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold15.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/NotoSansBold36.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Unicode_test/Final_Frontier_28.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Unicode_test/Latin_Hiragana_24.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_Test_72.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Unicode_test/Unicode_test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Final-Frontier-28.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Latin-Hiragana-24.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/FLASH_Array/Unicode_test/data/Unicode-Test-72.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_1/Font_Demo_1.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_1/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_1/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_2/Font_Demo_2.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_2/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_2/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_3/Font_Demo_3.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_3/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_4/Font_Demo_4.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_4/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Font_Demo_4/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/Print_Smooth_Font.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Print_Smooth_Font/data/Final-Frontier-28.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/Smooth_font_gradient.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Smooth_font_gradient/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Unicode_test/LittleFS_functions.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Unicode_test/Unicode_test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Unicode_test/data/Final-Frontier-28.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Unicode_test/data/Latin-Hiragana-24.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/LittleFS/Unicode_test/data/Unicode-Test-72.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/ESP32_Smooth_Font_SD.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SD_Card/ESP32_Smooth_Font_SD/data/Final-Frontier-28.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Font_Demo_1.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_1/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_1/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Font_Demo_2.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_2/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_2/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Font_Demo_3.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_3/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_3/data/NotoSansMonoSCB20.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Font_Demo_4.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_4/Notes.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Font_Demo_4/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/Print_Smooth_Font.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Print_Smooth_Font/data/Final-Frontier-28.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/Smooth_font_gradient.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Smooth_font_gradient/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/Smooth_font_reading_TFT.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold15.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Smooth_font_reading_TFT/data/NotoSansBold36.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Unicode_test/SPIFFS_functions.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Unicode_test/Unicode_test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Final-Frontier-28.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Latin-Hiragana-24.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Fonts/SPIFFS/Unicode_test/data/Unicode-Test-72.vlw create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Anti-aliased_Clock/Anti-aliased_Clock.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Anti-aliased_Clock/NTP_Time.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Anti-aliased_Clock/NotoSansBold15.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Arc_meter_demo/Arc_meter_demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Arc_meter_demo/NotoSans_Bold.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Colour_Wheel/Colour_Wheel.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Draw_Arc/Draw_Arc.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Draw_Smooth_Circles/Draw_Smooth_Circles.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Smooth_Arc/Smooth_Arc.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Smooth_Graphics_Demo/Smooth_Graphics_Demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Smooth Graphics/Smooth_Rounded_Rectangles/Smooth_Rounded_Rectangles.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Animated_dial/Animated_dial.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Animated_dial/NotoSansBold36.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Animated_dial/dial.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/One_bit_Sprite_Demo/One_bit_Sprite_Demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/One_bit_Yin_Yang/One_bit_Yin_Yang.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Orrery/Orrery.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Orrery/astronomy.c create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Orrery/astronomy.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Rotated_Sprite_1/Rotated_Sprite_1.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Rotated_Sprite_2/Rotated_Sprite_2.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Rotated_Sprite_3/Rotated_Sprite_3.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_RLE_Font_test/Sprite_RLE_Font_test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_TFT_Rainbow/Sprite_TFT_Rainbow.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_draw/Sprite_draw.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_draw_4bit/Sprite_draw_4bit.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_image_4bit/Sprite_image_4bit.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_image_4bit/sample_images.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_image_4bit/starImage.cpp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_scroll/Sprite_scroll.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_scroll_16bit/Sprite_scroll_16bit.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_scroll_1bit/Sprite_scroll_1bit.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_scroll_4bit/Sprite_scroll_4bit.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_scroll_8bit/Sprite_scroll_8bit.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Sprite_scroll_wrap_1bit/Sprite_scroll_wrap_1bit.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Transparent_Sprite_Demo/Transparent_Sprite_Demo.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Sprite/Transparent_Sprite_Demo_4bit/Transparent_Sprite_Demo_4bit.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Test and diagnostics/Colour_Test/Colour_Test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Test and diagnostics/Read_User_Setup/Read_User_Setup.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Test and diagnostics/TFT_ReadWrite_Test/TFT_ReadWrite_Test.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/Test and diagnostics/Test_Touch_Controller/Test_Touch_Controller.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/ePaper/Floyd_Steinberg/EPD_Support.h create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/ePaper/Floyd_Steinberg/Floyd_Steinberg_BMP.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/ePaper/Floyd_Steinberg/SPIFFS.ino create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/ePaper/Floyd_Steinberg/data/TestCard.bmp create mode 100644 001-homekit_hub/lib/TFT_eSPI/examples/ePaper/Floyd_Steinberg/data/Tiger.bmp create mode 100644 001-homekit_hub/lib/TFT_eSPI/keywords.txt create mode 100644 001-homekit_hub/lib/TFT_eSPI/library.json create mode 100644 001-homekit_hub/lib/TFT_eSPI/library.properties create mode 100644 001-homekit_hub/lib/TFT_eSPI/license.txt create mode 100755 001-homekit_hub/platformio.ini create mode 100644 001-homekit_hub/src/CMakeLists.txt create mode 100644 001-homekit_hub/src/common_config.h create mode 100644 001-homekit_hub/src/data_structure.h create mode 100755 001-homekit_hub/src/devices_config.h create mode 100755 001-homekit_hub/src/main.cpp create mode 100644 001-homekit_hub/src/mqtt-func.h create mode 100644 001-homekit_hub/src/tft_functions.h create mode 100755 001-homekit_sensors/.gitignore create mode 100644 001-homekit_sensors/README.md create mode 100755 001-homekit_sensors/changelog.txt create mode 100755 001-homekit_sensors/comments.txt create mode 100755 001-homekit_sensors/extra_scripts/erase_before_upload.py create mode 100755 001-homekit_sensors/extra_scripts/output_bins.py create mode 100755 001-homekit_sensors/include/README create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/LICENSE create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/README.md create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/01-SimpleLightBulb/01-SimpleLightBulb.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/02-TwoSimpleLightBulbs/02-TwoSimpleLightBulbs.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/03-CeilingFanWithLight/03-CeilingFanWithLight.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/04-AdvancedCeilingFan/04-AdvancedCeilingFan.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/05-WorkingLED/05-WorkingLED.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/05-WorkingLED/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/06-DimmableLED/06-DimmableLED.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/06-DimmableLED/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/07-AccessoryNames/07-AccessoryNames.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/07-AccessoryNames/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/08-Bridges/08-Bridges.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/08-Bridges/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/09-MessageLogging/09-MessageLogging.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/09-MessageLogging/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/10-RGB_LED/10-RGB_LED.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/10-RGB_LED/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/11-ServiceNames/11-ServiceNames.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/12-ServiceLoops/12-ServiceLoops.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/12-ServiceLoops/DEV_Sensors.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/13-TargetStates/13-TargetStates.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/13-TargetStates/DEV_DoorsWindows.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/14-EmulatedPushButtons/14-EmulatedPushButtons.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/14-EmulatedPushButtons/DEV_Blinker.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/15-RealPushButtons/15-RealPushButtons.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/15-RealPushButtons/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/16-ProgrammableSwitches/16-ProgrammableSwitches.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/16-ProgrammableSwitches/DEV_ProgButton.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/17-LinkedServices/17-LinkedServices.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/18-SavingStatus/18-SavingStatus.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/18-SavingStatus/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/19-WebLog/19-WebLog.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/19-WebLog/DEV_LED.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/20-AdvancedTechniques/20-AdvancedTechniques.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/CustomService/CustomService.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/FadingLED/FadingLED.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/MaxAccessories/MaxAccessories.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/MaxAccessories/partitions.csv create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/MotorizedWindowShade/MotorizedWindowShade.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/Pixel/Pixel.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/ProgrammableHub/ProgrammableHub.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteControl/RemoteControl.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteSensors/MainDevice/MainDevice.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteSensors/RemoteDevice/RemoteDevice.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteSensors/RemoteDevice8286/RemoteDevice8286.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/RemoteSensors/RemoteTempSensor/RemoteTempSensor.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/ServoControl/DEV_DoorsWindows.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/ServoControl/ServoControl.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/TableLamp/TableLamp.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/examples/Other Examples/Television/Television.ino create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/library.properties create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/Characteristics.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/FeatherPins.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/HAP.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/HAP.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/HAPConstants.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/HKDF.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/HKDF.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/HapQR.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/HomeSpan.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/HomeSpan.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/Network.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/Network.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/SRP.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/SRP.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/Settings.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/Span.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/TLV.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/Utils.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/Utils.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/extras/Blinker.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/extras/Pixel.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/extras/PwmPin.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/extras/RFControl.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/extras/StepperControl.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/extras/Stepper_A3967.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/extras/Stepper_TB6612.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Blinker.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Blinker.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Pixel.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Pixel.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/PwmPin.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/PwmPin.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/RFControl.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/RFControl.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/StepperControl.cpp create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/StepperControl.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Stepper_A3967.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/Stepper_TB6612.h create mode 100644 001-homekit_sensors/lib/HomeSpan-release-1.8.1-dev/src/src/extras/extras.ino create mode 100755 001-homekit_sensors/lib/README create mode 100755 001-homekit_sensors/platformio.ini create mode 100644 001-homekit_sensors/src/check-charging.h create mode 100755 001-homekit_sensors/src/devices_config.h create mode 100644 001-homekit_sensors/src/espnow-func.h create mode 100755 001-homekit_sensors/src/main.cpp create mode 100644 001-homekit_sensors/src/measure-battery.h create mode 100644 001-homekit_sensors/src/measure-lux.h create mode 100644 001-homekit_sensors/src/measure-temp-hum.h create mode 100644 001-homekit_sensors/src/wifi-func.h diff --git a/001-homekit_hub/.gitignore b/001-homekit_hub/.gitignore new file mode 100755 index 0000000..54d5047 --- /dev/null +++ b/001-homekit_hub/.gitignore @@ -0,0 +1,4 @@ +.pio +.vscode +src/passwords.h +src/passwords_ftp.h diff --git a/001-homekit_hub/CMakeLists.txt b/001-homekit_hub/CMakeLists.txt new file mode 100755 index 0000000..539040a --- /dev/null +++ b/001-homekit_hub/CMakeLists.txt @@ -0,0 +1,3 @@ +cmake_minimum_required(VERSION 3.16.0) +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(hub) diff --git a/001-homekit_hub/README.md b/001-homekit_hub/README.md new file mode 100644 index 0000000..14de839 --- /dev/null +++ b/001-homekit_hub/README.md @@ -0,0 +1,7 @@ +# 001-HomeKit_hub + + + +## Getting started +This is HomeKit hub for remote sensors. +Based on https://github.com/HomeSpan/HomeSpan \ No newline at end of file diff --git a/001-homekit_hub/changelog.txt b/001-homekit_hub/changelog.txt new file mode 100755 index 0000000..f3c03cd --- /dev/null +++ b/001-homekit_hub/changelog.txt @@ -0,0 +1,2 @@ +2024-07-20: +- 2.3.4a - pushed clean version to public \ No newline at end of file diff --git a/001-homekit_hub/extra_scripts/erase_before_upload.py b/001-homekit_hub/extra_scripts/erase_before_upload.py new file mode 100755 index 0000000..7f9bf75 --- /dev/null +++ b/001-homekit_hub/extra_scripts/erase_before_upload.py @@ -0,0 +1,11 @@ +Import("env") + +old_uploaderflags = env["UPLOADERFLAGS"] +#print("Old uploaderflags: " + str(old_uploaderflags)) + +index_write_flash = old_uploaderflags.index("write_flash") +if index_write_flash != -1: + new_uploaderflags = old_uploaderflags[::] + new_uploaderflags.insert(index_write_flash + 1, "--erase-all") + #print("Replaced with: " + str(new_uploaderflags)) + env.Replace(UPLOADERFLAGS=new_uploaderflags) \ No newline at end of file diff --git a/001-homekit_hub/extra_scripts/output_bins.py b/001-homekit_hub/extra_scripts/output_bins.py new file mode 100755 index 0000000..184e725 --- /dev/null +++ b/001-homekit_hub/extra_scripts/output_bins.py @@ -0,0 +1,138 @@ +Import('env') +use_ftp = 'y' + +# Troubleshooting python modules ================================ +# https://docs.platformio.org/en/stable/scripting/examples/extra_python_packages.html +# List installed packages +# env.Execute("$PYTHONEXE -m pip list") + +# Install custom packages from the PyPi registry +# env.Execute("$PYTHONEXE -m pip install python-dotenv") + +# Install missed package +# try: +# import dotenv +# except ImportError: +# env.Execute("$PYTHONEXE -m pip install python-dotenv") +# Troubleshooting python modules END ============================= + +import os +import shutil +import subprocess +import ftplib +# for passwords +from dotenv import dotenv_values +from dotenv import set_key +from dotenv import get_key + +OUTPUT_DIR = "/Volumes/scripts/scripts/001-esp-firmware/esp/02-homekit/001-fv{}".format(os.path.sep) + +config = env.GetProjectConfig() +version = config.get("program_customisation", "version") +client = config.get("program_customisation", "client") + +def _get_cpp_define_value(env, define): + define_list = [item[-1] for item in env["CPPDEFINES"] if item[0] == define] + + if define_list: + return define_list[0] + + return None + +def _create_dirs(dirs=["firmware"]): + # check if output directories exist and create if necessary + if not os.path.isdir(OUTPUT_DIR): + os.mkdir(OUTPUT_DIR) + + for d in dirs: + if not os.path.isdir("{}{}".format(OUTPUT_DIR, d)): + os.mkdir("{}{}".format(OUTPUT_DIR, d)) + +def bin_rename_copy(source, target, env): + print() + print("============== bin_rename_copy =================================") + _create_dirs() + variant = env["PIOENV"] + bin_file = "{}firmware{}{}.bin".format(OUTPUT_DIR, os.path.sep, variant) + fw_file = "{}.bin".format(variant) + ver_file = "{}.bin.version".format(variant) + print("firmware file:",fw_file) + print("version file:",ver_file) + print("version:",version) + print("client:",client) + shutil.copy(str(target[0]), bin_file) + +# version file + version_file = "{}firmware{}{}.bin.version".format(OUTPUT_DIR, os.path.sep, variant) + config = env.GetProjectConfig() + ver = config.get("program_customisation", "version") + ver = ver.replace('"', '') + print("version compiled (inside version file):",ver) + file = open(version_file,"w") + file.write(ver) + file.close() + + + + # ftp transfer + # get credentials: + if (use_ftp != 'y'): + print("============== FTP ===========================================") + print("NOT sending firmware to ftp server") + print("============== FTP END =======================================") + print() + else: + print() + print("============== FTP DETAILS =================================") + print("Uploading firmware to ftp server...") + password_file=(os.getcwd()) + "/src/passwords_ftp.h" + # print("password_file: ",password_file) + config = dotenv_values(password_file) + FTP_HOST=config['FTP_HOST'] + # print("host=",FTP_HOST) + FTP_USER=config['FTP_USER'] + # print("user=",FTP_USER) + FTP_PASSWORD=config['FTP_PASSWORD'] + # print("password=",FTP_PASSWORD) + FTP_DEST_DIR=config['FTP_DEST_DIR'] + print("destination folder: ftp://",FTP_HOST,"/",FTP_DEST_DIR,sep='') + print() + print("============== TRANSFER FIRMWARE FILE ==========================") + ftp = ftplib.FTP_TLS(FTP_HOST) + ftp.login(FTP_USER, FTP_PASSWORD) + ftp.prot_p() + # print("landing dir: ",ftp.pwd()) + # print("content:") + # ftp.dir() + ftp.cwd(FTP_DEST_DIR) + # print("dest dir: ",ftp.pwd()) + # print("content:") + # ftp.dir() + + # bin_file + print("Firmware file to store: ",bin_file) + file = open(bin_file,"rb") + command = "STOR " + fw_file + ftp.storbinary(command, file) + file.close() + + print() + print("============== TRANSFER VERSION FILE ===========================") + # version_file + print("Version file to store: ",version_file) + file = open(version_file,"rb") + command = "STOR " + ver_file + ftp.storbinary(command, file) + file.close() + + print() + print("============== FTP RESULTS: ====================================") + print("destination folder: ",ftp.pwd()) + print("content after transfer:") + ftp.dir() + ftp.close() + print("============== FTP END ========================================") + print() + + +env.AddPostAction("$BUILD_DIR/${PROGNAME}.bin", [bin_rename_copy]) diff --git a/001-homekit_hub/include/README b/001-homekit_hub/include/README new file mode 100755 index 0000000..194dcd4 --- /dev/null +++ b/001-homekit_hub/include/README @@ -0,0 +1,39 @@ + +This directory is intended for project header files. + +A header file is a file containing C declarations and macro definitions +to be shared between several project source files. You request the use of a +header file in your project source file (C, C++, etc) located in `src` folder +by including it, with the C preprocessing directive `#include'. + +```src/main.c + +#include "header.h" + +int main (void) +{ + ... +} +``` + +Including a header file produces the same results as copying the header file +into each source file that needs it. Such copying would be time-consuming +and error-prone. With a header file, the related declarations appear +in only one place. If they need to be changed, they can be changed in one +place, and programs that include the header file will automatically use the +new version when next recompiled. The header file eliminates the labor of +finding and changing all the copies as well as the risk that a failure to +find one copy will result in inconsistencies within a program. + +In C, the usual convention is to give header files names that end with `.h'. +It is most portable to use only letters, digits, dashes, and underscores in +header file names, and at most one dot. + +Read more about using header files in official GCC documentation: + +* Include Syntax +* Include Operation +* Once-Only Headers +* Computed Includes + +https://gcc.gnu.org/onlinedocs/cpp/Header-Files.html diff --git a/001-homekit_hub/lib/ArduinoJson/.piopm b/001-homekit_hub/lib/ArduinoJson/.piopm new file mode 100644 index 0000000..3229151 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/.piopm @@ -0,0 +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 diff --git a/001-homekit_hub/lib/ArduinoJson/ArduinoJson.h b/001-homekit_hub/lib/ArduinoJson/ArduinoJson.h new file mode 100644 index 0000000..15c218f --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/ArduinoJson.h @@ -0,0 +1,5 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#include "src/ArduinoJson.h" diff --git a/001-homekit_hub/lib/ArduinoJson/LICENSE.txt b/001-homekit_hub/lib/ArduinoJson/LICENSE.txt new file mode 100644 index 0000000..15f1b9f --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/LICENSE.txt @@ -0,0 +1,10 @@ +The MIT License (MIT) +--------------------- + +Copyright © 2014-2023, 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: + +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/001-homekit_hub/lib/ArduinoJson/README.md b/001-homekit_hub/lib/ArduinoJson/README.md new file mode 100644 index 0000000..96879e0 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/README.md @@ -0,0 +1,161 @@ +

+ ArduinoJson +

+ +--- + +[![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) +[![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) +[![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) + +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) + * 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/) +* 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 converters](https://arduinojson.org/news/2021/05/04/version-6-18-0/) +* Portable + * Usable on any C++ project (not limited to Arduino) + * Compatible with C++11, C++14 and C++17 + * Support for C++98/C++03 available on [ArduinoJson 6.20.x](https://github.com/bblanchon/ArduinoJson/tree/6.20.x) + * Zero warnings with `-Wall -Wextra -pedantic` and `/W4` + * [Header-only library](https://en.wikipedia.org/wiki/Header-only) + * Works with virtually any board + * Arduino boards: [Uno](https://amzn.to/38aL2ik), [Due](https://amzn.to/36YkWi2), [Micro](https://amzn.to/35WkdwG), [Nano](https://amzn.to/2QTvwRX), [Mega](https://amzn.to/36XWhuf), [Yun](https://amzn.to/30odURc), [Leonardo](https://amzn.to/36XWjlR)... + * Espressif chips: [ESP8266](https://amzn.to/36YluV8), [ESP32](https://amzn.to/2G4pRCB) + * Lolin (WeMos) boards: [D1 mini](https://amzn.to/2QUpz7q), [D1 Mini Pro](https://amzn.to/36UsGSs)... + * Teensy boards: [4.0](https://amzn.to/30ljXGq), [3.2](https://amzn.to/2FT0EuC), [2.0](https://amzn.to/2QXUMXj) + * Particle boards: [Argon](https://amzn.to/2FQHa9X), [Boron](https://amzn.to/36WgLUd), [Electron](https://amzn.to/30vEc4k), [Photon](https://amzn.to/387F9Cd)... + * Texas Instruments boards: [MSP430](https://amzn.to/30nJWgg)... + * Soft cores: [Nios II](https://en.wikipedia.org/wiki/Nios_II)... + * Tested on all major development environments + * [Arduino IDE](https://www.arduino.cc/en/Main/Software) + * [Atmel Studio](http://www.atmel.com/microsite/atmel-studio/) + * [Atollic TrueSTUDIO](https://atollic.com/truestudio/) + * [Energia](http://energia.nu/) + * [IAR Embedded Workbench](https://www.iar.com/iar-embedded-workbench/) + * [Keil uVision](http://www.keil.com/) + * [MPLAB X IDE](http://www.microchip.com/mplab/mplab-x-ide) + * [Particle](https://www.particle.io/) + * [PlatformIO](http://platformio.org/) + * [Sloeber plugin for Eclipse](https://eclipse.baeyens.it/) + * [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/) +* Well designed + * [Elegant API](http://arduinojson.org/v6/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/) + * [TMP friendly](https://en.wikipedia.org/wiki/Template_metaprogramming) + * Handles [integer overflows](https://arduinojson.org/v6/api/jsonvariant/as/#integer-overflows) +* Well tested + * [Unit test coverage close to 100%](https://coveralls.io/github/bblanchon/ArduinoJson?branch=6.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) + * [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/) + * [Book](https://arduinojson.org/book/) + * [Changelog](CHANGELOG.md) +* Vibrant user community + * Most popular of all Arduino libraries on [GitHub](https://github.com/search?o=desc&q=arduino+library&s=stars&type=Repositories) + * [Used in hundreds of projects](https://www.hackster.io/search?i=projects&q=arduinojson) + * [Responsive support](https://github.com/bblanchon/ArduinoJson/issues?q=is%3Aissue+is%3Aclosed) + +## Quickstart + +### Deserialization + +Here is a program that parses a JSON document with ArduinoJson. + +```c++ +char json[] = "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; + +DynamicJsonDocument doc(1024); +deserializeJson(doc, json); + +const char* sensor = doc["sensor"]; +long time = doc["time"]; +double latitude = doc["data"][0]; +double longitude = doc["data"][1]; +``` + +See the [tutorial on arduinojson.org](https://arduinojson.org/v6/doc/deserialization/) + +### Serialization + +Here is a program that generates a JSON document with ArduinoJson: + +```c++ +DynamicJsonDocument doc(1024); + +doc["sensor"] = "gps"; +doc["time"] = 1351824120; +doc["data"][0] = 48.756080; +doc["data"][1] = 2.302038; + +serializeJson(doc, Serial); +// This prints: +// {"sensor":"gps","time":1351824120,"data":[48.756080,2.302038]} +``` + +See the [tutorial on arduinojson.org](https://arduinojson.org/v6/doc/serialization/) + +## Sponsors + +ArduinoJson is thankful to its sponsors. Please give them a visit; they deserve it! + +

+ + Programming Electronics Academy + +

+

+ + 1technophile + +

+ +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. + +If you are an individual user and want to support the development (or give a sign of appreciation), consider purchasing the book [Mastering ArduinoJson](https://arduinojson.org/book/) ❤, or simply [cast a star](https://github.com/bblanchon/ArduinoJson/stargazers) ⭐. diff --git a/001-homekit_hub/lib/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino b/001-homekit_hub/lib/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino new file mode 100644 index 0000000..b2819d5 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/JsonConfigFile/JsonConfigFile.ino @@ -0,0 +1,160 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows how to store your project configuration in a file. +// It uses the SD library but can be easily modified for any other file-system. +// +// The file contains a JSON document with the following content: +// { +// "hostname": "examples.com", +// "port": 2731 +// } +// +// To run this program, you need an SD card connected to the SPI bus as follows: +// * MOSI <-> pin 11 +// * MISO <-> pin 12 +// * CLK <-> pin 13 +// * CS <-> pin 4 +// +// https://arduinojson.org/v6/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 +Config config; // <- global configuration object + +// Loads the configuration from a file +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; + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, file); + if (error) + Serial.println(F("Failed to read file, using default configuration")); + + // Copy values from the JsonDocument to the Config + config.port = doc["port"] | 2731; + strlcpy(config.hostname, // <- destination + doc["hostname"] | "example.com", // <- source + sizeof(config.hostname)); // <- destination's capacity + + // Close the file (Curiously, File's destructor doesn't close the file) + file.close(); +} + +// Saves the configuration to a file +void saveConfiguration(const char *filename, const Config &config) { + // Delete existing file, otherwise the configuration is appended to the file + SD.remove(filename); + + // Open file for writing + File file = SD.open(filename, FILE_WRITE); + if (!file) { + Serial.println(F("Failed to create file")); + return; + } + + // 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; + + // Set the values in the document + doc["hostname"] = config.hostname; + doc["port"] = config.port; + + // Serialize JSON to file + if (serializeJson(doc, file) == 0) { + Serial.println(F("Failed to write to file")); + } + + // Close the file + file.close(); +} + +// Prints the content of a file to the Serial +void printFile(const char *filename) { + // Open file for reading + File file = SD.open(filename); + if (!file) { + Serial.println(F("Failed to read file")); + return; + } + + // Extract each characters by one by one + while (file.available()) { + Serial.print((char)file.read()); + } + Serial.println(); + + // Close the file + file.close(); +} + +void setup() { + // Initialize serial port + Serial.begin(9600); + while (!Serial) continue; + + // Initialize SD library + const int chipSelect = 4; + while (!SD.begin(chipSelect)) { + Serial.println(F("Failed to initialize SD library")); + delay(1000); + } + + // Should load default config if run for the first time + Serial.println(F("Loading configuration...")); + loadConfiguration(filename, config); + + // Create configuration file + Serial.println(F("Saving configuration...")); + saveConfiguration(filename, config); + + // Dump config file + Serial.println(F("Print config file...")); + printFile(filename); +} + +void loop() { + // not used in this example +} + +// Performance issue? +// ------------------ +// +// File is an unbuffered stream, which is not optimal for ArduinoJson. +// See: https://arduinojson.org/v6/how-to/improve-speed/ + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any +// serialization or deserialization problem. +// +// The book "Mastering ArduinoJson" contains a case study of a project that has +// a complex configuration with nested members. +// Contrary to this example, the project in the book uses the SPIFFS filesystem. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino b/001-homekit_hub/lib/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino new file mode 100644 index 0000000..6937a00 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/JsonFilterExample/JsonFilterExample.ino @@ -0,0 +1,63 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows how to use DeserializationOption::Filter +// +// https://arduinojson.org/v6/example/filter/ + +#include + +void setup() { + // Initialize serial port + Serial.begin(9600); + while (!Serial) continue; + + // The huge input: an extract from OpenWeatherMap response + auto input_json = F( + "{\"cod\":\"200\",\"message\":0,\"list\":[{\"dt\":1581498000,\"main\":{" + "\"temp\":3.23,\"feels_like\":-3.63,\"temp_min\":3.23,\"temp_max\":4.62," + "\"pressure\":1014,\"sea_level\":1014,\"grnd_level\":1010,\"humidity\":" + "58,\"temp_kf\":-1.39},\"weather\":[{\"id\":800,\"main\":\"Clear\"," + "\"description\":\"clear " + "sky\",\"icon\":\"01d\"}],\"clouds\":{\"all\":0},\"wind\":{\"speed\":6." + "19,\"deg\":266},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-12 " + "09:00:00\"},{\"dt\":1581508800,\"main\":{\"temp\":6.09,\"feels_like\":-" + "1.07,\"temp_min\":6.09,\"temp_max\":7.13,\"pressure\":1015,\"sea_" + "level\":1015,\"grnd_level\":1011,\"humidity\":48,\"temp_kf\":-1.04}," + "\"weather\":[{\"id\":800,\"main\":\"Clear\",\"description\":\"clear " + "sky\",\"icon\":\"01d\"}],\"clouds\":{\"all\":9},\"wind\":{\"speed\":6." + "64,\"deg\":268},\"sys\":{\"pod\":\"d\"},\"dt_txt\":\"2020-02-12 " + "12:00:00\"}],\"city\":{\"id\":2643743,\"name\":\"London\",\"coord\":{" + "\"lat\":51.5085,\"lon\":-0.1257},\"country\":\"GB\",\"population\":" + "1000000,\"timezone\":0,\"sunrise\":1581492085,\"sunset\":1581527294}}"); + + // The filter: it contains "true" for each value we want to keep + StaticJsonDocument<200> filter; + filter["list"][0]["dt"] = true; + filter["list"][0]["main"]["temp"] = true; + + // Deserialize the document + StaticJsonDocument<400> doc; + deserializeJson(doc, input_json, DeserializationOption::Filter(filter)); + + // Print the result + serializeJsonPretty(doc, Serial); +} + +void loop() { + // not used in this example +} + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any +// deserialization problem. +// +// The book "Mastering ArduinoJson" contains a tutorial on deserialization. +// It begins with a simple example, like the one above, and then adds more +// features like deserializing directly from a file or an HTTP request. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino b/001-homekit_hub/lib/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino new file mode 100644 index 0000000..cf4ab0d --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/JsonGeneratorExample/JsonGeneratorExample.ino @@ -0,0 +1,77 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows how to generate a JSON document with ArduinoJson. +// +// https://arduinojson.org/v6/example/generator/ + +#include + +void setup() { + // Initialize Serial port + Serial.begin(9600); + 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); + + // Add values in the document + // + doc["sensor"] = "gps"; + doc["time"] = 1351824120; + + // Add an array. + // + JsonArray data = doc.createNestedArray("data"); + data.add(48.756080); + data.add(2.302038); + + // 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]} + + // Start a new line + Serial.println(); + + // Generate the prettified JSON and send it to the Serial port. + // + serializeJsonPretty(doc, Serial); + // The above line prints: + // { + // "sensor": "gps", + // "time": 1351824120, + // "data": [ + // 48.756080, + // 2.302038 + // ] + // } +} + +void loop() { + // not used in this example +} + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any +// serialization problem. +// +// The book "Mastering ArduinoJson" contains a tutorial on serialization. +// It begins with a simple example, like the one above, and then adds more +// features like serializing directly to a file or an HTTP request. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino b/001-homekit_hub/lib/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino new file mode 100644 index 0000000..72f311f --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/JsonHttpClient/JsonHttpClient.ino @@ -0,0 +1,126 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows how to parse a JSON document in an HTTP response. +// It uses the Ethernet library, but can be easily adapted for Wifi. +// +// It performs a GET resquest on https://arduinojson.org/example.json +// Here is the expected response: +// { +// "sensor": "gps", +// "time": 1351824120, +// "data": [ +// 48.756080, +// 2.302038 +// ] +// } +// +// https://arduinojson.org/v6/example/http-client/ + +#include +#include +#include + +void setup() { + // Initialize Serial port + Serial.begin(9600); + while (!Serial) continue; + + // Initialize Ethernet library + byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; + if (!Ethernet.begin(mac)) { + Serial.println(F("Failed to configure Ethernet")); + return; + } + delay(1000); + + Serial.println(F("Connecting...")); + + // Connect to HTTP server + EthernetClient client; + client.setTimeout(10000); + if (!client.connect("arduinojson.org", 80)) { + Serial.println(F("Connection failed")); + return; + } + + Serial.println(F("Connected!")); + + // Send HTTP request + client.println(F("GET /example.json HTTP/1.0")); + client.println(F("Host: arduinojson.org")); + client.println(F("Connection: close")); + if (client.println() == 0) { + Serial.println(F("Failed to send request")); + client.stop(); + return; + } + + // Check HTTP status + char status[32] = {0}; + client.readBytesUntil('\r', status, sizeof(status)); + // It should be "HTTP/1.0 200 OK" or "HTTP/1.1 200 OK" + if (strcmp(status + 9, "200 OK") != 0) { + Serial.print(F("Unexpected response: ")); + Serial.println(status); + client.stop(); + return; + } + + // Skip HTTP headers + char endOfHeaders[] = "\r\n\r\n"; + if (!client.find(endOfHeaders)) { + Serial.println(F("Invalid response")); + client.stop(); + return; + } + + // 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); + + // Parse JSON object + DeserializationError error = deserializeJson(doc, client); + if (error) { + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.f_str()); + client.stop(); + return; + } + + // Extract values + Serial.println(F("Response:")); + Serial.println(doc["sensor"].as()); + Serial.println(doc["time"].as()); + Serial.println(doc["data"][0].as(), 6); + Serial.println(doc["data"][1].as(), 6); + + // Disconnect + client.stop(); +} + +void loop() { + // not used in this example +} + +// Performance issue? +// ------------------ +// +// EthernetClient is an unbuffered stream, which is not optimal for ArduinoJson. +// See: https://arduinojson.org/v6/how-to/improve-speed/ + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any +// serialization problem. +// +// The book "Mastering ArduinoJson" contains a tutorial on deserialization +// showing how to parse the response from GitHub's API. In the last chapter, +// it shows how to parse the huge documents from OpenWeatherMap +// and Reddit. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino b/001-homekit_hub/lib/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino new file mode 100644 index 0000000..a9d8b6d --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/JsonParserExample/JsonParserExample.ino @@ -0,0 +1,80 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows how to deserialize a JSON document with ArduinoJson. +// +// https://arduinojson.org/v6/example/parser/ + +#include + +void setup() { + // Initialize serial port + Serial.begin(9600); + 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); + + // 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[] = + "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; + + // Deserialize the JSON document + DeserializationError error = deserializeJson(doc, json); + + // Test if parsing succeeds. + if (error) { + Serial.print(F("deserializeJson() failed: ")); + Serial.println(error.f_str()); + return; + } + + // Fetch values. + // + // Most of the time, you can rely on the implicit casts. + // In other case, you can do doc["time"].as(); + const char* sensor = doc["sensor"]; + long time = doc["time"]; + double latitude = doc["data"][0]; + double longitude = doc["data"][1]; + + // Print values. + Serial.println(sensor); + Serial.println(time); + Serial.println(latitude, 6); + Serial.println(longitude, 6); +} + +void loop() { + // not used in this example +} + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any +// deserialization problem. +// +// The book "Mastering ArduinoJson" contains a tutorial on deserialization. +// It begins with a simple example, like the one above, and then adds more +// features like deserializing directly from a file or an HTTP request. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/examples/JsonServer/JsonServer.ino b/001-homekit_hub/lib/ArduinoJson/examples/JsonServer/JsonServer.ino new file mode 100644 index 0000000..a897fce --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/JsonServer/JsonServer.ino @@ -0,0 +1,117 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows how to implement an HTTP server that sends a JSON document +// in the response. +// It uses the Ethernet library but can be easily adapted for Wifi. +// +// The JSON document contains the values of the analog and digital pins. +// It looks like that: +// { +// "analog": [0, 76, 123, 158, 192, 205], +// "digital": [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0] +// } +// +// https://arduinojson.org/v6/example/http-server/ + +#include +#include +#include + +byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; +EthernetServer server(80); + +void setup() { + // Initialize serial port + Serial.begin(9600); + while (!Serial) continue; + + // Initialize Ethernet libary + if (!Ethernet.begin(mac)) { + Serial.println(F("Failed to initialize Ethernet library")); + return; + } + + // Start to listen + server.begin(); + + Serial.println(F("Server is ready.")); + Serial.print(F("Please connect to http://")); + Serial.println(Ethernet.localIP()); +} + +void loop() { + // Wait for an incomming connection + EthernetClient client = server.available(); + + // Do we have a client? + if (!client) + return; + + Serial.println(F("New client")); + + // Read the request (we ignore the content in this example) + while (client.available()) client.read(); + + // Allocate a temporary JsonDocument + // Use https://arduinojson.org/v6/assistant to compute the capacity. + StaticJsonDocument<500> doc; + + // Create the "analog" array + JsonArray analogValues = doc.createNestedArray("analog"); + for (int pin = 0; pin < 6; pin++) { + // Read the analog input + int value = analogRead(pin); + + // Add the value at the end of the array + analogValues.add(value); + } + + // Create the "digital" array + JsonArray digitalValues = doc.createNestedArray("digital"); + for (int pin = 0; pin < 14; pin++) { + // Read the digital input + int value = digitalRead(pin); + + // Add the value at the end of the array + digitalValues.add(value); + } + + Serial.print(F("Sending: ")); + serializeJson(doc, Serial); + Serial.println(); + + // Write response headers + client.println(F("HTTP/1.0 200 OK")); + client.println(F("Content-Type: application/json")); + client.println(F("Connection: close")); + client.print(F("Content-Length: ")); + client.println(measureJsonPretty(doc)); + client.println(); + + // Write JSON document + serializeJsonPretty(doc, client); + + // Disconnect + client.stop(); +} + +// Performance issue? +// ------------------ +// +// EthernetClient is an unbuffered stream, which is not optimal for ArduinoJson. +// See: https://arduinojson.org/v6/how-to/improve-speed/ + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any +// serialization problem. +// +// The book "Mastering ArduinoJson" contains a tutorial on serialization. +// It begins with a simple example, then adds more features like serializing +// directly to a file or an HTTP client. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino b/001-homekit_hub/lib/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino new file mode 100644 index 0000000..6c369fa --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/JsonUdpBeacon/JsonUdpBeacon.ino @@ -0,0 +1,106 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows how to send a JSON document to a UDP socket. +// At regular interval, it sends a UDP packet that contains the status of +// analog and digital pins. +// It looks like that: +// { +// "analog": [0, 76, 123, 158, 192, 205], +// "digital": [1, 1, 0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 0, 0] +// } +// +// If you want to test this program, you need to be able to receive the UDP +// packets. +// For example, you can run netcat on your computer +// $ ncat -ulp 8888 +// See https://nmap.org/ncat/ +// +// https://arduinojson.org/v6/example/udp-beacon/ + +#include +#include +#include + +byte mac[] = {0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED}; +IPAddress remoteIp(192, 168, 0, 108); // <- EDIT!!!! +unsigned short remotePort = 8888; +unsigned short localPort = 8888; +EthernetUDP udp; + +void setup() { + // Initialize serial port + Serial.begin(9600); + while (!Serial) continue; + + // Initialize Ethernet libary + if (!Ethernet.begin(mac)) { + Serial.println(F("Failed to initialize Ethernet library")); + return; + } + + // Enable UDP + udp.begin(localPort); +} + +void loop() { + // Allocate a temporary JsonDocument + // Use https://arduinojson.org/v6/assistant to compute the capacity. + StaticJsonDocument<500> doc; + + // Create the "analog" array + JsonArray analogValues = doc.createNestedArray("analog"); + for (int pin = 0; pin < 6; pin++) { + // Read the analog input + int value = analogRead(pin); + + // Add the value at the end of the array + analogValues.add(value); + } + + // Create the "digital" array + JsonArray digitalValues = doc.createNestedArray("digital"); + for (int pin = 0; pin < 14; pin++) { + // Read the digital input + int value = digitalRead(pin); + + // Add the value at the end of the array + digitalValues.add(value); + } + + // Log + Serial.print(F("Sending to ")); + Serial.print(remoteIp); + Serial.print(F(" on port ")); + Serial.println(remotePort); + serializeJson(doc, Serial); + + // Send UDP packet + udp.beginPacket(remoteIp, remotePort); + serializeJson(doc, udp); + udp.println(); + udp.endPacket(); + + // Wait + delay(10000); +} + +// Performance issue? +// ------------------ +// +// EthernetUDP is an unbuffered stream, which is not optimal for ArduinoJson. +// See: https://arduinojson.org/v6/how-to/improve-speed/ + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any +// serialization problem. +// +// The book "Mastering ArduinoJson" contains a tutorial on serialization. +// It begins with a simple example, then adds more features like serializing +// directly to a file or any stream. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino b/001-homekit_hub/lib/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino new file mode 100644 index 0000000..1a54c3b --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/MsgPackParser/MsgPackParser.ino @@ -0,0 +1,75 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows how to deserialize a MessagePack document with +// ArduinoJson. +// +// https://arduinojson.org/v6/example/msgpack-parser/ + +#include + +void setup() { + // Initialize serial port + Serial.begin(9600); + 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; + + // 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. + 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, + 112, 203, 64, 2, 106, 146, 230, 33, 49, 169}; + // This MessagePack document contains: + // { + // "sensor": "gps", + // "time": 1351824120, + // "data": [48.75608, 2.302038] + // } + + DeserializationError error = deserializeMsgPack(doc, input); + + // Test if parsing succeeded. + if (error) { + Serial.print("deserializeMsgPack() failed: "); + Serial.println(error.f_str()); + return; + } + + // Fetch values. + // + // Most of the time, you can rely on the implicit casts. + // In other case, you can do doc["time"].as(); + const char* sensor = doc["sensor"]; + long time = doc["time"]; + double latitude = doc["data"][0]; + double longitude = doc["data"][1]; + + // Print values. + Serial.println(sensor); + Serial.println(time); + Serial.println(latitude, 6); + Serial.println(longitude, 6); +} + +void loop() { + // not used in this example +} diff --git a/001-homekit_hub/lib/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino b/001-homekit_hub/lib/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino new file mode 100644 index 0000000..68b8ec5 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/ProgmemExample/ProgmemExample.ino @@ -0,0 +1,63 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows the different ways you can use Flash strings with +// ArduinoJson. +// +// Use Flash strings sparingly, because ArduinoJson duplicates them in the +// 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/ + +#include + +void setup() { + DynamicJsonDocument doc(1024); + + // You can use a Flash String as your JSON input. + // WARNING: the strings in the input will be duplicated in the JsonDocument. + deserializeJson(doc, F("{\"sensor\":\"gps\",\"time\":1351824120," + "\"data\":[48.756080,2.302038]}")); + + // You can use a Flash String as a key to get a member from JsonDocument + // No duplication is done. + long time = doc[F("time")]; + + // You can use a Flash String as a key to set a member of a JsonDocument + // WARNING: the content of the Flash String will be duplicated in the + // JsonDocument. + doc[F("time")] = time; + + // You can set a Flash String as the content of a JsonVariant + // WARNING: the content of the Flash String will be duplicated in the + // JsonDocument. + doc["sensor"] = F("gps"); + + // It works with serialized() too: + doc["sensor"] = serialized(F("\"gps\"")); + doc["sensor"] = serialized(F("\xA3gps"), 3); + + // You can compare the content of a JsonVariant to a Flash String + if (doc["sensor"] == F("gps")) { + // ... + } +} + +void loop() { + // not used in this example +} + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any memory +// problem. +// +// The book "Mastering ArduinoJson" contains a quick C++ course that explains +// how your microcontroller stores strings in memory. It also tells why you +// should not abuse Flash strings with ArduinoJson. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/examples/StringExample/StringExample.ino b/001-homekit_hub/lib/ArduinoJson/examples/StringExample/StringExample.ino new file mode 100644 index 0000000..3e51b91 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/examples/StringExample/StringExample.ino @@ -0,0 +1,77 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License +// +// This example shows the different ways you can use String with ArduinoJson. +// +// Use String objects sparingly, because ArduinoJson duplicates them in the +// 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/ + +#include + +void setup() { + DynamicJsonDocument doc(1024); + + // You can use a String as your JSON input. + // WARNING: the string in the input will be duplicated in the JsonDocument. + String input = + "{\"sensor\":\"gps\",\"time\":1351824120,\"data\":[48.756080,2.302038]}"; + deserializeJson(doc, input); + + // You can use a String as a key to get a member from JsonDocument + // No duplication is done. + long time = doc[String("time")]; + + // You can use a String as a key to set a member of a JsonDocument + // WARNING: the content of the String will be duplicated in the JsonDocument. + doc[String("time")] = time; + + // You can get the content of a JsonVariant as a String + // No duplication is done, at least not in the JsonDocument. + String sensor = doc["sensor"]; + + // Unfortunately, the following doesn't work (issue #118): + // sensor = doc["sensor"]; // <- error "ambiguous overload for 'operator='" + // As a workaround, you need to replace by: + sensor = doc["sensor"].as(); + + // You can set a String as the content of a JsonVariant + // WARNING: the content of the String will be duplicated in the JsonDocument. + doc["sensor"] = sensor; + + // It works with serialized() too: + doc["sensor"] = serialized(sensor); + + // You can also concatenate strings + // WARNING: the content of the String will be duplicated in the JsonDocument. + doc[String("sen") + "sor"] = String("gp") + "s"; + + // You can compare the content of a JsonObject with a String + if (doc["sensor"] == sensor) { + // ... + } + + // 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); +} + +void loop() { + // not used in this example +} + +// See also +// -------- +// +// https://arduinojson.org/ contains the documentation for all the functions +// used above. It also includes an FAQ that will help you solve any problem. +// +// The book "Mastering ArduinoJson" contains a quick C++ course that explains +// how your microcontroller stores strings in memory. On several occasions, it +// shows how you can avoid String in your program. +// Learn more at https://arduinojson.org/book/ +// Use the coupon code TWENTY for a 20% discount ❤❤❤❤❤ diff --git a/001-homekit_hub/lib/ArduinoJson/library.json b/001-homekit_hub/lib/ArduinoJson/library.json new file mode 100644 index 0000000..0303e99 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/library.json @@ -0,0 +1,23 @@ +{ + "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.", + "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", + "authors": { + "name": "Benoit Blanchon", + "url": "https://blog.benoitblanchon.fr" + }, + "export": { + "include": ["src", "examples", "LICENSE.txt", "ArduinoJson.h"] + }, + "frameworks": "*", + "platforms": "*", + "build": { + "libArchive": false + } +} diff --git a/001-homekit_hub/lib/ArduinoJson/library.properties b/001-homekit_hub/lib/ArduinoJson/library.properties new file mode 100644 index 0000000..aa6de9a --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/library.properties @@ -0,0 +1,11 @@ +name=ArduinoJson +version=6.21.5 +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. +category=Data Processing +url=https://arduinojson.org/?utm_source=meta&utm_medium=library.properties +architectures=* +repository=https://github.com/bblanchon/ArduinoJson.git +license=MIT diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson.h b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson.h new file mode 100644 index 0000000..c9ac0ca --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson.h @@ -0,0 +1,17 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#ifdef __cplusplus + +# include "ArduinoJson.hpp" + +using namespace ArduinoJson; + +#else + +#error ArduinoJson requires a C++ compiler, please change file extension to .cc or .cpp + +#endif diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson.hpp new file mode 100644 index 0000000..2d1b0be --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson.hpp @@ -0,0 +1,52 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#if __cplusplus < 201103L && (!defined(_MSC_VER) || _MSC_VER < 1910) +# error ArduinoJson requires C++11 or newer. Configure your compiler for C++11 or downgrade ArduinoJson to 6.20. +#endif + +#include "ArduinoJson/Configuration.hpp" + +// Include Arduino.h before stdlib.h to avoid conflict with atexit() +// https://github.com/bblanchon/ArduinoJson/pull/1693#issuecomment-1001060240 +#if ARDUINOJSON_ENABLE_ARDUINO_STRING || ARDUINOJSON_ENABLE_ARDUINO_STREAM || \ + ARDUINOJSON_ENABLE_ARDUINO_PRINT || \ + (ARDUINOJSON_ENABLE_PROGMEM && defined(ARDUINO)) +# include +#endif + +#if !ARDUINOJSON_DEBUG +# ifdef __clang__ +# pragma clang system_header +# elif defined __GNUC__ +# pragma GCC system_header +# endif +#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/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/Object/MemberProxy.hpp" +#include "ArduinoJson/Variant/ConverterImpl.hpp" +#include "ArduinoJson/Variant/VariantCompare.hpp" +#include "ArduinoJson/Variant/VariantImpl.hpp" + +#include "ArduinoJson/Json/JsonDeserializer.hpp" +#include "ArduinoJson/Json/JsonSerializer.hpp" +#include "ArduinoJson/Json/PrettyJsonSerializer.hpp" +#include "ArduinoJson/MsgPack/MsgPackDeserializer.hpp" +#include "ArduinoJson/MsgPack/MsgPackSerializer.hpp" + +#include "ArduinoJson/compatibility.hpp" diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp new file mode 100644 index 0000000..d6e9aa5 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/ElementProxy.hpp @@ -0,0 +1,60 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +// A proxy class to get or set an element of an array. +// https://arduinojson.org/v6/api/jsonarray/subscript/ +template +class ElementProxy : public VariantRefBase>, + public VariantOperators> { + friend class VariantAttorney; + + 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) { + this->set(src); + return *this; + } + + template + FORCE_INLINE ElementProxy& operator=(const T& src) { + this->set(src); + return *this; + } + + template + FORCE_INLINE ElementProxy& operator=(T* src) { + this->set(src); + return *this; + } + + private: + FORCE_INLINE MemoryPool* getPool() const { + return VariantAttorney::getPool(upstream_); + } + + FORCE_INLINE VariantData* getData() const { + return variantGetElement(VariantAttorney::getData(upstream_), index_); + } + + FORCE_INLINE VariantData* getOrCreateData() const { + return variantGetOrAddElement(VariantAttorney::getOrCreateData(upstream_), + index_, VariantAttorney::getPool(upstream_)); + } + + TUpstream upstream_; + size_t index_; +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp new file mode 100644 index 0000000..d208e41 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArray.hpp @@ -0,0 +1,211 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include + +ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE + +class JsonObject; + +// A reference to an array in a JsonDocument +// https://arduinojson.org/v6/api/jsonarray/ +class JsonArray : public detail::VariantOperators { + friend class detail::VariantAttorney; + + public: + typedef JsonArrayIterator iterator; + + // Constructs an unbound reference. + FORCE_INLINE JsonArray() : data_(0), pool_(0) {} + + // INTERNAL USE ONLY + FORCE_INLINE JsonArray(detail::MemoryPool* pool, detail::CollectionData* data) + : data_(data), pool_(pool) {} + + // Returns a JsonVariant pointing to the array. + // https://arduinojson.org/v6/api/jsonvariant/ + operator JsonVariant() { + void* data = data_; // prevent warning cast-align + return JsonVariant(pool_, reinterpret_cast(data)); + } + + // Returns a read-only reference to the array. + // https://arduinojson.org/v6/api/jsonarrayconst/ + operator JsonArrayConst() const { + return JsonArrayConst(data_); + } + + // Appends a new (null) element to the array. + // Returns a reference to the new element. + // https://arduinojson.org/v6/api/jsonarray/add/ + JsonVariant add() const { + if (!data_) + return JsonVariant(); + return JsonVariant(pool_, data_->addElement(pool_)); + } + + // Appends a value to the array. + // https://arduinojson.org/v6/api/jsonarray/add/ + template + FORCE_INLINE bool add(const T& value) const { + return add().set(value); + } + + // 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); + } + + // Returns an iterator to the first element of the array. + // https://arduinojson.org/v6/api/jsonarray/begin/ + FORCE_INLINE iterator begin() const { + if (!data_) + return iterator(); + return iterator(pool_, data_->head()); + } + + // Returns an iterator following the last element of the array. + // https://arduinojson.org/v6/api/jsonarray/end/ + FORCE_INLINE 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_) + 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_); + } + + // 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_); + } + + // 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); + } + + // Removes all the elements of the array. + // ⚠️ Doesn't release the memory associated with the removed elements. + // https://arduinojson.org/v6/api/jsonarray/clear/ + void clear() const { + if (!data_) + return; + data_->clear(); + } + + // 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}; + } + + // 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(); + } + + operator JsonVariantConst() const { + return JsonVariantConst(collectionToVariant(data_)); + } + + // Returns true if the reference is unbound. + // https://arduinojson.org/v6/api/jsonarray/isnull/ + FORCE_INLINE 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 { + 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_)); + } + + // 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; + } + + private: + detail::MemoryPool* getPool() const { + return pool_; + } + + detail::VariantData* getData() const { + return collectionToVariant(data_); + } + + detail::VariantData* getOrCreateData() const { + 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(); + } +}; + +ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp new file mode 100644 index 0000000..6a6463c --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayConst.hpp @@ -0,0 +1,135 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include +#include + +ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE + +class JsonObject; + +// A read-only reference to an array in a JsonDocument +// https://arduinojson.org/v6/api/jsonarrayconst/ +class JsonArrayConst : public detail::VariantOperators { + friend class JsonArray; + friend class detail::VariantAttorney; + + public: + typedef JsonArrayConstIterator iterator; + + // Returns an iterator to the first element of the array. + // https://arduinojson.org/v6/api/jsonarrayconst/begin/ + FORCE_INLINE iterator begin() const { + if (!data_) + return iterator(); + return iterator(data_->head()); + } + + // 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 { + return iterator(); + } + + // Creates an unbound reference. + FORCE_INLINE JsonArrayConst() : data_(0) {} + + // INTERNAL USE ONLY + FORCE_INLINE JsonArrayConst(const detail::CollectionData* data) + : data_(data) {} + + // 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/v6/api/jsonarrayconst/subscript/ + FORCE_INLINE JsonVariantConst operator[](size_t index) const { + return JsonVariantConst(data_ ? data_->getElement(index) : 0); + } + + operator JsonVariantConst() const { + return JsonVariantConst(collectionToVariant(data_)); + } + + // Returns true if the reference is unbound. + // https://arduinojson.org/v6/api/jsonarrayconst/isnull/ + FORCE_INLINE 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 { + 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_)); + } + + // 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; + } + + private: + const detail::VariantData* getData() const { + return collectionToVariant(data_); + } + + const detail::CollectionData* data_; +}; + +template <> +struct Converter : private detail::VariantAttorney { + static void toJson(JsonVariantConst src, JsonVariant dst) { + variantCopyFrom(getData(dst), getData(src), getPool(dst)); + } + + static JsonArrayConst fromJson(JsonVariantConst src) { + auto data = getData(src); + return data ? data->asArray() : 0; + } + + static bool checkJson(JsonVariantConst src) { + auto data = getData(src); + return data && data->isArray(); + } +}; + +ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp new file mode 100644 index 0000000..dc0487a --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayImpl.hpp @@ -0,0 +1,36 @@ +// 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/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp new file mode 100644 index 0000000..d9048b2 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/JsonArrayIterator.hpp @@ -0,0 +1,121 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include + +ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE + +class VariantPtr { + public: + VariantPtr(detail::MemoryPool* pool, detail::VariantData* data) + : variant_(pool, data) {} + + JsonVariant* operator->() { + return &variant_; + } + + JsonVariant& operator*() { + return variant_; + } + + private: + JsonVariant variant_; +}; + +class JsonArrayIterator { + friend class JsonArray; + + public: + JsonArrayIterator() : slot_(0) {} + explicit JsonArrayIterator(detail::MemoryPool* pool, + detail::VariantSlot* slot) + : pool_(pool), slot_(slot) {} + + JsonVariant operator*() const { + return JsonVariant(pool_, slot_->data()); + } + VariantPtr operator->() { + return VariantPtr(pool_, slot_->data()); + } + + bool operator==(const JsonArrayIterator& other) const { + return slot_ == other.slot_; + } + + bool operator!=(const JsonArrayIterator& other) const { + return slot_ != other.slot_; + } + + JsonArrayIterator& operator++() { + slot_ = slot_->next(); + return *this; + } + + JsonArrayIterator& operator+=(size_t distance) { + slot_ = slot_->next(distance); + 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_; +}; + +class JsonArrayConstIterator { + friend class JsonArray; + + public: + JsonArrayConstIterator() : slot_(0) {} + explicit JsonArrayConstIterator(const detail::VariantSlot* slot) + : slot_(slot) {} + + JsonVariantConst operator*() const { + return JsonVariantConst(slot_->data()); + } + VariantConstPtr operator->() { + return VariantConstPtr(slot_->data()); + } + + bool operator==(const JsonArrayConstIterator& other) const { + return slot_ == other.slot_; + } + + bool operator!=(const JsonArrayConstIterator& other) const { + return slot_ != other.slot_; + } + + JsonArrayConstIterator& operator++() { + slot_ = slot_->next(); + return *this; + } + + JsonArrayConstIterator& operator+=(size_t distance) { + slot_ = slot_->next(distance); + return *this; + } + + private: + const detail::VariantSlot* slot_; +}; + +ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp new file mode 100644 index 0000000..398e11d --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Array/Utilities.hpp @@ -0,0 +1,114 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include + +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) { + 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) { + 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) { + bool ok = true; + for (size_t i = 0; i < len; i++) { + ok &= copyArray(src[i], dst.add()); + } + return ok; +} + +// Copies a string to a JsonVariant. +// This is a degenerated form of copyArray() to handle strings. +template +inline bool copyArray(const char* src, size_t, const TDestination& dst) { + return dst.set(src); +} + +// Copies values from an array to a JsonDocument. +// https://arduinojson.org/v6/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/ +template +inline bool copyArray(const T* src, size_t len, JsonDocument& dst) { + return copyArray(src, len, dst.to()); +} + +// 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) { + dst = src.as(); + return 1; +} + +// Copies values from a JsonArray or JsonVariant to an array. +// https://arduinojson.org/v6/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/ +template +inline size_t copyArray(JsonArrayConst src, T* dst, size_t len) { + size_t i = 0; + for (JsonArrayConst::iterator it = src.begin(); it != src.end() && i < len; + ++it) + copyArray(*it, dst[i++]); + return i; +} + +// Copies a string from a JsonVariant. +// This is a degenerated form of copyArray() to handle strings. +template +inline size_t copyArray(JsonVariantConst src, char (&dst)[N]) { + JsonString s = src; + size_t len = N - 1; + if (len > s.size()) + len = s.size(); + memcpy(dst, s.c_str(), len); + dst[len] = 0; + return 1; +} + +// 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) { + return copyArray(src.template as(), dst); +} + +ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp new file mode 100644 index 0000000..090c98b --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionData.hpp @@ -0,0 +1,95 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include + +#include // size_t + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +class MemoryPool; +class VariantData; +class VariantSlot; + +class CollectionData { + VariantSlot* head_; + VariantSlot* tail_; + + public: + // Must be a POD! + // - no constructor + // - no destructor + // - no virtual + // - no inheritance + + // Array only + + 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)); + } + + template + bool containsKey(const TAdaptedString& key) const; + + // Generic + + void clear(); + size_t memoryUsage() const; + size_t size() const; + + VariantSlot* addSlot(MemoryPool*); + void removeSlot(VariantSlot* slot); + + bool copyFrom(const CollectionData& src, MemoryPool* pool); + + VariantSlot* head() const { + return head_; + } + + void movePointers(ptrdiff_t stringDistance, ptrdiff_t variantDistance); + + private: + VariantSlot* getSlot(size_t index) const; + + template + VariantSlot* getSlot(TAdaptedString key) const; + + VariantSlot* getPreviousSlot(VariantSlot*) const; +}; + +inline const VariantData* collectionToVariant( + const CollectionData* collection) { + const void* data = collection; // prevent warning cast-align + return reinterpret_cast(data); +} + +inline VariantData* collectionToVariant(CollectionData* collection) { + void* data = collection; // prevent warning cast-align + return reinterpret_cast(data); +} + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp new file mode 100644 index 0000000..134d5bd --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Collection/CollectionImpl.hpp @@ -0,0 +1,197 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include +#include +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +inline VariantSlot* CollectionData::addSlot(MemoryPool* pool) { + VariantSlot* slot = pool->allocVariant(); + if (!slot) + return 0; + + if (tail_) { + ARDUINOJSON_ASSERT(pool->owns(tail_)); // Can't alter a linked array/object + tail_->setNextNotNull(slot); + tail_ = slot; + } else { + head_ = slot; + tail_ = slot; + } + + slot->clear(); + return 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()))) + break; + slot = slot->next(); + } + return slot; +} + +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) + return; + VariantSlot* prev = getPreviousSlot(slot); + VariantSlot* next = slot->next(); + if (prev) + prev->setNext(next); + else + head_ = next; + if (!next) + tail_ = prev; +} + +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) + return; + p = reinterpret_cast( + reinterpret_cast(reinterpret_cast(p) + offset)); + ARDUINOJSON_ASSERT(isAligned(p)); +} + +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); +} + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp new file mode 100644 index 0000000..ac0ea66 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Configuration.hpp @@ -0,0 +1,217 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +// Support std::istream and std::ostream +#ifndef ARDUINOJSON_ENABLE_STD_STREAM +# ifdef __has_include +# if __has_include() && \ + __has_include() && \ + !defined(min) && \ + !defined(max) +# define ARDUINOJSON_ENABLE_STD_STREAM 1 +# else +# define ARDUINOJSON_ENABLE_STD_STREAM 0 +# endif +# else +# ifdef ARDUINO +# define ARDUINOJSON_ENABLE_STD_STREAM 0 +# else +# define ARDUINOJSON_ENABLE_STD_STREAM 1 +# endif +# endif +#endif + +// Support std::string +#ifndef ARDUINOJSON_ENABLE_STD_STRING +# ifdef __has_include +# if __has_include() && !defined(min) && !defined(max) +# define ARDUINOJSON_ENABLE_STD_STRING 1 +# else +# define ARDUINOJSON_ENABLE_STD_STRING 0 +# endif +# else +# ifdef ARDUINO +# define ARDUINOJSON_ENABLE_STD_STRING 0 +# else +# define ARDUINOJSON_ENABLE_STD_STRING 1 +# endif +# endif +#endif + +// Support for std::string_view +#ifndef ARDUINOJSON_ENABLE_STRING_VIEW +# ifdef __has_include +# if __has_include() && __cplusplus >= 201703L +# define ARDUINOJSON_ENABLE_STRING_VIEW 1 +# else +# define ARDUINOJSON_ENABLE_STRING_VIEW 0 +# endif +# else +# define ARDUINOJSON_ENABLE_STRING_VIEW 0 +# endif +#endif + +// Store floating-point values with float (0) or double (1) +#ifndef ARDUINOJSON_USE_DOUBLE +# define ARDUINOJSON_USE_DOUBLE 1 +#endif + +// Store integral values with long (0) or long long (1) +#ifndef ARDUINOJSON_USE_LONG_LONG +# if defined(__SIZEOF_POINTER__) && __SIZEOF_POINTER__ >= 4 || \ + defined(_MSC_VER) +# define ARDUINOJSON_USE_LONG_LONG 1 +# endif +#endif +#ifndef ARDUINOJSON_USE_LONG_LONG +# define ARDUINOJSON_USE_LONG_LONG 0 +#endif + +// Limit nesting as the stack is likely to be small +#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 +# else +// Address space == 32-bit => max 32767 values +# define ARDUINOJSON_SLOT_OFFSET_SIZE 2 +# endif +#endif + +#ifdef ARDUINO + +// Enable support for Arduino's String class +# ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING +# define ARDUINOJSON_ENABLE_ARDUINO_STRING 1 +# endif + +// Enable support for Arduino's Stream class +# ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM +# define ARDUINOJSON_ENABLE_ARDUINO_STREAM 1 +# endif + +// Enable support for Arduino's Print class +# ifndef ARDUINOJSON_ENABLE_ARDUINO_PRINT +# define ARDUINOJSON_ENABLE_ARDUINO_PRINT 1 +# endif + +// Enable support for PROGMEM +# ifndef ARDUINOJSON_ENABLE_PROGMEM +# define ARDUINOJSON_ENABLE_PROGMEM 1 +# endif + +#else // ARDUINO + +// Disable support for Arduino's String class +# ifndef ARDUINOJSON_ENABLE_ARDUINO_STRING +# define ARDUINOJSON_ENABLE_ARDUINO_STRING 0 +# endif + +// Disable support for Arduino's Stream class +# ifndef ARDUINOJSON_ENABLE_ARDUINO_STREAM +# define ARDUINOJSON_ENABLE_ARDUINO_STREAM 0 +# endif + +// Disable support for Arduino's Print class +# ifndef ARDUINOJSON_ENABLE_ARDUINO_PRINT +# define ARDUINOJSON_ENABLE_ARDUINO_PRINT 0 +# endif + +// Enable PROGMEM support on AVR only +# ifndef ARDUINOJSON_ENABLE_PROGMEM +# ifdef __AVR__ +# define ARDUINOJSON_ENABLE_PROGMEM 1 +# else +# define ARDUINOJSON_ENABLE_PROGMEM 0 +# endif +# endif + +#endif // ARDUINO + +// Convert unicode escape sequence (\u0123) to UTF-8 +#ifndef ARDUINOJSON_DECODE_UNICODE +# define ARDUINOJSON_DECODE_UNICODE 1 +#endif + +// Ignore comments in input +#ifndef ARDUINOJSON_ENABLE_COMMENTS +# define ARDUINOJSON_ENABLE_COMMENTS 0 +#endif + +// Support NaN in JSON +#ifndef ARDUINOJSON_ENABLE_NAN +# define ARDUINOJSON_ENABLE_NAN 0 +#endif + +// Support Infinity in JSON +#ifndef ARDUINOJSON_ENABLE_INFINITY +# define ARDUINOJSON_ENABLE_INFINITY 0 +#endif + +// Control the exponentiation threshold for big numbers +// CAUTION: cannot be more that 1e9 !!!! +#ifndef ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD +# define ARDUINOJSON_POSITIVE_EXPONENTIATION_THRESHOLD 1e7 +#endif + +// Control the exponentiation threshold for small numbers +#ifndef ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD +# define ARDUINOJSON_NEGATIVE_EXPONENTIATION_THRESHOLD 1e-5 +#endif + +#ifndef ARDUINOJSON_LITTLE_ENDIAN +# if defined(_MSC_VER) || \ + (defined(__BYTE_ORDER__) && \ + __BYTE_ORDER__ == __ORDER_LITTLE_ENDIAN__) || \ + defined(__LITTLE_ENDIAN__) || defined(__i386) || defined(__x86_64) +# define ARDUINOJSON_LITTLE_ENDIAN 1 +# else +# define ARDUINOJSON_LITTLE_ENDIAN 0 +# endif +#endif + +#ifndef ARDUINOJSON_ENABLE_ALIGNMENT +# if defined(__AVR) +# define ARDUINOJSON_ENABLE_ALIGNMENT 0 +# else +# define ARDUINOJSON_ENABLE_ALIGNMENT 1 +# endif +#endif + +#ifndef ARDUINOJSON_TAB +# 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 + +#ifndef ARDUINOJSON_DEBUG +# ifdef __PLATFORMIO_BUILD_DEBUG__ +# define ARDUINOJSON_DEBUG 1 +# else +# define ARDUINOJSON_DEBUG 0 +# endif +#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 +#endif diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp new file mode 100644 index 0000000..1bfc393 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationError.hpp @@ -0,0 +1,106 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include +#include + +#if ARDUINOJSON_ENABLE_STD_STREAM +# include +#endif + +ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE + +class DeserializationError { + public: + enum Code { + Ok, + EmptyInput, + IncompleteInput, + InvalidInput, + NoMemory, + TooDeep + }; + + DeserializationError() {} + DeserializationError(Code c) : code_(c) {} + + // Compare with DeserializationError + friend bool operator==(const DeserializationError& lhs, + const DeserializationError& rhs) { + return lhs.code_ == rhs.code_; + } + friend bool operator!=(const DeserializationError& lhs, + const DeserializationError& rhs) { + return lhs.code_ != rhs.code_; + } + + // Compare with Code + friend bool operator==(const DeserializationError& lhs, Code rhs) { + return lhs.code_ == rhs; + } + friend bool operator==(Code lhs, const DeserializationError& rhs) { + return lhs == rhs.code_; + } + friend bool operator!=(const DeserializationError& lhs, Code rhs) { + return lhs.code_ != rhs; + } + friend bool operator!=(Code lhs, const DeserializationError& rhs) { + return lhs != rhs.code_; + } + + // Returns true if there is an error + explicit operator bool() const { + return code_ != Ok; + } + + // Returns internal enum, useful for switch statement + Code code() const { + return code_; + } + + const char* c_str() const { + static const char* messages[] = { + "Ok", "EmptyInput", "IncompleteInput", + "InvalidInput", "NoMemory", "TooDeep"}; + ARDUINOJSON_ASSERT(static_cast(code_) < + sizeof(messages) / sizeof(messages[0])); + return messages[code_]; + } + +#if ARDUINOJSON_ENABLE_PROGMEM + const __FlashStringHelper* f_str() const { + ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s0, "Ok"); + ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s1, "EmptyInput"); + ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s2, "IncompleteInput"); + ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s3, "InvalidInput"); + ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s4, "NoMemory"); + ARDUINOJSON_DEFINE_PROGMEM_ARRAY(char, s5, "TooDeep"); + ARDUINOJSON_DEFINE_PROGMEM_ARRAY(const char*, messages, + {s0, s1, s2, s3, s4, s5}); + return reinterpret_cast( + detail::pgm_read(messages + code_)); + } +#endif + + private: + Code code_; +}; + +#if ARDUINOJSON_ENABLE_STD_STREAM +inline std::ostream& operator<<(std::ostream& s, + const DeserializationError& e) { + s << e.c_str(); + return s; +} + +inline std::ostream& operator<<(std::ostream& s, DeserializationError::Code c) { + s << DeserializationError(c).c_str(); + return s; +} +#endif + +ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp new file mode 100644 index 0000000..8400cc0 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/DeserializationOptions.hpp @@ -0,0 +1,35 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template +struct DeserializationOptions { + TFilter filter; + DeserializationOption::NestingLimit nestingLimit; +}; + +template +inline DeserializationOptions makeDeserializationOptions( + TFilter filter, DeserializationOption::NestingLimit nestingLimit = {}) { + return {filter, nestingLimit}; +} + +template +inline DeserializationOptions makeDeserializationOptions( + DeserializationOption::NestingLimit nestingLimit, TFilter filter) { + return {filter, nestingLimit}; +} + +inline DeserializationOptions makeDeserializationOptions( + DeserializationOption::NestingLimit nestingLimit = {}) { + return {{}, nestingLimit}; +} + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp new file mode 100644 index 0000000..3988302 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Filter.hpp @@ -0,0 +1,70 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include + +ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE + +namespace DeserializationOption { +class Filter { + public: + explicit Filter(JsonVariantConst v) : variant_(v) {} + + bool allow() const { + return variant_; + } + + bool allowArray() const { + return variant_ == true || variant_.is(); + } + + bool allowObject() const { + return variant_ == true || variant_.is(); + } + + bool allowValue() const { + return variant_ == true; + } + + template + Filter operator[](const TKey& key) const { + if (variant_ == true) // "true" means "allow recursively" + return *this; + JsonVariantConst member = variant_[key]; + return Filter(member.isNull() ? variant_["*"] : member); + } + + private: + JsonVariantConst variant_; +}; +} // namespace DeserializationOption + +namespace detail { +struct AllowAllFilter { + bool allow() const { + return true; + } + + bool allowArray() const { + return true; + } + + bool allowObject() const { + return true; + } + + bool allowValue() const { + return true; + } + + template + AllowAllFilter operator[](const TKey&) const { + return AllowAllFilter(); + } +}; +} // namespace detail + +ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp new file mode 100644 index 0000000..6434275 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/NestingLimit.hpp @@ -0,0 +1,32 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include + +ARDUINOJSON_BEGIN_PUBLIC_NAMESPACE + +namespace DeserializationOption { +class NestingLimit { + public: + NestingLimit() : value_(ARDUINOJSON_DEFAULT_NESTING_LIMIT) {} + explicit NestingLimit(uint8_t n) : value_(n) {} + + NestingLimit decrement() const { + ARDUINOJSON_ASSERT(value_ > 0); + return NestingLimit(static_cast(value_ - 1)); + } + + bool reached() const { + return value_ == 0; + } + + private: + uint8_t value_; +}; +} // namespace DeserializationOption + +ARDUINOJSON_END_PUBLIC_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp new file mode 100644 index 0000000..4443768 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Reader.hpp @@ -0,0 +1,75 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include + +#include // for size_t + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +// The default reader is a simple wrapper for Readers that are not copiable +template +struct Reader { + public: + Reader(TSource& source) : source_(&source) {} + + int read() { + // clang-format off + return source_->read(); // Error here? See https://arduinojson.org/v6/invalid-input/ + // clang-format on + } + + size_t readBytes(char* buffer, size_t length) { + return source_->readBytes(buffer, length); + } + + private: + TSource* source_; +}; + +template +struct BoundedReader { + // no default implementation because we need to pass the size to the + // constructor +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE + +#include +#include +#include + +#if ARDUINOJSON_ENABLE_ARDUINO_STREAM +# include +#endif + +#if ARDUINOJSON_ENABLE_ARDUINO_STRING +# include +#endif + +#if ARDUINOJSON_ENABLE_PROGMEM +# include +#endif + +#if ARDUINOJSON_ENABLE_STD_STREAM +# include +#endif + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template +Reader::type> makeReader(TInput&& input) { + return Reader::type>{ + detail::forward(input)}; +} + +template +BoundedReader makeReader(TChar* input, size_t inputSize) { + return BoundedReader{input, inputSize}; +} + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp new file mode 100644 index 0000000..8a87388 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStreamReader.hpp @@ -0,0 +1,31 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template +struct Reader::value>::type> { + public: + explicit Reader(Stream& stream) : stream_(&stream) {} + + int read() { + // don't use stream_.read() as it ignores the timeout + char c; + return stream_->readBytes(&c, 1) ? static_cast(c) : -1; + } + + size_t readBytes(char* buffer, size_t length) { + return stream_->readBytes(buffer, length); + } + + private: + Stream* stream_; +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp new file mode 100644 index 0000000..14491f4 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/ArduinoStringReader.hpp @@ -0,0 +1,19 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template +struct Reader::value>::type> + : BoundedReader { + explicit Reader(const ::String& s) + : BoundedReader(s.c_str(), s.length()) {} +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp new file mode 100644 index 0000000..97714af --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/FlashReader.hpp @@ -0,0 +1,56 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template <> +struct Reader { + const char* ptr_; + + public: + explicit Reader(const __FlashStringHelper* ptr) + : ptr_(reinterpret_cast(ptr)) {} + + int read() { + return pgm_read_byte(ptr_++); + } + + size_t readBytes(char* buffer, size_t length) { + memcpy_P(buffer, ptr_, length); + ptr_ += length; + return length; + } +}; + +template <> +struct BoundedReader { + const char* ptr_; + const char* end_; + + public: + explicit BoundedReader(const __FlashStringHelper* ptr, size_t size) + : ptr_(reinterpret_cast(ptr)), end_(ptr_ + size) {} + + int read() { + if (ptr_ < end_) + return pgm_read_byte(ptr_++); + else + return -1; + } + + size_t readBytes(char* buffer, size_t length) { + size_t available = static_cast(end_ - ptr_); + if (available < length) + length = available; + memcpy_P(buffer, ptr_, length); + ptr_ += length; + return length; + } +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp new file mode 100644 index 0000000..c0ca4a7 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/IteratorReader.hpp @@ -0,0 +1,45 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template +class IteratorReader { + TIterator ptr_, end_; + + public: + explicit IteratorReader(TIterator begin, TIterator end) + : ptr_(begin), end_(end) {} + + int read() { + if (ptr_ < end_) + return static_cast(*ptr_++); + else + return -1; + } + + size_t readBytes(char* buffer, size_t length) { + size_t i = 0; + while (i < length && ptr_ < end_) + buffer[i++] = *ptr_++; + return i; + } +}; + +template +struct void_ { + typedef void type; +}; + +template +struct Reader::type> + : IteratorReader { + explicit Reader(const TSource& source) + : IteratorReader(source.begin(), + source.end()) {} +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp new file mode 100644 index 0000000..eff67ba --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/RamReader.hpp @@ -0,0 +1,51 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template +struct IsCharOrVoid { + static const bool value = + is_same::value || is_same::value || + is_same::value || is_same::value; +}; + +template +struct IsCharOrVoid : IsCharOrVoid {}; + +template +struct Reader::value>::type> { + const char* ptr_; + + public: + explicit Reader(const void* ptr) + : ptr_(ptr ? reinterpret_cast(ptr) : "") {} + + int read() { + return static_cast(*ptr_++); + } + + size_t readBytes(char* buffer, size_t length) { + for (size_t i = 0; i < length; i++) + buffer[i] = *ptr_++; + return length; + } +}; + +template +struct BoundedReader::value>::type> + : public IteratorReader { + public: + explicit BoundedReader(const void* ptr, size_t len) + : IteratorReader(reinterpret_cast(ptr), + reinterpret_cast(ptr) + len) {} +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp new file mode 100644 index 0000000..41e0c00 --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/StdStreamReader.hpp @@ -0,0 +1,30 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template +struct Reader::value>::type> { + public: + explicit Reader(std::istream& stream) : stream_(&stream) {} + + int read() { + return stream_->get(); + } + + size_t readBytes(char* buffer, size_t length) { + stream_->read(buffer, static_cast(length)); + return static_cast(stream_->gcount()); + } + + private: + std::istream* stream_; +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp new file mode 100644 index 0000000..b60f1ce --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/Readers/VariantReader.hpp @@ -0,0 +1,19 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +template +struct Reader::value>::type> + : Reader { + explicit Reader(const TVariant& x) + : Reader(x.template as()) {} +}; + +ARDUINOJSON_END_PRIVATE_NAMESPACE diff --git a/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp new file mode 100644 index 0000000..9f4d78e --- /dev/null +++ b/001-homekit_hub/lib/ArduinoJson/src/ArduinoJson/Deserialization/deserialize.hpp @@ -0,0 +1,66 @@ +// ArduinoJson - https://arduinojson.org +// Copyright © 2014-2023, Benoit BLANCHON +// MIT License + +#pragma once + +#include +#include +#include +#include +#include + +ARDUINOJSON_BEGIN_PRIVATE_NAMESPACE + +// A meta-function that returns the first type of the parameter pack +// or void if empty +template +struct first_or_void { + using type = void; +}; +template +struct first_or_void { + using type = T; +}; + +template