瀏覽代碼

init revision

missing spiffs support
master
agr 4 年之前
當前提交
2ec19a4dad
共有 12 個檔案被更改,包括 1405 行新增0 行删除
  1. +84
    -0
      webservertest/.cproject
  2. +2
    -0
      webservertest/.gitignore
  3. +75
    -0
      webservertest/.project
  4. +14
    -0
      webservertest/.settings/language.settings.xml
  5. +537
    -0
      webservertest/.settings/org.eclipse.cdt.core.prefs
  6. +73
    -0
      webservertest/data/Select_Settings.html
  7. +32
    -0
      webservertest/data/WiFi.html
  8. +1
    -0
      webservertest/data/ip_set.txt
  9. +64
    -0
      webservertest/data/page_dhcp.html
  10. +74
    -0
      webservertest/data/page_static.html
  11. +2
    -0
      webservertest/spec.d
  12. +447
    -0
      webservertest/webservertest.ino

+ 84
- 0
webservertest/.cproject 查看文件

@@ -0,0 +1,84 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<?fileVersion 4.0.0?><cproject storage_type_id="org.eclipse.cdt.core.XmlProjectDescriptionStorage">
<storageModule moduleId="org.eclipse.cdt.core.settings">
<cconfiguration id="io.sloeber.core.toolChain.release.447160269">
<storageModule buildSystemId="org.eclipse.cdt.managedbuilder.core.configurationDataProvider" id="io.sloeber.core.toolChain.release.447160269" moduleId="org.eclipse.cdt.core.settings" name="Release">
<externalSettings/>
<extensions>
<extension id="org.eclipse.cdt.core.ELF" point="org.eclipse.cdt.core.BinaryParser"/>
<extension id="org.eclipse.cdt.core.GLDErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.MakeErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
<extension id="org.eclipse.cdt.core.GCCErrorParser" point="org.eclipse.cdt.core.ErrorParser"/>
</extensions>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<configuration artifactName="${ProjName}" buildProperties="" description="" id="io.sloeber.core.toolChain.release.447160269" name="Release" parent="org.eclipse.cdt.build.core.emptycfg">
<folderInfo id="io.sloeber.core.toolChain.release.447160269.1706152628" name="/" resourcePath="">
<toolChain id="io.sloeber.core.toolChain.release.753771750" name="Arduino Toolchain (Sloeber edition)" superClass="io.sloeber.core.toolChain.release">
<targetPlatform archList="all" binaryParser="org.eclipse.cdt.core.ELF" id="io.sloeber.targetplatform.1115316570" name="Arduino Target" osList="all" superClass="io.sloeber.targetplatform"/>
<builder buildPath="${workspace_loc:/webservertest}/Release" id="io.sloeber.sketch.builder.311405264" keepEnvironmentInBuildfile="false" managedBuildOn="true" name="Arduino sketch builder" superClass="io.sloeber.sketch.builder"/>
<tool id="io.sloeber.tool.sketch.compiler.cpp.207055269" name="Arduino C++ Compiler" superClass="io.sloeber.tool.sketch.compiler.cpp">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.cpp.sketch.option.incpath.1917117120" name="Include Paths (-I)" superClass="io.sloeber.compiler.cpp.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/ArduinoJson/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/EEPROM/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/FS/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/SPIFFS/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/WebServer/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/WiFi/src}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.cpp.sketch.input.1673309986" name="CPP source files" superClass="io.sloeber.compiler.cpp.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.compiler.c.1268308470" name="Arduino C Compiler" superClass="io.sloeber.tool.compiler.c">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.c.sketch.option.incpath.325830182" name="Include Paths (-I)" superClass="io.sloeber.compiler.c.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/ArduinoJson/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/EEPROM/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/FS/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/SPIFFS/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/WebServer/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/WiFi/src}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.c.sketch.input.983887181" name="C Source Files" superClass="io.sloeber.compiler.c.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.sketch.compiler.s.1030764863" name="Arduino Assembler" superClass="io.sloeber.tool.sketch.compiler.s">
<option IS_BUILTIN_EMPTY="false" IS_VALUE_EMPTY="false" id="io.sloeber.compiler.asm.sketch.option.incpath.1879100731" name="Include Paths (-I)" superClass="io.sloeber.compiler.asm.sketch.option.incpath" valueType="includePath">
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/core/core}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/core/variant}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/ArduinoJson/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/EEPROM/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/FS/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/SPIFFS/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/WebServer/src}&quot;"/>
<listOptionValue builtIn="false" value="&quot;${workspace_loc:/webservertest/libraries/WiFi/src}&quot;"/>
</option>
<inputType id="io.sloeber.compiler.S.sketch.input.1012785950" name="Assembly source files" superClass="io.sloeber.compiler.S.sketch.input"/>
</tool>
<tool id="io.sloeber.tool.ar.1175874945" name="Arduino archiver" superClass="io.sloeber.tool.ar"/>
<tool id="io.sloeber.tool.combine.187734689" name="Arduino combiner" superClass="io.sloeber.tool.combine"/>
<tool id="io.sloeber.tool.objcopy.eep.1858580703" name="Arduino tool objcopy command" superClass="io.sloeber.tool.objcopy.eep"/>
<tool id="io.sloeber.tool.size.908287534" name="Arduino tool Print Size" superClass="io.sloeber.tool.size"/>
</toolChain>
</folderInfo>
<sourceEntries>
<entry excluding="libraries/?*/**/?xamples/**|libraries/?*/**/?xtras/**|libraries/?*/**/test*/**|libraries/?*/**/third-party/**|libraries/**/._*|libraries/?*/utility/*/*" flags="VALUE_WORKSPACE_PATH" kind="sourcePath" name=""/>
</sourceEntries>
</configuration>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.externalSettings"/>
</cconfiguration>
</storageModule>
<storageModule moduleId="cdtBuildSystem" version="4.0.0">
<project id="webservertest.null.1986141844" name="webservertest"/>
</storageModule>
<storageModule moduleId="scannerConfiguration">
<autodiscovery enabled="true" problemReportingEnabled="true" selectedProfileId=""/>
</storageModule>
<storageModule moduleId="org.eclipse.cdt.core.LanguageSettingsProviders"/>
<storageModule moduleId="refreshScope"/>
<storageModule moduleId="org.eclipse.cdt.make.core.buildtargets">
<buildTargets/>
</storageModule>
</cproject>

+ 2
- 0
webservertest/.gitignore 查看文件

@@ -0,0 +1,2 @@
/Release/
/sloeber.ino.cpp

+ 75
- 0
webservertest/.project 查看文件

@@ -0,0 +1,75 @@
<?xml version="1.0" encoding="UTF-8"?>
<projectDescription>
<name>webservertest</name>
<comment></comment>
<projects>
</projects>
<buildSpec>
<buildCommand>
<name>io.sloeber.core.inoToCpp</name>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.genmakebuilder</name>
<triggers>clean,full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
<buildCommand>
<name>org.eclipse.cdt.managedbuilder.core.ScannerConfigBuilder</name>
<triggers>full,incremental,</triggers>
<arguments>
</arguments>
</buildCommand>
</buildSpec>
<natures>
<nature>org.eclipse.cdt.core.cnature</nature>
<nature>org.eclipse.cdt.core.ccnature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.managedBuildNature</nature>
<nature>org.eclipse.cdt.managedbuilder.core.ScannerConfigNature</nature>
<nature>io.sloeber.arduinonature</nature>
</natures>
<linkedResources>
<link>
<name>core/core</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4/cores/esp32</locationURI>
</link>
<link>
<name>core/variant</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4/variants/esp32</locationURI>
</link>
<link>
<name>libraries/ArduinoJson</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/libraries/ArduinoJson/6.15.1</locationURI>
</link>
<link>
<name>libraries/EEPROM</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4/libraries/EEPROM</locationURI>
</link>
<link>
<name>libraries/FS</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4/libraries/FS</locationURI>
</link>
<link>
<name>libraries/SPIFFS</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4/libraries/SPIFFS</locationURI>
</link>
<link>
<name>libraries/WebServer</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4/libraries/WebServer</locationURI>
</link>
<link>
<name>libraries/WiFi</name>
<type>2</type>
<locationURI>ECLIPSE_HOME/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4/libraries/WiFi</locationURI>
</link>
</linkedResources>
</projectDescription>

+ 14
- 0
webservertest/.settings/language.settings.xml 查看文件

@@ -0,0 +1,14 @@
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
<project>
<configuration id="io.sloeber.core.toolChain.release.447160269" name="Release">
<extension point="org.eclipse.cdt.core.LanguageSettingsProvider">
<provider copy-of="extension" id="org.eclipse.cdt.ui.UserLanguageSettingsProvider"/>
<provider-reference id="org.eclipse.cdt.core.ReferencedProjectsLanguageSettingsProvider" ref="shared-provider"/>
<provider class="io.sloeber.core.toolchain.ArduinoLanguageProvider" console="false" env-hash="-780410022145031069" id="io.sloeber.languageSettingsProvider" keep-relative-paths="false" name="Arduino Compiler Settings" parameter="${COMMAND} -E -P -v -dD -D__IN_ECLIPSE__ &quot;${INPUTS}&quot;" prefer-non-shared="true">
<language-scope id="org.eclipse.cdt.core.gcc"/>
<language-scope id="org.eclipse.cdt.core.g++"/>
</provider>
<provider-reference id="org.eclipse.cdt.managedbuilder.core.MBSLanguageSettingsProvider" ref="shared-provider"/>
</extension>
</configuration>
</project>

+ 537
- 0
webservertest/.settings/org.eclipse.cdt.core.prefs 查看文件

@@ -0,0 +1,537 @@
eclipse.preferences.version=1
environment/project/io.sloeber.core.toolChain.release.447160269/A.ALT_SIZE_COMMAND/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.ALT_SIZE_COMMAND/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.ALT_SIZE_COMMAND/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" --format\=avr --mcu\=${A.BUILD.MCU} "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/io.sloeber.core.toolChain.release.447160269/A.ARCHIVE_FILE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.ARCHIVE_FILE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.ARCHIVE_FILE/value=arduino.ar
environment/project/io.sloeber.core.toolChain.release.447160269/A.ARCHIVE_FILE_PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.ARCHIVE_FILE_PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.ARCHIVE_FILE_PATH/value=${A.BUILD.PATH}/${A.ARCHIVE_FILE}
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.ARCH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.ARCH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.ARCH/value=ESP32
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.BOARD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.BOARD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.BOARD/value=ESP32_DEV
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.BOOT/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.BOOT/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.BOOT/value=qio
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CODE_DEBUG/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CODE_DEBUG/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CODE_DEBUG/value=0
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CORE.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CORE.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CORE.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\hardware\\esp32\\1.0.4\\cores\\esp32
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CORE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CORE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.CORE/value=esp32
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.DEFINES/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.DEFINES/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.DEFINES/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.EXTRA_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.EXTRA_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.EXTRA_FLAGS/value=-DESP32 -DCORE_DEBUG_LEVEL\=${A.BUILD.CODE_DEBUG} ${A.BUILD.DEFINES}
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_FREQ/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_FREQ/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_FREQ/value=80m
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_MODE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_MODE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_MODE/value=dio
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_SIZE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_SIZE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.FLASH_SIZE/value=4MB
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.F_CPU/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.F_CPU/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.F_CPU/value=240000000L
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.MCU/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.MCU/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.MCU/value=esp32
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PARTITIONS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PARTITIONS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PARTITIONS/value=default
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PATH/value=${ProjDirPath}/${ConfigName}
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PROJECT_NAME/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PROJECT_NAME/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.PROJECT_NAME/value=${ProjName}
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.SYSTEM.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.SYSTEM.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.SYSTEM.PATH/value=${A.RUNTIME.PLATFORM.PATH}/system
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.VARIANT.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.VARIANT.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.VARIANT.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\hardware\\esp32\\1.0.4\\variants\\esp32
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.VARIANT/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.VARIANT/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.BUILD.VARIANT/value=esp32
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.CMD/value=xtensa-esp32-elf-ar
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.EXTRA_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.EXTRA_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.EXTRA_FLAGS/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AR.FLAGS/value=cru
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AS.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AS.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.AS.CMD/value=xtensa-esp32-elf-as
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.CMD/value=xtensa-esp32-elf-gcc
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.CMD/value=xtensa-esp32-elf-gcc
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.EXTRA_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.EXTRA_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.EXTRA_FLAGS/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.FLAGS/value=-nostdlib "-L${A.COMPILER.SDK.PATH}/lib" "-L${A.COMPILER.SDK.PATH}/ld" -T esp32_out.ld -T esp32.common.ld -T esp32.rom.ld -T esp32.peripherals.ld -T esp32.rom.libgcc.ld -T esp32.rom.spiram_incompatible_fns.ld -u ld_include_panic_highint_hdl -u call_user_start_cpu0 -Wl,--gc-sections -Wl,-static -Wl,--undefined\=uxTopUsedPriority -u __cxa_guard_dummy -u __cxx_fatal_exception
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.LIBS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.LIBS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.ELF.LIBS/value=-lgcc -lesp32 -lphy -lesp_http_client -lmbedtls -lrtc -lesp_http_server -lbtdm_app -lspiffs -lbootloader_support -lmdns -lnvs_flash -lfatfs -lpp -lnet80211 -ljsmn -lface_detection -llibsodium -lvfs -ldl_lib -llog -lfreertos -lcxx -lsmartconfig_ack -lxtensa-debug-module -lheap -ltcpip_adapter -lmqtt -lulp -lfd -lfb_gfx -lnghttp -lprotocomm -lsmartconfig -lm -lethernet -limage_util -lc_nano -lsoc -ltcp_transport -lc -lmicro-ecc -lface_recognition -ljson -lwpa_supplicant -lmesh -lesp_https_ota -lwpa2 -lexpat -llwip -lwear_levelling -lapp_update -ldriver -lbt -lespnow -lcoap -lasio -lnewlib -lconsole -lapp_trace -lesp32-camera -lhal -lprotobuf-c -lsdmmc -lcore -lpthread -lcoexist -lfreemodbus -lspi_flash -lesp-tls -lwpa -lwifi_provisioning -lwps -lesp_adc_cal -lesp_event -lopenssl -lesp_ringbuf -lfr -lstdc++
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.EXTRA_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.EXTRA_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.EXTRA_FLAGS/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.C.FLAGS/value=-std\=gnu99 -Os -g3 -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib -Wpointer-arith ${A.COMPILER.WARNING_FLAGS} -Wno-maybe-uninitialized -Wno-unused-function -Wno-unused-but-set-variable -Wno-unused-variable -Wno-deprecated-declarations -Wno-unused-parameter -Wno-sign-compare -Wno-old-style-declaration -MMD -c
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.CMD/value=xtensa-esp32-elf-g++
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.EXTRA_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.EXTRA_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.EXTRA_FLAGS/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPP.FLAGS/value=-std\=gnu++11 -Os -g3 -Wpointer-arith -fexceptions -fstack-protector -ffunction-sections -fdata-sections -fstrict-volatile-bitfields -mlongcalls -nostdlib ${A.COMPILER.WARNING_FLAGS} -Wno-error\=maybe-uninitialized -Wno-error\=unused-function -Wno-error\=unused-but-set-variable -Wno-error\=unused-variable -Wno-error\=deprecated-declarations -Wno-unused-parameter -Wno-unused-but-set-parameter -Wno-missing-field-initializers -Wno-sign-compare -fno-rtti -MMD -c
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPREPROCESSOR.FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPREPROCESSOR.FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.CPREPROCESSOR.FLAGS/value=-DESP_PLATFORM -DMBEDTLS_CONFIG_FILE\="<mbedtls/esp_config.h>" -DHAVE_CONFIG_H -DGCC_NOT_5_2_0\=0 -DWITH_POSIX "-I${A.COMPILER.SDK.PATH}/include/config" "-I${A.COMPILER.SDK.PATH}/include/app_trace" "-I${A.COMPILER.SDK.PATH}/include/app_update" "-I${A.COMPILER.SDK.PATH}/include/asio" "-I${A.COMPILER.SDK.PATH}/include/bootloader_support" "-I${A.COMPILER.SDK.PATH}/include/bt" "-I${A.COMPILER.SDK.PATH}/include/coap" "-I${A.COMPILER.SDK.PATH}/include/console" "-I${A.COMPILER.SDK.PATH}/include/driver" "-I${A.COMPILER.SDK.PATH}/include/esp-tls" "-I${A.COMPILER.SDK.PATH}/include/esp32" "-I${A.COMPILER.SDK.PATH}/include/esp_adc_cal" "-I${A.COMPILER.SDK.PATH}/include/esp_event" "-I${A.COMPILER.SDK.PATH}/include/esp_http_client" "-I${A.COMPILER.SDK.PATH}/include/esp_http_server" "-I${A.COMPILER.SDK.PATH}/include/esp_https_ota" "-I${A.COMPILER.SDK.PATH}/include/esp_ringbuf" "-I${A.COMPILER.SDK.PATH}/include/ethernet" "-I${A.COMPILER.SDK.PATH}/include/expat" "-I${A.COMPILER.SDK.PATH}/include/fatfs" "-I${A.COMPILER.SDK.PATH}/include/freemodbus" "-I${A.COMPILER.SDK.PATH}/include/freertos" "-I${A.COMPILER.SDK.PATH}/include/heap" "-I${A.COMPILER.SDK.PATH}/include/idf_test" "-I${A.COMPILER.SDK.PATH}/include/jsmn" "-I${A.COMPILER.SDK.PATH}/include/json" "-I${A.COMPILER.SDK.PATH}/include/libsodium" "-I${A.COMPILER.SDK.PATH}/include/log" "-I${A.COMPILER.SDK.PATH}/include/lwip" "-I${A.COMPILER.SDK.PATH}/include/mbedtls" "-I${A.COMPILER.SDK.PATH}/include/mdns" "-I${A.COMPILER.SDK.PATH}/include/micro-ecc" "-I${A.COMPILER.SDK.PATH}/include/mqtt" "-I${A.COMPILER.SDK.PATH}/include/newlib" "-I${A.COMPILER.SDK.PATH}/include/nghttp" "-I${A.COMPILER.SDK.PATH}/include/nvs_flash" "-I${A.COMPILER.SDK.PATH}/include/openssl" "-I${A.COMPILER.SDK.PATH}/include/protobuf-c" "-I${A.COMPILER.SDK.PATH}/include/protocomm" "-I${A.COMPILER.SDK.PATH}/include/pthread" "-I${A.COMPILER.SDK.PATH}/include/sdmmc" "-I${A.COMPILER.SDK.PATH}/include/smartconfig_ack" "-I${A.COMPILER.SDK.PATH}/include/soc" "-I${A.COMPILER.SDK.PATH}/include/spi_flash" "-I${A.COMPILER.SDK.PATH}/include/spiffs" "-I${A.COMPILER.SDK.PATH}/include/tcp_transport" "-I${A.COMPILER.SDK.PATH}/include/tcpip_adapter" "-I${A.COMPILER.SDK.PATH}/include/ulp" "-I${A.COMPILER.SDK.PATH}/include/vfs" "-I${A.COMPILER.SDK.PATH}/include/wear_levelling" "-I${A.COMPILER.SDK.PATH}/include/wifi_provisioning" "-I${A.COMPILER.SDK.PATH}/include/wpa_supplicant" "-I${A.COMPILER.SDK.PATH}/include/xtensa-debug-module" "-I${A.COMPILER.SDK.PATH}/include/esp-face" "-I${A.COMPILER.SDK.PATH}/include/esp32-camera" "-I${A.COMPILER.SDK.PATH}/include/esp-face" "-I${A.COMPILER.SDK.PATH}/include/fb_gfx"
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.ELF2HEX.EXTRA_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.ELF2HEX.EXTRA_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.ELF2HEX.EXTRA_FLAGS/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.OBJCOPY.EEP.EXTRA_FLAGS/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.PATH/value=${A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC.PATH}/bin/
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.CMD/value=xtensa-esp32-elf-gcc
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.EXTRA_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.EXTRA_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.EXTRA_FLAGS/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.S.FLAGS/value=-c -g3 -x assembler-with-cpp -MMD -mlongcalls
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.SDK.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.SDK.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.SDK.PATH/value=${A.RUNTIME.PLATFORM.PATH}/tools/sdk
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.SIZE.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.SIZE.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.SIZE.CMD/value=xtensa-esp32-elf-size
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.ALL/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.ALL/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.ALL/value=-Wall -Werror\=all -Wextra
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.DEFAULT/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.DEFAULT/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.DEFAULT/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.MORE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.MORE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.MORE/value=-Wall -Werror\=all
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.NONE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.NONE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS.NONE/value=-w
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.COMPILER.WARNING_FLAGS/value=${A.COMPILER.WARNING_FLAGS.ALL}
environment/project/io.sloeber.core.toolChain.release.447160269/A.ESP8266.NETWORK.UPLOAD.TOOL/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.ESP8266.NETWORK.UPLOAD.TOOL/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.ESP8266.NETWORK.UPLOAD.TOOL/value=esp8266OTA
environment/project/io.sloeber.core.toolChain.release.447160269/A.NAME/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.NAME/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.NAME/value=ESP32 Dev Module
environment/project/io.sloeber.core.toolChain.release.447160269/A.PACKAGES/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.PACKAGES/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.PACKAGES/value=${eclipse_home}/arduinoPlugin/packages
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.1/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.1/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} ${A.COMPILER.AR.EXTRA_FLAGS}
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.2/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.2/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.2/value=\
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.3/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.3/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN.3/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.AR.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.AR.CMD}" ${A.COMPILER.AR.FLAGS} ${A.COMPILER.AR.EXTRA_FLAGS} "${A.ARCHIVE_FILE_PATH}" "${A.OBJECT_FILE}"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.1/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.1/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} ${A.COMPILER.C.ELF.EXTRA_FLAGS} -Wl,--start-group
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.2/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.2/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.2/value=\
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.3/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.3/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN.3/value=\ ${A.COMPILER.C.ELF.LIBS} -Wl,--end-group -Wl,-EL -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.COMBINE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.ELF.CMD}" ${A.COMPILER.C.ELF.FLAGS} ${A.COMPILER.C.ELF.EXTRA_FLAGS} -Wl,--start-group ${A.OBJECT_FILES} "${A.ARCHIVE_FILE_PATH}" ${A.COMPILER.C.ELF.LIBS} -Wl,--end-group -Wl,-EL -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.1/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.1/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.C.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} -DARDUINO_BOARD\="\\"${A.BUILD.BOARD}\\"" -DARDUINO_VARIANT\="${A.BUILD.VARIANT}" ${A.COMPILER.C.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES}
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.2/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.2/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.2/value=\ -o
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.3/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.3/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN.3/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.C.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.C.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} -DARDUINO_BOARD\="\\"${A.BUILD.BOARD}\\"" -DARDUINO_VARIANT\="${A.BUILD.VARIANT}" ${A.COMPILER.C.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.1/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.1/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.CPP.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} -DARDUINO_BOARD\="\\"${A.BUILD.BOARD}\\"" -DARDUINO_VARIANT\="${A.BUILD.VARIANT}" ${A.COMPILER.CPP.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES}
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.2/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.2/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.2/value=\ -o
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.3/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.3/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN.3/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.CPP.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.CPP.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.CPP.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} -DARDUINO_BOARD\="\\"${A.BUILD.BOARD}\\"" -DARDUINO_VARIANT\="${A.BUILD.VARIANT}" ${A.COMPILER.CPP.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.EEP.PATTERN.1/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.EEP.PATTERN.1/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.EEP.PATTERN.1/value=${A.TOOLS.GEN_ESP32PART.CMD} -q "${A.RUNTIME.PLATFORM.PATH}/tools/partitions/${A.BUILD.PARTITIONS}.csv" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.partitions.bin"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.EEP.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.EEP.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.EEP.PATTERN/value=${A.TOOLS.GEN_ESP32PART.CMD} -q "${A.RUNTIME.PLATFORM.PATH}/tools/partitions/${A.BUILD.PARTITIONS}.csv" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.partitions.bin"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN.1/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN.1/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN.1/value="${A.TOOLS.ESPTOOL_PY.PATH}/${A.TOOLS.ESPTOOL_PY.CMD}" --chip esp32 elf2image --flash_mode "${A.BUILD.FLASH_MODE}" --flash_freq "${A.BUILD.FLASH_FREQ}" --flash_size "${A.BUILD.FLASH_SIZE}" -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN.LINUX/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN.LINUX/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN.LINUX/value=python "${A.TOOLS.ESPTOOL_PY.PATH}/${A.TOOLS.ESPTOOL_PY.CMD}" --chip esp32 elf2image --flash_mode "${A.BUILD.FLASH_MODE}" --flash_freq "${A.BUILD.FLASH_FREQ}" --flash_size "${A.BUILD.FLASH_SIZE}" -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OBJCOPY.HEX.PATTERN/value="${A.TOOLS.ESPTOOL_PY.PATH}/${A.TOOLS.ESPTOOL_PY.CMD}" --chip esp32 elf2image --flash_mode "${A.BUILD.FLASH_MODE}" --flash_freq "${A.BUILD.FLASH_FREQ}" --flash_size "${A.BUILD.FLASH_SIZE}" -o "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OUTPUT.SAVE_FILE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OUTPUT.SAVE_FILE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OUTPUT.SAVE_FILE/value=${A.BUILD.PROJECT_NAME}.${A.BUILD.VARIANT}.bin
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OUTPUT.TMP_FILE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OUTPUT.TMP_FILE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.OUTPUT.TMP_FILE/value=${A.BUILD.PROJECT_NAME}.bin
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.1/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.1/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.S.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} -DARDUINO_BOARD\="\\"${A.BUILD.BOARD}\\"" -DARDUINO_VARIANT\="${A.BUILD.VARIANT}" ${A.COMPILER.S.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES}
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.2/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.2/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.2/value=\ -o
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.3/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.3/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN.3/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.S.O.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.C.CMD}" ${A.COMPILER.CPREPROCESSOR.FLAGS} ${A.COMPILER.S.FLAGS} -DF_CPU\=${A.BUILD.F_CPU} -DARDUINO\=${A.RUNTIME.IDE.VERSION} -DARDUINO_${A.BUILD.BOARD} -DARDUINO_ARCH_${A.BUILD.ARCH} -DARDUINO_BOARD\="\\"${A.BUILD.BOARD}\\"" -DARDUINO_VARIANT\="${A.BUILD.VARIANT}" ${A.COMPILER.S.EXTRA_FLAGS} ${A.BUILD.EXTRA_FLAGS} ${A.INCLUDES} "${A.SOURCE_FILE}" -o "${A.OBJECT_FILE}"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.PATTERN.1/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.PATTERN.1/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.PATTERN.1/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.PATTERN/value="${A.COMPILER.PATH}${A.COMPILER.SIZE.CMD}" -A "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.elf"
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.REGEX.DATA/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.REGEX.DATA/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.REGEX.DATA/value=^(?\:\\.dram0\\.data|\\.dram0\\.bss|\\.noinit)\\s+([0-9]+).*
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.REGEX/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.REGEX/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RECIPE.SIZE.REGEX/value=^(?\:\\.iram0\\.text|\\.iram0\\.vectors|\\.dram0\\.data|\\.flash\\.text|\\.flash\\.rodata|)\\s+([0-9]+).*
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.CORE.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.CORE.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.CORE.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\hardware\\esp32\\1.0.4
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.UPLOAD.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.UPLOAD.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.UPLOAD.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\hardware\\esp32\\1.0.4
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.VARIANT.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.VARIANT.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.REFERENCED.VARIANT.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\hardware\\esp32\\1.0.4
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.HARDWARE.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.HARDWARE.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.HARDWARE.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp32/hardware/esp32
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.IDE.VERSION/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.IDE.VERSION/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.IDE.VERSION/value=10802
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.PLATFORM.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.PLATFORM.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.PLATFORM.PATH/value=${eclipse_home}/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA-1.3.0.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA-1.3.0.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA-1.3.0.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\arduinoOTA\\1.3.0
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\arduinoOTA\\1.3.0
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA1.3.0.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA1.3.0.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ARDUINOOTA1.3.0.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\arduinoOTA\\1.3.0
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC-7.3.0-ATMEL3.6.1-ARDUINO5.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC-7.3.0-ATMEL3.6.1-ARDUINO5.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC-7.3.0-ATMEL3.6.1-ARDUINO5.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino5
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino5
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC7.3.0-ATMEL3.6.1-ARDUINO5.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC7.3.0-ATMEL3.6.1-ARDUINO5.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVR-GCC7.3.0-ATMEL3.6.1-ARDUINO5.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\avr-gcc\\7.3.0-atmel3.6.1-arduino5
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO17.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO17.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE-6.3.0-ARDUINO17.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\avrdude\\6.3.0-arduino17
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\avrdude\\6.3.0-arduino17
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO17.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO17.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.AVRDUDE6.3.0-ARDUINO17.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\arduino\\tools\\avrdude\\6.3.0-arduino17
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL-2.3.1.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL-2.3.1.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL-2.3.1.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\esptool\\2.3.1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\esptool\\2.3.1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL2.3.1.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL2.3.1.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL2.3.1.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\esptool\\2.3.1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY-2.6.0.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY-2.6.0.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY-2.6.0.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\esptool_py\\2.6.0
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY-2.6.1.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY-2.6.1.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY-2.6.1.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\esptool_py\\2.6.1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\esptool_py\\2.6.1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY2.6.0.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY2.6.0.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY2.6.0.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\esptool_py\\2.6.0
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY2.6.1.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY2.6.1.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.ESPTOOL_PY2.6.1.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\esptool_py\\2.6.1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS-2.5.0-4-FE5BB56.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS-2.5.0-4-FE5BB56.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS-2.5.0-4-FE5BB56.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\mklittlefs\\2.5.0-4-fe5bb56
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\mklittlefs\\2.5.0-4-fe5bb56
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS2.5.0-4-FE5BB56.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS2.5.0-4-FE5BB56.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKLITTLEFS2.5.0-4-FE5BB56.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\mklittlefs\\2.5.0-4-fe5bb56
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS-0.2.3.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS-0.2.3.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS-0.2.3.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\mkspiffs\\0.2.3
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS-2.5.0-4-B40A506.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS-2.5.0-4-B40A506.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS-2.5.0-4-B40A506.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\mkspiffs\\2.5.0-4-b40a506
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\mkspiffs\\0.2.3
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS0.2.3.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS0.2.3.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS0.2.3.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\mkspiffs\\0.2.3
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS2.5.0-4-B40A506.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS2.5.0-4-B40A506.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.MKSPIFFS2.5.0-4-B40A506.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\mkspiffs\\2.5.0-4-b40a506
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON3-3.7.2-POST1.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON3-3.7.2-POST1.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON3-3.7.2-POST1.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\python3\\3.7.2-post1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON3.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON3.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON3.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\python3\\3.7.2-post1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON33.7.2-POST1.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON33.7.2-POST1.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.PYTHON33.7.2-POST1.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\python3\\3.7.2-post1
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC-1.22.0-80-G6C4433A-5.2.0.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC-1.22.0-80-G6C4433A-5.2.0.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC-1.22.0-80-G6C4433A-5.2.0.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC1.22.0-80-G6C4433A-5.2.0.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC1.22.0-80-G6C4433A-5.2.0.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-ESP32-ELF-GCC1.22.0-80-G6C4433A-5.2.0.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\tools\\xtensa-esp32-elf-gcc\\1.22.0-80-g6c4433a-5.2.0
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-2.5.0-4-B40A506.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-2.5.0-4-B40A506.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC-2.5.0-4-B40A506.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC2.5.0-4-B40A506.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC2.5.0-4-B40A506.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.RUNTIME.TOOLS.XTENSA-LX106-ELF-GCC2.5.0-4-B40A506.PATH/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp8266\\tools\\xtensa-lx106-elf-gcc\\2.5.0-4-b40a506
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.DISABLEDTR/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.DISABLEDTR/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.DISABLEDTR/value=true
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.DISABLERTS/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.DISABLERTS/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.DISABLERTS/value=true
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.PORT.FILE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.PORT.FILE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.PORT.FILE/value=${A.SERIAL.PORT}
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.PORT/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.PORT/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.SERIAL.PORT/value=${JANTJE.COM_PORT}
environment/project/io.sloeber.core.toolChain.release.447160269/A.SOFTWARE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.SOFTWARE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.SOFTWARE/value=ARDUINO
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.AVRDUDE_REMOTE.UPLOAD.VERBOSE/value=-v
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESP8266OTA.UPLOAD.PATTERN/value=${A.TOOLS.ESP8266OTA.TOOLS.ESPTOOL.UPLOAD.NETWORK_PATTERN}
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESP8266OTA/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESP8266OTA/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESP8266OTA/value=${A.TOOLS.ESP8266OTA.TOOLS.ESPTOOL.NETWORK_CMD}
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL.NETWORK.PASSWORD/value=${A.NETWORK.AUTH}
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.CMD.LINUX/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.CMD.LINUX/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.CMD.LINUX/value=esptool.py
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.CMD/value=esptool.exe
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.NETWORK_CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.NETWORK_CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.NETWORK_CMD/value="${A.RUNTIME.PLATFORM.PATH}/tools/espota.exe"
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.PATH/value=${A.RUNTIME.TOOLS.ESPTOOL_PY.PATH}
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.NETWORK_PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.NETWORK_PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.NETWORK_PATTERN/value=${A.TOOLS.ESPTOOL_PY.NETWORK_CMD} -i "${A.SERIAL.PORT}" -p "${A.NETWORK.PORT}" "--auth\=${A.NETWORK.PASSWORD}" -f "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin"
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PARAMS.QUIET/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PARAMS.QUIET/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PARAMS.QUIET/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PARAMS.VERBOSE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PARAMS.VERBOSE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PARAMS.VERBOSE/value=
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PATTERN.LINUX/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PATTERN.LINUX/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PATTERN.LINUX/value=python "${A.TOOLS.ESPTOOL_PY.PATH}/${A.TOOLS.ESPTOOL_PY.CMD}" --chip esp32 --port "${A.SERIAL.PORT}" --baud ${A.UPLOAD.SPEED} --before default_reset --after hard_reset write_flash -z --flash_mode ${A.BUILD.FLASH_MODE} --flash_freq ${A.BUILD.FLASH_FREQ} --flash_size detect 0xe000 "${A.RUNTIME.PLATFORM.PATH}/tools/partitions/boot_app0.bin" 0x1000 "${A.RUNTIME.PLATFORM.PATH}/tools/sdk/bin/bootloader_${A.BUILD.BOOT}_${A.BUILD.FLASH_FREQ}.bin" 0x10000 "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" 0x8000 "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.partitions.bin"
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PATTERN/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PATTERN/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PATTERN/value="${A.TOOLS.ESPTOOL_PY.PATH}/${A.TOOLS.ESPTOOL_PY.CMD}" --chip esp32 --port "${A.SERIAL.PORT}" --baud ${A.UPLOAD.SPEED} --before default_reset --after hard_reset write_flash -z --flash_mode ${A.BUILD.FLASH_MODE} --flash_freq ${A.BUILD.FLASH_FREQ} --flash_size detect 0xe000 "${A.RUNTIME.PLATFORM.PATH}/tools/partitions/boot_app0.bin" 0x1000 "${A.RUNTIME.PLATFORM.PATH}/tools/sdk/bin/bootloader_${A.BUILD.BOOT}_${A.BUILD.FLASH_FREQ}.bin" 0x10000 "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.bin" 0x8000 "${A.BUILD.PATH}/${A.BUILD.PROJECT_NAME}.partitions.bin"
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PROTOCOL/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PROTOCOL/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.ESPTOOL_PY.UPLOAD.PROTOCOL/value=esp32
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.GEN_ESP32PART.CMD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.GEN_ESP32PART.CMD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.TOOLS.GEN_ESP32PART.CMD/value="${A.RUNTIME.PLATFORM.PATH}/tools/gen_esp32part.exe"
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.ALTID/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.ALTID/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.ALTID/value=no_altID
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.MAXIMUM_DATA_SIZE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.MAXIMUM_DATA_SIZE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.MAXIMUM_DATA_SIZE/value=327680
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.MAXIMUM_SIZE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.MAXIMUM_SIZE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.MAXIMUM_SIZE/value=1310720
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.PROTOCOL/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.PROTOCOL/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.PROTOCOL/value=stk500v1
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.SPEED/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.SPEED/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.SPEED/value=115200
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.TOOL/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.TOOL/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.TOOL/value=esptool_py
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.USBID/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.USBID/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.USBID/value=no_altID
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.UPLOAD.WAIT_FOR_UPLOAD_PORT/value=true
environment/project/io.sloeber.core.toolChain.release.447160269/A.VERSION/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/A.VERSION/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/A.VERSION/value=
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.ARCHITECTURE_ID/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.ARCHITECTURE_ID/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.ARCHITECTURE_ID/value=esp32
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARDS_FILE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARDS_FILE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARDS_FILE/value=C\:\\Sloeber\\arduinoPlugin\\packages\\esp32\\hardware\\esp32\\1.0.4\\boards.txt
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARD_ID/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARD_ID/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARD_ID/value=esp32
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARD_NAME/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARD_NAME/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.BOARD_NAME/value=ESP32 Dev Module
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.COM_PORT/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.COM_PORT/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.COM_PORT/value=COM8
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.ECLIPSE_LOCATION/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.ECLIPSE_LOCATION/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.ECLIPSE_LOCATION/value=C\:\\Sloeber\\
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ALL/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ALL/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ALL/value=
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ARCHIVE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ARCHIVE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ARCHIVE/value=
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ASSEMBLY/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ASSEMBLY/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.ASSEMBLY/value=
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.C.COMPILE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.C.COMPILE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.C.COMPILE/value=
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.COMPILE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.COMPILE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.COMPILE/value=
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.CPP.COMPILE/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.CPP.COMPILE/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.CPP.COMPILE/value=
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.LINK/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.LINK/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.EXTRA.LINK/value=
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.MAKE_LOCATION/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.MAKE_LOCATION/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.MAKE_LOCATION/value=C\:\\Sloeber\\arduinoPlugin\\tools\\make\\
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.MENU/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.MENU/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.MENU/value=cpu\=atmega328old\nCPUFreq\=240\nDebugLevel\=none\nFlashFreq\=80\nFlashMode\=qio\nFlashSize\=4M\nPartitionScheme\=default\nPSRAM\=disabled\nUploadSpeed\=115200
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.OBJCOPY/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.OBJCOPY/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.OBJCOPY/value=${A.RECIPE.OBJCOPY.EEP.PATTERN}\n\t${A.RECIPE.OBJCOPY.HEX.PATTERN}
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.OS_NAME/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.OS_NAME/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.OS_NAME/value=win32
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.PACKAGE_ID/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.PACKAGE_ID/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.PACKAGE_ID/value=esp32
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.PROJECT_NAME/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.PROJECT_NAME/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.PROJECT_NAME/value=webservertest
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.SELECTED.PLATFORM/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.SELECTED.PLATFORM/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.SELECTED.PLATFORM/value=${eclipse_home}/arduinoPlugin/packages/esp32/hardware/esp32/1.0.4
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.SIZE.SWITCH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.SIZE.SWITCH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.SIZE.SWITCH/value=${A.RECIPE.SIZE.PATTERN}
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.UPLOAD/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.UPLOAD/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.UPLOAD/value=Default
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.WARNING_LEVEL/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.WARNING_LEVEL/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.WARNING_LEVEL/value=true
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.WORKSPACE_LOCATION/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.WORKSPACE_LOCATION/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/JANTJE.WORKSPACE_LOCATION/value=C\:\\Users\\agr\\Documents\\sloeber-workspace
environment/project/io.sloeber.core.toolChain.release.447160269/PATH/delimiter=;
environment/project/io.sloeber.core.toolChain.release.447160269/PATH/operation=replace
environment/project/io.sloeber.core.toolChain.release.447160269/PATH/value=${A.COMPILER.PATH}${PathDelimiter}${A.BUILD.GENERIC.PATH}${PathDelimiter}${SystemRoot}\\system32${PathDelimiter}${SystemRoot}${PathDelimiter}${SystemRoot}\\system32\\Wbem${PathDelimiter}${sloeber_path_extension}
environment/project/io.sloeber.core.toolChain.release.447160269/append=true
environment/project/io.sloeber.core.toolChain.release.447160269/appendContributed=true

+ 73
- 0
webservertest/data/Select_Settings.html 查看文件

@@ -0,0 +1,73 @@
<!DOCTYPE HTML>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<meta name = "viewport" content = "width = device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=0">
<title>ESP32 Azure Demo</title>
<style>
body { background-color: #0067B3 ; font-family: Arial, Helvetica, Sans-Serif; Color: #FFFFFF; }
input[type=text], select {
width: 100%;
padding: 12px 20px;
margin: 8px 0;
display: inline-block;
border: 1px solid #ccc;
border-radius: 4px;
box-sizing: border-box;
}
</style>
</head>
<body>
<center>
<h1 style="color:#FFFFFF; font-family:verdana;font-family: verdana;
padding-top: 25px;
padding-bottom: 25px;
font-size: 36px">ESP32 Azure Demo</h1>
<h2 style="color:#FFFFFF;font-family: Verdana;
font: caption;
font-size: 27px;
padding-top: 25px;
padding-bottom: 10px;">Configure WiFiServer Settings</h2><FORM method="post">
<div id="radio_select">
<input type="radio" name="configure" value="dhcp" id="radio_dhcp"> DHCP Setting &nbsp &nbsp &nbsp
<input type="radio" name="configure" value="staticIP" id="radio_static"> Static IP Setting<br>
</div>
<style>
</style>
<br> <br>
<INPUT type="submit" onClick="return settingForm()">

<style>
input[type="submit"]{
background-color: #3498DB; /* Green */
border: none;
color: white;
padding:15px 48px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
</style>

</FORM>
<script type="text/javascript">

function settingForm(){

if(document.getElementById('radio_dhcp').checked){
rate_value = document.getElementById('radio_dhcp').value;
console.log(rate_value);
window.location.assign("/dhcp");
}else if(document.getElementById('radio_static').checked){
rate_value = document.getElementById('radio_static').value;
window.location.assign("/static");
}
return false;
}
</script>
</center>
</body>

+ 32
- 0
webservertest/data/WiFi.html 查看文件

@@ -0,0 +1,32 @@
<!DOCTYPE HTML>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<meta name = "viewport" content = "width = device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=0">
<title>ESP32 Demo</title>
<style>
body { background-color: #0067B3 ; font-family: Arial, Helvetica, Sans-Serif; Color: #FFFFFF; }
</style>
</head>
<body>
<center>
<h1 style="color:#FFFFFF; font-family:verdana;font-family: verdana;padding-top: 10px;padding-bottom: 10px;font-size: 36px">ESP32 Captive Portal</h1>
<h2 style="color:#FFFFFF;font-family: Verdana;font: caption;font-size: 27px;padding-top: 10px;padding-bottom: 10px;">Give Your WiFi Credentials</h2>
<FORM action="/" method="post">
<P ><label style="font-family:Times New Roman">SSID</label><br><input maxlength="30px" type='text' id="ssid_wifi" name="ssid" placeholder='Enter WiFi SSID' style="width: 400px; padding: 5px 10px ; margin: 8px 0; border : 2px solid #3498db; border-radius: 4px; box-sizing:border-box" ><br></P>
<P><label style="font-family:Times New Roman">PASSKEY</label><br><input maxlength="30px" type = "text" id="pass_wifi" name="passkey" placeholder = "Enter WiFi PASSKEY" style="width: 400px; padding: 5px 10px ; margin: 8px 0; border : 2px solid #3498db; border-radius: 4px; box-sizing:border-box" ><br><P>
<input type="checkbox" name="configure" value="change"> Change IP Settings </P>
<BR>
<INPUT type="submit"><INPUT type="reset">
<style>
input[type="reset"]{background-color: #3498DB; border: none; color: white; padding: 15px 48px; text-align: center; text-decoration: none;display: inline-block; font-size: 16px;}
input[type="submit"]{background-color: #3498DB; border: none; color: white; padding: 15px 48px;text-align: center; text-decoration: none;display: inline-block;font-size: 16px;}
</style>
</FORM>
</center>
</body>



.

+ 1
- 0
webservertest/data/ip_set.txt 查看文件

@@ -0,0 +1 @@


+ 64
- 0
webservertest/data/page_dhcp.html 查看文件

@@ -0,0 +1,64 @@
<!DOCTYPE HTML>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<meta name = "viewport" content = "width = device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=0">
<title>ESP32 Azure Demo</title>
<style>
body { background-color: #0067B3 ; font-family: Arial, Helvetica, Sans-Serif; Color: #FFFFFF; }
</style>
</head>
<body>
<center>
<div style="text-align: center;">
<h1 style="color:#FFFFFF; font-family:verdana;font-family: verdana;
padding-top: 25px;
padding-bottom: 25px;
font-size: 36px">ESP32 Azure Demo</h1>
<h2 style="color:#FFFFFF;font-family: Verdana;
font: caption;
font-size: 27px;
padding-top: 25px;
padding-bottom: 10px;">Configure DHCP Settings</h2>
<FORM action="/" method="post">
<P >
<label style="font-family:Times New Roman">IPv4 Address</label><br>
<input maxlength="30px" type="text" name="ipv4" style="width: 400px;padding: 5px 10px;margin: 8px 0;display: inline-block;border: 2px solid #3498db;border-radius: 4px;box-sizing: border-box;";><br><br>

<input type="checkbox" name="configure" value="192.168.4.1"> Use Default <br><br>
<INPUT type="submit">

<style>
input[type="submit"]{
background-color: #3498DB;
border: none;
color: white;
padding:15px 48px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
</style>
<INPUT type="reset">
<style>
input[type="reset"]{
background-color: #3498DB;
border: none;
color: white;
padding:15px 48px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
</style>
</p>
</FORM>
</div>
</center>
</body>

+ 74
- 0
webservertest/data/page_static.html 查看文件

@@ -0,0 +1,74 @@
<!DOCTYPE HTML>
<html>
<head>
<meta content="text/html; charset=ISO-8859-1"
http-equiv="content-type">
<meta name = "viewport" content = "width = device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=0">
<title>ESP32 Azure Demo</title>
<style>
body { background-color: #0067B3 ; font-family: Arial, Helvetica, Sans-Serif; Color: #FFFFFF; }
.text{
width: 100%;
padding: 5px 10px;
margin: 8px 0;
display: inline-block;
border: 2px solid #3498db;
border-radius: 4px;
box-sizing: border-box;
}
</style>
</head>
<body>
<center>
<h1 style="color:#FFFFFF; font-family:verdana;font-family: verdana;
padding-top: 25px;
padding-bottom: 25px;
font-size: 36px">ESP32 Azure Demo</h1>
<h2 style="color:#FFFFFF;font-family: Verdana;
font: caption;
font-size: 27px;
padding-top: 25px;
padding-bottom: 10px;">Configure Static IPv4 Settings</h2>
<FORM action="/" method="post">

<P >
<label style="font-family:Times New Roman">IPv4 Address</label><br>
<input maxlength="30px" type='text' name="ipv4static" placeholder='ip Address' style="width: 400px; padding: 5px 10px ; margin: 8px 0; border : 2px solid #3498db; border-radius: 4px; box-sizing:border-box" required;><br>
</P>
<P>
<label style="font-family:Times New Roman">Gateway</label><br>
<input maxlength="30px" type = "text" name="gateway" placeholder = "gateway address" style="width: 400px; padding: 5px 10px ; margin: 8px 0; border : 2px solid #3498db; border-radius: 4px; box-sizing:border-box" required;><br>
</P>
<P >
<label style="font-family:Times New Roman">Subnet Mask</label><br>
<input maxlength="30px" type = "text" name="subnet" placeholder= "subnet mask" style="width: 400px; padding: 5px 10px ; margin: 8px 0; border : 2px solid #3498db; border-radius: 4px; box-sizing:border-box" required;><br>
</P>
<INPUT type="submit">
<style>
input[type="submit"]{
background-color: #3498DB; /* Green */
border: none;
color: white;
padding:15px 48px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
</style>
<INPUT type="reset">
<style>
input[type="reset"]{
background-color: #3498DB; /* Green */
border: none;
color: white;
padding: 15px 48px;
text-align: center;
text-decoration: none;
display: inline-block;
font-size: 16px;
}
</style>
</FORM>
</center>
</body>

+ 2
- 0
webservertest/spec.d 查看文件

@@ -0,0 +1,2 @@
spec.o: \
C:/Users/agr/Documents/sloeber-workspace/.metadata/.plugins/org.eclipse.cdt.managedbuilder.core/spec.C

+ 447
- 0
webservertest/webservertest.ino 查看文件

@@ -0,0 +1,447 @@
#include <ArduinoJson.h>
#include <WiFi.h>
#include "FS.h"
#include "SPIFFS.h"
#include <EEPROM.h>
#include <WebServer.h>
#define MESSAGE_MAX_LEN 256

//**************DEEP SLEEP CONFIG******************//
#define uS_TO_S_FACTOR 1000000
#define TIME_TO_SLEEP 5

//************** Auxillary functions******************//
WebServer server(80);
StaticJsonDocument<234> jsonBuffer;

//**********softAPconfig Timer*************//
unsigned long APTimer = 0;
unsigned long APInterval = 120000;

//*********SSID and Pass for AP**************//
const char* ssidAPConfig = "Andreas-Grabner.NET";
const char* passAPConfig = "born2win";

//**********check for connection*************//
bool isConnected = true;
bool isAPConnected = true;

//*********Contains SPIFFS Info*************//
String debugLogData;

//HTML char array
const char HTTP_HEAD_HTML[] PROGMEM = "<!DOCTYPE HTML><html><head><meta name = \"viewport\" http-equiv=\"content-type\" content = \"width = device-width, initial-scale = 1.0, maximum-scale = 1.0, user-scalable=0\"><title>ESP32 Demo</title>";
const char HTTP_STYLE[] PROGMEM= "<style>body { background-color: #0067B3 ; font-family: Arial, Helvetica, Sans-Serif; Color: #FFFFFF; }</style></head>";
const char HTTP_HEAD_STYLE[] PROGMEM= "<body><center><h1 style=\"color:#FFFFFF; font-family:verdana;font-family: verdana;padding-top: 10px;padding-bottom: 10px;font-size: 36px\">ESP32 Captive Portal</h1><h2 style=\"color:#FFFFFF;font-family: Verdana;font: caption;font-size: 27px;padding-top: 10px;padding-bottom: 10px;\">Give Your WiFi Credentials</h2>";
const char HTTP_FORM_START[] PROGMEM= "<FORM action=\"/\" method= \"post\">";
const char HTTP_CONTENT1_START[] PROGMEM= "<div style=\"padding-left:100px;text-align:left;display:inline-block;min-width:150px;\"><a href=\"#pass\" onclick=\"c(this)\" style=\"text-align:left\">{v}</a></div>&nbsp&nbsp&nbsp <div style=\"display:inline-block;min-width:260px;\"><span class=\"q\" style=\"text-align:right\">{r}%</span></div><br>";
const char HTTP_CONTENT2_START[] PROGMEM= "<P ><label style=\"font-family:Times New Roman\">SSID</label><br><input maxlength=\"30px\" id=\"ssid\" type=\"text\" name=\"ssid\" placeholder='Enter WiFi SSID' style=\"width: 400px; padding: 5px 10px ; margin: 8px 0; border : 2px solid #3498db; border-radius: 4px; box-sizing:border-box\" ><br></P>";
const char HTTP_CONTENT3_START[] PROGMEM= "<P><label style=\"font-family:Times New Roman\">PASSKEY</label><br><input maxlength=\"30px\" type = \"text\" id=\"pass\" name=\"passkey\" placeholder = \"Enter WiFi PASSKEY\" style=\"width: 400px; padding: 5px 10px ; margin: 8px 0; border : 2px solid #3498db; border-radius: 4px; box-sizing:border-box\" ><br><P>";
const char HTTP_CONTENT4_START[] PROGMEM= "<input type=\"checkbox\" name=\"configure\" value=\"change\"> Change IP Settings </P>";
const char HTTP_CONTENT5_START[] PROGMEM= "<INPUT type=\"submit\">&nbsp&nbsp&nbsp&nbsp<INPUT type=\"reset\"><style>input[type=\"reset\"]{background-color: #3498DB; border: none; color: white; padding: 15px 48px; text-align: center; text-decoration: none;display: inline-block; font-size: 16px;}input[type=\"submit\"]{background-color: #3498DB; border: none; color: white; padding: 15px 48px;text-align: center; text-decoration: none;display: inline-block;font-size: 16px;}</style>";
const char HTTP_FORM_END[] PROGMEM= "</FORM>";
const char HTTP_SCRIPT[] PROGMEM= "<script>function c(l){document.getElementById('ssid').value=l.innerText||l.textContent;document.getElementById('pass').focus();}</script>";
const char HTTP_END[] PROGMEM= "</body></html>";

//const char* const WEBPAGE_TABLE[] PROGMEM = {HTTP_HEAD_HTML, HTTP_STYLE, HTTP_HEAD_STYLE, HTTP_FORM_START, HTTP_CONTENT1_START, HTTP_CONTENT2_START,HTTP_CONTENT3_START,HTTP_CONTENT4_START,HTTP_CONTENT5_START,HTTP_FORM_END,HTTP_SCRIPT, };
const char* messageStatic PROGMEM= "{\"staticSet\":\"staticValue\", \"staticIP\":\"%s\", \"staticGate\":\"%s\", \"staticSub\":\"%s\",\"ssidStatic\":\"%s\",\"staticPass\":\"%s\"}";
const char* messageDhcp PROGMEM= "{\"dhcpSet\":\"dhcpValue\",\"ssidDHCP\":\"%s\", \"passDHCP\":\"%s\"}";

const char HTTP_PAGE_STATIC[] PROGMEM = "<p>{s}<br>{g}<br>{n}<br></p>";
const char HTTP_PAGE_DHCP[] PROGMEM = "<p>{s}</p>";
const char HTTP_PAGE_WiFi[] PROGMEM = "<p>{s}<br>{p}</p>";
const char HTTP_PAGE_GOHOME[] PROGMEM = "<H2><a href=\"/\">go home</a></H2><br>";

char messageBuf[MESSAGE_MAX_LEN];

void setup() {
Serial.begin(115200);
while(!Serial);
WiFi.persistent(false);
WiFi.disconnect(true);
SPIFFS.begin();
delay(100);
EEPROM.begin(512);
delay(100);
File file = SPIFFS.open("/ip_set.txt", "r");
Serial.println("- read from file:");
if(!file){
Serial.println("- failed to open file for reading");
return;
}
while(file.available()){
debugLogData += char(file.read());
}
file.close();
if(debugLogData.length()>10){
//JsonObject& readRoot =jsonBuffer.parseObject(debugLogData);
StaticJsonDocument<256> readRoot;
deserializeJson(readRoot, debugLogData);
Serial.println("=====================================");
Serial.println(debugLogData);
Serial.println("=====================================");
if(readRoot.containsKey("staticSet")){
Serial.println("Static IP Started ");
staticAPConfig(readRoot["staticIP"],readRoot["staticGate"],readRoot["staticSub"],readRoot["ssidStatic"],readRoot["staticPass"]);
}
else if(readRoot.containsKey("dhcpSet")){
Serial.println("DHCP IP Started" );
dhcpAPConfig(readRoot["ssidDHCP"],readRoot["passDHCP"]);
}
else{
handleClientAP();
}
}else{
handleClientAP();
}
reconnectWiFi();
}


void loop() {
Serial.println(WiFi.localIP());
delay(500);
}


//****************************HANDLE ROOT***************************//
void handleRoot() {
//Redisplay the form
if(server.args()>0){
for(int i=0; i<=server.args();i++){
Serial.println(String(server.argName(i))+'\t' + String(server.arg(i)));
}
if(server.hasArg("ipv4static") && server.hasArg("gateway") && server.hasArg("subnet")){
staticSet();
}else if(server.hasArg("passkeyDhcp")&&server.hasArg("ssidDhcp")){
dhcpSetDefault();
}
}else{
File file = SPIFFS.open("/Select_Settings.html", "r");
server.streamFile(file,"text/html");
file.close();
}
}

//****************************HANDLE DHCP***************************//
void handleDHCP(){
File file = SPIFFS.open("/page_dhcp.html", "r");
server.streamFile(file,"text/html");
file.close();
}

//****************************HANDLE STATIC***************************//
void handleStatic(){
File file = SPIFFS.open("/page_static.html", "r");
server.streamFile(file,"text/html");
file.close();
}

//*************Helper Meathod for Writing IP CONFIG**************//

//*************Helper 1 STATIC**************//

void staticSet(){
String response=FPSTR(HTTP_PAGE_STATIC);
response.replace("{s}",server.arg("ipv4static"));
response.replace("{g}",server.arg("gateway"));
response.replace("{n}",server.arg("subnet"));
response+=FPSTR(HTTP_PAGE_GOHOME);
server.send(200, "text/html", response);
snprintf(messageBuf,MESSAGE_MAX_LEN,messageStatic,String(server.arg("ipv4static")),String(server.arg("gateway")),String(server.arg("subnet")),String(server.arg("ssidStatic")),String(server.arg("passkeyStatic")));
String str(messageBuf);
File fileToWrite = SPIFFS.open("/ip_set.txt", FILE_WRITE);
if(!fileToWrite){
Serial.println("Error opening SPIFFS");
return;
}
if(fileToWrite.write((uint8_t*)str.c_str(),str.length())){
Serial.println("--File Written");
}else{
Serial.println("--Error Writing File");
}
fileToWrite.close();
isConnected = false;
}

//*************Helper 3 DHCP DEFAULT**************//

void dhcpSetDefault(){
String response=FPSTR(HTTP_PAGE_DHCP);
response.replace("{s}","192.168.4.1");
response+=FPSTR(HTTP_PAGE_GOHOME);
server.send(200, "text/html", response);
snprintf(messageBuf,MESSAGE_MAX_LEN,messageDhcp,String(server.arg("ssidDhcp")).c_str(),String(server.arg("passkeyDhcp")).c_str());
String str(messageBuf);
File fileToWrite = SPIFFS.open("/ip_set.txt", FILE_WRITE);
if(!fileToWrite){
Serial.println("Error opening SPIFFS");
}
if(fileToWrite.write((uint8_t*)str.c_str(),str.length())){
Serial.println(F("--File Written"));
}else{
Serial.println(F("--Error Writing File"));
}
fileToWrite.close();
isConnected = false;
}

//****************HANDLE NOT FOUND*********************//
void handleNotFound()
{
String message = "File Not Found\n\n";
message += "URI: ";
message += server.uri();
server.send(404, "text/plain", message);
}

//***************Parse bytes from string******************//

void parseBytes(const char* str, char sep, byte* bytes, int maxBytes, int base) {
for (int i = 0; i < maxBytes; i++) {
bytes[i] = strtoul(str, NULL, base); // Convert byte
str = strchr(str, sep); // Find next separator
if (str == NULL || *str == '\0') {
break; // No more separators, exit
}
str++; // Point to next character after separator
}
}

//****************HANDLE CLIENT 192.168.1.77*********************//

void handleClientAP(){
//*********Static IP Config**************//
WiFi.mode(WIFI_AP);
Serial.println(WiFi.softAP(ssidAPConfig,passAPConfig) ? "soft-AP setup": "Failed to connect");
delay(100);
Serial.println(WiFi.softAPConfig( IPAddress(192,168,1,77),IPAddress(192,168,1,254), IPAddress(255,255,255,0))? "Configuring Soft AP" : "Error in Configuration");
Serial.println(WiFi.softAPIP());
server.begin();
server.on("/", handleRoot);
server.on("/dhcp", handleDHCP);
server.on("/static", handleStatic);
server.onNotFound(handleNotFound);

APTimer = millis();

while(isConnected && millis()-APTimer<= APInterval) {
server.handleClient();}
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
esp_deep_sleep_start();
}

//***************************STATIC Helper method**************************//

void staticAPConfig(String IPStatic, String gateway, String subnet, String ssid, String pass){
//*********hold IP octet**************//
uint8_t ip0,ip1,ip2,ip3;
//*********IP Char Array**************//
Serial.print(ssid);
Serial.print(pass);
byte ip[4];
parseBytes(IPStatic.c_str(),'.', ip, 4, 10);
ip0 = (uint8_t)ip[0];
ip1 = (uint8_t)ip[1];
ip2 = (uint8_t)ip[2];
ip3 = (uint8_t)ip[3];
IPAddress ap_local(ip0,ip1,ip2,ip3);
parseBytes(gateway.c_str(),'.', ip, 4, 10);
ip0 = (uint8_t)ip[0];
ip1 = (uint8_t)ip[1];
ip2 = (uint8_t)ip[2];
ip3 = (uint8_t)ip[3];
IPAddress ap_gate(ip0,ip1,ip2,ip3);
parseBytes(subnet.c_str(),'.', ip, 4, 10);
ip0 = (uint8_t)ip[0];
ip1 = (uint8_t)ip[1];
ip2 = (uint8_t)ip[2];
ip3 = (uint8_t)ip[3];
IPAddress ap_net(ip0,ip1,ip2,ip3);
WiFi.disconnect(true);
WiFi.mode(WIFI_AP);
Serial.println(WiFi.softAP(ssid.c_str(),pass.c_str()) ? "Setting up SoftAP" : "error setting up");
delay(100);
Serial.println(WiFi.softAPConfig(ap_local, ap_gate, ap_net) ? "Configuring softAP" : "kya yaar not connected");
Serial.println(WiFi.softAPIP());
server.begin();
server.on("/", handleStaticForm);
server.onNotFound(handleNotFound);

APTimer = millis();
while(isAPConnected && millis()-APTimer<= APInterval) {
server.handleClient(); }
}

//***************************WiFi Credintial Form**************************//

void dhcpAPConfig(String ssid, String pass){
WiFi.mode(WIFI_OFF);
WiFi.softAPdisconnect(true);
delay(1000);
WiFi.mode(WIFI_AP);
Serial.println(WiFi.softAP(ssid.c_str(),pass.c_str()) ? "Setting up SoftAP" : "error setting up");
delay(200);
Serial.println(WiFi.softAPIP());

server.begin();
server.on("/", handleStaticForm);
server.onNotFound(handleNotFound);
APTimer = millis();
while(isAPConnected && millis()-APTimer<= APInterval) {
server.handleClient(); }

}

//****************************HANDLE STATIC FORM***************************//

void handleStaticForm() {
//JsonObject& root =jsonBuffer.createObject();
DynamicJsonDocument root(1024);
root["no"]= "";
//root.printTo(Serial);
serializeJson(root, Serial);
if(server.hasArg("ssid") && server.hasArg("passkey")){
if(server.arg("configure") != ""){
File fileToWrite = SPIFFS.open("/ip_set.txt", FILE_WRITE);
if(!fileToWrite){
Serial.println("Error opening SPIFFS");
return;
}
if(!serializeJson(root, fileToWrite)){
Serial.println("--File Written");
esp_sleep_enable_timer_wakeup(TIME_TO_SLEEP * uS_TO_S_FACTOR);
esp_deep_sleep_start();
}else{
Serial.println("--Error Writing File");
}
}
handleSubmitForm();
}else{
int n = WiFi.scanNetworks();
int indices[n];
if(n == 0){
Serial.println("No networks found");
}else{
for (int i = 0; i < n; i++) {
indices[i] = i;
}

for (int i = 0; i < n; i++) {
Serial.println(WiFi.SSID(indices[i]));
Serial.print('\t');
Serial.println(getRSSIasQuality(WiFi.RSSI(indices[i])));
}
}

String webpage = FPSTR(HTTP_HEAD_HTML);
webpage += FPSTR(HTTP_STYLE);
webpage += FPSTR(HTTP_HEAD_STYLE);
webpage += FPSTR(HTTP_FORM_START);
for(int i=0;i<n;i++){
int quality = getRSSIasQuality(WiFi.RSSI(indices[i]));
String item = FPSTR(HTTP_CONTENT1_START);
String RssiQuality = String(quality);
item.replace("{v}",WiFi.SSID(indices[i]));
item.replace("{r}",RssiQuality);
webpage+=item;
}
webpage += FPSTR(HTTP_CONTENT2_START);
webpage += FPSTR(HTTP_CONTENT3_START);
webpage += FPSTR(HTTP_CONTENT4_START);
webpage += FPSTR(HTTP_CONTENT5_START);
webpage += FPSTR(HTTP_FORM_END);
webpage += FPSTR(HTTP_SCRIPT);
webpage += FPSTR(HTTP_END);
server.send(200,"text/html",webpage);
}
}

//****************************WiFi Credintial Submit****************************//

void handleSubmitForm() {
String response=FPSTR(HTTP_PAGE_WiFi);
response.replace("{s}",server.arg("ssid"));
response.replace("{p}",String(server.arg("passkey")));
response+=FPSTR(HTTP_PAGE_GOHOME);
server.send(200, "text/html", response);
ROMwrite(String(server.arg("ssid")),String(server.arg("passkey")));
isAPConnected = false;
}


//----------Write to ROM-----------//
void ROMwrite(String s, String p){
s+=";";
write_EEPROM(s,0);
p+=";";
write_EEPROM(p,50);
EEPROM.commit();
}

//***********Write to ROM**********//
void write_EEPROM(String x,int pos){
for(int n=pos;n<x.length()+pos;n++){
//write the ssid and password fetched from webpage to EEPROM
EEPROM.write(n,x[n-pos]);
}
}


//****************************EEPROM Read****************************//
String read_string(int l, int p){
String temp;
for (int n = p; n < l+p; ++n)
{
// read the saved password from EEPROM
if(char(EEPROM.read(n))!=';'){

temp += String(char(EEPROM.read(n)));
}else n=l+p;
}
return temp;
}


//****************************Connect to WiFi****************************//
void reconnectWiFi(){
WiFi.mode(WIFI_STA);
WiFi.disconnect();
String string_Ssid="";
String string_Password="";
string_Ssid= read_string(30,0);
string_Password= read_string(30,50);
Serial.println("ssid: "+ string_Ssid);
Serial.println("Password: "+string_Password);

delay(400);
WiFi.begin(string_Ssid.c_str(),string_Password.c_str());
int counter = 0;
while (WiFi.status() != WL_CONNECTED)
{
delay(500);
Serial.print(".");
if(counter == 20){
String response = "<script>alert(\"Password not connected\")</script";
server.send(200,"text/html",response);
ESP.restart();
}
counter++;
}

Serial.print("Connected to:\t");
Serial.println(WiFi.localIP());
}


int getRSSIasQuality(int RSSI) {
int quality = 0;
if (RSSI <= -100) {
quality = 0;
} else if (RSSI >= -50) {
quality = 100;
} else {
quality = 2 * (RSSI + 100);
}
return quality;
}

Loading…
取消
儲存