diff --git a/.gitignore b/.gitignore
index 93ceeaa4..d6b55809 100644
--- a/.gitignore
+++ b/.gitignore
@@ -304,3 +304,18 @@ tpm/evp_tpm
**/main/build/CMakeFiles/*
**/build/*
+# VisualGDB
+**/.visualgdb
+
+# Espressif sdk config default should be saved in sdkconfig.defaults
+# we won't track the actual working sdkconfig files
+/ESP32/**/sdkconfig
+/ESP32/**/sdkconfig.old
+/ESP32/**/sdkconfig.bak
+
+# the solution files are not needed (Visual Studio will generated them)
+/ESP32/**/*.sln
+
+# auto-created CMake backups
+**/CMakeLists.txt.old
+
diff --git a/ESP32/README.md b/ESP32/README.md
index 1ae60a28..d9f285f2 100644
--- a/ESP32/README.md
+++ b/ESP32/README.md
@@ -1,5 +1,12 @@
# wolfSSL ESP32 Examples
+These are wolfSSL TLS 1.3 clients and servers for both wired and wireless Internet.
+
+Note: wolfSSL v5.5.4 or newer is needed to use these examples with ESP-IDF v5.
+
+See the [setup scripts](https://github.com/wolfSSL/wolfssl/tree/master/IDE/Espressif/ESP-IDF) to install.
+
+
## ESP32 TLS 1.3 Server
- [Wireless STA server](./TLS13-wifi_station-server/README.md)
@@ -39,7 +46,7 @@ coming soon:
## ESP-IDF
Although the examples were created using VisualGDB extension for Visual Studio, the
-examples can be compiled using the ESP-IDF.
+examples can of course be compiled using the ESP-IDF `idf.py`.
Once the EDP-IDF is installed, use the [setp_win.bat](https://github.com/wolfSSL/wolfssl/blob/master/IDE/Espressif/ESP-IDF/setup_win.bat) to copy wolfSSL files to
the `esp-idf\components` directory, typically in
@@ -54,12 +61,39 @@ cd wolfssl\IDE\Espressif\ESP-IDF\
.\setup_win.bat
```
-# Tips
+Build with VisualGDB toolchain from WSL
+```
+. /mnt/c/SysGCC/esp32/esp-idf/v5.0/export.sh
+idf.py -b 115200 -p /dev/ttyS15 build flash monitor
+```
+
+
+## Tips
If JTAG gets into a mode where it is simply always returning an error (app continually resetting)
try using serial port to program a basic, operational ["hello world"](./ESP32-hello-world/README.md).
The Arduino IDE or command-line ESP-IDF can be handy here.
+## Toolchain Switching in VisualGDB
+
+Due to occasional difficulty in switching between toolchains, separate VisualGDB solution
+files are included for ESP-IDF v4.4.1 and v5.0.
+
+See the `ProjectModeSettings` of the respective .`vgdbproj` file:
+
+```
+
+
+ release/v5.0
+ esp-idf/v5.0
+ ESPIDF
+
+ COM20
+ false
+ false
+ ESP32
+
+```
## See also:
diff --git a/ESP32/TLS13-enc28j60.sln b/ESP32/TLS13-enc28j60.sln
deleted file mode 100644
index 84e812e5..00000000
--- a/ESP32/TLS13-enc28j60.sln
+++ /dev/null
@@ -1,47 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31729.503
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7087FBCD-E3BF-44F5-BA16-5A9B41782406}"
- ProjectSection(SolutionItems) = preProject
- README-output.txt = README-output.txt
- README.md = README.md
- EndProjectSection
-EndProject
-Project("{803FD0C6-D64E-4E16-9DC3-1DAEC859A3D2}") = "TLS13-ENC28J60-server", "TLS13-ENC28J60-server\TLS13-ENC28J60-server.vgdbproj", "{78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}"
-EndProject
-Project("{803FD0C6-D64E-4E16-9DC3-1DAEC859A3D2}") = "TLS13-enc28j60-client", "TLS13-ENC28J60-client\TLS13-enc28j60-client.vgdbproj", "{67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|VisualGDB = Debug|VisualGDB
- Release|VisualGDB = Release|VisualGDB
- Tests (Debug)|VisualGDB = Tests (Debug)|VisualGDB
- Tests (Release)|VisualGDB = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB
- {78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}.Debug|VisualGDB.Build.0 = Debug|VisualGDB
- {78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}.Release|VisualGDB.ActiveCfg = Release|VisualGDB
- {78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}.Release|VisualGDB.Build.0 = Release|VisualGDB
- {78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}.Tests (Debug)|VisualGDB.ActiveCfg = Tests (Debug)|VisualGDB
- {78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}.Tests (Debug)|VisualGDB.Build.0 = Tests (Debug)|VisualGDB
- {78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}.Tests (Release)|VisualGDB.ActiveCfg = Tests (Release)|VisualGDB
- {78B33F2B-5B03-4D34-BAF6-82060DD9FA8F}.Tests (Release)|VisualGDB.Build.0 = Tests (Release)|VisualGDB
- {67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB
- {67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}.Debug|VisualGDB.Build.0 = Debug|VisualGDB
- {67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}.Release|VisualGDB.ActiveCfg = Release|VisualGDB
- {67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}.Release|VisualGDB.Build.0 = Release|VisualGDB
- {67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}.Tests (Debug)|VisualGDB.ActiveCfg = Tests (Debug)|VisualGDB
- {67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}.Tests (Debug)|VisualGDB.Build.0 = Tests (Debug)|VisualGDB
- {67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}.Tests (Release)|VisualGDB.ActiveCfg = Tests (Release)|VisualGDB
- {67AFCF00-979E-40FB-AE8A-CDEB4F8EE7DC}.Tests (Release)|VisualGDB.Build.0 = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {65BE29BE-BAE2-4235-9F23-0B1E199AB7BB}
- EndGlobalSection
-EndGlobal
diff --git a/ESP32/TLS13-wifi.sln b/ESP32/TLS13-wifi.sln
deleted file mode 100644
index af56530f..00000000
--- a/ESP32/TLS13-wifi.sln
+++ /dev/null
@@ -1,37 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31729.503
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{2150E333-8FDC-42A3-9474-1A3956D46DE8}") = "Solution Items", "Solution Items", "{7087FBCD-E3BF-44F5-BA16-5A9B41782406}"
- ProjectSection(SolutionItems) = preProject
- README-output.txt = README-output.txt
- README.md = README.md
- EndProjectSection
-EndProject
-Project("{803FD0C6-D64E-4E16-9DC3-1DAEC859A3D2}") = "TLS13-wifi_station-client", "TLS13-wifi_station-client\TLS13-wifi_station-client.vgdbproj", "{4904362E-3B9F-44CC-9C44-740B27FDFBE5}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|VisualGDB = Debug|VisualGDB
- Release|VisualGDB = Release|VisualGDB
- Tests (Debug)|VisualGDB = Tests (Debug)|VisualGDB
- Tests (Release)|VisualGDB = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Debug|VisualGDB.Build.0 = Debug|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Release|VisualGDB.ActiveCfg = Release|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Release|VisualGDB.Build.0 = Release|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Debug)|VisualGDB.ActiveCfg = Tests (Debug)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Debug)|VisualGDB.Build.0 = Tests (Debug)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Release)|VisualGDB.ActiveCfg = Tests (Release)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Release)|VisualGDB.Build.0 = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {65BE29BE-BAE2-4235-9F23-0B1E199AB7BB}
- EndGlobalSection
-EndGlobal
diff --git a/ESP32/TLS13-wifi_station-client/TLS13-client.sln b/ESP32/TLS13-wifi_station-client/TLS13-client.sln
deleted file mode 100644
index 842994b3..00000000
--- a/ESP32/TLS13-wifi_station-client/TLS13-client.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31729.503
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{803FD0C6-D64E-4E16-9DC3-1DAEC859A3D2}") = "TLS13-client", "TLS13-client.vgdbproj", "{4904362E-3B9F-44CC-9C44-740B27FDFBE5}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|VisualGDB = Debug|VisualGDB
- Release|VisualGDB = Release|VisualGDB
- Tests (Debug)|VisualGDB = Tests (Debug)|VisualGDB
- Tests (Release)|VisualGDB = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Debug|VisualGDB.Build.0 = Debug|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Release|VisualGDB.ActiveCfg = Release|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Release|VisualGDB.Build.0 = Release|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Debug)|VisualGDB.ActiveCfg = Tests (Debug)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Debug)|VisualGDB.Build.0 = Tests (Debug)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Release)|VisualGDB.ActiveCfg = Tests (Release)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Release)|VisualGDB.Build.0 = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {E0F17030-83D2-4967-AF75-777516FF525D}
- EndGlobalSection
-EndGlobal
diff --git a/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client.sln b/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client.sln
deleted file mode 100644
index d9ab8887..00000000
--- a/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31729.503
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{803FD0C6-D64E-4E16-9DC3-1DAEC859A3D2}") = "TLS13-client", "TLS13-wifi_station-client.vgdbproj", "{4904362E-3B9F-44CC-9C44-740B27FDFBE5}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|VisualGDB = Debug|VisualGDB
- Release|VisualGDB = Release|VisualGDB
- Tests (Debug)|VisualGDB = Tests (Debug)|VisualGDB
- Tests (Release)|VisualGDB = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Debug|VisualGDB.Build.0 = Debug|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Release|VisualGDB.ActiveCfg = Release|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Release|VisualGDB.Build.0 = Release|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Debug)|VisualGDB.ActiveCfg = Tests (Debug)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Debug)|VisualGDB.Build.0 = Tests (Debug)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Release)|VisualGDB.ActiveCfg = Tests (Release)|VisualGDB
- {4904362E-3B9F-44CC-9C44-740B27FDFBE5}.Tests (Release)|VisualGDB.Build.0 = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {E0F17030-83D2-4967-AF75-777516FF525D}
- EndGlobalSection
-EndGlobal
diff --git a/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client.vgdbproj b/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client_v4.4.1.vgdbproj
similarity index 95%
rename from ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client.vgdbproj
rename to ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client_v4.4.1.vgdbproj
index 3f5ac37c..cb4b448a 100644
--- a/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client.vgdbproj
+++ b/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client_v4.4.1.vgdbproj
@@ -1,220 +1,224 @@
-
-
-
-
-
- Unknown
-
- true
-
- eb963948-ff31-4e03-878f-5cd21b92f36b
- true
- true
- SourceDirs
-
-
-
-
-
- com.visualgdb.xtensa-esp32-elf
-
- 8.4.0
- 8.1.0
- 7
-
-
- DEBUG
- build/$(PlatformName)/$(ConfigurationName)
-
- false
- $(ToolchainNinja)
- $(BuildDir)
-
-
-
- false
- $(SYSPROGS_CMAKE_PATH)
-
-
- true
- false
- false
- Ninja
- false
- RemoveBuildDirectory
- false
-
-
- true
- true
- true
- false
- true
- false
- true
- HideOuterProjectTargets
- true
- false
- true
-
- true
- 4904362e-3b9f-44cc-9c44-740b27fdfbe5
-
- Upper
- HeaderDirectoryAndSubdirectories
- true
-
-
- release/v4.4
- esp-idf/v4.4
- ESPIDF
-
- COM20
- false
- false
- ESP32
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Default
-
-
-
- COM20
-
- 115200
- 8
- None
- One
- None
-
-
- 0
- false
- false
- false
- ASCII
-
-
- 255
- 0
- 0
- 0
-
-
- 255
- 169
- 169
- 169
-
-
- 255
- 211
- 211
- 211
-
-
- 255
- 144
- 238
- 144
-
-
- 255
- 169
- 169
- 169
-
-
-
- 16
- true
- true
- true
- true
- 0
-
- LF
- false
- false
- false
-
-
-
- true
-
-
-
- Unknown
-
- true
- true
- true
-
-
-
- false
-
-
-
-
- Debug
-
-
-
- Release
-
-
-
-
-
-
-
- false
- false
- false
- false
- false
- false
- false
- false
- false
-
- false
- false
- false
- false
- false
- false
- true
- false
- None
- false
- false
- app_main
- true
- false
- false
- true
- 0
- false
- 0
- true
- false
-
-
- openocd
+
+
+
+
+
+ Unknown
+
+ true
+
+ eb963948-ff31-4e03-878f-5cd21b92f36b
+ true
+ true
+ SourceDirs
+
+
+
+
+
+ com.visualgdb.xtensa-esp32-elf
+
+ 8.4.0
+ 8.1.0
+ 9
+
+
+
+ DEBUG
+ build/$(PlatformName)/$(ConfigurationName)
+
+ false
+ $(ToolchainNinja)
+ $(BuildDir)
+
+
+
+ false
+ $(SYSPROGS_CMAKE_PATH)
+
+
+ true
+ false
+ false
+ Ninja
+ false
+ RemoveBuildDirectory
+ false
+
+
+ true
+ true
+ true
+ false
+ true
+ false
+ true
+ HideOuterProjectTargets
+ true
+ false
+ true
+
+
+ true
+ 4904362e-3b9f-44cc-9c44-740b27fdfbe5
+
+ Upper
+ HeaderDirectoryAndSubdirectories
+ true
+
+
+ v4.4.1
+ esp-idf/v4.4.1
+ ESPIDF
+
+ COM20
+ false
+ false
+ ESP32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+ COM20
+
+ 115200
+ 8
+ None
+ One
+ None
+
+
+ 0
+ false
+ false
+ false
+ ASCII
+
+
+ 255
+ 0
+ 0
+ 0
+
+
+ 255
+ 169
+ 169
+ 169
+
+
+ 255
+ 211
+ 211
+ 211
+
+
+ 255
+ 144
+ 238
+ 144
+
+
+ 255
+ 169
+ 169
+ 169
+
+
+
+ 16
+ true
+ true
+ true
+ true
+ 0
+
+ LF
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+
+ Unknown
+
+ true
+ true
+ true
+
+
+
+ false
+
+
+
+
+ Debug
+
+
+
+ Release
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+ app_main
+ true
+ false
+ false
+ true
+ 0
+ false
+ 0
+ true
+ false
+
+
+ openocd
-f interface/jlink.cfg -c "adapter_khz 3000" -f target/esp32.cfg
@@ -245,21 +249,21 @@
DIO
true
-
-
- true
- Auto
- 0
- false
- false
- true
- false
- false
-
- _estack
- 0
- false
-
- true
-
+
+
+ true
+ Auto
+ 0
+ false
+ false
+ true
+ false
+ false
+
+ _estack
+ 0
+ false
+
+ true
+
\ No newline at end of file
diff --git a/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client_v5.0.vgdbproj b/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client_v5.0.vgdbproj
new file mode 100644
index 00000000..8a66c68e
--- /dev/null
+++ b/ESP32/TLS13-wifi_station-client/TLS13-wifi_station-client_v5.0.vgdbproj
@@ -0,0 +1,345 @@
+
+
+
+
+
+ Unknown
+
+ true
+
+ eb963948-ff31-4e03-878f-5cd21b92f36b
+ true
+ true
+ SourceDirs
+
+
+ 30
+ 60
+ 5
+ 5
+
+
+
+
+
+ com.visualgdb.xtensa-esp32-elf
+
+ 11.2.0
+ 9.2.90
+ 2
+
+
+
+ DEBUG
+ build/$(PlatformName)/$(ConfigurationName)
+
+ false
+
+ BuildMachine
+ BuiltinShortcut
+
+ $(ToolchainNinja)
+ $(BuildDir)
+
+
+
+ false
+
+ BuildMachine
+ BuiltinShortcut
+
+ $(SYSPROGS_CMAKE_PATH)
+
+
+ true
+ false
+ false
+ Ninja
+ false
+ RemoveBuildDirectory
+ false
+
+
+ true
+ true
+ true
+ false
+ true
+ false
+ true
+ HideOuterProjectTargets
+ true
+ false
+ true
+
+
+ true
+ 4904362e-3b9f-44cc-9c44-740b27fdfbe5
+
+ Upper
+ HeaderDirectoryAndSubdirectories
+ true
+
+
+ release/v5.0
+ esp-idf/v5.0
+ ESPIDF
+
+ COM20
+ false
+ false
+ ESP32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+ false
+
+ BuildMachine
+ BuiltinShortcut
+
+
+
+
+
+
+ COM20
+
+ 115200
+ 8
+ None
+ One
+ None
+
+
+ 0
+ false
+ false
+ false
+ ASCII
+
+
+ 255
+ 0
+ 0
+ 0
+
+
+ 255
+ 169
+ 169
+ 169
+
+
+ 255
+ 211
+ 211
+ 211
+
+
+ 255
+ 144
+ 238
+ 144
+
+
+ 255
+ 169
+ 169
+ 169
+
+
+
+ 16
+ true
+ true
+ true
+ true
+ 0
+
+ LF
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+
+ True
+
+ true
+ true
+
+ Enabled
+ true
+ true
+ true
+
+ true
+
+
+
+ false
+
+ apiModeling.google.GTest
+ core.builtin.BuiltinFunctions
+ core.builtin.NoReturnFunctions
+ core.CallAndMessage
+ core.DivideZero
+ core.DynamicTypePropagation
+ core.NonnilStringConstants
+ core.NonNullParamChecker
+ core.NullDereference
+ core.StackAddressEscape
+ core.UndefinedBinaryOperatorResult
+ core.uninitialized.ArraySubscript
+ core.uninitialized.Assign
+ core.uninitialized.Branch
+ core.uninitialized.CapturedBlockVariable
+ core.uninitialized.UndefReturn
+ core.VLASize
+ cplusplus.NewDelete
+ cplusplus.NewDeleteLeaks
+ cplusplus.SelfAssignment
+ deadcode.DeadStores
+ nullability.NullPassedToNonnull
+ nullability.NullReturnedFromNonnull
+ security.insecureAPI.getpw
+ security.insecureAPI.gets
+ security.insecureAPI.mkstemp
+ security.insecureAPI.mktemp
+ security.insecureAPI.UncheckedReturn
+ security.insecureAPI.vfork
+ unix.API
+ unix.cstring.BadSizeArg
+ unix.cstring.NullArg
+ unix.Malloc
+ unix.MallocSizeof
+ unix.MismatchedDeallocator
+ unix.StdCLibraryFunctions
+ unix.Vfork
+
+
+ -analyzer-store=region
+ -analyzer-opt-analyze-nested-blocks
+ -analyzer-eagerly-assume
+
+
+
+
+
+ Debug
+
+
+
+ Release
+
+
+
+
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+ app_main
+ true
+ false
+ false
+ true
+ 0
+ false
+ 0
+ true
+ false
+
+
+ openocd
+
+ -f interface/tigard.cfg -c "adapter_khz 13000" -f target/esp32.cfg
+
+
+
+ false
+
+ 131072
+ Enabled
+
+ set remotetimeout 60
+ target remote :$$SYS:GDB_PORT$$
+ mon gdb_breakpoint_override hard
+ mon reset halt
+ load
+
+ false
+ 0
+ 0
+ false
+
+ 5000
+ 1
+ true
+
+ size2MB
+ freq40M
+ DIO
+
+ true
+
+
+ true
+ Disabled
+ 0
+ false
+ false
+ true
+ false
+ false
+
+ _estack
+ 0
+ false
+
+ true
+
+
\ No newline at end of file
diff --git a/ESP32/TLS13-wifi_station-client/main/station_example_main.c b/ESP32/TLS13-wifi_station-client/main/station_example_main.c
index 795cf0f1..a35990ed 100644
--- a/ESP32/TLS13-wifi_station-client/main/station_example_main.c
+++ b/ESP32/TLS13-wifi_station-client/main/station_example_main.c
@@ -35,7 +35,7 @@
#include
#ifdef WOLFSSL_TRACK_MEMORY
-#include
+ #include
#endif
@@ -52,15 +52,17 @@
#define USE_MY_PRIVATE_CONFIG
#ifdef USE_MY_PRIVATE_CONFIG
-#include "/workspace/my_private_config.h"
+ #include "/workspace/my_private_config.h"
#else
-/* The examples use WiFi configuration that you can set via project configuration menu
-
- If you'd rather not, just change the below entries to strings with
- the config you want - ie #define EXAMPLE_WIFI_SSID "mywifissid"
-*/
-#define EXAMPLE_ESP_WIFI_SSID CONFIG_ESP_WIFI_SSID
-#define EXAMPLE_ESP_WIFI_PASS CONFIG_ESP_WIFI_PASSWORD
+ /*
+ ** The examples use WiFi configuration that you can set via project
+ ** configuration menu
+ **
+ ** If you'd rather not, just change the below entries to strings with
+ ** the config you want - ie #define EXAMPLE_WIFI_SSID "mywifissid"
+ */
+ #define EXAMPLE_ESP_WIFI_SSID CONFIG_ESP_WIFI_SSID
+ #define EXAMPLE_ESP_WIFI_PASS CONFIG_ESP_WIFI_PASSWORD
#endif
/* ESP lwip */
@@ -72,15 +74,15 @@
#define TLS_SMP_CLIENT_TASK_WORDS 10240
#define TLS_SMP_CLIENT_TASK_PRIORITY 8
-#define TLS_SMP_TARGET_HOST "192.168.1.144"
+#define TLS_SMP_TARGET_HOST "192.168.25.114"
-/* include certificates. Note that there is an experiation date!
- *
+/* include certificates. Note that there is an experiation date!
+ *
* See also https://github.com/wolfSSL/wolfssl/blob/master/wolfssl/certs_test.h
-
+
for example:
-
+
#define USE_CERT_BUFFERS_2048
#include
*/
@@ -129,28 +131,41 @@ static void event_handler(void* arg, esp_event_base_t event_base,
{
if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
esp_wifi_connect();
- } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
- if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) {
- esp_wifi_connect();
- s_retry_num++;
- ESP_LOGI(TAG, "retry to connect to the AP");
- } else {
- xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
+ }
+ else {
+ if ( event_base == WIFI_EVENT
+ &&
+ event_id == WIFI_EVENT_STA_DISCONNECTED) {
+
+ /* WiFi disconnected event */
+ if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) {
+ esp_wifi_connect();
+ s_retry_num++;
+ ESP_LOGI(TAG, "retry to connect to the AP");
+ }
+ else {
+ xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
+ }
+ ESP_LOGI(TAG, "connect to the AP fail");
+ } /* is WiFi disconnected event */
+ else {
+ if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
+ ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
+ ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
+ s_retry_num = 0;
+ xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
+ } /* is got IP event */
}
- ESP_LOGI(TAG,"connect to the AP fail");
- } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
- ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
- ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
- s_retry_num = 0;
- xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
}
}
int set_time() {
/* we'll also return a result code of zero */
int res = 0;
-
- //*ideally, we'd like to set time from network, but let's set a default time, just in case */
+
+ /* ideally, we'd like to set time from network,
+ ** but let's set a default time, just in case
+ */
struct tm timeinfo;
timeinfo.tm_year = 2022 - 1900;
timeinfo.tm_mon = 3;
@@ -162,18 +177,18 @@ int set_time() {
t = mktime(&timeinfo);
struct timeval now = { .tv_sec = t };
- settimeofday(&now, NULL);
+ settimeofday(&now, NULL);
/* set timezone */
setenv("TZ", TIME_ZONE, 1);
tzset();
- /* next, let's setup NTP time servers
- *
+ /* next, let's setup NTP time servers
+ *
* see https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/system_time.html#sntp-time-synchronization
*/
sntp_setoperatingmode(SNTP_OPMODE_POLL);
-
+
int i = 0;
for (i = 0; i < NTP_SERVER_COUNT; i++) {
const char* thisServer = ntpServerList[i];
@@ -269,40 +284,32 @@ int tls_smp_client_task() {
size_t len; /* we'll be looking at the length of messages sent and received */
struct hostent *hp;
struct ip4_addr *ip4_addr;
-
- struct timeval tv_now;
-
WOLFSSL_ENTER("tls_smp_client_task");
/* see https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/system_time.html#overview */
- // ret = gettimeofday(&tv_now, NULL);
- /* 0x0005dcacd95af765 */
- // int64_t time_us = (int64_t)tv_now.tv_sec * 1000000L + (int64_t)tv_now.tv_usec;
-
- // WOLFSSL_MSG(time_us) ;
-
+
/* declare wolfSSL objects */
WOLFSSL_CTX *ctx = NULL; /* the wolfSSL context object*/
WOLFSSL *ssl = NULL; /* although called "ssl" is is the secure object for reading and writings data*/
#ifdef DEBUG_WOLFSSL
- WOLFSSL_MSG("Debug ON");
+ ESP_LOGI(TAG,"Debug ON");
wolfSSL_Debugging_ON();
- //ShowCiphers();
+ /* ShowCiphers(); */
#endif
-
+
/* Initialize the server address struct with zeros */
memset(&servAddr, 0, sizeof(servAddr));
/* Fill in the server address */
servAddr.sin_family = AF_INET; /* using IPv4 */
- servAddr.sin_port = htons(DEFAULT_PORT); /* on DEFAULT_PORT */
+ servAddr.sin_port = htons(DEFAULT_PORT); /* on DEFAULT_PORT */
+
+
-
-
ESP_LOGI(TAG, "get target IP address");
hp = gethostbyname(TLS_SMP_TARGET_HOST);
@@ -314,133 +321,136 @@ int tls_smp_client_task() {
ip4_addr = (struct ip4_addr *)hp->h_addr;
ESP_LOGI(TAG, IPSTR, IP2STR(ip4_addr));
}
-
+
if (*targetServer >= '1' && *targetServer <= '9') {
/* Get the server IPv4 address from the command line call */
- WOLFSSL_MSG("inet_pton");
+ ESP_LOGI(TAG,"inet_pton");
if ((ret = inet_pton(AF_INET,
TLS_SMP_TARGET_HOST,
&servAddr.sin_addr)) != 1) {
ESP_LOGE(TAG, "ERROR: invalid address ret=%d\n", ret);
ret = WOLFSSL_FAILURE;
- WOLFSSL_ERROR_MSG("ERROR: invalid address\n");
+ ESP_LOGE(TAG, "ERROR: invalid address\n");
}
}
else {
servAddr.sin_addr.s_addr = ip4_addr->addr;
}
-
- /*
+
+ /*
***************************************************************************
* Create a socket that uses an internet IPv4 address,
* Sets the socket to be stream based (TCP),
* 0 means choose the default protocol.
- *
+ *
* #include
*
- * int socket(int domain, int type, int protocol);
- *
+ * int socket(int domain, int type, int protocol);
+ *
* see: https://linux.die.net/man/3/socket
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
- /* Upon successful completion, socket() shall return
+ /* Upon successful completion, socket() shall return
* a non-negative integer, the socket file descriptor.
*/
sockfd = socket(AF_INET, SOCK_STREAM, 0);
if (sockfd > 0) {
- WOLFSSL_MSG("socket creation successful\n");
+ ESP_LOGI(TAG,"socket creation successful\n");
}
else {
- // TODO show errno
+ // TODO show errno
ret = WOLFSSL_FAILURE;
- WOLFSSL_ERROR_MSG("ERROR: failed to create a socket.\n");
+ ESP_LOGE(TAG, "ERROR: failed to create a socket.\n");
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("Skipping socket create.\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "Skipping socket create.\n");
}
-
- /*
+
+ /*
***************************************************************************
- * Connect the TCP socket to the server (no encryption yet!)
- *
+ * Connect the TCP socket to the server (no encryption yet!)
+ *
* #include
* int connect(int socket, const struct sockaddr *address, socklen_t address_len);
- *
+ *
* See https://linux.die.net/man/3/connect
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
/*
- * Upon successful completion, socket() shall return a non-negative integer,
- * the socket file descriptor.
- *
- * Upon successful completion, connect() shall return 0; otherwise,
+ * Upon successful completion, socket() shall return a non-negative integer,
+ * the socket file descriptor.
+ *
+ * Upon successful completion, connect() shall return 0; otherwise,
* -1 shall be returned and errno set to indicate the error.
*/
- int connectResult = connect(sockfd, (struct sockaddr*) &servAddr, sizeof(servAddr));
+ int connectResult = connect(sockfd,
+ (struct sockaddr*) &servAddr,
+ sizeof(servAddr)
+ );
if (0 == connectResult) {
- WOLFSSL_MSG("sockfd connect successful\n");
+ ESP_LOGI(TAG,"sockfd connect successful\n");
}
else {
// TODO show errno
- WOLFSSL_ERROR_MSG("ERROR: socket connect failed\n");
+ ESP_LOGE(TAG, "ERROR: socket connect failed\n");
ret = WOLFSSL_FAILURE;
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("Skipping socket connect.\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "Skipping socket connect.\n");
}
-
-
- /*
+
+
+ /*
***************************************************************************
- * Initialize wolfSSL
- *
+ * Initialize wolfSSL
+ *
* WOLFSSL_API int wolfSSL_Init (void)
*
- * Initializes the wolfSSL library for use. Must be called once per
+ * Initializes the wolfSSL library for use. Must be called once per
* application and before any other call to the library.
*
* Returns
* SSL_SUCCESS If successful the call will return.
* BAD_MUTEX_E is an error that may be returned.
* WC_INIT_E wolfCrypt initialization error returned.
- *
+ *
* see: https://www.wolfssl.com/doxygen/group__TLS.html#gae2a25854de5230820a6edf16281d8fd7
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
/* only proceed if the prior step was successful */
- WOLFSSL_MSG("calling wolfSSL_Init");
+ ESP_LOGI(TAG,"calling wolfSSL_Init");
ret = wolfSSL_Init();
if (ret == WOLFSSL_SUCCESS) {
- WOLFSSL_MSG("wolfSSL_Init successful\n");
+ ESP_LOGI(TAG,"wolfSSL_Init successful\n");
}
else {
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_Init failed\n");
+ ESP_LOGE(TAG, "ERROR: wolfSSL_Init failed\n");
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("Skipping wolfSSL_Init\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "Skipping wolfSSL_Init\n");
}
-
- /*
+
+ /*
***************************************************************************
* Create and initialize WOLFSSL_CTX (aka the context)
- *
+ *
* WOLFSSL_API WOLFSSL_CTX* wolfSSL_CTX_new (WOLFSSL_METHOD *)
- *
- * This function creates a new SSL context, taking a desired
+ *
+ * This function creates a new SSL context, taking a desired
* SSL/TLS protocol method for input.
*
* Returns
@@ -448,112 +458,112 @@ int tls_smp_client_task() {
* NULL upon failure.
*
* Parameters
- * method pointer to the desired WOLFSSL_METHOD to use for the SSL context.
+ * method pointer to the desired WOLFSSL_METHOD to use for the SSL context.
* This is created using one of the wolfSSLvXX_XXXX_method() functions to
* specify SSL/TLS/DTLS protocol level.
- *
+ *
* see https://www.wolfssl.com/doxygen/group__Setup.html#gadfa552e771944a6a1102aa43f45378b5
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
WOLFSSL_METHOD* method = wolfTLSv1_3_client_method();
if (method == NULL) {
- WOLFSSL_ERROR_MSG("ERROR : failed to get wolfTLSv1_3_client_method.\n");
+ ESP_LOGE(TAG, "ERROR : failed to get wolfTLSv1_3_client_method.\n");
ret = WOLFSSL_FAILURE;
}
else {
ctx = wolfSSL_CTX_new(method);
if (ctx == NULL) {
- WOLFSSL_ERROR_MSG("ERROR : failed to create WOLFSSL_CTX\n");
+ ESP_LOGE(TAG, "ERROR : failed to create WOLFSSL_CTX\n");
ret = WOLFSSL_FAILURE;
}
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("skipping wolfSSL_CTX_new\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "skipping wolfSSL_CTX_new\n");
}
-
-
- /*
+
+
+ /*
***************************************************************************
- * load CERT_FILE
- *
- *
+ * load CERT_FILE
+ *
+ *
* WOLFSSL_API int wolfSSL_use_certificate_buffer (WOLFSSL * ,
* const unsigned char * ,
* long,
- * int
+ * int
* )
- *
- * The wolfSSL_use_certificate_buffer() function loads a certificate buffer
- * into the WOLFSSL object. It behaves like the non-buffered version, only
- * differing in its ability to be called with a buffer as input instead of
- * a file. The buffer is provided by the in argument of size sz.
- *
- * format specifies the format type of the buffer; SSL_FILETYPE_ASN1 or
+ *
+ * The wolfSSL_use_certificate_buffer() function loads a certificate buffer
+ * into the WOLFSSL object. It behaves like the non-buffered version, only
+ * differing in its ability to be called with a buffer as input instead of
+ * a file. The buffer is provided by the in argument of size sz.
+ *
+ * format specifies the format type of the buffer; SSL_FILETYPE_ASN1 or
* SSL_FILETYPE_PEM. Please see the examples for proper usage.
- *
+ *
* Returns
* SSL_SUCCESS upon success.
* SSL_BAD_FILETYPE will be returned if the file is the wrong format.
* SSL_BAD_FILE will be returned if the file doesn’t exist, can’t be read, or is corrupted.
* MEMORY_E will be returned if an out of memory condition occurs.
* ASN_INPUT_E will be returned if Base16 decoding fails on the file.
- *
+ *
* Parameters
* ssl pointer to the SSL session, created with wolfSSL_new().
* in buffer containing certificate to load.
* sz size of the certificate located in buffer.
* format format of the certificate to be loaded. Possible values are SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
- *
+ *
*
* Pay attention to expiration dates and the current date setting
- *
+ *
* see https://www.wolfssl.com/doxygen/group__CertsKeys.html#gaf4e8d912f3fe2c37731863e1cad5c97e
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
- WOLFSSL_MSG("Loading cert");
- ret = wolfSSL_CTX_use_certificate_buffer(ctx,
- CERT_FILE,
- sizeof_CERT_FILE(),
+ ESP_LOGI(TAG, "Loading cert");
+ ret = wolfSSL_CTX_use_certificate_buffer(ctx,
+ CERT_FILE,
+ sizeof_CERT_FILE(),
WOLFSSL_FILETYPE_PEM);
if (ret == WOLFSSL_SUCCESS) {
- WOLFSSL_MSG("wolfSSL_CTX_use_certificate_buffer successful\n");
+ ESP_LOGI(TAG, "wolfSSL_CTX_use_certificate_buffer successful\n");
}
else {
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_CTX_use_certificate_buffer failed\n");
+ ESP_LOGE(TAG, "ERROR: wolfSSL_CTX_use_certificate_buffer failed\n");
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("skipping wolfSSL_CTX_use_certificate_buffer\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "skipping wolfSSL_CTX_use_certificate_buffer\n");
}
-
-
- /*
+
+
+ /*
***************************************************************************
- * Load client private key into WOLFSSL_CTX
- *
+ * Load client private key into WOLFSSL_CTX
+ *
* wolfSSL_CTX_use_PrivateKey_buffer()
- *
+ *
* WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX *,
* const unsigned char *,
* long,
- * int
+ * int
* )
*
- * This function loads a private key buffer into the SSL Context.
- * It behaves like the non-buffered version, only differing in its
- * ability to be called with a buffer as input instead of a file.
- *
- * The buffer is provided by the in argument of size sz. format
- * specifies the format type of the buffer;
- * SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
- *
+ * This function loads a private key buffer into the SSL Context.
+ * It behaves like the non-buffered version, only differing in its
+ * ability to be called with a buffer as input instead of a file.
+ *
+ * The buffer is provided by the in argument of size sz. format
+ * specifies the format type of the buffer;
+ * SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
+ *
* Please see the examples for proper usage.
*
* Returns
@@ -567,65 +577,65 @@ int tls_smp_client_task() {
* Parameters
* ctx pointer to the SSL context, created with wolfSSL_CTX_new().
* inthe input buffer containing the private key to be loaded.
- *
+ *
* sz the size of the input buffer.
- *
- * format the format of the private key located in the input buffer(in).
+ *
+ * format the format of the private key located in the input buffer(in).
* Possible values are SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
*
* see: https://www.wolfssl.com/doxygen/group__CertsKeys.html#ga71850887b87138b7c2d794bf6b1eafab
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
- ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx,
- KEY_FILE,
- sizeof_KEY_FILE(),
+ ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx,
+ KEY_FILE,
+ sizeof_KEY_FILE(),
WOLFSSL_FILETYPE_PEM);
if (ret == WOLFSSL_SUCCESS) {
- WOLFSSL_MSG("wolfSSL_CTX_use_PrivateKey_buffer successful\n");
+ ESP_LOGI(TAG, "wolfSSL_CTX_use_PrivateKey_buffer successful\n");
}
else {
/* TODO fetch and print expiration date since it is a common fail */
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_CTX_use_PrivateKey_buffer failed\n");
+ ESP_LOGE(TAG, "ERROR: wolfSSL_CTX_use_PrivateKey_buffer failed\n");
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("Skipping wolfSSL_CTX_use_PrivateKey_buffer\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "Skipping wolfSSL_CTX_use_PrivateKey_buffer\n");
}
-
- /*
+
+ /*
***************************************************************************
- * Load CA certificate into WOLFSSL_CTX
- *
+ * Load CA certificate into WOLFSSL_CTX
+ *
* wolfSSL_CTX_load_verify_buffer()
* WOLFSSL_API int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX *,
* const unsigned char *,
* long,
- * int
- * )
- *
- * This function loads a CA certificate buffer into the WOLFSSL Context.
- * It behaves like the non-buffered version, only differing in its ability
- * to be called with a buffer as input instead of a file. The buffer is
- * provided by the in argument of size sz. format specifies the format type
- * of the buffer; SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM. More than one
+ * int
+ * )
+ *
+ * This function loads a CA certificate buffer into the WOLFSSL Context.
+ * It behaves like the non-buffered version, only differing in its ability
+ * to be called with a buffer as input instead of a file. The buffer is
+ * provided by the in argument of size sz. format specifies the format type
+ * of the buffer; SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM. More than one
* CA certificate may be loaded per buffer as long as the format is in PEM.
- *
+ *
* Please see the examples for proper usage.
- *
+ *
* Returns
- *
+ *
* SSL_SUCCESS upon success
* SSL_BAD_FILETYPE will be returned if the file is the wrong format.
* SSL_BAD_FILE will be returned if the file doesn’t exist, can’t be read, or is corrupted.
* MEMORY_E will be returned if an out of memory condition occurs.
* ASN_INPUT_E will be returned if Base16 decoding fails on the file.
* BUFFER_E will be returned if a chain buffer is bigger than the receiving buffer.
- *
+ *
* Parameters
- *
+ *
* ctx pointer to the SSL context, created with wolfSSL_CTX_new().
* in pointer to the CA certificate buffer.
* sz size of the input CA certificate buffer, in.
@@ -637,130 +647,130 @@ int tls_smp_client_task() {
if (ret == WOLFSSL_SUCCESS) {
ret = wolfSSL_CTX_load_verify_buffer(ctx, CA_FILE, sizeof_CA_FILE(), WOLFSSL_FILETYPE_PEM);
if (ret == WOLFSSL_SUCCESS) {
- WOLFSSL_MSG("wolfSSL_CTX_load_verify_buffer successful\n");
+ ESP_LOGI(TAG, "wolfSSL_CTX_load_verify_buffer successful\n");
}
else {
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_CTX_load_verify_buffer failed\n");
+ ESP_LOGE(TAG, "ERROR: wolfSSL_CTX_load_verify_buffer failed\n");
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("skipping wolfSSL_CTX_load_verify_buffer\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "skipping wolfSSL_CTX_load_verify_buffer\n");
}
-
-
- /*
+
+
+ /*
***************************************************************************
- * Create a WOLFSSL object
- *
- * The wolfSSL_new() function creates a new SSL session, taking an already
+ * Create a WOLFSSL object
+ *
+ * The wolfSSL_new() function creates a new SSL session, taking an already
* created SSL context as input.
*
* wolfSSL_new() Returns:
- *
- * If successful the call will return a pointer to the newly-created
+ *
+ * If successful the call will return a pointer to the newly-created
* wolfSSL structure.
- *
+ *
* NULL Upon failure.
- *
+ *
* Parameters: WOLFSSL_API WOLFSSL* wolfSSL_new(WOLFSSL_CTX *)
- *
+ *
* ctx pointer to the SSL context, created with wolfSSL_CTX_new().
*
* See: https://www.wolfssl.com/doxygen/group__Setup.html#ga3b1873a50ef7fcee4e2cc8968c81b6c9
- *
+ *
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
ssl = wolfSSL_new(ctx);
if (ssl == NULL) {
- WOLFSSL_ERROR_MSG("ERROR : failed to create WOLFSSL object\n");
+ ESP_LOGE(TAG, "ERROR : failed to create WOLFSSL object\n");
ret = WOLFSSL_FAILURE;
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("skipping wolfSSL_new\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "skipping wolfSSL_new\n");
}
- /*
+ /*
***************************************************************************
* Attach wolfSSL to the socket using wolfSSL_set_fd()
- *
- * This function assigns a file descriptor (fd) as the input/output
- * facility for the SSL connection. Typically this will be a socket
+ *
+ * This function assigns a file descriptor (fd) as the input/output
+ * facility for the SSL connection. Typically this will be a socket
* file descriptor.
- *
+ *
* wolfSSL_set_fd returns:
- *
+ *
* SSL_SUCCESS upon success.
* Bad_FUNC_ARG upon failure.
- *
+ *
* Parameters:
- *
+ *
* ssl pointer to the SSL session, created with wolfSSL_new().
* fd file descriptor to use with SSL/TLS connection.
- *
+ *
* see https://www.wolfssl.com/doxygen/group__Setup.html#ga4f23ec6e60cc92e0e899071653d3188b
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
ret = wolfSSL_set_fd(ssl, sockfd);
if (ret == WOLFSSL_SUCCESS) {
- WOLFSSL_MSG("wolfSSL_set_fd successful\n");
+ ESP_LOGI(TAG, "wolfSSL_set_fd successful\n");
}
else {
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_set_fd failed\n");
+ ESP_LOGE(TAG, "ERROR: wolfSSL_set_fd failed\n");
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("skipping wolfSSL_set_fd\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "skipping wolfSSL_set_fd\n");
}
- /*
+ /*
***************************************************************************
- * Connect to wolfSSL on the server side
- *
- * This function is called on the client side and initiates an SSL/TLS
- * handshake with a server. When this function is called, the underlying
- * communication channel has already been set up. wolfSSL_connect() works
- * with both blocking and non-blocking I/O. When the underlying I/O is
- * non-blocking, wolfSSL_connect() will return when the underlying I/O
- * could not satisfy the needs of wolfSSL_connect to continue the
- * handshake.
- *
- * In this case, a call to wolfSSL_get_error() will yield either
- * SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. The calling process must
- * then repeat the call to wolfSSL_connect() when the underlying I/O
- * is ready and wolfSSL will pick up where it left off.
- *
- * When using a non-blocking socket, nothing needs to be done,
- * but select() can be used to check for the required condition.
- *
- * If the underlying I/O is blocking, wolfSSL_connect() will only return
- * once the handshake has been finished or an error occurred. wolfSSL takes
- * a different approach to certificate verification than OpenSSL does.
- *
- * The default policy for the client is to verify the server, this means
- * that if you don't load CAs to verify the server you'll get a connect
- * error, unable to verify (-155).
- *
- * If you want to mimic OpenSSL behavior of having SSL_connect succeed even
- * if verifying the server fails and reducing security you can do this by
- * calling: SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); before
+ * Connect to wolfSSL on the server side
+ *
+ * This function is called on the client side and initiates an SSL/TLS
+ * handshake with a server. When this function is called, the underlying
+ * communication channel has already been set up. wolfSSL_connect() works
+ * with both blocking and non-blocking I/O. When the underlying I/O is
+ * non-blocking, wolfSSL_connect() will return when the underlying I/O
+ * could not satisfy the needs of wolfSSL_connect to continue the
+ * handshake.
+ *
+ * In this case, a call to wolfSSL_get_error() will yield either
+ * SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. The calling process must
+ * then repeat the call to wolfSSL_connect() when the underlying I/O
+ * is ready and wolfSSL will pick up where it left off.
+ *
+ * When using a non-blocking socket, nothing needs to be done,
+ * but select() can be used to check for the required condition.
+ *
+ * If the underlying I/O is blocking, wolfSSL_connect() will only return
+ * once the handshake has been finished or an error occurred. wolfSSL takes
+ * a different approach to certificate verification than OpenSSL does.
+ *
+ * The default policy for the client is to verify the server, this means
+ * that if you don't load CAs to verify the server you'll get a connect
+ * error, unable to verify (-155).
+ *
+ * If you want to mimic OpenSSL behavior of having SSL_connect succeed even
+ * if verifying the server fails and reducing security you can do this by
+ * calling: SSL_CTX_set_verify(ctx, SSL_VERIFY_NONE, 0); before
* calling SSL_new(); Though it's not recommended.
- *
+ *
* Returns:
- *
+ *
* SSL_SUCCESS If successful.
- * SSL_FATAL_ERROR will be returned if an error occurred. To get a more
+ * SSL_FATAL_ERROR will be returned if an error occurred. To get a more
* detailed error code, call wolfSSL_get_error().
- *
+ *
* Parameters:
- *
+ *
* ssl a pointer to a WOLFSSL structure, created using wolfSSL_new().
*
* see: https://www.wolfssl.com/doxygen/group__IO.html#ga5b8f41cca120758d1860c7bc959755dd
@@ -769,58 +779,58 @@ int tls_smp_client_task() {
if (ret == WOLFSSL_SUCCESS) {
ret = wolfSSL_connect(ssl);
if (ret == WOLFSSL_SUCCESS) {
- WOLFSSL_MSG("wolfSSL_connect successful\n");
+ ESP_LOGI(TAG, "wolfSSL_connect successful\n");
}
else {
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_connect failed\n");
+ ESP_LOGE(TAG, "ERROR: wolfSSL_connect failed\n");
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("skipping wolfSSL_connect\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "skipping wolfSSL_connect\n");
}
-
+
/*
***************************************************************************
- * send the message to the server
- *
- * The wolfSSL_write() function writes sz bytes from the buffer, data, to
- * the SSL connection, ssl. If necessary, wolfSSL_write() will negotiate an
- * SSL/TLS session if the handshake has not already been performed yet by
- * wolfSSL_connect() or wolfSSL_accept(). wolfSSL_write() works with both
- * blocking and non-blocking I/O.
- *
- * When the underlying I/O is non-blocking, wolfSSL_write() will return
- * when the underlying I/O could not satisfy the needs of wolfSSL_write()
- * to continue. In this case, a call to wolfSSL_get_error() will yield
- * either SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. The calling process
- * must then repeat the call to wolfSSL_write() when the underlying I/O is
- * ready.
- *
- * If the underlying I/O is blocking, wolfSSL_write() will only return once
- * the buffer data of size sz has been completely written or an error
+ * send the message to the server
+ *
+ * The wolfSSL_write() function writes sz bytes from the buffer, data, to
+ * the SSL connection, ssl. If necessary, wolfSSL_write() will negotiate an
+ * SSL/TLS session if the handshake has not already been performed yet by
+ * wolfSSL_connect() or wolfSSL_accept(). wolfSSL_write() works with both
+ * blocking and non-blocking I/O.
+ *
+ * When the underlying I/O is non-blocking, wolfSSL_write() will return
+ * when the underlying I/O could not satisfy the needs of wolfSSL_write()
+ * to continue. In this case, a call to wolfSSL_get_error() will yield
+ * either SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE. The calling process
+ * must then repeat the call to wolfSSL_write() when the underlying I/O is
+ * ready.
+ *
+ * If the underlying I/O is blocking, wolfSSL_write() will only return once
+ * the buffer data of size sz has been completely written or an error
* occurred.
- *
+ *
* wolfSSL_write() Returns:
- *
+ *
* >0 the number of bytes written upon success.
- *
- * 0 will be returned upon failure. Call wolfSSL_get_error() for
+ *
+ * 0 will be returned upon failure. Call wolfSSL_get_error() for
* the specific error code.
- *
- * SSL_FATAL_ERROR will be returned upon failure when either an error
- * occurred or, when using non-blocking sockets, the SSL_ERROR_WANT_READ
+ *
+ * SSL_FATAL_ERROR will be returned upon failure when either an error
+ * occurred or, when using non-blocking sockets, the SSL_ERROR_WANT_READ
* or SSL_ERROR_WANT_WRITE error was received and and the application
- * needs to call wolfSSL_write() again. Use wolfSSL_get_error()
+ * needs to call wolfSSL_write() again. Use wolfSSL_get_error()
* to get a specific error code.
*
- * Parameters:
- *
+ * Parameters:
+ *
* ssl pointer to the SSL session, created with wolfSSL_new().
* data data buffer which will be sent to peer.
* sz size, in bytes, of data to send to the peer (data).
- *
+ *
* see: https://www.wolfssl.com/doxygen/group__IO.html#ga74b924a81e9efdf66d074690e5f53ef1
*
***************************************************************************
@@ -828,18 +838,18 @@ int tls_smp_client_task() {
if (ret == WOLFSSL_SUCCESS) {
memset(buff, 0, BUFF_SIZE);
-
+
/* get the length of our message, never longer than the declared size */
-
+
/* TODO check for zero length */
-
+
len = strnlen(sendMessage, sendMessageSize);
-
+
/* write the message over secure connection to the server */
if (wolfSSL_write(ssl, sendMessage, len) == len) {
- WOLFSSL_MSG("wolfSSL_write message sent successfully:\n");
- WOLFSSL_MSG(sendMessage);
+ ESP_LOGI(TAG, "wolfSSL_write message sent successfully:\n");
+ ESP_LOGI(TAG, "%s", sendMessage);
}
else {
@@ -848,81 +858,81 @@ int tls_smp_client_task() {
char err_buff[80];
wolfSSL_ERR_error_string(err, err_buff);
- WOLFSSL_ERROR_MSG(err_buff);
+ ESP_LOGE(TAG, "%s", err_buff);
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_write FAILED.\n");
+ ESP_LOGE(TAG, "ERROR: wolfSSL_write FAILED.\n");
ret = WOLFSSL_FAILURE;
}
}
else {
- /* a prior error occured */
- WOLFSSL_ERROR_MSG("Skipping wolfSSL_write\n");
+ /* a prior error occurred */
+ ESP_LOGE(TAG, "Skipping wolfSSL_write\n");
}
-
- /*
+
+ /*
***************************************************************************
- *
- * Read the server data into our buff array
- *
- * The wolfSSL_read() function reads sz bytes from the SSL session (ssl)
- * internal read buffer into the buffer data. The bytes read are removed
- * from the internal receive buffer. If necessary wolfSSL_read() will
- * negotiate an SSL/TLS session if the handshake has not already been
- * performed yet by wolfSSL_connect() or wolfSSL_accept(). The SSL/TLS
- * protocol uses SSL records which have a maximum size of 16kB (the max
- * record size can be controlled by the MAX_RECORD_SIZE define in
- * /wolfssl/internal.h).
- *
- * As such, wolfSSL needs to read an entire SSL record internally before
- * it is able to process and decrypt the record. Because of this, a call
- * to wolfSSL_read() will only be able to return the maximum buffer size
+ *
+ * Read the server data into our buff array
+ *
+ * The wolfSSL_read() function reads sz bytes from the SSL session (ssl)
+ * internal read buffer into the buffer data. The bytes read are removed
+ * from the internal receive buffer. If necessary wolfSSL_read() will
+ * negotiate an SSL/TLS session if the handshake has not already been
+ * performed yet by wolfSSL_connect() or wolfSSL_accept(). The SSL/TLS
+ * protocol uses SSL records which have a maximum size of 16kB (the max
+ * record size can be controlled by the MAX_RECORD_SIZE define in
+ * /wolfssl/internal.h).
+ *
+ * As such, wolfSSL needs to read an entire SSL record internally before
+ * it is able to process and decrypt the record. Because of this, a call
+ * to wolfSSL_read() will only be able to return the maximum buffer size
* which has been decrypted at the time of calling. There may be additional
- * not-yet-decrypted data waiting in the internal wolfSSL receive buffer
- * which will be retrieved and decrypted with the next call to
- * wolfSSL_read().
- *
- * If sz is larger than the number of bytes in the internal read buffer,
- * SSL_read() will return the bytes available in the internal read buffer.
- * If no bytes are buffered in the internal read buffer yet, a call to
+ * not-yet-decrypted data waiting in the internal wolfSSL receive buffer
+ * which will be retrieved and decrypted with the next call to
+ * wolfSSL_read().
+ *
+ * If sz is larger than the number of bytes in the internal read buffer,
+ * SSL_read() will return the bytes available in the internal read buffer.
+ * If no bytes are buffered in the internal read buffer yet, a call to
* wolfSSL_read() will trigger processing of the next record.
* Returns
- *
+ *
* >0 the number of bytes read upon success.
- *
+ *
* 0 will be returned upon failure. This may be caused by a either a clean
- * (close notify alert) shutdown or just that the peer closed the
+ * (close notify alert) shutdown or just that the peer closed the
* connection. Call wolfSSL_get_error() for the specific error code.
- *
- * SSL_FATAL_ERROR will be returned upon failure when either an error
- * occurred or, when using non-blocking sockets, the
- * SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE error was received and
- * the application needs to call wolfSSL_read() again.
- *
+ *
+ * SSL_FATAL_ERROR will be returned upon failure when either an error
+ * occurred or, when using non-blocking sockets, the
+ * SSL_ERROR_WANT_READ or SSL_ERROR_WANT_WRITE error was received and
+ * the application needs to call wolfSSL_read() again.
+ *
* Use wolfSSL_get_error() to get a specific error code.
- *
+ *
* Parameters
- *
+ *
* ssl pointer to the SSL session, created with wolfSSL_new().
* data buffer where wolfSSL_read() will place data read.
* sz number of bytes to read into data.
- *
+ *
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
- /* even though the result should be a zero-terminated string,
+ /* even though the result should be a zero-terminated string,
* we'll clear the receive buffer */
memset(buff, 0, BUFF_SIZE);
-
+
/* read the response data from our secure connection */
if (wolfSSL_read(ssl, buff, BUFF_SIZE - 1) > 0) {
-
+
/* one or more bytes received is considered success */
-
- /* Print to stdout any data the server sends */
- WOLFSSL_MSG("wolfSSL_read received message:\n");
- WOLFSSL_MSG(buff);
+
+ /* Print any data the server sends */
+ ESP_LOGI(TAG, "wolfSSL_read received message:\n");
+ ESP_LOGI(TAG, "%s", buff);
}
else {
/* get the integer error value */
@@ -932,46 +942,62 @@ int tls_smp_client_task() {
/* get the human-readable error string. */
char err_buff[80] = "\x0";
wolfSSL_ERR_error_string(err, err_buff);
- WOLFSSL_ERROR_MSG(err_buff);
-
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_read FAILED.\n");
+ ESP_LOGE(TAG, "%s", err_buff);
+
+ ESP_LOGE(TAG, "ERROR: wolfSSL_read FAILED.\n");
ret = WOLFSSL_FAILURE;
}
}
-
- /*
+
+ /*
***************************************************************************
- *
- * Cleanup and return
- *
+ *
+ * Cleanup and return
+ *
***************************************************************************
*/
if (sockfd != SOCKET_INVALID) {
close(sockfd); /* Close the connection to the server */
}
-
+
if (ssl) {
- wolfSSL_free(ssl); /* Free the wolfSSL object */
+ wolfSSL_free(ssl); /* Free the wolfSSL object */
}
-
+
if (ctx) {
- wolfSSL_CTX_free(ctx); /* Free the wolfSSL context object */
+ wolfSSL_CTX_free(ctx); /* Free the wolfSSL context object */
}
-
+
wolfSSL_Cleanup(); /* Cleanup the wolfSSL environment */
WOLFSSL_LEAVE("tls_smp_client_task", ret);
- WOLFSSL_MSG("tls_smp_client_task done!\n");
+ ESP_LOGI(TAG,"tls_smp_client_task done!\n");
return ret;
}
void app_main(void)
{
- //Initialize NVS
+ ESP_LOGI(TAG, "--------------------------------------------------------");
+ ESP_LOGI(TAG, "--------------------------------------------------------");
+ ESP_LOGI(TAG, "---------------------- BEGIN MAIN ----------------------");
+ ESP_LOGI(TAG, "--------------------------------------------------------");
+ ESP_LOGI(TAG, "--------------------------------------------------------");
+
+
+ ESP_LOGI(TAG, "LIBWOLFSSL_VERSION_STRING = %s", LIBWOLFSSL_VERSION_STRING);
+ ESP_LOGI(TAG, "CONFIG_IDF_TARGET = %s", CONFIG_IDF_TARGET);
+ ESP_LOGI(TAG, "CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ = %u MHz", CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ);
+ ESP_LOGI(TAG, "Xthal_have_ccount = %u", Xthal_have_ccount);
+
+ ESP_LOGI(TAG, "Stack HWM: %d\n", uxTaskGetStackHighWaterMark(NULL));
+
+ /* Initialize NVS */
esp_err_t ret = nvs_flash_init();
- if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
+ if (ret == ESP_ERR_NVS_NO_FREE_PAGES
+ ||
+ ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_ERROR_CHECK(nvs_flash_erase());
ret = nvs_flash_init();
}
@@ -981,14 +1007,16 @@ void app_main(void)
wifi_init_sta();
set_time();
-
+
for (;;) {
ESP_LOGI(TAG, "main loop");
- vTaskDelay(DelayTicks ? DelayTicks : 1); /* Minimum delay = 1 tick */
+ vTaskDelay(DelayTicks ? DelayTicks : 1); /* Minimum delay = 1 tick */
tls_smp_client_task();
+
+ /* upon completion, wait forever */
for (;;)
{
- vTaskDelay(DelayTicks ? DelayTicks : 1); /* Minimum delay = 1 tick */
+ vTaskDelay(DelayTicks ? DelayTicks : 1); /* Minimum delay = 1 tick */
}
}
}
diff --git a/ESP32/TLS13-wifi_station-client/sdkconfig b/ESP32/TLS13-wifi_station-client/sdkconfig
deleted file mode 100644
index 83356afe..00000000
--- a/ESP32/TLS13-wifi_station-client/sdkconfig
+++ /dev/null
@@ -1,1394 +0,0 @@
-#
-# Automatically generated file. DO NOT EDIT.
-# Espressif IoT Development Framework (ESP-IDF) Project Configuration
-#
-CONFIG_IDF_CMAKE=y
-CONFIG_IDF_TARGET_ARCH_XTENSA=y
-CONFIG_IDF_TARGET="esp32"
-CONFIG_IDF_TARGET_ESP32=y
-CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000
-
-#
-# SDK tool configuration
-#
-CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-"
-# CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set
-# end of SDK tool configuration
-
-#
-# Build type
-#
-CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y
-# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set
-CONFIG_APP_BUILD_GENERATE_BINARIES=y
-CONFIG_APP_BUILD_BOOTLOADER=y
-CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y
-# end of Build type
-
-#
-# Application manager
-#
-CONFIG_APP_COMPILE_TIME_DATE=y
-# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set
-# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set
-# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set
-CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16
-# end of Application manager
-
-#
-# Bootloader config
-#
-CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000
-CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set
-CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y
-# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set
-CONFIG_BOOTLOADER_LOG_LEVEL=3
-# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set
-CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y
-# CONFIG_BOOTLOADER_FACTORY_RESET is not set
-# CONFIG_BOOTLOADER_APP_TEST is not set
-CONFIG_BOOTLOADER_WDT_ENABLE=y
-# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set
-CONFIG_BOOTLOADER_WDT_TIME_MS=9000
-# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
-CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
-# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
-CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
-# end of Bootloader config
-
-#
-# Security features
-#
-# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set
-# CONFIG_SECURE_BOOT is not set
-# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
-# end of Security features
-
-#
-# Serial flasher config
-#
-CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200
-# CONFIG_ESPTOOLPY_NO_STUB is not set
-# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set
-# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set
-CONFIG_ESPTOOLPY_FLASHMODE_DIO=y
-# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set
-CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y
-CONFIG_ESPTOOLPY_FLASHMODE="dio"
-# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
-# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set
-# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ="40m"
-# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
-# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE="2MB"
-CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y
-CONFIG_ESPTOOLPY_BEFORE_RESET=y
-# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
-CONFIG_ESPTOOLPY_BEFORE="default_reset"
-CONFIG_ESPTOOLPY_AFTER_RESET=y
-# CONFIG_ESPTOOLPY_AFTER_NORESET is not set
-CONFIG_ESPTOOLPY_AFTER="hard_reset"
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_CONSOLE is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set
-CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set
-CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200
-CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
-# end of Serial flasher config
-
-#
-# Partition Table
-#
-CONFIG_PARTITION_TABLE_SINGLE_APP=y
-# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set
-# CONFIG_PARTITION_TABLE_TWO_OTA is not set
-# CONFIG_PARTITION_TABLE_CUSTOM is not set
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
-CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv"
-CONFIG_PARTITION_TABLE_OFFSET=0x8000
-CONFIG_PARTITION_TABLE_MD5=y
-# end of Partition Table
-
-#
-# Example Configuration
-#
-CONFIG_ESP_WIFI_SSID="myssid"
-CONFIG_ESP_WIFI_PASSWORD="mypassword"
-CONFIG_ESP_MAXIMUM_RETRY=5
-# end of Example Configuration
-
-#
-# Compiler options
-#
-CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
-# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set
-# CONFIG_COMPILER_OPTIMIZATION_PERF is not set
-# CONFIG_COMPILER_OPTIMIZATION_NONE is not set
-CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
-# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set
-# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set
-CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2
-# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set
-CONFIG_COMPILER_HIDE_PATHS_MACROS=y
-# CONFIG_COMPILER_CXX_EXCEPTIONS is not set
-# CONFIG_COMPILER_CXX_RTTI is not set
-CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
-# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set
-# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set
-# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set
-# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set
-# CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set
-# CONFIG_COMPILER_DUMP_RTL_FILES is not set
-# end of Compiler options
-
-#
-# Component config
-#
-
-#
-# Application Level Tracing
-#
-# CONFIG_APPTRACE_DEST_JTAG is not set
-CONFIG_APPTRACE_DEST_NONE=y
-CONFIG_APPTRACE_LOCK_ENABLE=y
-# end of Application Level Tracing
-
-#
-# ESP-ASIO
-#
-# CONFIG_ASIO_SSL_SUPPORT is not set
-# end of ESP-ASIO
-
-#
-# Bluetooth
-#
-# CONFIG_BT_ENABLED is not set
-# end of Bluetooth
-
-#
-# CoAP Configuration
-#
-CONFIG_COAP_MBEDTLS_PSK=y
-# CONFIG_COAP_MBEDTLS_PKI is not set
-# CONFIG_COAP_MBEDTLS_DEBUG is not set
-CONFIG_COAP_LOG_DEFAULT_LEVEL=0
-# end of CoAP Configuration
-
-#
-# Driver configurations
-#
-
-#
-# ADC configuration
-#
-# CONFIG_ADC_FORCE_XPD_FSM is not set
-CONFIG_ADC_DISABLE_DAC=y
-# end of ADC configuration
-
-#
-# MCPWM configuration
-#
-# CONFIG_MCPWM_ISR_IN_IRAM is not set
-# end of MCPWM configuration
-
-#
-# SPI configuration
-#
-# CONFIG_SPI_MASTER_IN_IRAM is not set
-CONFIG_SPI_MASTER_ISR_IN_IRAM=y
-# CONFIG_SPI_SLAVE_IN_IRAM is not set
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
-# end of SPI configuration
-
-#
-# TWAI configuration
-#
-# CONFIG_TWAI_ISR_IN_IRAM is not set
-# CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC is not set
-# CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set
-# CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set
-# CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set
-# end of TWAI configuration
-
-#
-# UART configuration
-#
-# CONFIG_UART_ISR_IN_IRAM is not set
-# end of UART configuration
-
-#
-# RTCIO configuration
-#
-# CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set
-# end of RTCIO configuration
-
-#
-# GPIO Configuration
-#
-# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set
-# end of GPIO Configuration
-
-#
-# GDMA Configuration
-#
-# CONFIG_GDMA_CTRL_FUNC_IN_IRAM is not set
-# CONFIG_GDMA_ISR_IRAM_SAFE is not set
-# end of GDMA Configuration
-# end of Driver configurations
-
-#
-# eFuse Bit Manager
-#
-# CONFIG_EFUSE_CUSTOM_TABLE is not set
-# CONFIG_EFUSE_VIRTUAL is not set
-# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y
-# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set
-CONFIG_EFUSE_MAX_BLK_LEN=192
-# end of eFuse Bit Manager
-
-#
-# ESP-TLS
-#
-CONFIG_ESP_TLS_USING_MBEDTLS=y
-# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set
-# CONFIG_ESP_TLS_SERVER is not set
-# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set
-# CONFIG_ESP_TLS_PSK_VERIFICATION is not set
-# CONFIG_ESP_TLS_INSECURE is not set
-# end of ESP-TLS
-
-#
-# ESP32-specific
-#
-CONFIG_ESP32_REV_MIN_0=y
-# CONFIG_ESP32_REV_MIN_1 is not set
-# CONFIG_ESP32_REV_MIN_2 is not set
-# CONFIG_ESP32_REV_MIN_3 is not set
-CONFIG_ESP32_REV_MIN=0
-CONFIG_ESP32_DPORT_WORKAROUND=y
-# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
-CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y
-# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set
-CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160
-# CONFIG_ESP32_SPIRAM_SUPPORT is not set
-# CONFIG_ESP32_TRAX is not set
-CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0
-# CONFIG_ESP32_ULP_COPROC_ENABLED is not set
-CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0
-CONFIG_ESP32_DEBUG_OCDAWARE=y
-CONFIG_ESP32_BROWNOUT_DET=y
-CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set
-CONFIG_ESP32_BROWNOUT_DET_LVL=0
-CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y
-# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set
-CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y
-# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set
-# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set
-# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set
-CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024
-CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000
-CONFIG_ESP32_XTAL_FREQ_40=y
-# CONFIG_ESP32_XTAL_FREQ_26 is not set
-# CONFIG_ESP32_XTAL_FREQ_AUTO is not set
-CONFIG_ESP32_XTAL_FREQ=40
-# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set
-# CONFIG_ESP32_NO_BLOBS is not set
-# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
-# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set
-# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set
-CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5
-# end of ESP32-specific
-
-#
-# ADC-Calibration
-#
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y
-CONFIG_ADC_CAL_LUT_ENABLE=y
-# end of ADC-Calibration
-
-#
-# Common ESP-related
-#
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
-# end of Common ESP-related
-
-#
-# Ethernet
-#
-CONFIG_ETH_ENABLED=y
-CONFIG_ETH_USE_ESP32_EMAC=y
-CONFIG_ETH_PHY_INTERFACE_RMII=y
-CONFIG_ETH_RMII_CLK_INPUT=y
-# CONFIG_ETH_RMII_CLK_OUTPUT is not set
-CONFIG_ETH_RMII_CLK_IN_GPIO=0
-CONFIG_ETH_DMA_BUFFER_SIZE=512
-CONFIG_ETH_DMA_RX_BUFFER_NUM=10
-CONFIG_ETH_DMA_TX_BUFFER_NUM=10
-CONFIG_ETH_USE_SPI_ETHERNET=y
-# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set
-# CONFIG_ETH_SPI_ETHERNET_W5500 is not set
-# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set
-# CONFIG_ETH_USE_OPENETH is not set
-# end of Ethernet
-
-#
-# Event Loop Library
-#
-# CONFIG_ESP_EVENT_LOOP_PROFILING is not set
-CONFIG_ESP_EVENT_POST_FROM_ISR=y
-CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y
-# end of Event Loop Library
-
-#
-# GDB Stub
-#
-# end of GDB Stub
-
-#
-# ESP HTTP client
-#
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y
-# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set
-CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y
-# end of ESP HTTP client
-
-#
-# HTTP Server
-#
-CONFIG_HTTPD_MAX_REQ_HDR_LEN=512
-CONFIG_HTTPD_MAX_URI_LEN=512
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=y
-CONFIG_HTTPD_PURGE_BUF_LEN=32
-# CONFIG_HTTPD_LOG_PURGE_DATA is not set
-# CONFIG_HTTPD_WS_SUPPORT is not set
-# end of HTTP Server
-
-#
-# ESP HTTPS OTA
-#
-# CONFIG_OTA_ALLOW_HTTP is not set
-# end of ESP HTTPS OTA
-
-#
-# ESP HTTPS server
-#
-# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set
-# end of ESP HTTPS server
-
-#
-# Hardware Settings
-#
-
-#
-# MAC Config
-#
-CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
-# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4
-# end of MAC Config
-
-#
-# Sleep Config
-#
-CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y
-CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y
-# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set
-# CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND is not set
-# end of Sleep Config
-
-#
-# RTC Clock Config
-#
-# end of RTC Clock Config
-# end of Hardware Settings
-
-#
-# IPC (Inter-Processor Call)
-#
-CONFIG_ESP_IPC_TASK_STACK_SIZE=1536
-CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y
-CONFIG_ESP_IPC_ISR_ENABLE=y
-# end of IPC (Inter-Processor Call)
-
-#
-# LCD and Touch Panel
-#
-
-#
-# LCD Peripheral Configuration
-#
-CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32
-# end of LCD Peripheral Configuration
-# end of LCD and Touch Panel
-
-#
-# ESP NETIF Adapter
-#
-CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120
-CONFIG_ESP_NETIF_TCPIP_LWIP=y
-# CONFIG_ESP_NETIF_LOOPBACK is not set
-CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y
-# end of ESP NETIF Adapter
-
-#
-# PHY
-#
-CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y
-# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set
-CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20
-CONFIG_ESP_PHY_MAX_TX_POWER=20
-CONFIG_ESP_PHY_REDUCE_TX_POWER=y
-# end of PHY
-
-#
-# Power Management
-#
-# CONFIG_PM_ENABLE is not set
-# end of Power Management
-
-#
-# ESP System Settings
-#
-# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set
-CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
-# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
-# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
-# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set
-
-#
-# Memory protection
-#
-# end of Memory protection
-
-CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
-CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584
-CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
-# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set
-# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
-CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
-CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
-CONFIG_ESP_CONSOLE_UART_DEFAULT=y
-# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
-# CONFIG_ESP_CONSOLE_NONE is not set
-CONFIG_ESP_CONSOLE_UART=y
-CONFIG_ESP_CONSOLE_MULTIPLE_UART=y
-CONFIG_ESP_CONSOLE_UART_NUM=0
-CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
-CONFIG_ESP_INT_WDT=y
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_INT_WDT_CHECK_CPU1=y
-CONFIG_ESP_TASK_WDT=y
-# CONFIG_ESP_TASK_WDT_PANIC is not set
-CONFIG_ESP_TASK_WDT_TIMEOUT_S=5
-CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
-CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
-# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
-# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set
-# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set
-CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y
-# end of ESP System Settings
-
-#
-# High resolution timer (esp_timer)
-#
-# CONFIG_ESP_TIMER_PROFILING is not set
-CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y
-CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y
-CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584
-CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1
-# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set
-# CONFIG_ESP_TIMER_IMPL_FRC2 is not set
-CONFIG_ESP_TIMER_IMPL_TG0_LAC=y
-# end of High resolution timer (esp_timer)
-
-#
-# Wi-Fi
-#
-CONFIG_ESP32_WIFI_ENABLED=y
-CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
-CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
-# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set
-CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
-CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
-CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
-# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
-CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
-CONFIG_ESP32_WIFI_TX_BA_WIN=6
-CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
-CONFIG_ESP32_WIFI_RX_BA_WIN=6
-CONFIG_ESP32_WIFI_NVS_ENABLED=y
-CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
-# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set
-CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752
-CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
-CONFIG_ESP32_WIFI_IRAM_OPT=y
-CONFIG_ESP32_WIFI_RX_IRAM_OPT=y
-CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y
-# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
-# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set
-# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y
-# end of Wi-Fi
-
-#
-# Core dump
-#
-# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set
-# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set
-CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y
-# end of Core dump
-
-#
-# FAT Filesystem support
-#
-# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set
-CONFIG_FATFS_CODEPAGE_437=y
-# CONFIG_FATFS_CODEPAGE_720 is not set
-# CONFIG_FATFS_CODEPAGE_737 is not set
-# CONFIG_FATFS_CODEPAGE_771 is not set
-# CONFIG_FATFS_CODEPAGE_775 is not set
-# CONFIG_FATFS_CODEPAGE_850 is not set
-# CONFIG_FATFS_CODEPAGE_852 is not set
-# CONFIG_FATFS_CODEPAGE_855 is not set
-# CONFIG_FATFS_CODEPAGE_857 is not set
-# CONFIG_FATFS_CODEPAGE_860 is not set
-# CONFIG_FATFS_CODEPAGE_861 is not set
-# CONFIG_FATFS_CODEPAGE_862 is not set
-# CONFIG_FATFS_CODEPAGE_863 is not set
-# CONFIG_FATFS_CODEPAGE_864 is not set
-# CONFIG_FATFS_CODEPAGE_865 is not set
-# CONFIG_FATFS_CODEPAGE_866 is not set
-# CONFIG_FATFS_CODEPAGE_869 is not set
-# CONFIG_FATFS_CODEPAGE_932 is not set
-# CONFIG_FATFS_CODEPAGE_936 is not set
-# CONFIG_FATFS_CODEPAGE_949 is not set
-# CONFIG_FATFS_CODEPAGE_950 is not set
-CONFIG_FATFS_CODEPAGE=437
-CONFIG_FATFS_LFN_NONE=y
-# CONFIG_FATFS_LFN_HEAP is not set
-# CONFIG_FATFS_LFN_STACK is not set
-CONFIG_FATFS_FS_LOCK=0
-CONFIG_FATFS_TIMEOUT_MS=10000
-CONFIG_FATFS_PER_FILE_CACHE=y
-# CONFIG_FATFS_USE_FASTSEEK is not set
-# end of FAT Filesystem support
-
-#
-# Modbus configuration
-#
-CONFIG_FMB_COMM_MODE_TCP_EN=y
-CONFIG_FMB_TCP_PORT_DEFAULT=502
-CONFIG_FMB_TCP_PORT_MAX_CONN=5
-CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20
-CONFIG_FMB_COMM_MODE_RTU_EN=y
-CONFIG_FMB_COMM_MODE_ASCII_EN=y
-CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150
-CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200
-CONFIG_FMB_QUEUE_LENGTH=20
-CONFIG_FMB_PORT_TASK_STACK_SIZE=4096
-CONFIG_FMB_SERIAL_BUF_SIZE=256
-CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8
-CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000
-CONFIG_FMB_PORT_TASK_PRIO=10
-# CONFIG_FMB_PORT_TASK_AFFINITY_NO_AFFINITY is not set
-CONFIG_FMB_PORT_TASK_AFFINITY_CPU0=y
-# CONFIG_FMB_PORT_TASK_AFFINITY_CPU1 is not set
-CONFIG_FMB_PORT_TASK_AFFINITY=0x0
-CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y
-CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233
-CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20
-CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
-CONFIG_FMB_CONTROLLER_STACK_SIZE=4096
-CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20
-# CONFIG_FMB_TIMER_PORT_ENABLED is not set
-CONFIG_FMB_TIMER_GROUP=0
-CONFIG_FMB_TIMER_INDEX=0
-CONFIG_FMB_MASTER_TIMER_GROUP=0
-CONFIG_FMB_MASTER_TIMER_INDEX=0
-# CONFIG_FMB_TIMER_ISR_IN_IRAM is not set
-# end of Modbus configuration
-
-#
-# FreeRTOS
-#
-# CONFIG_FREERTOS_UNICORE is not set
-CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF
-CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y
-CONFIG_FREERTOS_CORETIMER_0=y
-# CONFIG_FREERTOS_CORETIMER_1 is not set
-CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y
-CONFIG_FREERTOS_HZ=100
-CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y
-# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set
-# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set
-CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y
-# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1
-CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y
-# CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set
-# CONFIG_FREERTOS_ASSERT_DISABLE is not set
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536
-CONFIG_FREERTOS_ISR_STACKSIZE=1536
-# CONFIG_FREERTOS_LEGACY_HOOKS is not set
-CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
-CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
-# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set
-CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
-CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
-CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
-# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set
-# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set
-CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
-CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
-# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
-# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
-CONFIG_FREERTOS_DEBUG_OCDAWARE=y
-# CONFIG_FREERTOS_FPU_IN_ISR is not set
-CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y
-# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set
-# end of FreeRTOS
-
-#
-# Hardware Abstraction Layer (HAL) and Low Level (LL)
-#
-CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y
-# CONFIG_HAL_ASSERTION_DISABLE is not set
-# CONFIG_HAL_ASSERTION_SILIENT is not set
-# CONFIG_HAL_ASSERTION_ENABLE is not set
-CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2
-# end of Hardware Abstraction Layer (HAL) and Low Level (LL)
-
-#
-# Heap memory debugging
-#
-CONFIG_HEAP_POISONING_DISABLED=y
-# CONFIG_HEAP_POISONING_LIGHT is not set
-# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set
-CONFIG_HEAP_TRACING_OFF=y
-# CONFIG_HEAP_TRACING_STANDALONE is not set
-# CONFIG_HEAP_TRACING_TOHOST is not set
-# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set
-# end of Heap memory debugging
-
-#
-# jsmn
-#
-# CONFIG_JSMN_PARENT_LINKS is not set
-# CONFIG_JSMN_STRICT is not set
-# end of jsmn
-
-#
-# libsodium
-#
-# end of libsodium
-
-#
-# Log output
-#
-# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set
-# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set
-# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set
-CONFIG_LOG_DEFAULT_LEVEL_INFO=y
-# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
-# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
-CONFIG_LOG_DEFAULT_LEVEL=3
-CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y
-# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set
-# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set
-CONFIG_LOG_MAXIMUM_LEVEL=3
-CONFIG_LOG_COLORS=y
-CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
-# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set
-# end of Log output
-
-#
-# LWIP
-#
-CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
-# CONFIG_LWIP_NETIF_API is not set
-# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
-CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
-# CONFIG_LWIP_L2_TO_L3_COPY is not set
-# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
-CONFIG_LWIP_TIMERS_ONDEMAND=y
-CONFIG_LWIP_MAX_SOCKETS=10
-# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
-# CONFIG_LWIP_SO_LINGER is not set
-CONFIG_LWIP_SO_REUSE=y
-CONFIG_LWIP_SO_REUSE_RXTOALL=y
-# CONFIG_LWIP_SO_RCVBUF is not set
-# CONFIG_LWIP_NETBUF_RECVINFO is not set
-CONFIG_LWIP_IP4_FRAG=y
-CONFIG_LWIP_IP6_FRAG=y
-# CONFIG_LWIP_IP4_REASSEMBLY is not set
-# CONFIG_LWIP_IP6_REASSEMBLY is not set
-# CONFIG_LWIP_IP_FORWARD is not set
-# CONFIG_LWIP_STATS is not set
-# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
-CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
-CONFIG_LWIP_GARP_TMR_INTERVAL=60
-CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
-CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
-# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
-CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y
-# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
-CONFIG_LWIP_DHCP_OPTIONS_LEN=68
-
-#
-# DHCP server
-#
-CONFIG_LWIP_DHCPS=y
-CONFIG_LWIP_DHCPS_LEASE_UNIT=60
-CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8
-# end of DHCP server
-
-# CONFIG_LWIP_AUTOIP is not set
-CONFIG_LWIP_IPV6=y
-# CONFIG_LWIP_IPV6_AUTOCONFIG is not set
-CONFIG_LWIP_IPV6_NUM_ADDRESSES=3
-# CONFIG_LWIP_IPV6_FORWARD is not set
-# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set
-CONFIG_LWIP_NETIF_LOOPBACK=y
-CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
-
-#
-# TCP
-#
-CONFIG_LWIP_MAX_ACTIVE_TCP=16
-CONFIG_LWIP_MAX_LISTENING_TCP=16
-CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
-CONFIG_LWIP_TCP_MAXRTX=12
-CONFIG_LWIP_TCP_SYNMAXRTX=12
-CONFIG_LWIP_TCP_MSS=1440
-CONFIG_LWIP_TCP_TMR_INTERVAL=250
-CONFIG_LWIP_TCP_MSL=60000
-CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744
-CONFIG_LWIP_TCP_WND_DEFAULT=5744
-CONFIG_LWIP_TCP_RECVMBOX_SIZE=6
-CONFIG_LWIP_TCP_QUEUE_OOSEQ=y
-# CONFIG_LWIP_TCP_SACK_OUT is not set
-# CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set
-CONFIG_LWIP_TCP_OVERSIZE_MSS=y
-# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
-# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
-CONFIG_LWIP_TCP_RTO_TIME=1500
-# end of TCP
-
-#
-# UDP
-#
-CONFIG_LWIP_MAX_UDP_PCBS=16
-CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
-# end of UDP
-
-#
-# Checksums
-#
-# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set
-# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set
-CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y
-# end of Checksums
-
-CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
-CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
-# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
-# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
-CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
-# CONFIG_LWIP_PPP_SUPPORT is not set
-CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
-CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
-# CONFIG_LWIP_SLIP_SUPPORT is not set
-
-#
-# ICMP
-#
-CONFIG_LWIP_ICMP=y
-# CONFIG_LWIP_MULTICAST_PING is not set
-# CONFIG_LWIP_BROADCAST_PING is not set
-# end of ICMP
-
-#
-# LWIP RAW API
-#
-CONFIG_LWIP_MAX_RAW_PCBS=16
-# end of LWIP RAW API
-
-#
-# SNTP
-#
-CONFIG_LWIP_SNTP_MAX_SERVERS=1
-# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set
-CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
-# end of SNTP
-
-CONFIG_LWIP_ESP_LWIP_ASSERT=y
-
-#
-# Hooks
-#
-# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set
-CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y
-# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set
-CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y
-# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set
-# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set
-CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y
-# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set
-# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set
-CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y
-# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set
-# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set
-# end of Hooks
-
-# CONFIG_LWIP_DEBUG is not set
-# end of LWIP
-
-#
-# mbedTLS
-#
-CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y
-# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set
-# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y
-CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384
-CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
-# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set
-# CONFIG_MBEDTLS_DEBUG is not set
-
-#
-# mbedTLS v2.28.x related
-#
-# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set
-# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
-# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
-CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
-# end of mbedTLS v2.28.x related
-
-#
-# Certificate Bundle
-#
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set
-# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set
-# end of Certificate Bundle
-
-# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set
-# CONFIG_MBEDTLS_CMAC_C is not set
-CONFIG_MBEDTLS_HARDWARE_AES=y
-CONFIG_MBEDTLS_HARDWARE_MPI=y
-CONFIG_MBEDTLS_HARDWARE_SHA=y
-CONFIG_MBEDTLS_ROM_MD5=y
-# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set
-# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set
-CONFIG_MBEDTLS_HAVE_TIME=y
-# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set
-CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y
-CONFIG_MBEDTLS_SHA512_C=y
-CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y
-# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set
-# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set
-# CONFIG_MBEDTLS_TLS_DISABLED is not set
-CONFIG_MBEDTLS_TLS_SERVER=y
-CONFIG_MBEDTLS_TLS_CLIENT=y
-CONFIG_MBEDTLS_TLS_ENABLED=y
-
-#
-# TLS Key Exchange Methods
-#
-# CONFIG_MBEDTLS_PSK_MODES is not set
-CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y
-# end of TLS Key Exchange Methods
-
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
-# CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set
-CONFIG_MBEDTLS_SSL_PROTO_TLS1=y
-CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y
-CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
-# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set
-# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set
-CONFIG_MBEDTLS_SSL_ALPN=y
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y
-CONFIG_MBEDTLS_X509_CHECK_KEY_USAGE=y
-CONFIG_MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE=y
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y
-
-#
-# Symmetric Ciphers
-#
-CONFIG_MBEDTLS_AES_C=y
-# CONFIG_MBEDTLS_CAMELLIA_C is not set
-# CONFIG_MBEDTLS_DES_C is not set
-CONFIG_MBEDTLS_RC4_DISABLED=y
-# CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set
-# CONFIG_MBEDTLS_RC4_ENABLED is not set
-# CONFIG_MBEDTLS_BLOWFISH_C is not set
-# CONFIG_MBEDTLS_XTEA_C is not set
-CONFIG_MBEDTLS_CCM_C=y
-CONFIG_MBEDTLS_GCM_C=y
-# CONFIG_MBEDTLS_NIST_KW_C is not set
-# end of Symmetric Ciphers
-
-# CONFIG_MBEDTLS_RIPEMD160_C is not set
-
-#
-# Certificates
-#
-CONFIG_MBEDTLS_PEM_PARSE_C=y
-CONFIG_MBEDTLS_PEM_WRITE_C=y
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=y
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=y
-# end of Certificates
-
-CONFIG_MBEDTLS_ECP_C=y
-CONFIG_MBEDTLS_ECDH_C=y
-CONFIG_MBEDTLS_ECDSA_C=y
-# CONFIG_MBEDTLS_ECJPAKE_C is not set
-CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
-CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
-# CONFIG_MBEDTLS_POLY1305_C is not set
-# CONFIG_MBEDTLS_CHACHA20_C is not set
-# CONFIG_MBEDTLS_HKDF_C is not set
-# CONFIG_MBEDTLS_THREADING_C is not set
-# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set
-# CONFIG_MBEDTLS_SECURITY_RISKS is not set
-# end of mbedTLS
-
-#
-# mDNS
-#
-CONFIG_MDNS_MAX_SERVICES=10
-CONFIG_MDNS_TASK_PRIORITY=1
-CONFIG_MDNS_TASK_STACK_SIZE=4096
-# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set
-CONFIG_MDNS_TASK_AFFINITY_CPU0=y
-# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set
-CONFIG_MDNS_TASK_AFFINITY=0x0
-CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000
-# CONFIG_MDNS_STRICT_MODE is not set
-CONFIG_MDNS_TIMER_PERIOD_MS=100
-# CONFIG_MDNS_NETWORKING_SOCKET is not set
-CONFIG_MDNS_MULTIPLE_INSTANCE=y
-# end of mDNS
-
-#
-# ESP-MQTT Configurations
-#
-CONFIG_MQTT_PROTOCOL_311=y
-CONFIG_MQTT_TRANSPORT_SSL=y
-CONFIG_MQTT_TRANSPORT_WEBSOCKET=y
-CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y
-# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set
-# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set
-# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set
-# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set
-# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set
-# CONFIG_MQTT_CUSTOM_OUTBOX is not set
-# end of ESP-MQTT Configurations
-
-#
-# Newlib
-#
-CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y
-# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set
-# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set
-# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set
-# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set
-CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y
-# CONFIG_NEWLIB_NANO_FORMAT is not set
-# end of Newlib
-
-#
-# NVS
-#
-# end of NVS
-
-#
-# OpenSSL
-#
-# CONFIG_OPENSSL_DEBUG is not set
-CONFIG_OPENSSL_ERROR_STACK=y
-# CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set
-CONFIG_OPENSSL_ASSERT_EXIT=y
-# end of OpenSSL
-
-#
-# OpenThread
-#
-# CONFIG_OPENTHREAD_ENABLED is not set
-# end of OpenThread
-
-#
-# PThreads
-#
-CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5
-CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
-CONFIG_PTHREAD_STACK_MIN=768
-CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y
-# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set
-# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set
-CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1
-CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread"
-# end of PThreads
-
-#
-# SPI Flash driver
-#
-# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
-# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
-CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
-CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
-# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
-# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
-# CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set
-# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set
-# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set
-CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y
-CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20
-CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1
-CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192
-# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set
-# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set
-# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set
-
-#
-# Auto-detect flash chips
-#
-CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
-# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set
-# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set
-# end of Auto-detect flash chips
-
-CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
-# end of SPI Flash driver
-
-#
-# SPIFFS Configuration
-#
-CONFIG_SPIFFS_MAX_PARTITIONS=3
-
-#
-# SPIFFS Cache Configuration
-#
-CONFIG_SPIFFS_CACHE=y
-CONFIG_SPIFFS_CACHE_WR=y
-# CONFIG_SPIFFS_CACHE_STATS is not set
-# end of SPIFFS Cache Configuration
-
-CONFIG_SPIFFS_PAGE_CHECK=y
-CONFIG_SPIFFS_GC_MAX_RUNS=10
-# CONFIG_SPIFFS_GC_STATS is not set
-CONFIG_SPIFFS_PAGE_SIZE=256
-CONFIG_SPIFFS_OBJ_NAME_LEN=32
-# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set
-CONFIG_SPIFFS_USE_MAGIC=y
-CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
-CONFIG_SPIFFS_META_LENGTH=4
-CONFIG_SPIFFS_USE_MTIME=y
-
-#
-# Debug Configuration
-#
-# CONFIG_SPIFFS_DBG is not set
-# CONFIG_SPIFFS_API_DBG is not set
-# CONFIG_SPIFFS_GC_DBG is not set
-# CONFIG_SPIFFS_CACHE_DBG is not set
-# CONFIG_SPIFFS_CHECK_DBG is not set
-# CONFIG_SPIFFS_TEST_VISUALISATION is not set
-# end of Debug Configuration
-# end of SPIFFS Configuration
-
-#
-# TCP Transport
-#
-
-#
-# Websocket
-#
-CONFIG_WS_TRANSPORT=y
-CONFIG_WS_BUFFER_SIZE=1024
-# end of Websocket
-# end of TCP Transport
-
-#
-# Unity unit testing library
-#
-CONFIG_UNITY_ENABLE_FLOAT=y
-CONFIG_UNITY_ENABLE_DOUBLE=y
-# CONFIG_UNITY_ENABLE_64BIT is not set
-# CONFIG_UNITY_ENABLE_COLOR is not set
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
-# CONFIG_UNITY_ENABLE_FIXTURE is not set
-# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
-# end of Unity unit testing library
-
-#
-# Virtual file system
-#
-CONFIG_VFS_SUPPORT_IO=y
-CONFIG_VFS_SUPPORT_DIR=y
-CONFIG_VFS_SUPPORT_SELECT=y
-CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y
-CONFIG_VFS_SUPPORT_TERMIOS=y
-
-#
-# Host File System I/O (Semihosting)
-#
-CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1
-CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128
-# end of Host File System I/O (Semihosting)
-# end of Virtual file system
-
-#
-# Wear Levelling
-#
-# CONFIG_WL_SECTOR_SIZE_512 is not set
-CONFIG_WL_SECTOR_SIZE_4096=y
-CONFIG_WL_SECTOR_SIZE=4096
-# end of Wear Levelling
-
-#
-# Wi-Fi Provisioning Manager
-#
-CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
-CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
-# end of Wi-Fi Provisioning Manager
-
-#
-# Supplicant
-#
-CONFIG_WPA_MBEDTLS_CRYPTO=y
-# CONFIG_WPA_WAPI_PSK is not set
-# CONFIG_WPA_SUITE_B_192 is not set
-# CONFIG_WPA_DEBUG_PRINT is not set
-# CONFIG_WPA_TESTING_OPTIONS is not set
-# CONFIG_WPA_WPS_STRICT is not set
-# CONFIG_WPA_11KV_SUPPORT is not set
-# end of Supplicant
-# end of Component config
-
-#
-# Compatibility options
-#
-# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set
-# end of Compatibility options
-
-# Deprecated options for backward compatibility
-CONFIG_TOOLPREFIX="xtensa-esp32-elf-"
-# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
-CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y
-# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
-CONFIG_LOG_BOOTLOADER_LEVEL=3
-# CONFIG_APP_ROLLBACK_ENABLE is not set
-# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
-# CONFIG_FLASHMODE_QIO is not set
-# CONFIG_FLASHMODE_QOUT is not set
-CONFIG_FLASHMODE_DIO=y
-# CONFIG_FLASHMODE_DOUT is not set
-# CONFIG_MONITOR_BAUD_9600B is not set
-# CONFIG_MONITOR_BAUD_57600B is not set
-CONFIG_MONITOR_BAUD_115200B=y
-# CONFIG_MONITOR_BAUD_230400B is not set
-# CONFIG_MONITOR_BAUD_921600B is not set
-# CONFIG_MONITOR_BAUD_2MB is not set
-# CONFIG_MONITOR_BAUD_OTHER is not set
-CONFIG_MONITOR_BAUD_OTHER_VAL=115200
-CONFIG_MONITOR_BAUD=115200
-CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
-# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set
-CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
-# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
-# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set
-CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2
-# CONFIG_CXX_EXCEPTIONS is not set
-CONFIG_STACK_CHECK_NONE=y
-# CONFIG_STACK_CHECK_NORM is not set
-# CONFIG_STACK_CHECK_STRONG is not set
-# CONFIG_STACK_CHECK_ALL is not set
-# CONFIG_WARN_WRITE_STRINGS is not set
-# CONFIG_DISABLE_GCC8_WARNINGS is not set
-# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
-CONFIG_ESP32_APPTRACE_DEST_NONE=y
-CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
-CONFIG_ADC2_DISABLE_DAC=y
-# CONFIG_SPIRAM_SUPPORT is not set
-CONFIG_TRACEMEM_RESERVE_DRAM=0x0
-# CONFIG_ULP_COPROC_ENABLED is not set
-CONFIG_ULP_COPROC_RESERVE_MEM=0
-CONFIG_BROWNOUT_DET=y
-CONFIG_BROWNOUT_DET_LVL_SEL_0=y
-# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set
-CONFIG_BROWNOUT_DET_LVL=0
-CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set
-# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set
-# CONFIG_NO_BLOBS is not set
-# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
-# CONFIG_EVENT_LOOP_PROFILING is not set
-CONFIG_POST_EVENTS_FROM_ISR=y
-CONFIG_POST_EVENTS_FROM_IRAM_ISR=y
-# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set
-CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y
-CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4
-CONFIG_ESP_SYSTEM_PD_FLASH=y
-# CONFIG_ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND is not set
-CONFIG_IPC_TASK_STACK_SIZE=1536
-CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y
-# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set
-CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20
-CONFIG_ESP32_PHY_MAX_TX_POWER=20
-CONFIG_ESP32_REDUCE_PHY_TX_POWER=y
-# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set
-CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y
-# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set
-# CONFIG_ESP32S2_PANIC_GDBSTUB is not set
-CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
-CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
-CONFIG_MAIN_TASK_STACK_SIZE=3584
-CONFIG_CONSOLE_UART_DEFAULT=y
-# CONFIG_CONSOLE_UART_CUSTOM is not set
-# CONFIG_ESP_CONSOLE_UART_NONE is not set
-CONFIG_CONSOLE_UART=y
-CONFIG_CONSOLE_UART_NUM=0
-CONFIG_CONSOLE_UART_BAUDRATE=115200
-CONFIG_INT_WDT=y
-CONFIG_INT_WDT_TIMEOUT_MS=300
-CONFIG_INT_WDT_CHECK_CPU1=y
-CONFIG_TASK_WDT=y
-# CONFIG_TASK_WDT_PANIC is not set
-CONFIG_TASK_WDT_TIMEOUT_S=5
-CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
-CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
-# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set
-CONFIG_TIMER_TASK_STACK_SIZE=3584
-# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
-# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set
-CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y
-CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150
-CONFIG_MB_MASTER_DELAY_MS_CONVERT=200
-CONFIG_MB_QUEUE_LENGTH=20
-CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096
-CONFIG_MB_SERIAL_BUF_SIZE=256
-CONFIG_MB_SERIAL_TASK_PRIO=10
-CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y
-CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233
-CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20
-CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
-CONFIG_MB_CONTROLLER_STACK_SIZE=4096
-CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
-# CONFIG_MB_TIMER_PORT_ENABLED is not set
-CONFIG_MB_TIMER_GROUP=0
-CONFIG_MB_TIMER_INDEX=0
-# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set
-CONFIG_TIMER_TASK_PRIORITY=1
-CONFIG_TIMER_TASK_STACK_DEPTH=2048
-CONFIG_TIMER_QUEUE_LENGTH=10
-# CONFIG_L2_TO_L3_COPY is not set
-# CONFIG_USE_ONLY_LWIP_SELECT is not set
-CONFIG_ESP_GRATUITOUS_ARP=y
-CONFIG_GARP_TMR_INTERVAL=60
-CONFIG_TCPIP_RECVMBOX_SIZE=32
-CONFIG_TCP_MAXRTX=12
-CONFIG_TCP_SYNMAXRTX=12
-CONFIG_TCP_MSS=1440
-CONFIG_TCP_MSL=60000
-CONFIG_TCP_SND_BUF_DEFAULT=5744
-CONFIG_TCP_WND_DEFAULT=5744
-CONFIG_TCP_RECVMBOX_SIZE=6
-CONFIG_TCP_QUEUE_OOSEQ=y
-# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set
-CONFIG_TCP_OVERSIZE_MSS=y
-# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set
-# CONFIG_TCP_OVERSIZE_DISABLE is not set
-CONFIG_UDP_RECVMBOX_SIZE=6
-CONFIG_TCPIP_TASK_STACK_SIZE=3072
-CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
-# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set
-# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
-CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF
-# CONFIG_PPP_SUPPORT is not set
-CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
-CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
-CONFIG_ESP32_PTHREAD_STACK_MIN=768
-CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
-# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set
-# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set
-CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
-CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
-CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
-# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
-# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
-CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
-CONFIG_SUPPORT_TERMIOS=y
-CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1
-CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128
-# End of deprecated options
diff --git a/ESP32/TLS13-wifi_station-client/sdkconfig.defaults b/ESP32/TLS13-wifi_station-client/sdkconfig.defaults
new file mode 100644
index 00000000..3f85bd82
--- /dev/null
+++ b/ESP32/TLS13-wifi_station-client/sdkconfig.defaults
@@ -0,0 +1,37 @@
+#
+# Default main stack size
+#
+# This is typically way bigger than needed for stack size. See user_settings.h
+#
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=55000
+
+# Legacy stack size for older ESP-IDF versions
+CONFIG_MAIN_TASK_STACK_SIZE=55000
+
+#
+# Compiler options
+#
+CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
+CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
+CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2
+CONFIG_COMPILER_HIDE_PATHS_MACROS=y
+CONFIG_COMPILER_STACK_CHECK_MODE_NORM=y
+CONFIG_COMPILER_STACK_CHECK=y
+
+# minimum C3 chip revision known to work is 2.
+# rev 0 and 1 not available for testing.
+# all revisions expected to work.
+CONFIG_ESP32C3_REV_MIN_0=
+CONFIG_ESP32C3_REV_MIN_1=
+CONFIG_ESP32C3_REV_MIN_2=y
+CONFIG_ESP32C3_REV_MIN_3=
+
+#
+# Partition Table
+#
+CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
+CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp_large.csv"
+CONFIG_PARTITION_TABLE_OFFSET=0x8000
+CONFIG_PARTITION_TABLE_MD5=y
+# end of Partition Table
diff --git a/ESP32/TLS13-wifi_station-server/ESP32-TLS13-server.sln b/ESP32/TLS13-wifi_station-server/ESP32-TLS13-server.sln
deleted file mode 100644
index 6a50039e..00000000
--- a/ESP32/TLS13-wifi_station-server/ESP32-TLS13-server.sln
+++ /dev/null
@@ -1,31 +0,0 @@
-
-Microsoft Visual Studio Solution File, Format Version 12.00
-# Visual Studio Version 16
-VisualStudioVersion = 16.0.31729.503
-MinimumVisualStudioVersion = 10.0.40219.1
-Project("{803FD0C6-D64E-4E16-9DC3-1DAEC859A3D2}") = "ESP32-TLS13-server", "ESP32-TLS13-wifi_station-server.vgdbproj", "{6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}"
-EndProject
-Global
- GlobalSection(SolutionConfigurationPlatforms) = preSolution
- Debug|VisualGDB = Debug|VisualGDB
- Release|VisualGDB = Release|VisualGDB
- Tests (Debug)|VisualGDB = Tests (Debug)|VisualGDB
- Tests (Release)|VisualGDB = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(ProjectConfigurationPlatforms) = postSolution
- {6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}.Debug|VisualGDB.ActiveCfg = Debug|VisualGDB
- {6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}.Debug|VisualGDB.Build.0 = Debug|VisualGDB
- {6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}.Release|VisualGDB.ActiveCfg = Release|VisualGDB
- {6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}.Release|VisualGDB.Build.0 = Release|VisualGDB
- {6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}.Tests (Debug)|VisualGDB.ActiveCfg = Tests (Debug)|VisualGDB
- {6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}.Tests (Debug)|VisualGDB.Build.0 = Tests (Debug)|VisualGDB
- {6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}.Tests (Release)|VisualGDB.ActiveCfg = Tests (Release)|VisualGDB
- {6B1C0FCA-05B1-4F65-A57E-5EC9768F9866}.Tests (Release)|VisualGDB.Build.0 = Tests (Release)|VisualGDB
- EndGlobalSection
- GlobalSection(SolutionProperties) = preSolution
- HideSolutionNode = FALSE
- EndGlobalSection
- GlobalSection(ExtensibilityGlobals) = postSolution
- SolutionGuid = {C818398D-7E23-4E3B-8076-2DCDCB03967C}
- EndGlobalSection
-EndGlobal
diff --git a/ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server.vgdbproj b/ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server_v4.4.1.vgdbproj
similarity index 95%
rename from ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server.vgdbproj
rename to ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server_v4.4.1.vgdbproj
index 2aa2b1db..866a222e 100644
--- a/ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server.vgdbproj
+++ b/ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server_v4.4.1.vgdbproj
@@ -1,220 +1,224 @@
-
-
-
-
-
- Unknown
-
- true
-
- 591b9b62-1581-445d-93c1-f2751ed04cfc
- true
- true
- SourceDirs
-
-
-
-
-
- com.visualgdb.xtensa-esp32-elf
-
- 8.4.0
- 8.1.0
- 7
-
-
- DEBUG
- build/$(PlatformName)/$(ConfigurationName)
-
- false
- $(ToolchainNinja)
- $(BuildDir)
-
-
-
- false
- $(SYSPROGS_CMAKE_PATH)
-
-
- true
- false
- false
- Ninja
- false
- RemoveBuildDirectory
- false
-
-
- true
- true
- true
- false
- true
- false
- true
- HideOuterProjectTargets
- true
- false
- true
-
- true
- 6b1c0fca-05b1-4f65-a57e-5ec9768f9866
-
- Upper
- HeaderDirectoryAndSubdirectories
- true
-
-
- release/v4.4
- esp-idf/v4.4
- ESPIDF
-
- COM20
- false
- false
- ESP32
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- Default
-
-
-
- COM20
-
- 115200
- 8
- None
- One
- None
-
-
- 0
- false
- false
- false
- ASCII
-
-
- 255
- 0
- 0
- 0
-
-
- 255
- 169
- 169
- 169
-
-
- 255
- 211
- 211
- 211
-
-
- 255
- 144
- 238
- 144
-
-
- 255
- 169
- 169
- 169
-
-
-
- 16
- true
- true
- true
- true
- 0
-
- LF
- false
- false
- false
-
-
-
- true
-
-
-
- Unknown
-
- true
- true
- true
-
-
-
- false
-
-
-
-
- Debug
-
-
-
- Release
-
-
-
-
-
-
-
- false
- false
- false
- false
- false
- false
- false
- false
- false
-
- false
- false
- false
- false
- false
- false
- true
- false
- None
- false
- false
- app_main
- true
- false
- false
- true
- 0
- false
- 0
- true
- false
-
-
- openocd
+
+
+
+
+
+ Unknown
+
+ true
+
+ 591b9b62-1581-445d-93c1-f2751ed04cfc
+ true
+ true
+ SourceDirs
+
+
+
+
+
+ com.visualgdb.xtensa-esp32-elf
+
+ 8.4.0
+ 8.1.0
+ 9
+
+
+
+ DEBUG
+ build/$(PlatformName)/$(ConfigurationName)
+
+ false
+ $(ToolchainNinja)
+ $(BuildDir)
+
+
+
+ false
+ $(SYSPROGS_CMAKE_PATH)
+
+
+ true
+ false
+ false
+ Ninja
+ false
+ RemoveBuildDirectory
+ false
+
+
+ true
+ true
+ true
+ false
+ true
+ false
+ true
+ HideOuterProjectTargets
+ true
+ false
+ true
+
+
+ true
+ 6b1c0fca-05b1-4f65-a57e-5ec9768f9866
+
+ Upper
+ HeaderDirectoryAndSubdirectories
+ true
+
+
+ v4.4.1
+ esp-idf/v4.4.1
+ ESPIDF
+
+ COM20
+ false
+ false
+ ESP32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+ COM20
+
+ 115200
+ 8
+ None
+ One
+ None
+
+
+ 0
+ false
+ false
+ false
+ ASCII
+
+
+ 255
+ 0
+ 0
+ 0
+
+
+ 255
+ 169
+ 169
+ 169
+
+
+ 255
+ 211
+ 211
+ 211
+
+
+ 255
+ 144
+ 238
+ 144
+
+
+ 255
+ 169
+ 169
+ 169
+
+
+
+ 16
+ true
+ true
+ true
+ true
+ 0
+
+ LF
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+
+ Unknown
+
+ true
+ true
+ true
+
+
+
+ false
+
+
+
+
+ Debug
+
+
+
+ Release
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+ app_main
+ true
+ false
+ false
+ true
+ 0
+ false
+ 0
+ true
+ false
+
+
+ openocd
-f interface/jlink.cfg -c "adapter_khz 3000" -f target/esp32.cfg
@@ -245,21 +249,21 @@
DIO
true
-
-
- true
- Auto
- 0
- false
- false
- true
- false
- false
-
- _estack
- 0
- false
-
- true
-
+
+
+ true
+ Auto
+ 0
+ false
+ false
+ true
+ false
+ false
+
+ _estack
+ 0
+ false
+
+ true
+
\ No newline at end of file
diff --git a/ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server_v5.0.vgdbproj b/ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server_v5.0.vgdbproj
new file mode 100644
index 00000000..43275482
--- /dev/null
+++ b/ESP32/TLS13-wifi_station-server/ESP32-TLS13-wifi_station-server_v5.0.vgdbproj
@@ -0,0 +1,269 @@
+
+
+
+
+
+ Unknown
+
+ true
+
+ 591b9b62-1581-445d-93c1-f2751ed04cfc
+ true
+ true
+ SourceDirs
+
+
+
+
+
+ com.visualgdb.xtensa-esp32-elf
+
+ 11.2.0
+ 9.2.90
+ 2
+
+
+
+ DEBUG
+ build/$(PlatformName)/$(ConfigurationName)
+
+ false
+ $(ToolchainNinja)
+ $(BuildDir)
+
+
+
+ false
+ $(SYSPROGS_CMAKE_PATH)
+
+
+ true
+ false
+ false
+ Ninja
+ false
+ RemoveBuildDirectory
+ false
+
+
+ true
+ true
+ true
+ false
+ true
+ false
+ true
+ HideOuterProjectTargets
+ true
+ false
+ true
+
+
+ true
+ 6b1c0fca-05b1-4f65-a57e-5ec9768f9866
+
+ Upper
+ HeaderDirectoryAndSubdirectories
+ true
+
+
+ release/v5.0
+ esp-idf/v5.0
+ ESPIDF
+
+ COM20
+ false
+ false
+ ESP32
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+ Default
+
+
+
+ COM20
+
+ 115200
+ 8
+ None
+ One
+ None
+
+
+ 0
+ false
+ false
+ false
+ ASCII
+
+
+ 255
+ 0
+ 0
+ 0
+
+
+ 255
+ 169
+ 169
+ 169
+
+
+ 255
+ 211
+ 211
+ 211
+
+
+ 255
+ 144
+ 238
+ 144
+
+
+ 255
+ 169
+ 169
+ 169
+
+
+
+ 16
+ true
+ true
+ true
+ true
+ 0
+
+ LF
+ false
+ false
+ false
+
+
+
+ true
+
+
+
+
+ Unknown
+
+ true
+ true
+ true
+
+
+
+ false
+
+
+
+
+ Debug
+
+
+
+ Release
+
+
+
+
+
+
+
+
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+ false
+
+ false
+ false
+ false
+ false
+ false
+ false
+ true
+ false
+ None
+ false
+ false
+ app_main
+ true
+ false
+ false
+ true
+ 0
+ false
+ 0
+ true
+ false
+
+
+ openocd
+
+ -f interface/tigard.cfg -c "adapter_khz 13000" -f target/esp32.cfg
+
+
+
+ false
+
+ 131072
+ Enabled
+
+ set remotetimeout 60
+ target remote :$$SYS:GDB_PORT$$
+ mon gdb_breakpoint_override hard
+ mon reset halt
+ load
+
+ false
+ 0
+ 0
+ false
+
+ 5000
+ 1
+ true
+
+ size2MB
+ freq40M
+ DIO
+
+ true
+
+
+ true
+ Auto
+ 0
+ false
+ false
+ true
+ false
+ false
+
+ _estack
+ 0
+ false
+
+ true
+
+
\ No newline at end of file
diff --git a/ESP32/TLS13-wifi_station-server/main/station_example_main.c b/ESP32/TLS13-wifi_station-server/main/station_example_main.c
index be4b022b..91044619 100644
--- a/ESP32/TLS13-wifi_station-server/main/station_example_main.c
+++ b/ESP32/TLS13-wifi_station-server/main/station_example_main.c
@@ -31,15 +31,17 @@
#define WOLFSSL_ESPIDF
#define WOLFSSL_ESPWROOM32
#define WOLFSSL_USER_SETTINGS
-#include // make sure this appears before any other wolfSSL headers
+
+
+#include
+/* make sure user_settings.h appears before any other wolfSSL headers */
+#include
#include
#ifdef WOLFSSL_TRACK_MEMORY
-#include
+ #include
#endif
-
-
/**
******************************************************************************
******************************************************************************
@@ -48,19 +50,23 @@
******************************************************************************
**/
-/* when using a private config with plain text passwords, not my_private_config.h should be excluded from git updates */
+/* when using a private config with plain text passwords,
+** define USE_MY_PRIVATE_CONFIG.
+** note my_private_config.h should be excluded from git updates
+*/
#define USE_MY_PRIVATE_CONFIG
#ifdef USE_MY_PRIVATE_CONFIG
-#include "/workspace/my_private_config.h"
+ #include "/mnt/c/workspace/my_private_config.h"
#else
-/* The examples use WiFi configuration that you can set via project configuration menu
-
- If you'd rather not, just change the below entries to strings with
- the config you want - ie #define EXAMPLE_WIFI_SSID "mywifissid"
-*/
-#define EXAMPLE_ESP_WIFI_SSID CONFIG_ESP_WIFI_SSID
-#define EXAMPLE_ESP_WIFI_PASS CONFIG_ESP_WIFI_PASSWORD
+ /* The examples use WiFi configuration that you can set via project
+ * configuration menu
+ *
+ * If you'd rather not, just change the below entries to strings with
+ * the config you want - ie #define EXAMPLE_WIFI_SSID "mywifissid"
+ */
+ #define EXAMPLE_ESP_WIFI_SSID CONFIG_ESP_WIFI_SSID
+ #define EXAMPLE_ESP_WIFI_PASS CONFIG_ESP_WIFI_PASSWORD
#endif
/* ESP lwip */
@@ -72,14 +78,14 @@
#define TLS_SMP_CLIENT_TASK_WORDS 10240
#define TLS_SMP_CLIENT_TASK_PRIORITY 8
-/* include certificates. Note that there is an experiation date!
- *
- * See also https://github.com/wolfSSL/wolfssl/blob/master/wolfssl/certs_test.h
-
- for example:
-
- #define USE_CERT_BUFFERS_2048
- #include
+/* include certificates. Note that there is an expiration date!
+**
+** See also https://github.com/wolfSSL/wolfssl/blob/master/wolfssl/certs_test.h
+**
+** for example:
+**
+** #define USE_CERT_BUFFERS_2048
+** #include
*/
#include "embedded_CLIENT_CERT_FILE.h"
#include "embedded_SERVER_CERT_FILE.h"
@@ -107,9 +113,11 @@ TickType_t DelayTicks = 5000 / portTICK_PERIOD_MS;
/* FreeRTOS event group to signal when we are connected*/
static EventGroupHandle_t s_wifi_event_group;
-/* The event group allows multiple bits for each event, but we only care about two events:
- * - we are connected to the AP with an IP
- * - we failed to connect after the maximum amount of retries */
+/* The event group allows multiple bits for each event,
+** but we only care about two events:
+** - we are connected to the AP with an IP
+** - we failed to connect after the maximum amount of retries
+*/
#define WIFI_CONNECTED_BIT BIT0
#define WIFI_FAIL_BIT BIT1
@@ -120,30 +128,48 @@ static int s_retry_num = 0;
static void event_handler(void* arg, esp_event_base_t event_base,
int32_t event_id, void* event_data)
{
- if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START) {
+ if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_START)
+ {
esp_wifi_connect();
- } else if (event_base == WIFI_EVENT && event_id == WIFI_EVENT_STA_DISCONNECTED) {
- if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY) {
+ }
+ else if (event_base == WIFI_EVENT
+ &&
+ event_id == WIFI_EVENT_STA_DISCONNECTED)
+ {
+
+ /* we have WiFi disconnected event, so try reconnect */
+ if (s_retry_num < EXAMPLE_ESP_MAXIMUM_RETRY)
+ {
esp_wifi_connect();
s_retry_num++;
ESP_LOGI(TAG, "retry to connect to the AP");
- } else {
+ }
+ else
+ {
xEventGroupSetBits(s_wifi_event_group, WIFI_FAIL_BIT);
}
- ESP_LOGI(TAG,"connect to the AP fail");
- } else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP) {
+ ESP_LOGI(TAG, "connect to the AP fail");
+ }
+ else if (event_base == IP_EVENT && event_id == IP_EVENT_STA_GOT_IP)
+ {
+
+ /* we have an IP address! */
ip_event_got_ip_t* event = (ip_event_got_ip_t*) event_data;
ESP_LOGI(TAG, "got ip:" IPSTR, IP2STR(&event->ip_info.ip));
s_retry_num = 0;
xEventGroupSetBits(s_wifi_event_group, WIFI_CONNECTED_BIT);
}
+ else {
+ ESP_LOGI(TAG, "WiFi event not handled: event_id = %li", event_id);
+ }
}
int set_time() {
/* we'll also return a result code of zero */
int res = 0;
-
- //*ideally, we'd like to set time from network, but let's set a default time, just in case */
+
+ /*ideally, we'd like to set time from network,
+ but let's set a default time, just in case */
struct tm timeinfo;
timeinfo.tm_year = 2022 - 1900;
timeinfo.tm_mon = 3;
@@ -155,18 +181,18 @@ int set_time() {
t = mktime(&timeinfo);
struct timeval now = { .tv_sec = t };
- settimeofday(&now, NULL);
+ settimeofday(&now, NULL);
/* set timezone */
setenv("TZ", TIME_ZONE, 1);
tzset();
- /* next, let's setup NTP time servers
- *
+ /* next, let's setup NTP time servers
+ *
* see https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-reference/system/system_time.html#sntp-time-synchronization
*/
sntp_setoperatingmode(SNTP_OPMODE_POLL);
-
+
int i = 0;
for (i = 0; i < NTP_SERVER_COUNT; i++) {
const char* thisServer = ntpServerList[i];
@@ -209,9 +235,11 @@ void wifi_init_sta(void)
.sta = {
.ssid = EXAMPLE_ESP_WIFI_SSID,
.password = EXAMPLE_ESP_WIFI_PASS,
- /* Setting a password implies station will connect to all security modes including WEP/WPA.
- * However these modes are deprecated and not advisable to be used. Incase your Access point
- * doesn't support WPA2, these mode can be enabled by commenting below line */
+ /* Setting a password implies station will connect to all security
+ * modes including WEP/WPA.However these modes are deprecated and
+ * not advisable to be used. In case your Access point doesn't
+ * support WPA2, these mode can be enabled by commenting below line
+ */
.threshold.authmode = WIFI_AUTH_WPA2_PSK,
.pmf_cfg = {
@@ -226,29 +254,40 @@ void wifi_init_sta(void)
ESP_LOGI(TAG, "wifi_init_sta finished.");
- /* Waiting until either the connection is established (WIFI_CONNECTED_BIT) or connection failed for the maximum
- * number of re-tries (WIFI_FAIL_BIT). The bits are set by event_handler() (see above) */
+ /* Waiting until either the connection is established (WIFI_CONNECTED_BIT)
+ ** or connection failed for the maximum number of re-tries (WIFI_FAIL_BIT).
+ ** The bits are set by event_handler() (see above)
+ */
EventBits_t bits = xEventGroupWaitBits(s_wifi_event_group,
WIFI_CONNECTED_BIT | WIFI_FAIL_BIT,
pdFALSE,
pdFALSE,
portMAX_DELAY);
- /* xEventGroupWaitBits() returns the bits before the call returned, hence we can test which event actually
- * happened. */
+ /* xEventGroupWaitBits() returns the bits before the call returned,
+ ** hence we can test which event actually happened.
+ */
if (bits & WIFI_CONNECTED_BIT) {
ESP_LOGI(TAG, "connected to ap SSID:%s password:%s",
EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS);
- } else if (bits & WIFI_FAIL_BIT) {
+ }
+ else if (bits & WIFI_FAIL_BIT) {
ESP_LOGI(TAG, "Failed to connect to SSID:%s, password:%s",
EXAMPLE_ESP_WIFI_SSID, EXAMPLE_ESP_WIFI_PASS);
- } else {
+ }
+ else {
ESP_LOGE(TAG, "UNEXPECTED EVENT");
}
/* The event will not be processed after unregister */
- ESP_ERROR_CHECK(esp_event_handler_instance_unregister(IP_EVENT, IP_EVENT_STA_GOT_IP, instance_got_ip));
- ESP_ERROR_CHECK(esp_event_handler_instance_unregister(WIFI_EVENT, ESP_EVENT_ANY_ID, instance_any_id));
+ ESP_ERROR_CHECK(esp_event_handler_instance_unregister(IP_EVENT,
+ IP_EVENT_STA_GOT_IP,
+ instance_got_ip)
+ );
+ ESP_ERROR_CHECK(esp_event_handler_instance_unregister(WIFI_EVENT,
+ ESP_EVENT_ANY_ID,
+ instance_any_id)
+ );
vEventGroupDelete(s_wifi_event_group);
}
@@ -258,7 +297,7 @@ int tls_smp_server_task() {
struct sockaddr_in servAddr;
const int BUFF_SIZE = 256;
char buff[BUFF_SIZE];
- size_t len; /* we'll be looking at the length of messages sent and received */
+ size_t len; /* we'll be looking at the length of messages sent & received */
struct sockaddr_in clientAddr;
socklen_t size = sizeof(clientAddr);
@@ -270,7 +309,10 @@ int tls_smp_server_task() {
/* declare wolfSSL objects */
WOLFSSL_CTX *ctx = NULL; /* the wolfSSL context object*/
- WOLFSSL *ssl = NULL; /* although called "ssl" is is the secure object for reading and writings data*/
+
+
+ WOLFSSL *ssl = NULL; /* although called "ssl" this is the secure object
+ for reading and writing data*/
#ifdef HAVE_SIGNAL
signal(SIGINT, sig_handler);
@@ -279,14 +321,14 @@ int tls_smp_server_task() {
#ifdef DEBUG_WOLFSSL
wolfSSL_Debugging_ON();
WOLFSSL_MSG("Debug ON v0.2b");
- //ShowCiphers();
+ /* ShowCiphers(); */
#endif /* DEBUG_WOLFSSL */
#ifndef WOLFSSL_TLS13
ret = WOLFSSL_FAILURE;
WOLFSSL_ERROR_MSG("ERROR: Example requires TLS v1.3.\n");
#endif /* WOLFSSL_TLS13 */
-
+
/* Initialize the server address struct with zeros */
memset(&servAddr, 0, sizeof(servAddr));
@@ -295,86 +337,93 @@ int tls_smp_server_task() {
servAddr.sin_port = htons(DEFAULT_PORT); /* on DEFAULT_PORT */
servAddr.sin_addr.s_addr = INADDR_ANY; /* from anywhere */
- /*
+ /*
***************************************************************************
- * Create a socket that uses an internet IPv4 address,
+ * Create a socket that uses an Internet IPv4 address,
* Sets the socket to be stream based (TCP),
* 0 means choose the default protocol.
- *
+ *
* #include
*
- * int socket(int domain, int type, int protocol);
- *
- * The socket() function shall create an unbound socket in a communications
- * domain, and return a file descriptor that can be used in later function
+ * int socket(int domain, int type, int protocol);
+ *
+ * The socket() function shall create an unbound socket in a communications
+ * domain, and return a file descriptor that can be used in later function
* calls that operate on sockets.
- *
+ *
* The socket() function takes the following arguments:
- * domain Specifies the communications domain in which a
+ * domain Specifies the communications domain in which a
* socket is to be created.
* type Specifies the type of socket to be created.
- * protocol Specifies a particular protocol to be used with the socket.
- * Specifying a protocol of 0 causes socket() to use an
- * unspecified default protocol appropriate for the
+ * protocol Specifies a particular protocol to be used with the socket.
+ * Specifying a protocol of 0 causes socket() to use an
+ * unspecified default protocol appropriate for the
* requested socket type.
- *
- * The domain argument specifies the address family used in the
- * communications domain. The address families supported by the system
+ *
+ * The domain argument specifies the address family used in the
+ * communications domain. The address families supported by the system
* are implementation-defined.
- *
+ *
* Symbolic constants that can be used for the domain argument are
* defined in the header.
*
- * The type argument specifies the socket type, which determines the semantics
- * of communication over the socket. The following socket types are defined;
- * implementations may specify additional socket types:
+ * The type argument specifies the socket type, which determines the
+ * semantics of communication over the socket. The following socket types
+ * are defined; implementations may specify additional socket types:
*
- * SOCK_STREAM Provides sequenced, reliable, bidirectional,
- * connection-mode byte streams, and may provide a
+ * SOCK_STREAM Provides sequenced, reliable, bidirectional,
+ * connection-mode byte streams, and may provide a
* transmission mechanism for out-of-band data.
* SOCK_DGRAM Provides datagrams, which are connectionless-mode,
* unreliable messages of fixed maximum length.
- * SOCK_SEQPACKET Provides sequenced, reliable, bidirectional,
- * connection-mode transmission paths for records.
- * A record can be sent using one or more output
- * operations and received using one or more input
- * operations, but a single operation never transfers
- * part of more than one record. Record boundaries
+ * SOCK_SEQPACKET Provides sequenced, reliable, bidirectional,
+ * connection-mode transmission paths for records.
+ * A record can be sent using one or more output
+ * operations and received using one or more input
+ * operations, but a single operation never transfers
+ * part of more than one record. Record boundaries
* are visible to the receiver via the MSG_EOR flag.
- *
- * If the protocol argument is non-zero, it shall
- * specify a protocol that is supported by the address
+ *
+ * If the protocol argument is non-zero, it shall
+ * specify a protocol that is supported by the address
* family. If the protocol argument is zero, the default
* protocol for this address family and type shall be
- * used. The protocols supported by the system are
+ * used. The protocols supported by the system are
* implementation-defined.
- *
- * The process may need to have appropriate privileges to use the socket() function or to create some sockets.
- *
+ *
+ * The process may need to have appropriate privileges to use the
+ * socket() function or to create some sockets.
+ *
* Return Value
- * Upon successful completion, socket() shall return a non-negative integer,
- * the socket file descriptor. Otherwise, a value of -1 shall be returned
+ * Upon successful completion, socket() shall return a non-negative
+ * integer, the socket file descriptor.
+ *
+ * Otherwise, a value of -1 shall be returned
* and errno set to indicate the error.
- *
+ *
* Errors; The socket() function shall fail if:
- *
- * EAFNOSUPPORT The implementation does not support the specified address family.
- * EMFILE No more file descriptors are available for this process.
+ *
+ * EAFNOSUPPORT The implementation does not support the specified
+ * address family.
+ * EMFILE No more file descriptors are available
+ * for this process.
* ENFILE No more file descriptors are available for the system.
- * EPROTONOSUPPORT The protocol is not supported by the address family, or the protocol is not supported by the implementation.
+ * EPROTONOSUPPORT The protocol is not supported by the address family,
+ * or the protocol is not supported by the implementation.
* EPROTOTYPE The socket type is not supported by the protocol.
- *
+ *
* The socket() function may fail if:
- *
+ *
* EACCES The process does not have appropriate privileges.
- * ENOBUFS Insufficient resources were available in the system to perform the operation.
+ * ENOBUFS Insufficient resources were available in the system to
+ * perform the operation.
* ENOMEM Insufficient memory was available to fulfill the request.
- *
+ *
* see: https://linux.die.net/man/3/socket
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
- /* Upon successful completion, socket() shall return
+ /* Upon successful completion, socket() shall return
* a non-negative integer, the socket file descriptor.
*/
sockfd = socket(AF_INET, SOCK_STREAM, 0);
@@ -382,7 +431,7 @@ int tls_smp_server_task() {
WOLFSSL_MSG("socket creation successful\n");
}
else {
- // TODO show errno
+ // TODO show errno
ret = WOLFSSL_FAILURE;
WOLFSSL_ERROR_MSG("ERROR: failed to create a socket.\n");
}
@@ -395,7 +444,7 @@ int tls_smp_server_task() {
/*
***************************************************************************
* set SO_REUSEADDR on socket
- *
+ *
* #include
* # include
* int getsockopt(int sockfd,
@@ -407,26 +456,32 @@ int tls_smp_server_task() {
* int optname,
* const void *optval,
* socklen_t optlen);
- *
- * setsockopt() manipulates options for the socket referred to by the file
- * descriptor sockfd. Options may exist at multiple protocol levels; they
+ *
+ * setsockopt() manipulates options for the socket referred to by the file
+ * descriptor sockfd. Options may exist at multiple protocol levels; they
* are always present at the uppermost socket level.
- *
- * When manipulating socket options, the level at which the option resides
- * and the name of the option must be specified. To manipulate options at
- * the sockets API level, level is specified as SOL_SOCKET. To manipulate
- * options at any other level the protocol number of the appropriate
- * protocol controlling the option is supplied. For example, to indicate
- * that an option is to be interpreted by the TCP protocol, level should
+ *
+ * When manipulating socket options, the level at which the option resides
+ * and the name of the option must be specified. To manipulate options at
+ * the sockets API level, level is specified as SOL_SOCKET. To manipulate
+ * options at any other level the protocol number of the appropriate
+ * protocol controlling the option is supplied. For example, to indicate
+ * that an option is to be interpreted by the TCP protocol, level should
* be set to the protocol number of TCP
- *
+ *
* Return Value
- * On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
+ * On success, zero is returned.
+ * On error, -1 is returned, and errno is set appropriately.
*
* Errors
* EBADF The argument sockfd is not a valid descriptor.
- * EFAULT The address pointed to by optval is not in a valid part of the process address space. For getsockopt(), this error may also be returned if optlen is not in a valid part of the process address space.
- * EINVAL optlen invalid in setsockopt(). In some cases this error can also occur for an invalid value in optval (e.g., for the IP_ADD_MEMBERSHIP option described in ip(7)).
+ * EFAULT The address pointed to by optval is not in a valid part of
+ * the process address space. For getsockopt(), this error
+ * may also be returned if optlen is not in a valid part of
+ * the process address space.
+ * EINVAL optlen invalid in setsockopt(). In some cases this error
+ * can also occur for an invalid value in optval
+ * e.g., for the IP_ADD_MEMBERSHIP option described in ip(7)
* ENOPROTOOPT The option is unknown at the level indicated.
* ENOTSOCK The argument sockfd is a file, not a socket.
*
@@ -441,12 +496,12 @@ int tls_smp_server_task() {
SO_REUSEADDR,
(char*)&on,
(socklen_t)sizeof(on));
-
+
if (soc_ret == 0) {
WOLFSSL_MSG("setsockopt re-use addr successful\n");
}
else {
- // TODO show errno
+ ESP_LOGE(TAG, "setsockopt failed with code %i", soc_ret);
ret = WOLFSSL_FAILURE;
WOLFSSL_ERROR_MSG("ERROR: failed to setsockopt addr on socket.\n");
}
@@ -454,7 +509,7 @@ int tls_smp_server_task() {
else {
WOLFSSL_ERROR_MSG("Skipping setsockopt addr\n");
}
-
+
#ifdef SO_REUSEPORT
/* see above for details on getsockopt */
if (ret == WOLFSSL_SUCCESS) {
@@ -463,64 +518,68 @@ int tls_smp_server_task() {
SO_REUSEPORT,
(char*)&on,
(socklen_t)sizeof(on));
-
+
if (soc_ret == 0) {
WOLFSSL_MSG("setsockopt re-use port successful\n");
}
- else {
- // TODO show errno
- // ret = WOLFSSL_FAILURE;
- // TODO what's up with the error?
- WOLFSSL_ERROR_MSG("ERROR: failed to setsockopt port on socket. >> IGNORED << \n");
+ else {
+ WOLFSSL_MSG("Note: failed to setsockopt port on socket."
+ " >> IGNORED << \n");
}
- }
+ }
else {
WOLFSSL_ERROR_MSG("Skipping setsockopt port\n");
}
#else
WOLFSSL_MSG("SO_REUSEPORT not configured for setsockopt to re-use port\n");
#endif
-
+
/*
***************************************************************************
- * #include
+ * #include
* #include
- *
+ *
* int bind(int sockfd,
* const struct sockaddr *addr,
* socklen_t addrlen);
- *
+ *
* Description
- *
- * When a socket is created with socket(2), it exists in a name
+ *
+ * When a socket is created with socket(2), it exists in a name
* space(address family) but has no address assigned to it.
- *
- * bind() assigns the address specified by addr to the socket referred to
- * by the file descriptor sockfd.addrlen specifies the size, in bytes, of
- * the address structure pointed to by addr.Traditionally, this operation
+ *
+ * bind() assigns the address specified by addr to the socket referred to
+ * by the file descriptor sockfd.addrlen specifies the size, in bytes, of
+ * the address structure pointed to by addr.Traditionally, this operation
* is called "assigning a name to a socket".
- *
+ *
* It is normally necessary to assign a local address using bind() before
* a SOCK_STREAM socket may receive connections.
*
* Return Value
- * On success, zero is returned. On error, -1 is returned, and errno is set appropriately.
+ * On success, zero is returned.
+ * On error, -1 is returned, and errno is set appropriately.
*
* Errors
- * EACCES The address is protected, and the user is not the superuser.
+ * EACCES The address is protected, and
+ * the user is not the superuser.
* EADDRINUSE The given address is already in use.
* EBADF sockfd is not a valid descriptor.
* EINVAL The socket is already bound to an address.
* ENOTSOCK sockfd is a descriptor for a file, not a socket.
*
* see: https://linux.die.net/man/2/bind
- *
+ *
* https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/lwip.html
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
/* Bind the server socket to our port */
- int soc_ret = bind(sockfd, (struct sockaddr*)&servAddr, sizeof(servAddr));
+ int soc_ret = bind(sockfd,
+ (struct sockaddr*)&servAddr,
+ sizeof(servAddr)
+ );
+
if (soc_ret > -1) {
WOLFSSL_MSG("socket bind successful\n");
}
@@ -530,42 +589,43 @@ int tls_smp_server_task() {
}
}
- /*
+ /*
***************************************************************************
- * Listen for a new connection, allow 5 pending connections
+ * Listen for a new connection, allow 5 pending connections
*
- * #include
+ * #include
* #include
* int listen(int sockfd, int backlog);
*
* Description
- *
- * listen() marks the socket referred to by sockfd as a passive socket,
- * that is, as a socket that will be used to accept incoming connection
+ *
+ * listen() marks the socket referred to by sockfd as a passive socket,
+ * that is, as a socket that will be used to accept incoming connection
* requests using accept.
*
- * The sockfd argument is a file descriptor that refers to a socket of
+ * The sockfd argument is a file descriptor that refers to a socket of
* type SOCK_STREAM or SOCK_SEQPACKET.
- *
- * The backlog argument defines the maximum length to which the queue of
- * pending connections for sockfd may grow.If a connection request arrives
- * when the queue is full, the client may receive an error with an indication
- * of ECONNREFUSED or, if the underlying protocol supports retransmission,
- * the request may be ignored so that a later reattempt at connection
- * succeeds.
+ *
+ * The backlog argument defines the maximum length to which the queue of
+ * pending connections for sockfd may grow.If a connection request arrives
+ * when the queue is full, the client may receive an error with an
+ * indication of ECONNREFUSED or, if the underlying protocol supports
+ * retransmission, the request may be ignored so that a later reattempt
+ * at connection succeeds.
*
* Return Value
* On success, zero is returned.
* On Error, -1 is returned, and errno is set appropriately.
- * Errors
+ * Errors
* EADDRINUSE Another socket is already listening on the same port.
* EBADF The argument sockfd is not a valid descriptor.
* ENOTSOCK The argument sockfd is not a socket.
- * EOPNOTSUPP The socket is not of a type that supports the listen() operation.
+ * EOPNOTSUPP The socket is not of a type that supports
+ * the listen() operation.
*
- * ses: https://linux.die.net/man/2/listen
+ * see: https://linux.die.net/man/2/listen
*/
-
+
if (ret == WOLFSSL_SUCCESS) {
int soc_ret = listen(sockfd, 5);
if (soc_ret > -1) {
@@ -575,22 +635,22 @@ int tls_smp_server_task() {
ret = WOLFSSL_FAILURE;
WOLFSSL_ERROR_MSG("ERROR: failed to listen to socket.\n");
}
- }
-
- /*
+ }
+
+ /*
***************************************************************************
- * Initialize wolfSSL
- *
+ * Initialize wolfSSL
+ *
* WOLFSSL_API int wolfSSL_Init (void)
*
- * Initializes the wolfSSL library for use. Must be called once per
+ * Initializes the wolfSSL library for use. Must be called once per
* application and before any other call to the library.
*
* Returns
* SSL_SUCCESS If successful the call will return.
* BAD_MUTEX_E is an error that may be returned.
* WC_INIT_E wolfCrypt initialization error returned.
- *
+ *
* see: https://www.wolfssl.com/doxygen/group__TLS.html#gae2a25854de5230820a6edf16281d8fd7
***************************************************************************
*/
@@ -610,24 +670,26 @@ int tls_smp_server_task() {
WOLFSSL_ERROR_MSG("Skipping wolfSSL_Init\n");
}
- /*
+ /*
***************************************************************************
* Create and initialize WOLFSSL_CTX (aka the context)
- *
+ *
* WOLFSSL_API WOLFSSL_CTX* wolfSSL_CTX_new (WOLFSSL_METHOD *)
- *
- * This function creates a new SSL context, taking a desired
+ *
+ * This function creates a new SSL context, taking a desired
* SSL/TLS protocol method for input.
*
* Returns
- * pointer If successful the call will return a pointer to the newly-created WOLFSSL_CTX.
+ * pointer If successful the call will return a pointer
+ * to the newly-created WOLFSSL_CTX.
+
* NULL upon failure.
*
* Parameters
- * method pointer to the desired WOLFSSL_METHOD to use for the SSL context.
+ * method pointer to the desired WOLFSSL_METHOD to use for SSL context.
* This is created using one of the wolfSSLvXX_XXXX_method() functions to
* specify SSL/TLS/DTLS protocol level.
- *
+ *
* see https://www.wolfssl.com/doxygen/group__Setup.html#gadfa552e771944a6a1102aa43f45378b5
***************************************************************************
*/
@@ -635,7 +697,8 @@ int tls_smp_server_task() {
WOLFSSL_METHOD* method = wolfTLSv1_3_server_method();
WOLFSSL_MSG("calling wolfTLSv1_3_server_method");
if (method == NULL) {
- WOLFSSL_ERROR_MSG("ERROR : failed to get wolfTLSv1_3_server_method.\n");
+ WOLFSSL_ERROR_MSG("ERROR : "
+ "failed to get wolfTLSv1_3_server_method.\n");
ret = WOLFSSL_FAILURE;
}
else {
@@ -652,203 +715,217 @@ int tls_smp_server_task() {
WOLFSSL_ERROR_MSG("skipping wolfSSL_CTX_new\n");
}
- /*
+ /*
***************************************************************************
- * load CERT_FILE
- *
- *
+ * load CERT_FILE
+ *
+ *
* WOLFSSL_API int wolfSSL_use_certificate_buffer (WOLFSSL * ,
* const unsigned char * ,
* long,
- * int
+ * int
* )
- *
- * The wolfSSL_use_certificate_buffer() function loads a certificate buffer
- * into the WOLFSSL object. It behaves like the non-buffered version, only
- * differing in its ability to be called with a buffer as input instead of
- * a file. The buffer is provided by the in argument of size sz.
- *
- * format specifies the format type of the buffer; SSL_FILETYPE_ASN1 or
+ *
+ * The wolfSSL_use_certificate_buffer() function loads a certificate buffer
+ * into the WOLFSSL object. It behaves like the non-buffered version, only
+ * differing in its ability to be called with a buffer as input instead of
+ * a file. The buffer is provided by the in argument of size sz.
+ *
+ * format specifies the format type of the buffer; SSL_FILETYPE_ASN1 or
* SSL_FILETYPE_PEM. Please see the examples for proper usage.
- *
+ *
* Returns
* SSL_SUCCESS upon success.
* SSL_BAD_FILETYPE will be returned if the file is the wrong format.
- * SSL_BAD_FILE will be returned if the file doesn’t exist, can’t be read, or is corrupted.
+ * SSL_BAD_FILE will be returned if the file doesn’t exist,
+ * can’t be read, or is corrupted.
* MEMORY_E will be returned if an out of memory condition occurs.
* ASN_INPUT_E will be returned if Base16 decoding fails on the file.
- *
+ *
* Parameters
* ssl pointer to the SSL session, created with wolfSSL_new().
* in buffer containing certificate to load.
* sz size of the certificate located in buffer.
- * format format of the certificate to be loaded. Possible values are SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
- *
+ * format format of the certificate to be loaded.
+ * Possible values are SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
+ *
*
* Pay attention to expiration dates and the current date setting
- *
+ *
* see https://www.wolfssl.com/doxygen/group__CertsKeys.html#gaf4e8d912f3fe2c37731863e1cad5c97e
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
WOLFSSL_MSG("Loading cert");
- ret = wolfSSL_CTX_use_certificate_buffer(ctx,
- CERT_FILE,
- sizeof_CERT_FILE(),
+ ret = wolfSSL_CTX_use_certificate_buffer(ctx,
+ CERT_FILE,
+ sizeof_CERT_FILE(),
WOLFSSL_FILETYPE_PEM);
if (ret == WOLFSSL_SUCCESS) {
WOLFSSL_MSG("wolfSSL_CTX_use_certificate_buffer successful\n");
}
else {
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_CTX_use_certificate_buffer failed\n");
+ WOLFSSL_ERROR_MSG("ERROR: "
+ "wolfSSL_CTX_use_certificate_buffer failed\n");
}
}
else {
WOLFSSL_ERROR_MSG("skipping wolfSSL_CTX_use_certificate_buffer\n");
}
-
-
- /*
+
+
+ /*
***************************************************************************
- * Load client private key into WOLFSSL_CTX
- *
+ * Load client private key into WOLFSSL_CTX
+ *
* wolfSSL_CTX_use_PrivateKey_buffer()
- *
+ *
* WOLFSSL_API int wolfSSL_CTX_use_PrivateKey_buffer(WOLFSSL_CTX *,
* const unsigned char *,
* long,
- * int
+ * int
* )
*
- * This function loads a private key buffer into the SSL Context.
- * It behaves like the non-buffered version, only differing in its
- * ability to be called with a buffer as input instead of a file.
- *
- * The buffer is provided by the in argument of size sz. format
- * specifies the format type of the buffer;
- * SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
- *
+ * This function loads a private key buffer into the SSL Context.
+ * It behaves like the non-buffered version, only differing in its
+ * ability to be called with a buffer as input instead of a file.
+ *
+ * The buffer is provided by the in argument of size sz. format
+ * specifies the format type of the buffer;
+ * SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
+ *
* Please see the examples for proper usage.
*
* Returns
- * SSL_SUCCESS upon success
- * SSL_BAD_FILETYPE will be returned if the file is the wrong format.
- * SSL_BAD_FILE will be returned if the file doesn’t exist, can’t be read, or is corrupted.
- * MEMORY_E will be returned if an out of memory condition occurs.
- * ASN_INPUT_E will be returned if Base16 decoding fails on the file.
- * NO_PASSWORD will be returned if the key file is encrypted but no password is provided.
+ * SSL_SUCCESS upon success.
+ * SSL_BAD_FILETYPE returned if the file is the wrong format.
+ * SSL_BAD_FILE returned if the file doesn’t exist,
+ * can’t be read, or is corrupted.
+ *
+ * MEMORY_E returned if an out of memory condition occurs.
+ * ASN_INPUT_E returned if Base16 decoding fails on the file.
+ * NO_PASSWORD returned if the key file is encrypted
+ * but no password is provided.
*
* Parameters
- * ctx pointer to the SSL context, created with wolfSSL_CTX_new().
- * inthe input buffer containing the private key to be loaded.
- *
- * sz the size of the input buffer.
- *
- * format the format of the private key located in the input buffer(in).
+ * ctx pointer to the SSL context, created with wolfSSL_CTX_new().
+ * in the input buffer containing the private key to be loaded.
+ *
+ * sz the size of the input buffer.
+ *
+ * format the format of the private key located in the input buffer(in).
* Possible values are SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
*
* see: https://www.wolfssl.com/doxygen/group__CertsKeys.html#ga71850887b87138b7c2d794bf6b1eafab
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
- ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx,
- KEY_FILE,
- sizeof_KEY_FILE(),
+ ret = wolfSSL_CTX_use_PrivateKey_buffer(ctx,
+ KEY_FILE,
+ sizeof_KEY_FILE(),
WOLFSSL_FILETYPE_PEM);
+
if (ret == WOLFSSL_SUCCESS) {
WOLFSSL_MSG("wolfSSL_CTX_use_PrivateKey_buffer successful\n");
}
else {
/* TODO fetch and print expiration date since it is a common fail */
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_CTX_use_PrivateKey_buffer failed\n");
+ WOLFSSL_ERROR_MSG("ERROR: "
+ "wolfSSL_CTX_use_PrivateKey_buffer failed\n");
}
}
else {
WOLFSSL_ERROR_MSG("Skipping wolfSSL_CTX_use_PrivateKey_buffer\n");
}
-
- /*
+
+ /*
***************************************************************************
- * Load CA certificate into WOLFSSL_CTX
- *
+ * Load CA certificate into WOLFSSL_CTX
+ *
* wolfSSL_CTX_load_verify_buffer()
* WOLFSSL_API int wolfSSL_CTX_load_verify_buffer(WOLFSSL_CTX *,
* const unsigned char *,
* long,
- * int
- * )
- *
- * This function loads a CA certificate buffer into the WOLFSSL Context.
- * It behaves like the non-buffered version, only differing in its ability
- * to be called with a buffer as input instead of a file. The buffer is
- * provided by the in argument of size sz. format specifies the format type
- * of the buffer; SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM. More than one
+ * int
+ * )
+ *
+ * This function loads a CA certificate buffer into the WOLFSSL Context.
+ * It behaves like the non-buffered version, only differing in its ability
+ * to be called with a buffer as input instead of a file. The buffer is
+ * provided by the in argument of size sz. format specifies the format type
+ * of the buffer; SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM. More than one
* CA certificate may be loaded per buffer as long as the format is in PEM.
- *
+ *
* Please see the examples for proper usage.
- *
+ *
* Returns
- *
- * SSL_SUCCESS upon success
- * SSL_BAD_FILETYPE will be returned if the file is the wrong format.
- * SSL_BAD_FILE will be returned if the file doesn’t exist, can’t be read, or is corrupted.
- * MEMORY_E will be returned if an out of memory condition occurs.
- * ASN_INPUT_E will be returned if Base16 decoding fails on the file.
- * BUFFER_E will be returned if a chain buffer is bigger than the receiving buffer.
- *
+ *
+ * SSL_SUCCESS upon success
+ * SSL_BAD_FILETYPE returned if the file is the wrong format.
+ * SSL_BAD_FILE returned if the file doesn’t exist, can’t be read,
+ * or is corrupted.
+ * MEMORY_E returned if an out of memory condition occurs.
+ * ASN_INPUT_E returned if Base16 decoding fails on the file.
+ * BUFFER_E returned if a chain buffer is bigger than
+ * the receiving buffer.
+ *
* Parameters
- *
- * ctx pointer to the SSL context, created with wolfSSL_CTX_new().
- * in pointer to the CA certificate buffer.
- * sz size of the input CA certificate buffer, in.
- * format format of the buffer certificate, either SSL_FILETYPE_ASN1 or SSL_FILETYPE_PEM.
+ *
+ * ctx pointer to the SSL context, created with wolfSSL_CTX_new().
+ * in pointer to the CA certificate buffer.
+ * sz size of the input CA certificate buffer, in.
+ * format format of the buffer certificate, either SSL_FILETYPE_ASN1
+ * or SSL_FILETYPE_PEM.
*
* see https://www.wolfssl.com/doxygen/group__CertsKeys.html#gaa37539cce3388c628ac4672cf5606785
***************************************************************************
*/
if (ret == WOLFSSL_SUCCESS) {
- ret = wolfSSL_CTX_load_verify_buffer(ctx, CA_FILE, sizeof_CA_FILE(), WOLFSSL_FILETYPE_PEM);
+ ret = wolfSSL_CTX_load_verify_buffer(ctx,
+ CA_FILE,
+ sizeof_CA_FILE(),
+ WOLFSSL_FILETYPE_PEM
+ );
+
if (ret == WOLFSSL_SUCCESS) {
WOLFSSL_MSG("wolfSSL_CTX_load_verify_buffer successful\n");
}
else {
- WOLFSSL_ERROR_MSG("ERROR: wolfSSL_CTX_load_verify_buffer failed\n");
+ WOLFSSL_ERROR_MSG("ERROR: "
+ "wolfSSL_CTX_load_verify_buffer failed\n");
}
}
else {
WOLFSSL_ERROR_MSG("skipping wolfSSL_CTX_load_verify_buffer\n");
}
-
+
/* Require mutual authentication */
wolfSSL_CTX_set_verify(ctx,
WOLFSSL_VERIFY_PEER | WOLFSSL_VERIFY_FAIL_IF_NO_PEER_CERT,
NULL);
-
-
-
/* Continue to accept clients until mShutdown is issued */
while (!mShutdown && (ret == WOLFSSL_SUCCESS)) {
WOLFSSL_MSG("Waiting for a connection...\n");
-
+
/* Accept client connections */
if ((mConnd = accept(sockfd, (struct sockaddr*)&clientAddr, &size))
== -1) {
- // fprintf(stderr, "ERROR: failed to accept the connection\n\n");
- ret = -1;
- // TODO goto exit;
- WOLFSSL_ERROR_MSG("ERROR: failed socket accept\n");
+
+ ret = -1;
+ goto exit;
+ WOLFSSL_ERROR_MSG("ERROR: failed socket connection accept\n");
ret = WOLFSSL_FAILURE;
}
/* Create a WOLFSSL object */
if ((ssl = wolfSSL_new(ctx)) == NULL) {
- // fprintf(stderr, "ERROR: failed to create WOLFSSL object\n");
- ret = -1;
- //TODO goto exit;
- WOLFSSL_ERROR_MSG("ERROR: filed wolfSSL_new during loop\n");
+ WOLFSSL_ERROR_MSG("ERROR: failed to create WOLFSSL object\n");
+ ret = -1;
+ goto exit;
+ WOLFSSL_ERROR_MSG("ERROR: failed wolfSSL_new during loop\n");
ret = WOLFSSL_FAILURE;
}
@@ -868,17 +945,16 @@ int tls_smp_server_task() {
/* Establish TLS connection */
if ((ret = wolfSSL_accept(ssl)) != WOLFSSL_SUCCESS) {
WOLFSSL_ERROR_MSG("ERROR: wolfSSL_accept\n");
+
ret = WOLFSSL_FAILURE;
- // fprintf(stderr,
- // "wolfSSL_accept error = %d\n",
- // wolfSSL_get_error(ssl, ret));
- // TODO goto exit;
+ ESP_LOGE(TAG, "wolfSSL_accept error = %d\n",
+ wolfSSL_get_error(ssl, ret));
+ goto exit;
}
else {
WOLFSSL_MSG("Client connected successfully\n");
}
-
#ifdef HAVE_SECRET_CALLBACK
wolfSSL_FreeArrays(ssl);
#endif
@@ -886,16 +962,17 @@ int tls_smp_server_task() {
/* Read the client data into our buff array */
memset(buff, 0, sizeof(buff));
if ((ret = wolfSSL_read(ssl, buff, sizeof(buff) - 1)) < 0) {
- // fprintf(stderr, "ERROR: failed to read\n");
- //TODO goto exit;
+ ESP_LOGE(TAG, "wolfSSL_read error = %d\n",
+ wolfSSL_get_error(ssl, ret));
+ goto exit;
}
- /* Print to stdout any data the client sends */
- // printf("Client: %s\n", buff);
+ /* Print any data the client sends */
+ ESP_LOGI(TAG, "Client: %s\n", buff);
/* Check for server shutdown command */
if (strncmp(buff, "shutdown", 8) == 0) {
- // printf("Shutdown command issued!\n");
+ ESP_LOGI(TAG, "Shutdown command issued!\n");
mShutdown = 1;
}
@@ -906,14 +983,15 @@ int tls_smp_server_task() {
/* Reply back to the client */
if ((ret = wolfSSL_write(ssl, buff, len)) != len) {
- // fprintf(stderr, "ERROR: failed to write\n");
- // TODO goto exit;
+ ESP_LOGE(TAG, "wolfSSL_write error = %d\n",
+ wolfSSL_get_error(ssl, ret));
+ goto exit;
}
/* Cleanup after this connection */
wolfSSL_shutdown(ssl);
if (ssl) {
- wolfSSL_free(ssl); /* Free the wolfSSL object */
+ wolfSSL_free(ssl); /* Free the wolfSSL object */
ssl = NULL;
}
if (mConnd != SOCKET_INVALID) {
@@ -924,33 +1002,34 @@ int tls_smp_server_task() {
WOLFSSL_MSG("Shutdown complete\n");
- /*
+ /*
***************************************************************************
- *
- * Cleanup and return
- *
+ *
+ * Cleanup and return
+ *
***************************************************************************
*/
+exit:
if (mConnd != SOCKET_INVALID) {
- close(mConnd); /* Close the connection to the client */
+ close(mConnd); /* Close the connection to the client */
mConnd = SOCKET_INVALID;
}
if (sockfd != SOCKET_INVALID) {
- close(sockfd); /* Close the socket listening for clients */
+ close(sockfd); /* Close the socket listening for clients */
sockfd = SOCKET_INVALID;
}
-
+
if (ssl) {
- wolfSSL_free(ssl); /* Free the wolfSSL object */
+ wolfSSL_free(ssl); /* Free the wolfSSL object */
}
-
+
if (ctx) {
- wolfSSL_CTX_free(ctx); /* Free the wolfSSL context object */
+ wolfSSL_CTX_free(ctx); /* Free the wolfSSL context object */
}
-
- wolfSSL_Cleanup(); /* Cleanup the wolfSSL environment */
+
+ wolfSSL_Cleanup(); /* Cleanup the wolfSSL environment */
return ret;
}
@@ -958,7 +1037,21 @@ int tls_smp_server_task() {
void app_main(void)
{
- //Initialize NVS
+ ESP_LOGI(TAG, "--------------------------------------------------------");
+ ESP_LOGI(TAG, "--------------------------------------------------------");
+ ESP_LOGI(TAG, "---------------------- BEGIN MAIN ----------------------");
+ ESP_LOGI(TAG, "--------------------------------------------------------");
+ ESP_LOGI(TAG, "--------------------------------------------------------");
+
+
+ ESP_LOGI(TAG, "LIBWOLFSSL_VERSION_STRING = %s", LIBWOLFSSL_VERSION_STRING);
+ ESP_LOGI(TAG, "CONFIG_IDF_TARGET = %s", CONFIG_IDF_TARGET);
+ ESP_LOGI(TAG, "CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ = %u MHz", CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ);
+ ESP_LOGI(TAG, "Xthal_have_ccount = %u", Xthal_have_ccount);
+
+ ESP_LOGI(TAG, "Stack HWM: %d\n", uxTaskGetStackHighWaterMark(NULL));
+
+ /* Initialize NVS */
esp_err_t ret = nvs_flash_init();
if (ret == ESP_ERR_NVS_NO_FREE_PAGES || ret == ESP_ERR_NVS_NEW_VERSION_FOUND) {
ESP_ERROR_CHECK(nvs_flash_erase());
@@ -970,14 +1063,17 @@ void app_main(void)
wifi_init_sta();
set_time();
-
+
for (;;) {
ESP_LOGI(TAG, "main loop");
- vTaskDelay(DelayTicks ? DelayTicks : 1); /* Minimum delay = 1 tick */
+ vTaskDelay(DelayTicks ? DelayTicks : 1); /* Minimum delay = 1 tick */
tls_smp_server_task();
+
+ /* done. wait forever */
for (;;)
{
- vTaskDelay(DelayTicks ? DelayTicks : 1); /* Minimum delay = 1 tick */
+ vTaskDelay(DelayTicks ? DelayTicks : 1); /* Minimum delay = 1 tick
+ */
}
}
}
diff --git a/ESP32/TLS13-wifi_station-server/sdkconfig b/ESP32/TLS13-wifi_station-server/sdkconfig
deleted file mode 100644
index 83356afe..00000000
--- a/ESP32/TLS13-wifi_station-server/sdkconfig
+++ /dev/null
@@ -1,1394 +0,0 @@
-#
-# Automatically generated file. DO NOT EDIT.
-# Espressif IoT Development Framework (ESP-IDF) Project Configuration
-#
-CONFIG_IDF_CMAKE=y
-CONFIG_IDF_TARGET_ARCH_XTENSA=y
-CONFIG_IDF_TARGET="esp32"
-CONFIG_IDF_TARGET_ESP32=y
-CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000
-
-#
-# SDK tool configuration
-#
-CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-"
-# CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set
-# end of SDK tool configuration
-
-#
-# Build type
-#
-CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y
-# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set
-CONFIG_APP_BUILD_GENERATE_BINARIES=y
-CONFIG_APP_BUILD_BOOTLOADER=y
-CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y
-# end of Build type
-
-#
-# Application manager
-#
-CONFIG_APP_COMPILE_TIME_DATE=y
-# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set
-# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set
-# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set
-CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16
-# end of Application manager
-
-#
-# Bootloader config
-#
-CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000
-CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set
-# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set
-CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y
-# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set
-# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set
-CONFIG_BOOTLOADER_LOG_LEVEL=3
-# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set
-CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y
-# CONFIG_BOOTLOADER_FACTORY_RESET is not set
-# CONFIG_BOOTLOADER_APP_TEST is not set
-CONFIG_BOOTLOADER_WDT_ENABLE=y
-# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set
-CONFIG_BOOTLOADER_WDT_TIME_MS=9000
-# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set
-# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set
-CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0
-# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set
-CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y
-# end of Bootloader config
-
-#
-# Security features
-#
-# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set
-# CONFIG_SECURE_BOOT is not set
-# CONFIG_SECURE_FLASH_ENC_ENABLED is not set
-# end of Security features
-
-#
-# Serial flasher config
-#
-CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200
-# CONFIG_ESPTOOLPY_NO_STUB is not set
-# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set
-# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set
-CONFIG_ESPTOOLPY_FLASHMODE_DIO=y
-# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set
-CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y
-CONFIG_ESPTOOLPY_FLASHMODE="dio"
-# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ_40M=y
-# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set
-# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set
-CONFIG_ESPTOOLPY_FLASHFREQ="40m"
-# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y
-# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set
-# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set
-CONFIG_ESPTOOLPY_FLASHSIZE="2MB"
-CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y
-CONFIG_ESPTOOLPY_BEFORE_RESET=y
-# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set
-CONFIG_ESPTOOLPY_BEFORE="default_reset"
-CONFIG_ESPTOOLPY_AFTER_RESET=y
-# CONFIG_ESPTOOLPY_AFTER_NORESET is not set
-CONFIG_ESPTOOLPY_AFTER="hard_reset"
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_CONSOLE is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set
-CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set
-# CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set
-CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200
-CONFIG_ESPTOOLPY_MONITOR_BAUD=115200
-# end of Serial flasher config
-
-#
-# Partition Table
-#
-CONFIG_PARTITION_TABLE_SINGLE_APP=y
-# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set
-# CONFIG_PARTITION_TABLE_TWO_OTA is not set
-# CONFIG_PARTITION_TABLE_CUSTOM is not set
-CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
-CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv"
-CONFIG_PARTITION_TABLE_OFFSET=0x8000
-CONFIG_PARTITION_TABLE_MD5=y
-# end of Partition Table
-
-#
-# Example Configuration
-#
-CONFIG_ESP_WIFI_SSID="myssid"
-CONFIG_ESP_WIFI_PASSWORD="mypassword"
-CONFIG_ESP_MAXIMUM_RETRY=5
-# end of Example Configuration
-
-#
-# Compiler options
-#
-CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
-# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set
-# CONFIG_COMPILER_OPTIMIZATION_PERF is not set
-# CONFIG_COMPILER_OPTIMIZATION_NONE is not set
-CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
-# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set
-# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set
-CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2
-# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set
-CONFIG_COMPILER_HIDE_PATHS_MACROS=y
-# CONFIG_COMPILER_CXX_EXCEPTIONS is not set
-# CONFIG_COMPILER_CXX_RTTI is not set
-CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y
-# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set
-# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set
-# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set
-# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set
-# CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set
-# CONFIG_COMPILER_DUMP_RTL_FILES is not set
-# end of Compiler options
-
-#
-# Component config
-#
-
-#
-# Application Level Tracing
-#
-# CONFIG_APPTRACE_DEST_JTAG is not set
-CONFIG_APPTRACE_DEST_NONE=y
-CONFIG_APPTRACE_LOCK_ENABLE=y
-# end of Application Level Tracing
-
-#
-# ESP-ASIO
-#
-# CONFIG_ASIO_SSL_SUPPORT is not set
-# end of ESP-ASIO
-
-#
-# Bluetooth
-#
-# CONFIG_BT_ENABLED is not set
-# end of Bluetooth
-
-#
-# CoAP Configuration
-#
-CONFIG_COAP_MBEDTLS_PSK=y
-# CONFIG_COAP_MBEDTLS_PKI is not set
-# CONFIG_COAP_MBEDTLS_DEBUG is not set
-CONFIG_COAP_LOG_DEFAULT_LEVEL=0
-# end of CoAP Configuration
-
-#
-# Driver configurations
-#
-
-#
-# ADC configuration
-#
-# CONFIG_ADC_FORCE_XPD_FSM is not set
-CONFIG_ADC_DISABLE_DAC=y
-# end of ADC configuration
-
-#
-# MCPWM configuration
-#
-# CONFIG_MCPWM_ISR_IN_IRAM is not set
-# end of MCPWM configuration
-
-#
-# SPI configuration
-#
-# CONFIG_SPI_MASTER_IN_IRAM is not set
-CONFIG_SPI_MASTER_ISR_IN_IRAM=y
-# CONFIG_SPI_SLAVE_IN_IRAM is not set
-CONFIG_SPI_SLAVE_ISR_IN_IRAM=y
-# end of SPI configuration
-
-#
-# TWAI configuration
-#
-# CONFIG_TWAI_ISR_IN_IRAM is not set
-# CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC is not set
-# CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set
-# CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set
-# CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set
-# end of TWAI configuration
-
-#
-# UART configuration
-#
-# CONFIG_UART_ISR_IN_IRAM is not set
-# end of UART configuration
-
-#
-# RTCIO configuration
-#
-# CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set
-# end of RTCIO configuration
-
-#
-# GPIO Configuration
-#
-# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set
-# end of GPIO Configuration
-
-#
-# GDMA Configuration
-#
-# CONFIG_GDMA_CTRL_FUNC_IN_IRAM is not set
-# CONFIG_GDMA_ISR_IRAM_SAFE is not set
-# end of GDMA Configuration
-# end of Driver configurations
-
-#
-# eFuse Bit Manager
-#
-# CONFIG_EFUSE_CUSTOM_TABLE is not set
-# CONFIG_EFUSE_VIRTUAL is not set
-# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set
-CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y
-# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set
-CONFIG_EFUSE_MAX_BLK_LEN=192
-# end of eFuse Bit Manager
-
-#
-# ESP-TLS
-#
-CONFIG_ESP_TLS_USING_MBEDTLS=y
-# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set
-# CONFIG_ESP_TLS_SERVER is not set
-# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set
-# CONFIG_ESP_TLS_PSK_VERIFICATION is not set
-# CONFIG_ESP_TLS_INSECURE is not set
-# end of ESP-TLS
-
-#
-# ESP32-specific
-#
-CONFIG_ESP32_REV_MIN_0=y
-# CONFIG_ESP32_REV_MIN_1 is not set
-# CONFIG_ESP32_REV_MIN_2 is not set
-# CONFIG_ESP32_REV_MIN_3 is not set
-CONFIG_ESP32_REV_MIN=0
-CONFIG_ESP32_DPORT_WORKAROUND=y
-# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set
-CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y
-# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set
-CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160
-# CONFIG_ESP32_SPIRAM_SUPPORT is not set
-# CONFIG_ESP32_TRAX is not set
-CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0
-# CONFIG_ESP32_ULP_COPROC_ENABLED is not set
-CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0
-CONFIG_ESP32_DEBUG_OCDAWARE=y
-CONFIG_ESP32_BROWNOUT_DET=y
-CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set
-CONFIG_ESP32_BROWNOUT_DET_LVL=0
-CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y
-# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set
-# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set
-CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y
-# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set
-# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set
-# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set
-CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024
-CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000
-CONFIG_ESP32_XTAL_FREQ_40=y
-# CONFIG_ESP32_XTAL_FREQ_26 is not set
-# CONFIG_ESP32_XTAL_FREQ_AUTO is not set
-CONFIG_ESP32_XTAL_FREQ=40
-# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set
-# CONFIG_ESP32_NO_BLOBS is not set
-# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
-# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set
-# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set
-CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5
-# end of ESP32-specific
-
-#
-# ADC-Calibration
-#
-CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y
-CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y
-CONFIG_ADC_CAL_LUT_ENABLE=y
-# end of ADC-Calibration
-
-#
-# Common ESP-related
-#
-CONFIG_ESP_ERR_TO_NAME_LOOKUP=y
-# end of Common ESP-related
-
-#
-# Ethernet
-#
-CONFIG_ETH_ENABLED=y
-CONFIG_ETH_USE_ESP32_EMAC=y
-CONFIG_ETH_PHY_INTERFACE_RMII=y
-CONFIG_ETH_RMII_CLK_INPUT=y
-# CONFIG_ETH_RMII_CLK_OUTPUT is not set
-CONFIG_ETH_RMII_CLK_IN_GPIO=0
-CONFIG_ETH_DMA_BUFFER_SIZE=512
-CONFIG_ETH_DMA_RX_BUFFER_NUM=10
-CONFIG_ETH_DMA_TX_BUFFER_NUM=10
-CONFIG_ETH_USE_SPI_ETHERNET=y
-# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set
-# CONFIG_ETH_SPI_ETHERNET_W5500 is not set
-# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set
-# CONFIG_ETH_USE_OPENETH is not set
-# end of Ethernet
-
-#
-# Event Loop Library
-#
-# CONFIG_ESP_EVENT_LOOP_PROFILING is not set
-CONFIG_ESP_EVENT_POST_FROM_ISR=y
-CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y
-# end of Event Loop Library
-
-#
-# GDB Stub
-#
-# end of GDB Stub
-
-#
-# ESP HTTP client
-#
-CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y
-# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set
-CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH=y
-# end of ESP HTTP client
-
-#
-# HTTP Server
-#
-CONFIG_HTTPD_MAX_REQ_HDR_LEN=512
-CONFIG_HTTPD_MAX_URI_LEN=512
-CONFIG_HTTPD_ERR_RESP_NO_DELAY=y
-CONFIG_HTTPD_PURGE_BUF_LEN=32
-# CONFIG_HTTPD_LOG_PURGE_DATA is not set
-# CONFIG_HTTPD_WS_SUPPORT is not set
-# end of HTTP Server
-
-#
-# ESP HTTPS OTA
-#
-# CONFIG_OTA_ALLOW_HTTP is not set
-# end of ESP HTTPS OTA
-
-#
-# ESP HTTPS server
-#
-# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set
-# end of ESP HTTPS server
-
-#
-# Hardware Settings
-#
-
-#
-# MAC Config
-#
-CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y
-CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y
-# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y
-CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4
-# end of MAC Config
-
-#
-# Sleep Config
-#
-CONFIG_ESP_SLEEP_POWER_DOWN_FLASH=y
-CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y
-# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set
-# CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND is not set
-# end of Sleep Config
-
-#
-# RTC Clock Config
-#
-# end of RTC Clock Config
-# end of Hardware Settings
-
-#
-# IPC (Inter-Processor Call)
-#
-CONFIG_ESP_IPC_TASK_STACK_SIZE=1536
-CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y
-CONFIG_ESP_IPC_ISR_ENABLE=y
-# end of IPC (Inter-Processor Call)
-
-#
-# LCD and Touch Panel
-#
-
-#
-# LCD Peripheral Configuration
-#
-CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32
-# end of LCD Peripheral Configuration
-# end of LCD and Touch Panel
-
-#
-# ESP NETIF Adapter
-#
-CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120
-CONFIG_ESP_NETIF_TCPIP_LWIP=y
-# CONFIG_ESP_NETIF_LOOPBACK is not set
-CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y
-# end of ESP NETIF Adapter
-
-#
-# PHY
-#
-CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y
-# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set
-CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20
-CONFIG_ESP_PHY_MAX_TX_POWER=20
-CONFIG_ESP_PHY_REDUCE_TX_POWER=y
-# end of PHY
-
-#
-# Power Management
-#
-# CONFIG_PM_ENABLE is not set
-# end of Power Management
-
-#
-# ESP System Settings
-#
-# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set
-CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y
-# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set
-# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set
-# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set
-
-#
-# Memory protection
-#
-# end of Memory protection
-
-CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32
-CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304
-CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584
-CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y
-# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set
-# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set
-CONFIG_ESP_MAIN_TASK_AFFINITY=0x0
-CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048
-CONFIG_ESP_CONSOLE_UART_DEFAULT=y
-# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set
-# CONFIG_ESP_CONSOLE_NONE is not set
-CONFIG_ESP_CONSOLE_UART=y
-CONFIG_ESP_CONSOLE_MULTIPLE_UART=y
-CONFIG_ESP_CONSOLE_UART_NUM=0
-CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200
-CONFIG_ESP_INT_WDT=y
-CONFIG_ESP_INT_WDT_TIMEOUT_MS=300
-CONFIG_ESP_INT_WDT_CHECK_CPU1=y
-CONFIG_ESP_TASK_WDT=y
-# CONFIG_ESP_TASK_WDT_PANIC is not set
-CONFIG_ESP_TASK_WDT_TIMEOUT_S=5
-CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
-CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
-# CONFIG_ESP_PANIC_HANDLER_IRAM is not set
-# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set
-# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set
-CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y
-# end of ESP System Settings
-
-#
-# High resolution timer (esp_timer)
-#
-# CONFIG_ESP_TIMER_PROFILING is not set
-CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y
-CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y
-CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584
-CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1
-# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set
-# CONFIG_ESP_TIMER_IMPL_FRC2 is not set
-CONFIG_ESP_TIMER_IMPL_TG0_LAC=y
-# end of High resolution timer (esp_timer)
-
-#
-# Wi-Fi
-#
-CONFIG_ESP32_WIFI_ENABLED=y
-CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10
-CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32
-# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set
-CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y
-CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1
-CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32
-# CONFIG_ESP32_WIFI_CSI_ENABLED is not set
-CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y
-CONFIG_ESP32_WIFI_TX_BA_WIN=6
-CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y
-CONFIG_ESP32_WIFI_RX_BA_WIN=6
-CONFIG_ESP32_WIFI_NVS_ENABLED=y
-CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y
-# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set
-CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752
-CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32
-CONFIG_ESP32_WIFI_IRAM_OPT=y
-CONFIG_ESP32_WIFI_RX_IRAM_OPT=y
-CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y
-# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set
-# CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set
-# CONFIG_ESP_WIFI_GMAC_SUPPORT is not set
-CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y
-# end of Wi-Fi
-
-#
-# Core dump
-#
-# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set
-# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set
-CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y
-# end of Core dump
-
-#
-# FAT Filesystem support
-#
-# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set
-CONFIG_FATFS_CODEPAGE_437=y
-# CONFIG_FATFS_CODEPAGE_720 is not set
-# CONFIG_FATFS_CODEPAGE_737 is not set
-# CONFIG_FATFS_CODEPAGE_771 is not set
-# CONFIG_FATFS_CODEPAGE_775 is not set
-# CONFIG_FATFS_CODEPAGE_850 is not set
-# CONFIG_FATFS_CODEPAGE_852 is not set
-# CONFIG_FATFS_CODEPAGE_855 is not set
-# CONFIG_FATFS_CODEPAGE_857 is not set
-# CONFIG_FATFS_CODEPAGE_860 is not set
-# CONFIG_FATFS_CODEPAGE_861 is not set
-# CONFIG_FATFS_CODEPAGE_862 is not set
-# CONFIG_FATFS_CODEPAGE_863 is not set
-# CONFIG_FATFS_CODEPAGE_864 is not set
-# CONFIG_FATFS_CODEPAGE_865 is not set
-# CONFIG_FATFS_CODEPAGE_866 is not set
-# CONFIG_FATFS_CODEPAGE_869 is not set
-# CONFIG_FATFS_CODEPAGE_932 is not set
-# CONFIG_FATFS_CODEPAGE_936 is not set
-# CONFIG_FATFS_CODEPAGE_949 is not set
-# CONFIG_FATFS_CODEPAGE_950 is not set
-CONFIG_FATFS_CODEPAGE=437
-CONFIG_FATFS_LFN_NONE=y
-# CONFIG_FATFS_LFN_HEAP is not set
-# CONFIG_FATFS_LFN_STACK is not set
-CONFIG_FATFS_FS_LOCK=0
-CONFIG_FATFS_TIMEOUT_MS=10000
-CONFIG_FATFS_PER_FILE_CACHE=y
-# CONFIG_FATFS_USE_FASTSEEK is not set
-# end of FAT Filesystem support
-
-#
-# Modbus configuration
-#
-CONFIG_FMB_COMM_MODE_TCP_EN=y
-CONFIG_FMB_TCP_PORT_DEFAULT=502
-CONFIG_FMB_TCP_PORT_MAX_CONN=5
-CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20
-CONFIG_FMB_COMM_MODE_RTU_EN=y
-CONFIG_FMB_COMM_MODE_ASCII_EN=y
-CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150
-CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200
-CONFIG_FMB_QUEUE_LENGTH=20
-CONFIG_FMB_PORT_TASK_STACK_SIZE=4096
-CONFIG_FMB_SERIAL_BUF_SIZE=256
-CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8
-CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000
-CONFIG_FMB_PORT_TASK_PRIO=10
-# CONFIG_FMB_PORT_TASK_AFFINITY_NO_AFFINITY is not set
-CONFIG_FMB_PORT_TASK_AFFINITY_CPU0=y
-# CONFIG_FMB_PORT_TASK_AFFINITY_CPU1 is not set
-CONFIG_FMB_PORT_TASK_AFFINITY=0x0
-CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y
-CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233
-CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20
-CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
-CONFIG_FMB_CONTROLLER_STACK_SIZE=4096
-CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20
-# CONFIG_FMB_TIMER_PORT_ENABLED is not set
-CONFIG_FMB_TIMER_GROUP=0
-CONFIG_FMB_TIMER_INDEX=0
-CONFIG_FMB_MASTER_TIMER_GROUP=0
-CONFIG_FMB_MASTER_TIMER_INDEX=0
-# CONFIG_FMB_TIMER_ISR_IN_IRAM is not set
-# end of Modbus configuration
-
-#
-# FreeRTOS
-#
-# CONFIG_FREERTOS_UNICORE is not set
-CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF
-CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y
-CONFIG_FREERTOS_CORETIMER_0=y
-# CONFIG_FREERTOS_CORETIMER_1 is not set
-CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y
-CONFIG_FREERTOS_HZ=100
-CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y
-# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set
-# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set
-CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y
-# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set
-CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y
-CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1
-CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y
-# CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set
-# CONFIG_FREERTOS_ASSERT_DISABLE is not set
-CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536
-CONFIG_FREERTOS_ISR_STACKSIZE=1536
-# CONFIG_FREERTOS_LEGACY_HOOKS is not set
-CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16
-CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y
-# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set
-CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1
-CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048
-CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10
-CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0
-# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set
-# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set
-CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y
-CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y
-# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set
-# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set
-CONFIG_FREERTOS_DEBUG_OCDAWARE=y
-# CONFIG_FREERTOS_FPU_IN_ISR is not set
-CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y
-# CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH is not set
-# end of FreeRTOS
-
-#
-# Hardware Abstraction Layer (HAL) and Low Level (LL)
-#
-CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y
-# CONFIG_HAL_ASSERTION_DISABLE is not set
-# CONFIG_HAL_ASSERTION_SILIENT is not set
-# CONFIG_HAL_ASSERTION_ENABLE is not set
-CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2
-# end of Hardware Abstraction Layer (HAL) and Low Level (LL)
-
-#
-# Heap memory debugging
-#
-CONFIG_HEAP_POISONING_DISABLED=y
-# CONFIG_HEAP_POISONING_LIGHT is not set
-# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set
-CONFIG_HEAP_TRACING_OFF=y
-# CONFIG_HEAP_TRACING_STANDALONE is not set
-# CONFIG_HEAP_TRACING_TOHOST is not set
-# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set
-# end of Heap memory debugging
-
-#
-# jsmn
-#
-# CONFIG_JSMN_PARENT_LINKS is not set
-# CONFIG_JSMN_STRICT is not set
-# end of jsmn
-
-#
-# libsodium
-#
-# end of libsodium
-
-#
-# Log output
-#
-# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set
-# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set
-# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set
-CONFIG_LOG_DEFAULT_LEVEL_INFO=y
-# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set
-# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set
-CONFIG_LOG_DEFAULT_LEVEL=3
-CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y
-# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set
-# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set
-CONFIG_LOG_MAXIMUM_LEVEL=3
-CONFIG_LOG_COLORS=y
-CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y
-# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set
-# end of Log output
-
-#
-# LWIP
-#
-CONFIG_LWIP_LOCAL_HOSTNAME="espressif"
-# CONFIG_LWIP_NETIF_API is not set
-# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set
-CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y
-# CONFIG_LWIP_L2_TO_L3_COPY is not set
-# CONFIG_LWIP_IRAM_OPTIMIZATION is not set
-CONFIG_LWIP_TIMERS_ONDEMAND=y
-CONFIG_LWIP_MAX_SOCKETS=10
-# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set
-# CONFIG_LWIP_SO_LINGER is not set
-CONFIG_LWIP_SO_REUSE=y
-CONFIG_LWIP_SO_REUSE_RXTOALL=y
-# CONFIG_LWIP_SO_RCVBUF is not set
-# CONFIG_LWIP_NETBUF_RECVINFO is not set
-CONFIG_LWIP_IP4_FRAG=y
-CONFIG_LWIP_IP6_FRAG=y
-# CONFIG_LWIP_IP4_REASSEMBLY is not set
-# CONFIG_LWIP_IP6_REASSEMBLY is not set
-# CONFIG_LWIP_IP_FORWARD is not set
-# CONFIG_LWIP_STATS is not set
-# CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set
-CONFIG_LWIP_ESP_GRATUITOUS_ARP=y
-CONFIG_LWIP_GARP_TMR_INTERVAL=60
-CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32
-CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y
-# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set
-CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y
-# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set
-CONFIG_LWIP_DHCP_OPTIONS_LEN=68
-
-#
-# DHCP server
-#
-CONFIG_LWIP_DHCPS=y
-CONFIG_LWIP_DHCPS_LEASE_UNIT=60
-CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8
-# end of DHCP server
-
-# CONFIG_LWIP_AUTOIP is not set
-CONFIG_LWIP_IPV6=y
-# CONFIG_LWIP_IPV6_AUTOCONFIG is not set
-CONFIG_LWIP_IPV6_NUM_ADDRESSES=3
-# CONFIG_LWIP_IPV6_FORWARD is not set
-# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set
-CONFIG_LWIP_NETIF_LOOPBACK=y
-CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8
-
-#
-# TCP
-#
-CONFIG_LWIP_MAX_ACTIVE_TCP=16
-CONFIG_LWIP_MAX_LISTENING_TCP=16
-CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y
-CONFIG_LWIP_TCP_MAXRTX=12
-CONFIG_LWIP_TCP_SYNMAXRTX=12
-CONFIG_LWIP_TCP_MSS=1440
-CONFIG_LWIP_TCP_TMR_INTERVAL=250
-CONFIG_LWIP_TCP_MSL=60000
-CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744
-CONFIG_LWIP_TCP_WND_DEFAULT=5744
-CONFIG_LWIP_TCP_RECVMBOX_SIZE=6
-CONFIG_LWIP_TCP_QUEUE_OOSEQ=y
-# CONFIG_LWIP_TCP_SACK_OUT is not set
-# CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set
-CONFIG_LWIP_TCP_OVERSIZE_MSS=y
-# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set
-# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set
-CONFIG_LWIP_TCP_RTO_TIME=1500
-# end of TCP
-
-#
-# UDP
-#
-CONFIG_LWIP_MAX_UDP_PCBS=16
-CONFIG_LWIP_UDP_RECVMBOX_SIZE=6
-# end of UDP
-
-#
-# Checksums
-#
-# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set
-# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set
-CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y
-# end of Checksums
-
-CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072
-CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
-# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set
-# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set
-CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF
-# CONFIG_LWIP_PPP_SUPPORT is not set
-CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3
-CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5
-# CONFIG_LWIP_SLIP_SUPPORT is not set
-
-#
-# ICMP
-#
-CONFIG_LWIP_ICMP=y
-# CONFIG_LWIP_MULTICAST_PING is not set
-# CONFIG_LWIP_BROADCAST_PING is not set
-# end of ICMP
-
-#
-# LWIP RAW API
-#
-CONFIG_LWIP_MAX_RAW_PCBS=16
-# end of LWIP RAW API
-
-#
-# SNTP
-#
-CONFIG_LWIP_SNTP_MAX_SERVERS=1
-# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set
-CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000
-# end of SNTP
-
-CONFIG_LWIP_ESP_LWIP_ASSERT=y
-
-#
-# Hooks
-#
-# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set
-CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y
-# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set
-CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y
-# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set
-# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set
-CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y
-# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set
-# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set
-CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y
-# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set
-# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set
-# end of Hooks
-
-# CONFIG_LWIP_DEBUG is not set
-# end of LWIP
-
-#
-# mbedTLS
-#
-CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y
-# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set
-# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set
-CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y
-CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384
-CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096
-# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set
-# CONFIG_MBEDTLS_DEBUG is not set
-
-#
-# mbedTLS v2.28.x related
-#
-# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set
-# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set
-# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set
-CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y
-# end of mbedTLS v2.28.x related
-
-#
-# Certificate Bundle
-#
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y
-CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set
-# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set
-# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set
-# end of Certificate Bundle
-
-# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set
-# CONFIG_MBEDTLS_CMAC_C is not set
-CONFIG_MBEDTLS_HARDWARE_AES=y
-CONFIG_MBEDTLS_HARDWARE_MPI=y
-CONFIG_MBEDTLS_HARDWARE_SHA=y
-CONFIG_MBEDTLS_ROM_MD5=y
-# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set
-# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set
-CONFIG_MBEDTLS_HAVE_TIME=y
-# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set
-CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y
-CONFIG_MBEDTLS_SHA512_C=y
-CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y
-# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set
-# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set
-# CONFIG_MBEDTLS_TLS_DISABLED is not set
-CONFIG_MBEDTLS_TLS_SERVER=y
-CONFIG_MBEDTLS_TLS_CLIENT=y
-CONFIG_MBEDTLS_TLS_ENABLED=y
-
-#
-# TLS Key Exchange Methods
-#
-# CONFIG_MBEDTLS_PSK_MODES is not set
-CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y
-CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y
-# end of TLS Key Exchange Methods
-
-CONFIG_MBEDTLS_SSL_RENEGOTIATION=y
-# CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set
-CONFIG_MBEDTLS_SSL_PROTO_TLS1=y
-CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y
-CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y
-# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set
-# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set
-CONFIG_MBEDTLS_SSL_ALPN=y
-CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y
-CONFIG_MBEDTLS_X509_CHECK_KEY_USAGE=y
-CONFIG_MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE=y
-CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y
-
-#
-# Symmetric Ciphers
-#
-CONFIG_MBEDTLS_AES_C=y
-# CONFIG_MBEDTLS_CAMELLIA_C is not set
-# CONFIG_MBEDTLS_DES_C is not set
-CONFIG_MBEDTLS_RC4_DISABLED=y
-# CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set
-# CONFIG_MBEDTLS_RC4_ENABLED is not set
-# CONFIG_MBEDTLS_BLOWFISH_C is not set
-# CONFIG_MBEDTLS_XTEA_C is not set
-CONFIG_MBEDTLS_CCM_C=y
-CONFIG_MBEDTLS_GCM_C=y
-# CONFIG_MBEDTLS_NIST_KW_C is not set
-# end of Symmetric Ciphers
-
-# CONFIG_MBEDTLS_RIPEMD160_C is not set
-
-#
-# Certificates
-#
-CONFIG_MBEDTLS_PEM_PARSE_C=y
-CONFIG_MBEDTLS_PEM_WRITE_C=y
-CONFIG_MBEDTLS_X509_CRL_PARSE_C=y
-CONFIG_MBEDTLS_X509_CSR_PARSE_C=y
-# end of Certificates
-
-CONFIG_MBEDTLS_ECP_C=y
-CONFIG_MBEDTLS_ECDH_C=y
-CONFIG_MBEDTLS_ECDSA_C=y
-# CONFIG_MBEDTLS_ECJPAKE_C is not set
-CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y
-CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y
-CONFIG_MBEDTLS_ECP_NIST_OPTIM=y
-# CONFIG_MBEDTLS_POLY1305_C is not set
-# CONFIG_MBEDTLS_CHACHA20_C is not set
-# CONFIG_MBEDTLS_HKDF_C is not set
-# CONFIG_MBEDTLS_THREADING_C is not set
-# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set
-# CONFIG_MBEDTLS_SECURITY_RISKS is not set
-# end of mbedTLS
-
-#
-# mDNS
-#
-CONFIG_MDNS_MAX_SERVICES=10
-CONFIG_MDNS_TASK_PRIORITY=1
-CONFIG_MDNS_TASK_STACK_SIZE=4096
-# CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set
-CONFIG_MDNS_TASK_AFFINITY_CPU0=y
-# CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set
-CONFIG_MDNS_TASK_AFFINITY=0x0
-CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000
-# CONFIG_MDNS_STRICT_MODE is not set
-CONFIG_MDNS_TIMER_PERIOD_MS=100
-# CONFIG_MDNS_NETWORKING_SOCKET is not set
-CONFIG_MDNS_MULTIPLE_INSTANCE=y
-# end of mDNS
-
-#
-# ESP-MQTT Configurations
-#
-CONFIG_MQTT_PROTOCOL_311=y
-CONFIG_MQTT_TRANSPORT_SSL=y
-CONFIG_MQTT_TRANSPORT_WEBSOCKET=y
-CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y
-# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set
-# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set
-# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set
-# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set
-# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set
-# CONFIG_MQTT_CUSTOM_OUTBOX is not set
-# end of ESP-MQTT Configurations
-
-#
-# Newlib
-#
-CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y
-# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set
-# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set
-# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set
-# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set
-CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y
-# CONFIG_NEWLIB_NANO_FORMAT is not set
-# end of Newlib
-
-#
-# NVS
-#
-# end of NVS
-
-#
-# OpenSSL
-#
-# CONFIG_OPENSSL_DEBUG is not set
-CONFIG_OPENSSL_ERROR_STACK=y
-# CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set
-CONFIG_OPENSSL_ASSERT_EXIT=y
-# end of OpenSSL
-
-#
-# OpenThread
-#
-# CONFIG_OPENTHREAD_ENABLED is not set
-# end of OpenThread
-
-#
-# PThreads
-#
-CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5
-CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
-CONFIG_PTHREAD_STACK_MIN=768
-CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y
-# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set
-# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set
-CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1
-CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread"
-# end of PThreads
-
-#
-# SPI Flash driver
-#
-# CONFIG_SPI_FLASH_VERIFY_WRITE is not set
-# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set
-CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y
-CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y
-# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set
-# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set
-# CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set
-# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set
-# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set
-CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y
-CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20
-CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1
-CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192
-# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set
-# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set
-# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set
-
-#
-# Auto-detect flash chips
-#
-CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y
-CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y
-# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set
-# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set
-# end of Auto-detect flash chips
-
-CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y
-# end of SPI Flash driver
-
-#
-# SPIFFS Configuration
-#
-CONFIG_SPIFFS_MAX_PARTITIONS=3
-
-#
-# SPIFFS Cache Configuration
-#
-CONFIG_SPIFFS_CACHE=y
-CONFIG_SPIFFS_CACHE_WR=y
-# CONFIG_SPIFFS_CACHE_STATS is not set
-# end of SPIFFS Cache Configuration
-
-CONFIG_SPIFFS_PAGE_CHECK=y
-CONFIG_SPIFFS_GC_MAX_RUNS=10
-# CONFIG_SPIFFS_GC_STATS is not set
-CONFIG_SPIFFS_PAGE_SIZE=256
-CONFIG_SPIFFS_OBJ_NAME_LEN=32
-# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set
-CONFIG_SPIFFS_USE_MAGIC=y
-CONFIG_SPIFFS_USE_MAGIC_LENGTH=y
-CONFIG_SPIFFS_META_LENGTH=4
-CONFIG_SPIFFS_USE_MTIME=y
-
-#
-# Debug Configuration
-#
-# CONFIG_SPIFFS_DBG is not set
-# CONFIG_SPIFFS_API_DBG is not set
-# CONFIG_SPIFFS_GC_DBG is not set
-# CONFIG_SPIFFS_CACHE_DBG is not set
-# CONFIG_SPIFFS_CHECK_DBG is not set
-# CONFIG_SPIFFS_TEST_VISUALISATION is not set
-# end of Debug Configuration
-# end of SPIFFS Configuration
-
-#
-# TCP Transport
-#
-
-#
-# Websocket
-#
-CONFIG_WS_TRANSPORT=y
-CONFIG_WS_BUFFER_SIZE=1024
-# end of Websocket
-# end of TCP Transport
-
-#
-# Unity unit testing library
-#
-CONFIG_UNITY_ENABLE_FLOAT=y
-CONFIG_UNITY_ENABLE_DOUBLE=y
-# CONFIG_UNITY_ENABLE_64BIT is not set
-# CONFIG_UNITY_ENABLE_COLOR is not set
-CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y
-# CONFIG_UNITY_ENABLE_FIXTURE is not set
-# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set
-# end of Unity unit testing library
-
-#
-# Virtual file system
-#
-CONFIG_VFS_SUPPORT_IO=y
-CONFIG_VFS_SUPPORT_DIR=y
-CONFIG_VFS_SUPPORT_SELECT=y
-CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y
-CONFIG_VFS_SUPPORT_TERMIOS=y
-
-#
-# Host File System I/O (Semihosting)
-#
-CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1
-CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128
-# end of Host File System I/O (Semihosting)
-# end of Virtual file system
-
-#
-# Wear Levelling
-#
-# CONFIG_WL_SECTOR_SIZE_512 is not set
-CONFIG_WL_SECTOR_SIZE_4096=y
-CONFIG_WL_SECTOR_SIZE=4096
-# end of Wear Levelling
-
-#
-# Wi-Fi Provisioning Manager
-#
-CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16
-CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30
-# end of Wi-Fi Provisioning Manager
-
-#
-# Supplicant
-#
-CONFIG_WPA_MBEDTLS_CRYPTO=y
-# CONFIG_WPA_WAPI_PSK is not set
-# CONFIG_WPA_SUITE_B_192 is not set
-# CONFIG_WPA_DEBUG_PRINT is not set
-# CONFIG_WPA_TESTING_OPTIONS is not set
-# CONFIG_WPA_WPS_STRICT is not set
-# CONFIG_WPA_11KV_SUPPORT is not set
-# end of Supplicant
-# end of Component config
-
-#
-# Compatibility options
-#
-# CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set
-# end of Compatibility options
-
-# Deprecated options for backward compatibility
-CONFIG_TOOLPREFIX="xtensa-esp32-elf-"
-# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set
-CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y
-# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set
-# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set
-CONFIG_LOG_BOOTLOADER_LEVEL=3
-# CONFIG_APP_ROLLBACK_ENABLE is not set
-# CONFIG_FLASH_ENCRYPTION_ENABLED is not set
-# CONFIG_FLASHMODE_QIO is not set
-# CONFIG_FLASHMODE_QOUT is not set
-CONFIG_FLASHMODE_DIO=y
-# CONFIG_FLASHMODE_DOUT is not set
-# CONFIG_MONITOR_BAUD_9600B is not set
-# CONFIG_MONITOR_BAUD_57600B is not set
-CONFIG_MONITOR_BAUD_115200B=y
-# CONFIG_MONITOR_BAUD_230400B is not set
-# CONFIG_MONITOR_BAUD_921600B is not set
-# CONFIG_MONITOR_BAUD_2MB is not set
-# CONFIG_MONITOR_BAUD_OTHER is not set
-CONFIG_MONITOR_BAUD_OTHER_VAL=115200
-CONFIG_MONITOR_BAUD=115200
-CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y
-# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set
-CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y
-# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set
-# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set
-CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2
-# CONFIG_CXX_EXCEPTIONS is not set
-CONFIG_STACK_CHECK_NONE=y
-# CONFIG_STACK_CHECK_NORM is not set
-# CONFIG_STACK_CHECK_STRONG is not set
-# CONFIG_STACK_CHECK_ALL is not set
-# CONFIG_WARN_WRITE_STRINGS is not set
-# CONFIG_DISABLE_GCC8_WARNINGS is not set
-# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set
-CONFIG_ESP32_APPTRACE_DEST_NONE=y
-CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y
-CONFIG_ADC2_DISABLE_DAC=y
-# CONFIG_SPIRAM_SUPPORT is not set
-CONFIG_TRACEMEM_RESERVE_DRAM=0x0
-# CONFIG_ULP_COPROC_ENABLED is not set
-CONFIG_ULP_COPROC_RESERVE_MEM=0
-CONFIG_BROWNOUT_DET=y
-CONFIG_BROWNOUT_DET_LVL_SEL_0=y
-# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set
-# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set
-CONFIG_BROWNOUT_DET_LVL=0
-CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set
-# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set
-# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set
-# CONFIG_NO_BLOBS is not set
-# CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set
-# CONFIG_EVENT_LOOP_PROFILING is not set
-CONFIG_POST_EVENTS_FROM_ISR=y
-CONFIG_POST_EVENTS_FROM_IRAM_ISR=y
-# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set
-CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y
-CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4
-CONFIG_ESP_SYSTEM_PD_FLASH=y
-# CONFIG_ESP32C3_LIGHTSLEEP_GPIO_RESET_WORKAROUND is not set
-CONFIG_IPC_TASK_STACK_SIZE=1536
-CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y
-# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set
-CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20
-CONFIG_ESP32_PHY_MAX_TX_POWER=20
-CONFIG_ESP32_REDUCE_PHY_TX_POWER=y
-# CONFIG_ESP32S2_PANIC_PRINT_HALT is not set
-CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y
-# CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set
-# CONFIG_ESP32S2_PANIC_GDBSTUB is not set
-CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32
-CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304
-CONFIG_MAIN_TASK_STACK_SIZE=3584
-CONFIG_CONSOLE_UART_DEFAULT=y
-# CONFIG_CONSOLE_UART_CUSTOM is not set
-# CONFIG_ESP_CONSOLE_UART_NONE is not set
-CONFIG_CONSOLE_UART=y
-CONFIG_CONSOLE_UART_NUM=0
-CONFIG_CONSOLE_UART_BAUDRATE=115200
-CONFIG_INT_WDT=y
-CONFIG_INT_WDT_TIMEOUT_MS=300
-CONFIG_INT_WDT_CHECK_CPU1=y
-CONFIG_TASK_WDT=y
-# CONFIG_TASK_WDT_PANIC is not set
-CONFIG_TASK_WDT_TIMEOUT_S=5
-CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y
-CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y
-# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set
-CONFIG_TIMER_TASK_STACK_SIZE=3584
-# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set
-# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set
-CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y
-CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150
-CONFIG_MB_MASTER_DELAY_MS_CONVERT=200
-CONFIG_MB_QUEUE_LENGTH=20
-CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096
-CONFIG_MB_SERIAL_BUF_SIZE=256
-CONFIG_MB_SERIAL_TASK_PRIO=10
-CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y
-CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233
-CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20
-CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20
-CONFIG_MB_CONTROLLER_STACK_SIZE=4096
-CONFIG_MB_EVENT_QUEUE_TIMEOUT=20
-# CONFIG_MB_TIMER_PORT_ENABLED is not set
-CONFIG_MB_TIMER_GROUP=0
-CONFIG_MB_TIMER_INDEX=0
-# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set
-CONFIG_TIMER_TASK_PRIORITY=1
-CONFIG_TIMER_TASK_STACK_DEPTH=2048
-CONFIG_TIMER_QUEUE_LENGTH=10
-# CONFIG_L2_TO_L3_COPY is not set
-# CONFIG_USE_ONLY_LWIP_SELECT is not set
-CONFIG_ESP_GRATUITOUS_ARP=y
-CONFIG_GARP_TMR_INTERVAL=60
-CONFIG_TCPIP_RECVMBOX_SIZE=32
-CONFIG_TCP_MAXRTX=12
-CONFIG_TCP_SYNMAXRTX=12
-CONFIG_TCP_MSS=1440
-CONFIG_TCP_MSL=60000
-CONFIG_TCP_SND_BUF_DEFAULT=5744
-CONFIG_TCP_WND_DEFAULT=5744
-CONFIG_TCP_RECVMBOX_SIZE=6
-CONFIG_TCP_QUEUE_OOSEQ=y
-# CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set
-CONFIG_TCP_OVERSIZE_MSS=y
-# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set
-# CONFIG_TCP_OVERSIZE_DISABLE is not set
-CONFIG_UDP_RECVMBOX_SIZE=6
-CONFIG_TCPIP_TASK_STACK_SIZE=3072
-CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y
-# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set
-# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set
-CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF
-# CONFIG_PPP_SUPPORT is not set
-CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5
-CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072
-CONFIG_ESP32_PTHREAD_STACK_MIN=768
-CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y
-# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set
-# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set
-CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1
-CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread"
-CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y
-# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set
-# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set
-CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y
-CONFIG_SUPPORT_TERMIOS=y
-CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1
-CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128
-# End of deprecated options
diff --git a/ESP32/TLS13-wifi_station-server/sdkconfig.defaults b/ESP32/TLS13-wifi_station-server/sdkconfig.defaults
new file mode 100644
index 00000000..3f85bd82
--- /dev/null
+++ b/ESP32/TLS13-wifi_station-server/sdkconfig.defaults
@@ -0,0 +1,37 @@
+#
+# Default main stack size
+#
+# This is typically way bigger than needed for stack size. See user_settings.h
+#
+CONFIG_ESP_MAIN_TASK_STACK_SIZE=55000
+
+# Legacy stack size for older ESP-IDF versions
+CONFIG_MAIN_TASK_STACK_SIZE=55000
+
+#
+# Compiler options
+#
+CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y
+CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y
+CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2
+CONFIG_COMPILER_HIDE_PATHS_MACROS=y
+CONFIG_COMPILER_STACK_CHECK_MODE_NORM=y
+CONFIG_COMPILER_STACK_CHECK=y
+
+# minimum C3 chip revision known to work is 2.
+# rev 0 and 1 not available for testing.
+# all revisions expected to work.
+CONFIG_ESP32C3_REV_MIN_0=
+CONFIG_ESP32C3_REV_MIN_1=
+CONFIG_ESP32C3_REV_MIN_2=y
+CONFIG_ESP32C3_REV_MIN_3=
+
+#
+# Partition Table
+#
+CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE=y
+CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv"
+CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp_large.csv"
+CONFIG_PARTITION_TABLE_OFFSET=0x8000
+CONFIG_PARTITION_TABLE_MD5=y
+# end of Partition Table