├── .devcontainer ├── Dockerfile └── devcontainer.json ├── .gitignore ├── .pnpm-debug.log ├── .vscode ├── c_cpp_properties.json ├── launch.json ├── settings.json └── tasks.json ├── CMakeLists.txt ├── Makefile ├── README.md ├── Untitled.pdn ├── components └── wifi │ ├── CMakeLists.txt │ ├── connect.c │ └── connect.h ├── main ├── CMakeLists.txt ├── app.h ├── component.mk ├── main.c └── routes │ ├── _routes.h │ ├── helloWorld.c │ ├── magnetometer.c │ ├── pushBtn.c │ ├── servo.c │ └── toggleLed.c ├── meetup.jpg ├── partitions.csv ├── react on chip.pptx ├── sdkconfig ├── sdkconfig.old └── site ├── .gitignore ├── index.html ├── package-lock.json ├── package.json ├── postcss.config.js ├── src ├── app.tsx ├── components │ └── spinner.tsx ├── favicon.svg ├── index.css ├── logo.tsx ├── main.tsx ├── preact.d.ts ├── views │ ├── Magnetometer.tsx │ ├── button-push.tsx │ ├── hello-world.tsx │ ├── led.tsx │ └── servo.tsx └── vite-env.d.ts ├── tailwind.config.js ├── tsconfig.json ├── tsconfig.node.json └── vite.config.ts /.devcontainer/Dockerfile: -------------------------------------------------------------------------------- 1 | FROM espressif/idf:release-v4.3 2 | 3 | ARG DEBIAN_FRONTEND=nointeractive 4 | 5 | RUN apt-get update \ 6 | && apt install -y -q \ 7 | cmake \ 8 | git \ 9 | libglib2.0-0 \ 10 | libnuma1 \ 11 | libpixman-1-0 12 | 13 | RUN ./opt/esp/entrypoint.sh && pip install --no-cache-dir idf-component-manager 14 | 15 | # QEMU 16 | ENV QEMU_REL=esp-develop-20210220 17 | ENV QEMU_SHA256=44c130226bdce9aff6abf0aeaab44f09fe4f2d71a5f9225ac1708d68e4852c02 18 | ENV QEMU_DIST=qemu-${QEMU_REL}.tar.bz2 19 | ENV QEMU_URL=https://github.com/espressif/qemu/releases/download/${QEMU_REL}/${QEMU_DIST} 20 | 21 | ENV LC_ALL=C.UTF-8 22 | ENV LANG=C.UTF-8 23 | ENV IDF_PYTHON_ENV_PATH=/opt/esp/python_env/idf4.3_py3.6_env 24 | 25 | RUN wget --no-verbose ${QEMU_URL} \ 26 | && echo "${QEMU_SHA256} *${QEMU_DIST}" | sha256sum --check --strict - \ 27 | && tar -xf $QEMU_DIST -C /opt \ 28 | && rm ${QEMU_DIST} 29 | 30 | ENV PATH=/opt/qemu/bin:${PATH} 31 | 32 | RUN echo $($IDF_PATH/tools/idf_tools.py export) >> $HOME/.bashrc 33 | 34 | ENTRYPOINT [ "/opt/esp/entrypoint.sh" ] 35 | 36 | CMD ["/bin/bash"] -------------------------------------------------------------------------------- /.devcontainer/devcontainer.json: -------------------------------------------------------------------------------- 1 | // For format details, see https://aka.ms/devcontainer.json. For config options, see the README at: 2 | // https://github.com/microsoft/vscode-dev-containers/tree/v0.183.0/containers/ubuntu 3 | { 4 | "name": "ESP-IDF QEMU", 5 | "build": { 6 | "dockerfile": "Dockerfile" 7 | }, 8 | "settings": { 9 | "terminal.integrated.defaultProfile.linux": "bash", 10 | "idf.espIdfPath": "/opt/esp/idf", 11 | "idf.customExtraPaths": "", 12 | "idf.pythonBinPath": "/opt/esp/python_env/idf4.3_py3.6_env/bin/python", 13 | "idf.toolsPath": "/opt/esp", 14 | "idf.gitPath": "/usr/bin/git" 15 | }, 16 | // Add the IDs of extensions you want installed when the container is created. 17 | "extensions": [ 18 | "ms-vscode.cpptools", 19 | "espressif.esp-idf-extension" 20 | ], 21 | 22 | // Use 'forwardPorts' to make a list of ports inside the container available locally. 23 | // "forwardPorts": [], 24 | 25 | // Use 'postCreateCommand' to run commands after the container is created. 26 | // "postCreateCommand": "bash /opt/esp/entrypoint.sh", 27 | 28 | // Comment out connect as root instead. More info: https://aka.ms/vscode-remote/containers/non-root. 29 | // "remoteUser": "vscodeuser" 30 | } -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | /build -------------------------------------------------------------------------------- /.pnpm-debug.log: -------------------------------------------------------------------------------- 1 | { 2 | "0 debug pnpm:scope": { 3 | "selected": 1 4 | }, 5 | "1 error pnpm": { 6 | "code": "ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND", 7 | "err": { 8 | "name": "pnpm", 9 | "message": "No package.json (or package.yaml, or package.json5) was found in \"C:\\projects\\meetup\\react-on-chip\\react-on-chip-demo\".", 10 | "code": "ERR_PNPM_NO_IMPORTER_MANIFEST_FOUND", 11 | "stack": "pnpm: No package.json (or package.yaml, or package.json5) was found in \"C:\\projects\\meetup\\react-on-chip\\react-on-chip-demo\".\n at readProjectManifest (C:\\Users\\mairs\\AppData\\Roaming\\nvm\\v14.18.1\\node_modules\\pnpm\\dist\\pnpm.cjs:41092:13)\n at async Object.readProjectManifestOnly (C:\\Users\\mairs\\AppData\\Roaming\\nvm\\v14.18.1\\node_modules\\pnpm\\dist\\pnpm.cjs:41096:28)\n at async readProjectManifestOnly (C:\\Users\\mairs\\AppData\\Roaming\\nvm\\v14.18.1\\node_modules\\pnpm\\dist\\pnpm.cjs:41315:24)\n at async Object.handler (C:\\Users\\mairs\\AppData\\Roaming\\nvm\\v14.18.1\\node_modules\\pnpm\\dist\\pnpm.cjs:129738:24)\n at async C:\\Users\\mairs\\AppData\\Roaming\\nvm\\v14.18.1\\node_modules\\pnpm\\dist\\pnpm.cjs:133938:20\n at async run (C:\\Users\\mairs\\AppData\\Roaming\\nvm\\v14.18.1\\node_modules\\pnpm\\dist\\pnpm.cjs:133913:34)\n at async runPnpm (C:\\Users\\mairs\\AppData\\Roaming\\nvm\\v14.18.1\\node_modules\\pnpm\\dist\\pnpm.cjs:134124:5)\n at async C:\\Users\\mairs\\AppData\\Roaming\\nvm\\v14.18.1\\node_modules\\pnpm\\dist\\pnpm.cjs:134116:7" 12 | } 13 | } 14 | } -------------------------------------------------------------------------------- /.vscode/c_cpp_properties.json: -------------------------------------------------------------------------------- 1 | { 2 | "configurations": [ 3 | { 4 | "name": "ESP-IDF", 5 | "compilerPath": "c:\\esp\\tools\\tools\\xtensa-esp32-elf\\esp-2021r1-8.4.0\\xtensa-esp32-elf\\bin\\xtensa-esp32-elf-gcc.exe\r\nC:\\esp\\tools\\.espressif\\tools\\xtensa-esp32-elf-clang\\esp-12.0.1-20210823-x86_64-pc-windows-msvc\\bin\\xtensa-esp32-elf-gcc.exe\r\nC:\\esp\\tools\\.espressif\\tools\\xtensa-esp32-elf-clang\\esp-13.0.0-20211203-x86_64-pc-windows-msvc\\bin\\xtensa-esp32-elf-gcc.exe", 6 | "cStandard": "c11", 7 | "cppStandard": "c++17", 8 | "includePath": [ 9 | "${config:idf.espIdfPath}/components/**", 10 | "${config:idf.espIdfPathWin}/components/**", 11 | "${config:idf.espAdfPath}/components/**", 12 | "${config:idf.espAdfPathWin}/components/**", 13 | "${workspaceFolder}/**" 14 | ], 15 | "browse": { 16 | "path": [ 17 | "${config:idf.espIdfPath}/components", 18 | "${config:idf.espIdfPathWin}/components", 19 | "${config:idf.espAdfPath}/components/**", 20 | "${config:idf.espAdfPathWin}/components/**", 21 | "${workspaceFolder}" 22 | ], 23 | "limitSymbolsToIncludedHeaders": false 24 | }, 25 | "compileCommands": "${workspaceFolder}/build/compile_commands.json" 26 | } 27 | ], 28 | "version": 4 29 | } 30 | -------------------------------------------------------------------------------- /.vscode/launch.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "0.2.0", 3 | "configurations": [ 4 | { 5 | "type": "espidf", 6 | "name": "Launch", 7 | "request": "launch" 8 | } 9 | ] 10 | } -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "C_Cpp.intelliSenseEngine": "Default", 3 | "idf.adapterTargetName": "esp32", 4 | "cSpell.words": ["IRAM"], 5 | "files.associations": { 6 | "future": "c", 7 | "system_error": "c", 8 | "*.ipp": "c", 9 | "istream": "c", 10 | "*.tcc": "c", 11 | "_routes.h": "c" 12 | }, 13 | "idf.openOcdConfigs": ["interface/ftdi/esp32_devkitj_v1.cfg", "target/esp32.cfg"] 14 | } 15 | -------------------------------------------------------------------------------- /.vscode/tasks.json: -------------------------------------------------------------------------------- 1 | { 2 | "version": "2.0.0", 3 | "tasks": [ 4 | { 5 | "label": "Build - Build project", 6 | "type": "shell", 7 | "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py build", 8 | "windows": { 9 | "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py build", 10 | "options": { 11 | "env": { 12 | "PATH": "${env:PATH};${config:idf.customExtraPaths}" 13 | } 14 | } 15 | }, 16 | "options": { 17 | "env": { 18 | "PATH": "${env:PATH}:${config:idf.customExtraPaths}" 19 | } 20 | }, 21 | "problemMatcher": [ 22 | { 23 | "owner": "cpp", 24 | "fileLocation": [ 25 | "relative", 26 | "${workspaceFolder}" 27 | ], 28 | "pattern": { 29 | "regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 30 | "file": 1, 31 | "line": 2, 32 | "column": 3, 33 | "severity": 4, 34 | "message": 5 35 | } 36 | }, 37 | { 38 | "owner": "cpp", 39 | "fileLocation": "absolute", 40 | "pattern": { 41 | "regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 42 | "file": 1, 43 | "line": 2, 44 | "column": 3, 45 | "severity": 4, 46 | "message": 5 47 | } 48 | } 49 | ], 50 | "group": { 51 | "kind": "build", 52 | "isDefault": true 53 | } 54 | }, 55 | { 56 | "label": "Set ESP-IDF Target", 57 | "type": "shell", 58 | "command": "${command:espIdf.setTarget}", 59 | "problemMatcher": { 60 | "owner": "cpp", 61 | "fileLocation": "absolute", 62 | "pattern": { 63 | "regexp": "^(.*):(//d+):(//d+)://s+(warning|error)://s+(.*)$", 64 | "file": 1, 65 | "line": 2, 66 | "column": 3, 67 | "severity": 4, 68 | "message": 5 69 | } 70 | } 71 | }, 72 | { 73 | "label": "Clean - Clean the project", 74 | "type": "shell", 75 | "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py fullclean", 76 | "windows": { 77 | "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py fullclean", 78 | "options": { 79 | "env": { 80 | "PATH": "${env:PATH};${config:idf.customExtraPaths}" 81 | } 82 | } 83 | }, 84 | "options": { 85 | "env": { 86 | "PATH": "${env:PATH}:${config:idf.customExtraPaths}" 87 | } 88 | }, 89 | "problemMatcher": [ 90 | { 91 | "owner": "cpp", 92 | "fileLocation": [ 93 | "relative", 94 | "${workspaceFolder}" 95 | ], 96 | "pattern": { 97 | "regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 98 | "file": 1, 99 | "line": 2, 100 | "column": 3, 101 | "severity": 4, 102 | "message": 5 103 | } 104 | }, 105 | { 106 | "owner": "cpp", 107 | "fileLocation": "absolute", 108 | "pattern": { 109 | "regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 110 | "file": 1, 111 | "line": 2, 112 | "column": 3, 113 | "severity": 4, 114 | "message": 5 115 | } 116 | } 117 | ] 118 | }, 119 | { 120 | "label": "Flash - Flash the device", 121 | "type": "shell", 122 | "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} -b ${config:idf.flashBaudRate} flash", 123 | "windows": { 124 | "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py flash -p ${config:idf.portWin} -b ${config:idf.flashBaudRate}", 125 | "options": { 126 | "env": { 127 | "PATH": "${env:PATH};${config:idf.customExtraPaths}" 128 | } 129 | } 130 | }, 131 | "options": { 132 | "env": { 133 | "PATH": "${env:PATH}:${config:idf.customExtraPaths}" 134 | } 135 | }, 136 | "problemMatcher": [ 137 | { 138 | "owner": "cpp", 139 | "fileLocation": [ 140 | "relative", 141 | "${workspaceFolder}" 142 | ], 143 | "pattern": { 144 | "regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 145 | "file": 1, 146 | "line": 2, 147 | "column": 3, 148 | "severity": 4, 149 | "message": 5 150 | } 151 | }, 152 | { 153 | "owner": "cpp", 154 | "fileLocation": "absolute", 155 | "pattern": { 156 | "regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 157 | "file": 1, 158 | "line": 2, 159 | "column": 3, 160 | "severity": 4, 161 | "message": 5 162 | } 163 | } 164 | ] 165 | }, 166 | { 167 | "label": "Monitor: Start the monitor", 168 | "type": "shell", 169 | "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} monitor", 170 | "windows": { 171 | "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py -p ${config:idf.portWin} monitor", 172 | "options": { 173 | "env": { 174 | "PATH": "${env:PATH};${config:idf.customExtraPaths}" 175 | } 176 | } 177 | }, 178 | "options": { 179 | "env": { 180 | "PATH": "${env:PATH}:${config:idf.customExtraPaths}" 181 | } 182 | }, 183 | "problemMatcher": [ 184 | { 185 | "owner": "cpp", 186 | "fileLocation": [ 187 | "relative", 188 | "${workspaceFolder}" 189 | ], 190 | "pattern": { 191 | "regexp": "^\\.\\.(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 192 | "file": 1, 193 | "line": 2, 194 | "column": 3, 195 | "severity": 4, 196 | "message": 5 197 | } 198 | }, 199 | { 200 | "owner": "cpp", 201 | "fileLocation": "absolute", 202 | "pattern": { 203 | "regexp": "^[^\\.](.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 204 | "file": 1, 205 | "line": 2, 206 | "column": 3, 207 | "severity": 4, 208 | "message": 5 209 | } 210 | } 211 | ], 212 | "dependsOn": "Flash - Flash the device" 213 | }, 214 | { 215 | "label": "OpenOCD: Start openOCD", 216 | "type": "shell", 217 | "presentation": { 218 | "echo": true, 219 | "reveal": "never", 220 | "focus": false, 221 | "panel": "new" 222 | }, 223 | "command": "openocd -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}", 224 | "windows": { 225 | "command": "openocd.exe -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}", 226 | "options": { 227 | "env": { 228 | "PATH": "${env:PATH};${config:idf.customExtraPaths}" 229 | } 230 | } 231 | }, 232 | "options": { 233 | "env": { 234 | "PATH": "${env:PATH}:${config:idf.customExtraPaths}" 235 | } 236 | }, 237 | "problemMatcher": { 238 | "owner": "cpp", 239 | "fileLocation": "absolute", 240 | "pattern": { 241 | "regexp": "^(.*):(\\d+):(\\d+):\\s+(warning|error):\\s+(.*)$", 242 | "file": 1, 243 | "line": 2, 244 | "column": 3, 245 | "severity": 4, 246 | "message": 5 247 | } 248 | } 249 | }, 250 | { 251 | "label": "adapter", 252 | "type": "shell", 253 | "command": "${config:idf.pythonBinPath}", 254 | "isBackground": true, 255 | "options": { 256 | "env": { 257 | "PATH": "${env:PATH}:${config:idf.customExtraPaths}", 258 | "PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter" 259 | } 260 | }, 261 | "problemMatcher": { 262 | "background": { 263 | "beginsPattern": "\bDEBUG_ADAPTER_STARTED\b", 264 | "endsPattern": "DEBUG_ADAPTER_READY2CONNECT", 265 | "activeOnStart": true 266 | }, 267 | "pattern": { 268 | "regexp": "(\\d+)-(\\d+)-(\\d+)\\s(\\d+):(\\d+):(\\d+),(\\d+)\\s-(.+)\\s(ERROR)", 269 | "file": 8, 270 | "line": 2, 271 | "column": 3, 272 | "severity": 4, 273 | "message": 9 274 | } 275 | }, 276 | "args": [ 277 | "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter_main.py", 278 | "-e", 279 | "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf", 280 | "-s", 281 | "${command:espIdf.getOpenOcdScriptValue}", 282 | "-ip", 283 | "localhost", 284 | "-dn", 285 | "${config:idf.adapterTargetName}", 286 | "-om", 287 | "connect_to_instance" 288 | ], 289 | "windows": { 290 | "command": "${config:idf.pythonBinPathWin}", 291 | "options": { 292 | "env": { 293 | "PATH": "${env:PATH};${config:idf.customExtraPaths}", 294 | "PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter" 295 | } 296 | } 297 | } 298 | } 299 | ] 300 | } -------------------------------------------------------------------------------- /CMakeLists.txt: -------------------------------------------------------------------------------- 1 | # For more information about build system see 2 | # https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/build-system.html 3 | # The following five lines of boilerplate have to be in your project's 4 | # CMakeLists in this exact order for cmake to work correctly 5 | cmake_minimum_required(VERSION 3.5) 6 | 7 | include($ENV{IDF_PATH}/tools/cmake/project.cmake) 8 | project(_1_server) 9 | -------------------------------------------------------------------------------- /Makefile: -------------------------------------------------------------------------------- 1 | # 2 | # This is a project Makefile. It is assumed the directory this Makefile resides in is a 3 | # project subdirectory. 4 | # 5 | 6 | PROJECT_NAME := sample_project 7 | 8 | include $(IDF_PATH)/make/project.mk 9 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # React on an ESP32 2 | 3 | This sample project demonstrates how to run a React application on an ESP32 micro-controller. 4 | You can view the recording [here](https://youtu.be/R9n32nxrzug) 5 | 6 | ## Software prerequisites 7 | 8 | You will need to install 9 | 10 | - [node](https://nodejs.org/) v14 or later 11 | - The ESP-IDF. You can follow [these instructions](https://learnesp32.com/videos/1/0_introduction) 12 | 13 | ## Hardware to run demo 14 | 15 | - an esp32 dev board such as this one [from AliExpress](https://www.aliexpress.com/item/1005001636295529.html?spm=a2g0o.productlist.0.0.58dd798bIY78Qo&algo_pvid=65cfe33f-c51c-4b4d-ba3c-ae136ffd9404&algo_exp_id=65cfe33f-c51c-4b4d-ba3c-ae136ffd9404-1&pdp_ext_f=%7B%22sku_id%22%3A%2212000016916866581%22%7D&pdp_npi=1%40dis%7CAUD%7C%7C5.73%7C%7C%7C5.24%7C%7C%402101e9d416511158324635217eb8f5%7C12000016916866581%7Csea) or this one [form Amazon](https://www.amazon.com/Development-Microcontroller-Integrated-Antenna-Amplifiers/dp/B09GK74F7N/ref=sr_1_6?crid=3K9XNPGUIELBE&keywords=ESP32&qid=1651116139&sprefix=%2Caps%2C1739&sr=8-6) 16 | - A button 17 | - A small servo motor like [this one](https://www.aliexpress.com/item/4001149590522.html?spm=a2g0o.productlist.0.0.f0ce6b49UUGEKu&algo_pvid=18a7e06f-56eb-4a3c-97f7-d6ad54aa8088&algo_exp_id=18a7e06f-56eb-4a3c-97f7-d6ad54aa8088-2&pdp_ext_f=%7B%22sku_id%22%3A%2210000014899518043%22%7D&pdp_npi=1%40dis%7CAUD%7C%7C2.22%7C%7C%7C1.54%7C%7C%400bb0624216511161950402704e8446%7C10000014899518043%7Csea) 18 | - A magnet 19 | 20 | ## instructions 21 | 22 | If you are unfamiliar with running IDF commands please visit the [Learn ESP32](https://learnesp32.com) and follow the first few free modules 23 | 24 | 1. clone the repo `git clone` 25 | 1. open ./main/main.c 26 | at the top of the file, set your WiFi SSID and passphrase by changing these lines 27 | 28 | ```c 29 | static const char *SSID = "MY WIFI SSID"; 30 | static const char *PASS = "MY WIFI PASS"; 31 | ``` 32 | 33 | ⚠️warning: Both SSID and passphrase are case sensitive 34 | 35 | 2. build the React application 36 | 37 | ```bash 38 | cd site 39 | npm run build 40 | ``` 41 | 42 | 3. (optional) run the web dev server 43 | 44 | ```bash 45 | npm run dev 46 | ``` 47 | 48 | 4. Open an IDF shell to ensure your IDF environment is loaded and then in the project root run 49 | 50 | ```bash 51 | idf.py flash monitor 52 | ``` 53 | 54 | 5. make sure your PC is on the same WiFi that you are using 55 | 6. in your browser navigate to http://my-esp32.local 56 | 7. (optional) If you are running a dev server you can also navigate to http://localhost:3000 57 | -------------------------------------------------------------------------------- /Untitled.pdn: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mair/React-on-esp32-talk/68ee4ca0191a35bebffda4488dd66a99c2fc6a5b/Untitled.pdn -------------------------------------------------------------------------------- /components/wifi/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register(SRCS "connect.c" 2 | INCLUDE_DIRS ".") 3 | -------------------------------------------------------------------------------- /components/wifi/connect.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include 3 | #include "esp_log.h" 4 | #include "freertos/FreeRTOS.h" 5 | #include "freertos/task.h" 6 | #include "freertos/event_groups.h" 7 | #include "esp_netif.h" 8 | #include "esp_wifi.h" 9 | 10 | const static char *TAG = "WIFI"; 11 | esp_netif_t *esp_netif; 12 | 13 | static EventGroupHandle_t wifi_events; 14 | static const int CONNECTED_GOT_IP = BIT0; 15 | static const int DISCONNECTED = BIT1; 16 | 17 | const char *get_error(uint8_t code) 18 | { 19 | switch (code) 20 | { 21 | case WIFI_REASON_UNSPECIFIED: 22 | return "WIFI_REASON_UNSPECIFIED"; 23 | case WIFI_REASON_AUTH_EXPIRE: 24 | return "WIFI_REASON_AUTH_EXPIRE"; 25 | case WIFI_REASON_AUTH_LEAVE: 26 | return "WIFI_REASON_AUTH_LEAVE"; 27 | case WIFI_REASON_ASSOC_EXPIRE: 28 | return "WIFI_REASON_ASSOC_EXPIRE"; 29 | case WIFI_REASON_ASSOC_TOOMANY: 30 | return "WIFI_REASON_ASSOC_TOOMANY"; 31 | case WIFI_REASON_NOT_AUTHED: 32 | return "WIFI_REASON_NOT_AUTHED"; 33 | case WIFI_REASON_NOT_ASSOCED: 34 | return "WIFI_REASON_NOT_ASSOCED"; 35 | case WIFI_REASON_ASSOC_LEAVE: 36 | return "WIFI_REASON_ASSOC_LEAVE"; 37 | case WIFI_REASON_ASSOC_NOT_AUTHED: 38 | return "WIFI_REASON_ASSOC_NOT_AUTHED"; 39 | case WIFI_REASON_DISASSOC_PWRCAP_BAD: 40 | return "WIFI_REASON_DISASSOC_PWRCAP_BAD"; 41 | case WIFI_REASON_DISASSOC_SUPCHAN_BAD: 42 | return "WIFI_REASON_DISASSOC_SUPCHAN_BAD"; 43 | case WIFI_REASON_IE_INVALID: 44 | return "WIFI_REASON_IE_INVALID"; 45 | case WIFI_REASON_MIC_FAILURE: 46 | return "WIFI_REASON_MIC_FAILURE"; 47 | case WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT: 48 | return "WIFI_REASON_4WAY_HANDSHAKE_TIMEOUT"; 49 | case WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT: 50 | return "WIFI_REASON_GROUP_KEY_UPDATE_TIMEOUT"; 51 | case WIFI_REASON_IE_IN_4WAY_DIFFERS: 52 | return "WIFI_REASON_IE_IN_4WAY_DIFFERS"; 53 | case WIFI_REASON_GROUP_CIPHER_INVALID: 54 | return "WIFI_REASON_GROUP_CIPHER_INVALID"; 55 | case WIFI_REASON_PAIRWISE_CIPHER_INVALID: 56 | return "WIFI_REASON_PAIRWISE_CIPHER_INVALID"; 57 | case WIFI_REASON_AKMP_INVALID: 58 | return "WIFI_REASON_AKMP_INVALID"; 59 | case WIFI_REASON_UNSUPP_RSN_IE_VERSION: 60 | return "WIFI_REASON_UNSUPP_RSN_IE_VERSION"; 61 | case WIFI_REASON_INVALID_RSN_IE_CAP: 62 | return "WIFI_REASON_INVALID_RSN_IE_CAP"; 63 | case WIFI_REASON_802_1X_AUTH_FAILED: 64 | return "WIFI_REASON_802_1X_AUTH_FAILED"; 65 | case WIFI_REASON_CIPHER_SUITE_REJECTED: 66 | return "WIFI_REASON_CIPHER_SUITE_REJECTED"; 67 | case WIFI_REASON_INVALID_PMKID: 68 | return "WIFI_REASON_INVALID_PMKID"; 69 | case WIFI_REASON_BEACON_TIMEOUT: 70 | return "WIFI_REASON_BEACON_TIMEOUT"; 71 | case WIFI_REASON_NO_AP_FOUND: 72 | return "WIFI_REASON_NO_AP_FOUND"; 73 | case WIFI_REASON_AUTH_FAIL: 74 | return "WIFI_REASON_AUTH_FAIL"; 75 | case WIFI_REASON_ASSOC_FAIL: 76 | return "WIFI_REASON_ASSOC_FAIL"; 77 | case WIFI_REASON_HANDSHAKE_TIMEOUT: 78 | return "WIFI_REASON_HANDSHAKE_TIMEOUT"; 79 | case WIFI_REASON_CONNECTION_FAIL: 80 | return "WIFI_REASON_CONNECTION_FAIL"; 81 | case WIFI_REASON_AP_TSF_RESET: 82 | return "WIFI_REASON_AP_TSF_RESET"; 83 | case WIFI_REASON_ROAMING: 84 | return "WIFI_REASON_ROAMING"; 85 | } 86 | return "WIFI_REASON_UNSPECIFIED"; 87 | } 88 | 89 | void event_handler(void *event_handler_arg, esp_event_base_t event_base, int32_t event_id, void *event_data) 90 | { 91 | switch (event_id) 92 | { 93 | case SYSTEM_EVENT_STA_START: 94 | ESP_LOGI(TAG, "connecting..."); 95 | esp_wifi_connect(); 96 | break; 97 | case SYSTEM_EVENT_STA_CONNECTED: 98 | ESP_LOGI(TAG, "connected"); 99 | break; 100 | case SYSTEM_EVENT_STA_DISCONNECTED: 101 | { 102 | wifi_event_sta_disconnected_t *wifi_event_sta_disconnected = event_data; 103 | if (wifi_event_sta_disconnected->reason == WIFI_REASON_ASSOC_LEAVE) 104 | { 105 | ESP_LOGI(TAG, "disconnected"); 106 | xEventGroupSetBits(wifi_events, DISCONNECTED); 107 | break; 108 | } 109 | const char *err = get_error(wifi_event_sta_disconnected->reason); 110 | ESP_LOGE(TAG, "disconnected: %s", err); 111 | esp_wifi_connect(); 112 | // xEventGroupSetBits(wifi_events, DISCONNECTED); 113 | } 114 | break; 115 | case IP_EVENT_STA_GOT_IP: 116 | ESP_LOGI(TAG, "GOT IP"); 117 | xEventGroupSetBits(wifi_events, CONNECTED_GOT_IP); 118 | break; 119 | case WIFI_EVENT_AP_START: 120 | ESP_LOGI(TAG, "AP started"); 121 | break; 122 | case WIFI_EVENT_AP_STOP: 123 | ESP_LOGI(TAG, "AP stopped"); 124 | break; 125 | default: 126 | break; 127 | } 128 | } 129 | 130 | void wifi_init(void) 131 | { 132 | ESP_ERROR_CHECK(esp_netif_init()); 133 | ESP_ERROR_CHECK(esp_event_loop_create_default()); 134 | wifi_init_config_t wifi_init_config = WIFI_INIT_CONFIG_DEFAULT(); 135 | ESP_ERROR_CHECK(esp_wifi_init(&wifi_init_config)); 136 | ESP_ERROR_CHECK(esp_event_handler_register(WIFI_EVENT, ESP_EVENT_ANY_ID, event_handler, NULL)); 137 | ESP_ERROR_CHECK(esp_event_handler_register(IP_EVENT, IP_EVENT_STA_GOT_IP, event_handler, NULL)); 138 | ESP_ERROR_CHECK(esp_wifi_set_storage(WIFI_STORAGE_RAM)); 139 | } 140 | 141 | esp_err_t wifi_connect_sta(const char *ssid, const char *pass, int timeout) 142 | { 143 | wifi_events = xEventGroupCreate(); 144 | 145 | esp_netif = esp_netif_create_default_wifi_sta(); 146 | 147 | wifi_config_t wifi_config; 148 | memset(&wifi_config, 0, sizeof(wifi_config_t)); 149 | strncpy((char *)wifi_config.sta.ssid, ssid, sizeof(wifi_config.sta.ssid) - 1); 150 | strncpy((char *)wifi_config.sta.password, pass, sizeof(wifi_config.sta.password) - 1); 151 | 152 | esp_wifi_set_mode(WIFI_MODE_STA); 153 | esp_wifi_set_config(ESP_IF_WIFI_STA, &wifi_config); 154 | esp_wifi_start(); 155 | 156 | EventBits_t result = xEventGroupWaitBits(wifi_events, CONNECTED_GOT_IP | DISCONNECTED, pdTRUE, pdFALSE, pdMS_TO_TICKS(timeout)); 157 | if (result == CONNECTED_GOT_IP) 158 | { 159 | return ESP_OK; 160 | } 161 | return ESP_FAIL; 162 | } 163 | 164 | void wifi_connect_ap(const char *ssid, const char *pass) 165 | { 166 | esp_netif = esp_netif_create_default_wifi_ap(); 167 | 168 | wifi_config_t wifi_config; 169 | memset(&wifi_config, 0, sizeof(wifi_config_t)); 170 | strncpy((char *)wifi_config.ap.ssid, ssid, sizeof(wifi_config.ap.ssid) - 1); 171 | strncpy((char *)wifi_config.ap.password, pass, sizeof(wifi_config.ap.password) - 1); 172 | wifi_config.ap.authmode = WIFI_AUTH_WPA_WPA2_PSK; 173 | wifi_config.ap.max_connection = 4; 174 | 175 | esp_wifi_set_mode(WIFI_MODE_AP); 176 | esp_wifi_set_config(ESP_IF_WIFI_AP, &wifi_config); 177 | esp_wifi_start(); 178 | } 179 | 180 | void wifi_disconnect(void) 181 | { 182 | esp_wifi_disconnect(); 183 | esp_wifi_stop(); 184 | } 185 | 186 | void wifi_destroy_netif(void) 187 | { 188 | esp_netif_destroy(esp_netif); 189 | } -------------------------------------------------------------------------------- /components/wifi/connect.h: -------------------------------------------------------------------------------- 1 | #ifndef connect_h 2 | #define connect_h 3 | 4 | #include "esp_err.h" 5 | 6 | void wifi_init(void); 7 | esp_err_t wifi_connect_sta(const char *ssid, const char *pass, int timeout); 8 | void wifi_connect_ap(const char *ssid, const char *pass); 9 | void wifi_disconnect(void); 10 | void wifi_destroy_netif(void); 11 | #endif -------------------------------------------------------------------------------- /main/CMakeLists.txt: -------------------------------------------------------------------------------- 1 | idf_component_register( 2 | SRCS 3 | "routes/pushBtn.c" 4 | "routes/toggleLed.c" 5 | "routes/helloWorld.c" 6 | "routes/magnetometer.c" 7 | "routes/servo.c" 8 | "main.c" 9 | INCLUDE_DIRS 10 | "." 11 | "routes" 12 | ) 13 | 14 | spiffs_create_partition_image(spiffs ../site/dist FLASH_IN_PROJECT) -------------------------------------------------------------------------------- /main/app.h: -------------------------------------------------------------------------------- 1 | #ifndef app_h 2 | #define app_h 3 | 4 | #include "esp_err.h" 5 | #define WS_MAX_SIZE 1024 6 | 7 | esp_err_t send_ws_message(char *message); 8 | esp_err_t send_ws_message_to_clinet(char *message, int clinet_id); 9 | #endif -------------------------------------------------------------------------------- /main/component.mk: -------------------------------------------------------------------------------- 1 | # 2 | # "main" pseudo-component makefile. 3 | # 4 | # (Uses default behaviour of compiling all source files in directory, adding 'include' to include path.) 5 | -------------------------------------------------------------------------------- /main/main.c: -------------------------------------------------------------------------------- 1 | #include 2 | #include "connect.h" 3 | #include "nvs_flash.h" 4 | #include "esp_log.h" 5 | #include "esp_http_server.h" 6 | #include "mdns.h" 7 | #include "routes/_routes.h" 8 | #include "cJSON.h" 9 | #include "esp_spiffs.h" 10 | #include "esp_wifi.h" 11 | #include "freertos/FreeRTOS.h" 12 | #include "freertos/task.h" 13 | 14 | static const char *SSID = "MY WIFI SSID"; 15 | static const char *PASS = "MY WIFI PASS"; 16 | 17 | static const char *TAG = "SERVER"; 18 | #define MAX_APs 20 19 | 20 | static httpd_handle_t server = NULL; 21 | 22 | static esp_err_t on_default_url(httpd_req_t *req) 23 | { 24 | ESP_LOGI(TAG, "Opening page for URL: %s", req->uri); 25 | 26 | esp_vfs_spiffs_conf_t esp_vfs_spiffs_conf = { 27 | .base_path = "/spiffs", 28 | .partition_label = NULL, 29 | .max_files = 5, 30 | .format_if_mount_failed = true}; 31 | esp_vfs_spiffs_register(&esp_vfs_spiffs_conf); 32 | 33 | char path[600]; 34 | if (strcmp(req->uri, "/") == 0) 35 | strcpy(path, "/spiffs/index.html"); 36 | else 37 | sprintf(path, "/spiffs%s", req->uri); 38 | char *ext = strrchr(path, '.'); 39 | if (ext == NULL || strncmp(ext, ".local", strlen(".local")) == 0) 40 | { 41 | httpd_resp_set_status(req, "301 Moved Permanently"); 42 | httpd_resp_set_hdr(req, "Location", "/"); 43 | httpd_resp_send(req, NULL, 0); 44 | return ESP_OK; 45 | } 46 | if (strcmp(ext, ".css") == 0) 47 | httpd_resp_set_type(req, "text/css"); 48 | if (strcmp(ext, ".js") == 0) 49 | httpd_resp_set_type(req, "text/javascript"); 50 | if (strcmp(ext, ".png") == 0) 51 | httpd_resp_set_type(req, "image/png"); 52 | 53 | FILE *file = fopen(path, "r"); 54 | if (file == NULL) 55 | { 56 | httpd_resp_send_404(req); 57 | esp_vfs_spiffs_unregister(NULL); 58 | return ESP_OK; 59 | } 60 | 61 | char lineRead[256]; 62 | while (fgets(lineRead, sizeof(lineRead), file)) 63 | { 64 | httpd_resp_sendstr_chunk(req, lineRead); 65 | } 66 | httpd_resp_sendstr_chunk(req, NULL); 67 | 68 | esp_vfs_spiffs_unregister(NULL); 69 | return ESP_OK; 70 | } 71 | 72 | static esp_err_t on_get_ap_list(httpd_req_t *req) 73 | { 74 | wifi_scan_config_t scan_config = { 75 | .ssid = 0, 76 | .bssid = 0, 77 | .channel = 0, 78 | .show_hidden = true}; 79 | 80 | esp_wifi_set_mode(WIFI_MODE_APSTA); 81 | ESP_ERROR_CHECK(esp_wifi_scan_start(&scan_config, true)); 82 | 83 | wifi_ap_record_t wifi_records[MAX_APs]; 84 | 85 | uint16_t maxRecods = MAX_APs; 86 | ESP_ERROR_CHECK(esp_wifi_scan_get_ap_records(&maxRecods, wifi_records)); 87 | cJSON *wifi_scan_json = cJSON_CreateArray(); 88 | for (size_t i = 0; i < maxRecods; i++) 89 | { 90 | cJSON *entry = cJSON_CreateObject(); 91 | cJSON_AddStringToObject(entry, "ssid", (char *)wifi_records[i].ssid); 92 | cJSON_AddNumberToObject(entry, "rssi", wifi_records[i].rssi); 93 | cJSON_AddItemToArray(wifi_scan_json, entry); 94 | } 95 | char *json_string = cJSON_Print(wifi_scan_json); 96 | httpd_resp_set_type(req, "application/json"); 97 | httpd_resp_send(req, json_string, strlen(json_string)); 98 | cJSON_Delete(wifi_scan_json); 99 | free(json_string); 100 | return ESP_OK; 101 | } 102 | 103 | /**************** AP TO STA ********************/ 104 | typedef struct ap_config_t 105 | { 106 | char ssid[32]; 107 | char password[64]; 108 | } ap_config_t; 109 | 110 | static void connect_to_ap(void *params) 111 | { 112 | wifi_disconnect(); 113 | wifi_destroy_netif(); 114 | 115 | ap_config_t *ap_config = (ap_config_t *)params; 116 | 117 | ESP_LOGI(TAG, "Connecting to AP %s %s", ap_config->ssid, ap_config->password); 118 | if (wifi_connect_sta(ap_config->ssid, ap_config->password, 10000) != ESP_OK) 119 | { 120 | ESP_LOGE(TAG, "Failed to connect to AP"); 121 | wifi_connect_ap("esp32ap", "password"); 122 | } 123 | else 124 | { 125 | ESP_LOGI(TAG, "Connected to AP"); 126 | } 127 | vTaskDelete(NULL); 128 | } 129 | 130 | static esp_err_t on_ap_to_sta(httpd_req_t *req) 131 | { 132 | 133 | char buffer[100]; 134 | static ap_config_t ap_config; 135 | 136 | memset(&buffer, 0, sizeof(buffer)); 137 | httpd_req_recv(req, buffer, req->content_len); 138 | 139 | cJSON *payload = cJSON_Parse(buffer); 140 | strcpy(ap_config.ssid, cJSON_GetObjectItem(payload, "ssid")->valuestring); 141 | strcpy(ap_config.password, cJSON_GetObjectItem(payload, "password")->valuestring); 142 | cJSON_Delete(payload); 143 | 144 | xTaskCreate(connect_to_ap, "connect_to_ap", 1024 * 5, &ap_config, 1, NULL); 145 | return ESP_OK; 146 | } 147 | 148 | /********************Web Socket *******************/ 149 | 150 | static int client_session_id; 151 | 152 | esp_err_t send_ws_message(char *message) 153 | { 154 | if (!client_session_id) 155 | { 156 | ESP_LOGE(TAG, "no client_session_id"); 157 | return -1; 158 | } 159 | return send_ws_message_to_clinet(message, client_session_id); 160 | } 161 | 162 | esp_err_t send_ws_message_to_clinet(char *message, int clinet_id) 163 | { 164 | if (!clinet_id) 165 | { 166 | ESP_LOGE(TAG, "no client_session_id"); 167 | return -1; 168 | } 169 | httpd_ws_frame_t ws_message = { 170 | .final = true, 171 | .fragmented = false, 172 | .len = strlen(message), 173 | .payload = (uint8_t *)message, 174 | .type = HTTPD_WS_TYPE_TEXT}; 175 | return httpd_ws_send_frame_async(server, clinet_id, &ws_message); 176 | } 177 | 178 | /*******************************************/ 179 | 180 | static void init_server() 181 | { 182 | 183 | httpd_config_t config = HTTPD_DEFAULT_CONFIG(); 184 | config.uri_match_fn = httpd_uri_match_wildcard; 185 | 186 | ESP_ERROR_CHECK(httpd_start(&server, &config)); 187 | 188 | httpd_uri_t get_hello_world = { 189 | .uri = "/api/hello-world", 190 | .method = HTTP_GET, 191 | .handler = on_hello_world}; 192 | httpd_register_uri_handler(server, &get_hello_world); 193 | 194 | httpd_uri_t get_ap_list_url = { 195 | .uri = "/api/get-ap-list", 196 | .method = HTTP_GET, 197 | .handler = on_get_ap_list}; 198 | httpd_register_uri_handler(server, &get_ap_list_url); 199 | 200 | httpd_uri_t toggle_led_url = { 201 | .uri = "/api/toggle-led", 202 | .method = HTTP_POST, 203 | .handler = on_toggle_led_url}; 204 | httpd_register_uri_handler(server, &toggle_led_url); 205 | 206 | httpd_uri_t ap_to_sta_url = { 207 | .uri = "/api/ap-sta", 208 | .method = HTTP_POST, 209 | .handler = on_ap_to_sta}; 210 | httpd_register_uri_handler(server, &ap_to_sta_url); 211 | 212 | httpd_uri_t web_magnetometer_url = { 213 | .uri = "/ws-api/magnetometer", 214 | .method = HTTP_GET, 215 | .handler = on_magnetometer, 216 | .is_websocket = true}; 217 | httpd_register_uri_handler(server, &web_magnetometer_url); 218 | 219 | httpd_uri_t servo_url = { 220 | .uri = "/ws-api/servo", 221 | .method = HTTP_GET, 222 | .handler = on_servo_url, 223 | .is_websocket = true}; 224 | httpd_register_uri_handler(server, &servo_url); 225 | 226 | httpd_uri_t btn_push_url = { 227 | .uri = "/ws-api/btn-push", 228 | .method = HTTP_GET, 229 | .handler = on_web_socket_btn_push_url, 230 | .is_websocket = true}; 231 | httpd_register_uri_handler(server, &btn_push_url); 232 | 233 | httpd_uri_t default_url = { 234 | .uri = "/*", 235 | .method = HTTP_GET, 236 | .handler = on_default_url}; 237 | httpd_register_uri_handler(server, &default_url); 238 | } 239 | 240 | void start_mdns_service() 241 | { 242 | mdns_init(); 243 | mdns_hostname_set("my-esp32"); 244 | mdns_instance_name_set("LEARN esp32 thing"); 245 | } 246 | 247 | void app_main(void) 248 | { 249 | ESP_ERROR_CHECK(nvs_flash_init()); 250 | 251 | esp_vfs_spiffs_conf_t esp_vfs_spiffs_conf = { 252 | .base_path = "/spiffs", 253 | .partition_label = NULL, 254 | .max_files = 5, 255 | .format_if_mount_failed = true}; 256 | esp_vfs_spiffs_register(&esp_vfs_spiffs_conf); 257 | 258 | size_t total = 0; 259 | size_t used = 0; 260 | esp_spiffs_info(NULL, &total, &used); 261 | 262 | ESP_LOGI("SPIFFS", "total %d, used %d", total, used); 263 | esp_vfs_spiffs_unregister(NULL); 264 | 265 | init_led(); 266 | init_btn(); 267 | init_servo(); 268 | wifi_init(); 269 | ESP_ERROR_CHECK(wifi_connect_sta(SSID, PASS, 10000)); 270 | // wifi_connect_ap("esp32ap", "password"); 271 | 272 | start_mdns_service(); 273 | init_server(); 274 | } 275 | -------------------------------------------------------------------------------- /main/routes/_routes.h: -------------------------------------------------------------------------------- 1 | #ifndef routes_h 2 | #define routes_h 3 | 4 | #include 5 | #include 6 | #include 7 | #include "cJSON.h" 8 | #include "esp_log.h" 9 | #include "esp_http_server.h" 10 | #include "../app.h" 11 | 12 | /******************** init function ****************/ 13 | void init_btn(void); 14 | void init_led(void); 15 | void init_servo(void); 16 | 17 | /******************** http callbacks ****************/ 18 | esp_err_t on_toggle_led_url(httpd_req_t *req); 19 | esp_err_t on_hello_world(httpd_req_t *req); 20 | esp_err_t on_magnetometer(httpd_req_t *req); 21 | esp_err_t on_web_socket_btn_push_url(httpd_req_t *req); 22 | esp_err_t on_servo_url(httpd_req_t *req); 23 | /**************************************************/ 24 | void toggle_led(bool is_on); 25 | 26 | #endif -------------------------------------------------------------------------------- /main/routes/helloWorld.c: -------------------------------------------------------------------------------- 1 | #include "_routes.h" 2 | 3 | esp_err_t on_hello_world(httpd_req_t *req) 4 | { 5 | httpd_resp_sendstr(req, "hello world 👋👋👋 😁"); 6 | return ESP_OK; 7 | } -------------------------------------------------------------------------------- /main/routes/magnetometer.c: -------------------------------------------------------------------------------- 1 | #include "_routes.h" 2 | #include "esp_system.h" 3 | #include "freertos/FreeRTOS.h" 4 | #include "freertos/task.h" 5 | 6 | // static char *TAG = "magnetometer"; 7 | 8 | uint32_t hall_sens_read(); 9 | 10 | int client_session_id; 11 | static TaskHandle_t hall_task = NULL; 12 | 13 | // typedef struct client_sessions_t 14 | // { 15 | // session_id; 16 | // } client_sessions_t; 17 | 18 | void readHall(void *params) 19 | { 20 | int *interville_ptr = (int *)params; 21 | int interville = *interville_ptr; 22 | printf("interville %d\n", interville); 23 | while (true) 24 | { 25 | uint32_t read = hall_sens_read(); 26 | printf("hall read %d\n", read); 27 | cJSON *hall_payload = cJSON_CreateObject(); 28 | cJSON_AddNumberToObject(hall_payload, "val", read); 29 | char *payload_str = cJSON_Print(hall_payload); 30 | send_ws_message_to_clinet(payload_str, client_session_id); 31 | cJSON_Delete(hall_payload); 32 | free(payload_str); 33 | vTaskDelay(pdMS_TO_TICKS(interville)); 34 | } 35 | } 36 | 37 | esp_err_t on_magnetometer(httpd_req_t *req) 38 | { 39 | client_session_id = httpd_req_to_sockfd(req); 40 | if (req->method == HTTP_GET) 41 | return ESP_OK; 42 | 43 | printf("data client_session_id %d, len:%d\n", client_session_id, req->content_len); 44 | httpd_ws_frame_t ws_pkt; 45 | memset(&ws_pkt, 0, sizeof(httpd_ws_frame_t)); 46 | ws_pkt.type = HTTPD_WS_TYPE_TEXT; 47 | ws_pkt.payload = malloc(WS_MAX_SIZE); 48 | httpd_ws_recv_frame(req, &ws_pkt, WS_MAX_SIZE); 49 | printf("ws payload: %.*s\n", ws_pkt.len, ws_pkt.payload); 50 | cJSON *cmd_payload = cJSON_Parse((char *)ws_pkt.payload); 51 | if (cmd_payload == NULL) 52 | { 53 | printf("error\n"); 54 | // handle error 55 | } 56 | if (strcmp(cJSON_GetObjectItem(cmd_payload, "cmd")->valuestring, "start") == 0) 57 | { 58 | printf("cmd start\n"); 59 | if (hall_task == NULL) 60 | { 61 | int interville = cJSON_GetObjectItem(cmd_payload, "interval")->valueint; 62 | printf("create task\n"); 63 | xTaskCreate(readHall, "readHall", 1024 * 4, &interville, 5, &hall_task); 64 | } 65 | } 66 | if (strcmp(cJSON_GetObjectItem(cmd_payload, "cmd")->valuestring, "stop") == 0) 67 | { 68 | if (hall_task != NULL) 69 | { 70 | vTaskDelete(hall_task); 71 | hall_task = NULL; 72 | } 73 | } 74 | free(ws_pkt.payload); 75 | 76 | char *response = "connected OK 😊"; 77 | httpd_ws_frame_t ws_responce = { 78 | .final = true, 79 | .fragmented = false, 80 | .type = HTTPD_WS_TYPE_TEXT, 81 | .payload = (uint8_t *)response, 82 | .len = strlen(response)}; 83 | return httpd_ws_send_frame(req, &ws_responce); 84 | } 85 | -------------------------------------------------------------------------------- /main/routes/pushBtn.c: -------------------------------------------------------------------------------- 1 | #include "_routes.h" 2 | #include "driver/gpio.h" 3 | #include "freertos/FreeRTOS.h" 4 | #include "freertos/semphr.h" 5 | #include "freertos/task.h" 6 | #include "app.h" 7 | 8 | #define BTN 12 9 | 10 | static xSemaphoreHandle btn_sem; 11 | static int client_session_id; 12 | 13 | static void IRAM_ATTR on_btn_pushed(void *args) 14 | { 15 | xSemaphoreGiveFromISR(btn_sem, NULL); 16 | } 17 | 18 | static void btn_push_task(void *params) 19 | { 20 | while (true) 21 | { 22 | xSemaphoreTake(btn_sem, portMAX_DELAY); 23 | cJSON *payload = cJSON_CreateObject(); 24 | cJSON_AddBoolToObject(payload, "btn_state", gpio_get_level(BTN)); 25 | char *message = cJSON_Print(payload); 26 | printf("message: %s\n", message); 27 | send_ws_message_to_clinet(message, client_session_id); 28 | cJSON_Delete(payload); 29 | free(message); 30 | } 31 | } 32 | 33 | void init_btn(void) 34 | { 35 | 36 | btn_sem = xSemaphoreCreateBinary(); 37 | xTaskCreate(btn_push_task, "btn_push_task", 2048, NULL, 5, NULL); 38 | gpio_pad_select_gpio(BTN); 39 | gpio_set_direction(BTN, GPIO_MODE_INPUT); 40 | gpio_set_intr_type(BTN, GPIO_INTR_ANYEDGE); 41 | gpio_install_isr_service(0); 42 | gpio_isr_handler_add(BTN, on_btn_pushed, NULL); 43 | } 44 | 45 | esp_err_t on_web_socket_btn_push_url(httpd_req_t *req) 46 | { 47 | client_session_id = httpd_req_to_sockfd(req); 48 | if (req->method == HTTP_GET) 49 | return ESP_OK; 50 | 51 | httpd_ws_frame_t ws_pkt; 52 | memset(&ws_pkt, 0, sizeof(httpd_ws_frame_t)); 53 | ws_pkt.type = HTTPD_WS_TYPE_TEXT; 54 | ws_pkt.payload = malloc(WS_MAX_SIZE); 55 | httpd_ws_recv_frame(req, &ws_pkt, WS_MAX_SIZE); 56 | printf("ws payload: %.*s\n", ws_pkt.len, ws_pkt.payload); 57 | free(ws_pkt.payload); 58 | 59 | char *response = "{\"message\": \"Ready for button push 🔽 😊\"}"; 60 | httpd_ws_frame_t ws_responce = { 61 | .final = true, 62 | .fragmented = false, 63 | .type = HTTPD_WS_TYPE_TEXT, 64 | .payload = (uint8_t *)response, 65 | .len = strlen(response)}; 66 | return httpd_ws_send_frame(req, &ws_responce); 67 | } -------------------------------------------------------------------------------- /main/routes/servo.c: -------------------------------------------------------------------------------- 1 | #include "_routes.h" 2 | #include "driver/ledc.h" 3 | #include "cJSON.h" 4 | 5 | static int client_session_id; 6 | 7 | void init_servo(void) 8 | { 9 | ledc_timer_config_t timer = { 10 | .speed_mode = LEDC_LOW_SPEED_MODE, 11 | .duty_resolution = LEDC_TIMER_10_BIT, 12 | .timer_num = LEDC_TIMER_0, 13 | .freq_hz = 50, 14 | .clk_cfg = LEDC_AUTO_CLK}; 15 | 16 | ledc_timer_config(&timer); 17 | 18 | ledc_channel_config_t channel = { 19 | .gpio_num = 13, 20 | .speed_mode = LEDC_LOW_SPEED_MODE, 21 | .channel = LEDC_CHANNEL_0, 22 | .timer_sel = LEDC_TIMER_0, 23 | .duty = 0, 24 | .hpoint = 0}; 25 | ledc_channel_config(&channel); 26 | 27 | ledc_fade_func_install(0); 28 | // for (int i = 0; i < 128; i++) 29 | // { 30 | // ledc_set_duty_and_update(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, i, 0); 31 | // vTaskDelay(10 / portTICK_PERIOD_MS); 32 | // } 33 | } 34 | 35 | int set_angle(int angle) 36 | { 37 | int dutyMin = 32; 38 | int dutyMax = 128; 39 | int dutyrange = dutyMax - dutyMin; 40 | double dutyIncr = (double)dutyrange / 180; 41 | int duty = dutyMin + (angle * dutyIncr); 42 | 43 | printf("angle %d equates to duty cycle %d\n", angle, duty); 44 | ledc_set_duty_and_update(LEDC_LOW_SPEED_MODE, LEDC_CHANNEL_0, duty, 0); 45 | return duty; 46 | } 47 | 48 | esp_err_t on_servo_url(httpd_req_t *req) 49 | { 50 | client_session_id = httpd_req_to_sockfd(req); 51 | 52 | httpd_ws_frame_t ws_pkt; 53 | memset(&ws_pkt, 0, sizeof(httpd_ws_frame_t)); 54 | ws_pkt.type = HTTPD_WS_TYPE_TEXT; 55 | ws_pkt.payload = malloc(WS_MAX_SIZE); 56 | httpd_ws_recv_frame(req, &ws_pkt, WS_MAX_SIZE); 57 | printf("ws payload: %.*s\n", ws_pkt.len, ws_pkt.payload); 58 | cJSON *payload = cJSON_ParseWithLength((char *)ws_pkt.payload, ws_pkt.len); 59 | int angle = cJSON_GetObjectItem(payload, "angle")->valueint; 60 | cJSON_Delete(payload); 61 | int duty = set_angle(angle); 62 | free(ws_pkt.payload); 63 | 64 | cJSON *responce = cJSON_CreateObject(); 65 | cJSON_AddNumberToObject(responce, "angle", angle); 66 | cJSON_AddNumberToObject(responce, "duty", duty); 67 | 68 | char *responsestr = cJSON_Print(responce); 69 | cJSON_Delete(responce); 70 | 71 | httpd_ws_frame_t ws_responce = { 72 | .final = true, 73 | .fragmented = false, 74 | .type = HTTPD_WS_TYPE_TEXT, 75 | .payload = (uint8_t *)responsestr, 76 | .len = strlen(responsestr)}; 77 | return httpd_ws_send_frame(req, &ws_responce); 78 | free(responsestr); 79 | 80 | return ESP_OK; 81 | } -------------------------------------------------------------------------------- /main/routes/toggleLed.c: -------------------------------------------------------------------------------- 1 | #include "_routes.h" 2 | #include "driver/gpio.h" 3 | 4 | #define LED 2 5 | 6 | void init_led(void) 7 | { 8 | gpio_pad_select_gpio(LED); 9 | gpio_set_direction(LED, GPIO_MODE_OUTPUT); 10 | } 11 | 12 | void toggle_led(bool is_on) 13 | { 14 | gpio_set_level(LED, is_on); 15 | } 16 | 17 | esp_err_t on_toggle_led_url(httpd_req_t *req) 18 | { 19 | char buffer[100]; 20 | memset(&buffer, 0, sizeof(buffer)); 21 | httpd_req_recv(req, buffer, req->content_len); 22 | printf("got here %s\n", buffer); 23 | cJSON *payload = cJSON_Parse(buffer); 24 | cJSON *is_on_json = cJSON_GetObjectItem(payload, "is_on"); 25 | bool is_on = cJSON_IsTrue(is_on_json); 26 | cJSON_Delete(payload); 27 | toggle_led(is_on); 28 | httpd_resp_set_status(req, "204 NO CONTENT"); 29 | httpd_resp_send(req, NULL, 0); 30 | return ESP_OK; 31 | } -------------------------------------------------------------------------------- /meetup.jpg: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mair/React-on-esp32-talk/68ee4ca0191a35bebffda4488dd66a99c2fc6a5b/meetup.jpg -------------------------------------------------------------------------------- /partitions.csv: -------------------------------------------------------------------------------- 1 | # Name, Type, SubType, Offset, Size, Flags 2 | # Note: if you have increased the bootloader size, make sure to update the offsets to avoid overlap 3 | nvs, data, nvs, , 0x6000, 4 | phy_init, data, phy, , 0x1000, 5 | factory, app, factory, , 1M, 6 | spiffs, data, spiffs, , 1M -------------------------------------------------------------------------------- /react on chip.pptx: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/Mair/React-on-esp32-talk/68ee4ca0191a35bebffda4488dd66a99c2fc6a5b/react on chip.pptx -------------------------------------------------------------------------------- /sdkconfig: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file. DO NOT EDIT. 3 | # Espressif IoT Development Framework (ESP-IDF) Project Configuration 4 | # 5 | CONFIG_IDF_CMAKE=y 6 | CONFIG_IDF_TARGET_ARCH_XTENSA=y 7 | CONFIG_IDF_TARGET="esp32" 8 | CONFIG_IDF_TARGET_ESP32=y 9 | CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 10 | 11 | # 12 | # SDK tool configuration 13 | # 14 | CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-" 15 | # CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set 16 | # end of SDK tool configuration 17 | 18 | # 19 | # Build type 20 | # 21 | CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y 22 | # CONFIG_APP_BUILD_TYPE_ELF_RAM is not set 23 | CONFIG_APP_BUILD_GENERATE_BINARIES=y 24 | CONFIG_APP_BUILD_BOOTLOADER=y 25 | CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y 26 | # end of Build type 27 | 28 | # 29 | # Application manager 30 | # 31 | CONFIG_APP_COMPILE_TIME_DATE=y 32 | # CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set 33 | # CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set 34 | # CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set 35 | CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 36 | # end of Application manager 37 | 38 | # 39 | # Bootloader config 40 | # 41 | CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 42 | CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y 43 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set 44 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set 45 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set 46 | # CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set 47 | # CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set 48 | # CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set 49 | CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y 50 | # CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set 51 | # CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set 52 | CONFIG_BOOTLOADER_LOG_LEVEL=3 53 | # CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set 54 | CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y 55 | # CONFIG_BOOTLOADER_FACTORY_RESET is not set 56 | # CONFIG_BOOTLOADER_APP_TEST is not set 57 | CONFIG_BOOTLOADER_WDT_ENABLE=y 58 | # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set 59 | CONFIG_BOOTLOADER_WDT_TIME_MS=9000 60 | # CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set 61 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set 62 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set 63 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set 64 | CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 65 | # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set 66 | # end of Bootloader config 67 | 68 | # 69 | # Security features 70 | # 71 | # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set 72 | # CONFIG_SECURE_BOOT is not set 73 | # CONFIG_SECURE_FLASH_ENC_ENABLED is not set 74 | # end of Security features 75 | 76 | # 77 | # Serial flasher config 78 | # 79 | CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 80 | # CONFIG_ESPTOOLPY_NO_STUB is not set 81 | # CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set 82 | # CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set 83 | CONFIG_ESPTOOLPY_FLASHMODE_DIO=y 84 | # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set 85 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 86 | # CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set 87 | CONFIG_ESPTOOLPY_FLASHFREQ_40M=y 88 | # CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set 89 | # CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set 90 | CONFIG_ESPTOOLPY_FLASHFREQ="40m" 91 | # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set 92 | # CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set 93 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y 94 | # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set 95 | # CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set 96 | CONFIG_ESPTOOLPY_FLASHSIZE="4MB" 97 | CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y 98 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 99 | # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set 100 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 101 | CONFIG_ESPTOOLPY_AFTER_RESET=y 102 | # CONFIG_ESPTOOLPY_AFTER_NORESET is not set 103 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 104 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_CONSOLE is not set 105 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set 106 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set 107 | CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y 108 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set 109 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set 110 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set 111 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set 112 | CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200 113 | CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 114 | # end of Serial flasher config 115 | 116 | # 117 | # Partition Table 118 | # 119 | # CONFIG_PARTITION_TABLE_SINGLE_APP is not set 120 | # CONFIG_PARTITION_TABLE_TWO_OTA is not set 121 | CONFIG_PARTITION_TABLE_CUSTOM=y 122 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 123 | CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" 124 | CONFIG_PARTITION_TABLE_OFFSET=0x8000 125 | CONFIG_PARTITION_TABLE_MD5=y 126 | # end of Partition Table 127 | 128 | # 129 | # Compiler options 130 | # 131 | CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y 132 | # CONFIG_COMPILER_OPTIMIZATION_SIZE is not set 133 | # CONFIG_COMPILER_OPTIMIZATION_PERF is not set 134 | # CONFIG_COMPILER_OPTIMIZATION_NONE is not set 135 | CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y 136 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set 137 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set 138 | # CONFIG_COMPILER_CXX_EXCEPTIONS is not set 139 | # CONFIG_COMPILER_CXX_RTTI is not set 140 | CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y 141 | # CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set 142 | # CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set 143 | # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set 144 | # CONFIG_COMPILER_WARN_WRITE_STRINGS is not set 145 | # CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set 146 | # CONFIG_COMPILER_DUMP_RTL_FILES is not set 147 | # end of Compiler options 148 | 149 | # 150 | # Component config 151 | # 152 | 153 | # 154 | # Application Level Tracing 155 | # 156 | # CONFIG_APPTRACE_DEST_TRAX is not set 157 | CONFIG_APPTRACE_DEST_NONE=y 158 | CONFIG_APPTRACE_LOCK_ENABLE=y 159 | # end of Application Level Tracing 160 | 161 | # 162 | # ESP-ASIO 163 | # 164 | # CONFIG_ASIO_SSL_SUPPORT is not set 165 | # end of ESP-ASIO 166 | 167 | # 168 | # Bluetooth 169 | # 170 | # CONFIG_BT_ENABLED is not set 171 | CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0 172 | CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0 173 | CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0 174 | CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0 175 | CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0 176 | CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 177 | CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 178 | CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 179 | CONFIG_BT_CTRL_MODE_EFF=1 180 | CONFIG_BT_CTRL_BLE_MAX_ACT=10 181 | CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=10 182 | CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0 183 | CONFIG_BT_CTRL_PINNED_TO_CORE=0 184 | CONFIG_BT_CTRL_HCI_TL=1 185 | CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30 186 | CONFIG_BT_CTRL_HW_CCA_EFF=0 187 | CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=0 188 | CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y 189 | CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100 190 | CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 191 | CONFIG_BT_CTRL_BLE_SCAN_DUPL=y 192 | CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0 193 | CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100 194 | CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0 195 | CONFIG_BT_CTRL_SLEEP_MODE_EFF=0 196 | CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0 197 | CONFIG_BT_CTRL_HCI_TL_EFF=1 198 | CONFIG_BT_RESERVE_DRAM=0 199 | CONFIG_BT_NIMBLE_USE_ESP_TIMER=y 200 | # end of Bluetooth 201 | 202 | # 203 | # CoAP Configuration 204 | # 205 | CONFIG_COAP_MBEDTLS_PSK=y 206 | # CONFIG_COAP_MBEDTLS_PKI is not set 207 | # CONFIG_COAP_MBEDTLS_DEBUG is not set 208 | CONFIG_COAP_LOG_DEFAULT_LEVEL=0 209 | # end of CoAP Configuration 210 | 211 | # 212 | # Driver configurations 213 | # 214 | 215 | # 216 | # ADC configuration 217 | # 218 | # CONFIG_ADC_FORCE_XPD_FSM is not set 219 | CONFIG_ADC_DISABLE_DAC=y 220 | # end of ADC configuration 221 | 222 | # 223 | # SPI configuration 224 | # 225 | # CONFIG_SPI_MASTER_IN_IRAM is not set 226 | CONFIG_SPI_MASTER_ISR_IN_IRAM=y 227 | # CONFIG_SPI_SLAVE_IN_IRAM is not set 228 | CONFIG_SPI_SLAVE_ISR_IN_IRAM=y 229 | # end of SPI configuration 230 | 231 | # 232 | # TWAI configuration 233 | # 234 | # CONFIG_TWAI_ISR_IN_IRAM is not set 235 | # CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC is not set 236 | # CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set 237 | # CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set 238 | # CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set 239 | # end of TWAI configuration 240 | 241 | # 242 | # UART configuration 243 | # 244 | # CONFIG_UART_ISR_IN_IRAM is not set 245 | # end of UART configuration 246 | 247 | # 248 | # RTCIO configuration 249 | # 250 | # CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set 251 | # end of RTCIO configuration 252 | 253 | # 254 | # GPIO Configuration 255 | # 256 | # CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set 257 | # end of GPIO Configuration 258 | # end of Driver configurations 259 | 260 | # 261 | # eFuse Bit Manager 262 | # 263 | # CONFIG_EFUSE_CUSTOM_TABLE is not set 264 | # CONFIG_EFUSE_VIRTUAL is not set 265 | # CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set 266 | CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y 267 | # CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set 268 | CONFIG_EFUSE_MAX_BLK_LEN=192 269 | # end of eFuse Bit Manager 270 | 271 | # 272 | # ESP-TLS 273 | # 274 | CONFIG_ESP_TLS_USING_MBEDTLS=y 275 | # CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set 276 | # CONFIG_ESP_TLS_SERVER is not set 277 | # CONFIG_ESP_TLS_PSK_VERIFICATION is not set 278 | # CONFIG_ESP_TLS_INSECURE is not set 279 | # end of ESP-TLS 280 | 281 | # 282 | # ESP32-specific 283 | # 284 | CONFIG_ESP32_REV_MIN_0=y 285 | # CONFIG_ESP32_REV_MIN_1 is not set 286 | # CONFIG_ESP32_REV_MIN_2 is not set 287 | # CONFIG_ESP32_REV_MIN_3 is not set 288 | CONFIG_ESP32_REV_MIN=0 289 | CONFIG_ESP32_DPORT_WORKAROUND=y 290 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set 291 | CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y 292 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set 293 | CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 294 | # CONFIG_ESP32_SPIRAM_SUPPORT is not set 295 | # CONFIG_ESP32_TRAX is not set 296 | CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 297 | # CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set 298 | CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y 299 | CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 300 | # CONFIG_ESP32_ULP_COPROC_ENABLED is not set 301 | CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0 302 | CONFIG_ESP32_DEBUG_OCDAWARE=y 303 | CONFIG_ESP32_BROWNOUT_DET=y 304 | CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y 305 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set 306 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set 307 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set 308 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set 309 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set 310 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set 311 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set 312 | CONFIG_ESP32_BROWNOUT_DET_LVL=0 313 | CONFIG_ESP32_REDUCE_PHY_TX_POWER=y 314 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y 315 | # CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set 316 | # CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set 317 | # CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set 318 | CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y 319 | # CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set 320 | # CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set 321 | # CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set 322 | CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 323 | CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 324 | CONFIG_ESP32_XTAL_FREQ_40=y 325 | # CONFIG_ESP32_XTAL_FREQ_26 is not set 326 | # CONFIG_ESP32_XTAL_FREQ_AUTO is not set 327 | CONFIG_ESP32_XTAL_FREQ=40 328 | # CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set 329 | # CONFIG_ESP32_NO_BLOBS is not set 330 | # CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set 331 | # CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set 332 | # CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set 333 | CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5 334 | # end of ESP32-specific 335 | 336 | # 337 | # ADC-Calibration 338 | # 339 | CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y 340 | CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y 341 | CONFIG_ADC_CAL_LUT_ENABLE=y 342 | # end of ADC-Calibration 343 | 344 | # 345 | # Common ESP-related 346 | # 347 | CONFIG_ESP_ERR_TO_NAME_LOOKUP=y 348 | CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 349 | CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 350 | CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 351 | CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 352 | CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y 353 | CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 354 | CONFIG_ESP_CONSOLE_UART_DEFAULT=y 355 | # CONFIG_ESP_CONSOLE_UART_CUSTOM is not set 356 | # CONFIG_ESP_CONSOLE_NONE is not set 357 | CONFIG_ESP_CONSOLE_UART=y 358 | CONFIG_ESP_CONSOLE_MULTIPLE_UART=y 359 | CONFIG_ESP_CONSOLE_UART_NUM=0 360 | CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 361 | CONFIG_ESP_INT_WDT=y 362 | CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 363 | CONFIG_ESP_INT_WDT_CHECK_CPU1=y 364 | CONFIG_ESP_TASK_WDT=y 365 | # CONFIG_ESP_TASK_WDT_PANIC is not set 366 | CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 367 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 368 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 369 | # CONFIG_ESP_PANIC_HANDLER_IRAM is not set 370 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y 371 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y 372 | CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y 373 | CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y 374 | # end of Common ESP-related 375 | 376 | # 377 | # Ethernet 378 | # 379 | CONFIG_ETH_ENABLED=y 380 | CONFIG_ETH_USE_ESP32_EMAC=y 381 | CONFIG_ETH_PHY_INTERFACE_RMII=y 382 | # CONFIG_ETH_PHY_INTERFACE_MII is not set 383 | CONFIG_ETH_RMII_CLK_INPUT=y 384 | # CONFIG_ETH_RMII_CLK_OUTPUT is not set 385 | CONFIG_ETH_RMII_CLK_IN_GPIO=0 386 | CONFIG_ETH_DMA_BUFFER_SIZE=512 387 | CONFIG_ETH_DMA_RX_BUFFER_NUM=10 388 | CONFIG_ETH_DMA_TX_BUFFER_NUM=10 389 | CONFIG_ETH_USE_SPI_ETHERNET=y 390 | # CONFIG_ETH_SPI_ETHERNET_DM9051 is not set 391 | # CONFIG_ETH_SPI_ETHERNET_W5500 is not set 392 | # CONFIG_ETH_USE_OPENETH is not set 393 | # end of Ethernet 394 | 395 | # 396 | # Event Loop Library 397 | # 398 | # CONFIG_ESP_EVENT_LOOP_PROFILING is not set 399 | CONFIG_ESP_EVENT_POST_FROM_ISR=y 400 | CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y 401 | # end of Event Loop Library 402 | 403 | # 404 | # GDB Stub 405 | # 406 | # end of GDB Stub 407 | 408 | # 409 | # ESP HTTP client 410 | # 411 | CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y 412 | # CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set 413 | # end of ESP HTTP client 414 | 415 | # 416 | # HTTP Server 417 | # 418 | CONFIG_HTTPD_MAX_REQ_HDR_LEN=2048 419 | CONFIG_HTTPD_MAX_URI_LEN=512 420 | CONFIG_HTTPD_ERR_RESP_NO_DELAY=y 421 | CONFIG_HTTPD_PURGE_BUF_LEN=32 422 | # CONFIG_HTTPD_LOG_PURGE_DATA is not set 423 | CONFIG_HTTPD_WS_SUPPORT=y 424 | # end of HTTP Server 425 | 426 | # 427 | # ESP HTTPS OTA 428 | # 429 | # CONFIG_OTA_ALLOW_HTTP is not set 430 | # end of ESP HTTPS OTA 431 | 432 | # 433 | # ESP HTTPS server 434 | # 435 | # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set 436 | # end of ESP HTTPS server 437 | 438 | # 439 | # ESP NETIF Adapter 440 | # 441 | CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 442 | CONFIG_ESP_NETIF_TCPIP_LWIP=y 443 | # CONFIG_ESP_NETIF_LOOPBACK is not set 444 | CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y 445 | # end of ESP NETIF Adapter 446 | 447 | # 448 | # Power Management 449 | # 450 | # CONFIG_PM_ENABLE is not set 451 | # end of Power Management 452 | 453 | # 454 | # ESP System Settings 455 | # 456 | # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set 457 | CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y 458 | # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set 459 | # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set 460 | CONFIG_ESP_SYSTEM_PD_FLASH=y 461 | # CONFIG_ESP_SYSTEM_FLASH_LEAKAGE_WORKAROUND is not set 462 | 463 | # 464 | # Memory protection 465 | # 466 | # end of Memory protection 467 | # end of ESP System Settings 468 | 469 | # 470 | # High resolution timer (esp_timer) 471 | # 472 | # CONFIG_ESP_TIMER_PROFILING is not set 473 | CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y 474 | CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y 475 | CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 476 | # CONFIG_ESP_TIMER_IMPL_FRC2 is not set 477 | CONFIG_ESP_TIMER_IMPL_TG0_LAC=y 478 | # end of High resolution timer (esp_timer) 479 | 480 | # 481 | # Wi-Fi 482 | # 483 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 484 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 485 | # CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set 486 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 487 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 488 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 489 | # CONFIG_ESP32_WIFI_CSI_ENABLED is not set 490 | CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y 491 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 492 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 493 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 494 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 495 | CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y 496 | # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set 497 | CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 498 | CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 499 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_NONE is not set 500 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_ERROR is not set 501 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_WARN is not set 502 | CONFIG_WIFI_LOG_DEFAULT_LEVEL_INFO=y 503 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_DEBUG is not set 504 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_VERBOSE is not set 505 | CONFIG_ESP32_WIFI_IRAM_OPT=y 506 | CONFIG_ESP32_WIFI_RX_IRAM_OPT=y 507 | CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y 508 | # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set 509 | # CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set 510 | # end of Wi-Fi 511 | 512 | # 513 | # PHY 514 | # 515 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 516 | # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set 517 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 518 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 519 | # end of PHY 520 | 521 | # 522 | # Core dump 523 | # 524 | # CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set 525 | # CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set 526 | CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y 527 | # end of Core dump 528 | 529 | # 530 | # FAT Filesystem support 531 | # 532 | # CONFIG_FATFS_CODEPAGE_DYNAMIC is not set 533 | CONFIG_FATFS_CODEPAGE_437=y 534 | # CONFIG_FATFS_CODEPAGE_720 is not set 535 | # CONFIG_FATFS_CODEPAGE_737 is not set 536 | # CONFIG_FATFS_CODEPAGE_771 is not set 537 | # CONFIG_FATFS_CODEPAGE_775 is not set 538 | # CONFIG_FATFS_CODEPAGE_850 is not set 539 | # CONFIG_FATFS_CODEPAGE_852 is not set 540 | # CONFIG_FATFS_CODEPAGE_855 is not set 541 | # CONFIG_FATFS_CODEPAGE_857 is not set 542 | # CONFIG_FATFS_CODEPAGE_860 is not set 543 | # CONFIG_FATFS_CODEPAGE_861 is not set 544 | # CONFIG_FATFS_CODEPAGE_862 is not set 545 | # CONFIG_FATFS_CODEPAGE_863 is not set 546 | # CONFIG_FATFS_CODEPAGE_864 is not set 547 | # CONFIG_FATFS_CODEPAGE_865 is not set 548 | # CONFIG_FATFS_CODEPAGE_866 is not set 549 | # CONFIG_FATFS_CODEPAGE_869 is not set 550 | # CONFIG_FATFS_CODEPAGE_932 is not set 551 | # CONFIG_FATFS_CODEPAGE_936 is not set 552 | # CONFIG_FATFS_CODEPAGE_949 is not set 553 | # CONFIG_FATFS_CODEPAGE_950 is not set 554 | CONFIG_FATFS_CODEPAGE=437 555 | CONFIG_FATFS_LFN_NONE=y 556 | # CONFIG_FATFS_LFN_HEAP is not set 557 | # CONFIG_FATFS_LFN_STACK is not set 558 | CONFIG_FATFS_FS_LOCK=0 559 | CONFIG_FATFS_TIMEOUT_MS=10000 560 | CONFIG_FATFS_PER_FILE_CACHE=y 561 | # CONFIG_FATFS_USE_FASTSEEK is not set 562 | # end of FAT Filesystem support 563 | 564 | # 565 | # Modbus configuration 566 | # 567 | CONFIG_FMB_COMM_MODE_TCP_EN=y 568 | CONFIG_FMB_TCP_PORT_DEFAULT=502 569 | CONFIG_FMB_TCP_PORT_MAX_CONN=5 570 | CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20 571 | CONFIG_FMB_COMM_MODE_RTU_EN=y 572 | CONFIG_FMB_COMM_MODE_ASCII_EN=y 573 | CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150 574 | CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 575 | CONFIG_FMB_QUEUE_LENGTH=20 576 | CONFIG_FMB_PORT_TASK_STACK_SIZE=4096 577 | CONFIG_FMB_SERIAL_BUF_SIZE=256 578 | CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8 579 | CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000 580 | CONFIG_FMB_PORT_TASK_PRIO=10 581 | CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y 582 | CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233 583 | CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 584 | CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 585 | CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 586 | CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 587 | CONFIG_FMB_TIMER_PORT_ENABLED=y 588 | CONFIG_FMB_TIMER_GROUP=0 589 | CONFIG_FMB_TIMER_INDEX=0 590 | # CONFIG_FMB_TIMER_ISR_IN_IRAM is not set 591 | # end of Modbus configuration 592 | 593 | # 594 | # FreeRTOS 595 | # 596 | # CONFIG_FREERTOS_UNICORE is not set 597 | CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF 598 | CONFIG_FREERTOS_CORETIMER_0=y 599 | # CONFIG_FREERTOS_CORETIMER_1 is not set 600 | CONFIG_FREERTOS_HZ=100 601 | CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y 602 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set 603 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set 604 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 605 | # CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set 606 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 607 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 608 | CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y 609 | # CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set 610 | # CONFIG_FREERTOS_ASSERT_DISABLE is not set 611 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304 612 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 613 | # CONFIG_FREERTOS_LEGACY_HOOKS is not set 614 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 615 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y 616 | # CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set 617 | CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 618 | CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 619 | CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 620 | CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 621 | # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set 622 | # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set 623 | CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y 624 | CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y 625 | # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set 626 | # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set 627 | CONFIG_FREERTOS_DEBUG_OCDAWARE=y 628 | # CONFIG_FREERTOS_FPU_IN_ISR is not set 629 | # end of FreeRTOS 630 | 631 | # 632 | # Heap memory debugging 633 | # 634 | CONFIG_HEAP_POISONING_DISABLED=y 635 | # CONFIG_HEAP_POISONING_LIGHT is not set 636 | # CONFIG_HEAP_POISONING_COMPREHENSIVE is not set 637 | CONFIG_HEAP_TRACING_OFF=y 638 | # CONFIG_HEAP_TRACING_STANDALONE is not set 639 | # CONFIG_HEAP_TRACING_TOHOST is not set 640 | # CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set 641 | # end of Heap memory debugging 642 | 643 | # 644 | # jsmn 645 | # 646 | # CONFIG_JSMN_PARENT_LINKS is not set 647 | # CONFIG_JSMN_STRICT is not set 648 | # end of jsmn 649 | 650 | # 651 | # libsodium 652 | # 653 | # end of libsodium 654 | 655 | # 656 | # Log output 657 | # 658 | # CONFIG_LOG_DEFAULT_LEVEL_NONE is not set 659 | # CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set 660 | # CONFIG_LOG_DEFAULT_LEVEL_WARN is not set 661 | CONFIG_LOG_DEFAULT_LEVEL_INFO=y 662 | # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set 663 | # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set 664 | CONFIG_LOG_DEFAULT_LEVEL=3 665 | CONFIG_LOG_COLORS=y 666 | CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y 667 | # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set 668 | # end of Log output 669 | 670 | # 671 | # LWIP 672 | # 673 | CONFIG_LWIP_LOCAL_HOSTNAME="espressif" 674 | CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y 675 | # CONFIG_LWIP_L2_TO_L3_COPY is not set 676 | # CONFIG_LWIP_IRAM_OPTIMIZATION is not set 677 | CONFIG_LWIP_TIMERS_ONDEMAND=y 678 | CONFIG_LWIP_MAX_SOCKETS=10 679 | # CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set 680 | # CONFIG_LWIP_SO_LINGER is not set 681 | CONFIG_LWIP_SO_REUSE=y 682 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 683 | # CONFIG_LWIP_SO_RCVBUF is not set 684 | # CONFIG_LWIP_NETBUF_RECVINFO is not set 685 | CONFIG_LWIP_IP4_FRAG=y 686 | CONFIG_LWIP_IP6_FRAG=y 687 | # CONFIG_LWIP_IP4_REASSEMBLY is not set 688 | # CONFIG_LWIP_IP6_REASSEMBLY is not set 689 | # CONFIG_LWIP_IP_FORWARD is not set 690 | # CONFIG_LWIP_STATS is not set 691 | # CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set 692 | CONFIG_LWIP_ESP_GRATUITOUS_ARP=y 693 | CONFIG_LWIP_GARP_TMR_INTERVAL=60 694 | CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 695 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 696 | # CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set 697 | # CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set 698 | 699 | # 700 | # DHCP server 701 | # 702 | CONFIG_LWIP_DHCPS=y 703 | CONFIG_LWIP_DHCPS_LEASE_UNIT=60 704 | CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 705 | # end of DHCP server 706 | 707 | # CONFIG_LWIP_AUTOIP is not set 708 | CONFIG_LWIP_IPV6=y 709 | # CONFIG_LWIP_IPV6_AUTOCONFIG is not set 710 | CONFIG_LWIP_NETIF_LOOPBACK=y 711 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 712 | 713 | # 714 | # TCP 715 | # 716 | CONFIG_LWIP_MAX_ACTIVE_TCP=16 717 | CONFIG_LWIP_MAX_LISTENING_TCP=16 718 | CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y 719 | CONFIG_LWIP_TCP_MAXRTX=12 720 | CONFIG_LWIP_TCP_SYNMAXRTX=12 721 | CONFIG_LWIP_TCP_MSS=1440 722 | CONFIG_LWIP_TCP_TMR_INTERVAL=250 723 | CONFIG_LWIP_TCP_MSL=60000 724 | CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 725 | CONFIG_LWIP_TCP_WND_DEFAULT=5744 726 | CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 727 | CONFIG_LWIP_TCP_QUEUE_OOSEQ=y 728 | # CONFIG_LWIP_TCP_SACK_OUT is not set 729 | # CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set 730 | CONFIG_LWIP_TCP_OVERSIZE_MSS=y 731 | # CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set 732 | # CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set 733 | CONFIG_LWIP_TCP_RTO_TIME=1500 734 | # end of TCP 735 | 736 | # 737 | # UDP 738 | # 739 | CONFIG_LWIP_MAX_UDP_PCBS=16 740 | CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 741 | # end of UDP 742 | 743 | # 744 | # Checksums 745 | # 746 | # CONFIG_LWIP_CHECKSUM_CHECK_IP is not set 747 | # CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set 748 | CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y 749 | # end of Checksums 750 | 751 | CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 752 | CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 753 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set 754 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set 755 | CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF 756 | # CONFIG_LWIP_PPP_SUPPORT is not set 757 | CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 758 | CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 759 | # CONFIG_LWIP_SLIP_SUPPORT is not set 760 | 761 | # 762 | # ICMP 763 | # 764 | CONFIG_LWIP_ICMP=y 765 | # CONFIG_LWIP_MULTICAST_PING is not set 766 | # CONFIG_LWIP_BROADCAST_PING is not set 767 | # end of ICMP 768 | 769 | # 770 | # LWIP RAW API 771 | # 772 | CONFIG_LWIP_MAX_RAW_PCBS=16 773 | # end of LWIP RAW API 774 | 775 | # 776 | # SNTP 777 | # 778 | CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 779 | CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 780 | # end of SNTP 781 | 782 | CONFIG_LWIP_ESP_LWIP_ASSERT=y 783 | 784 | # 785 | # Hooks 786 | # 787 | # CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set 788 | CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y 789 | # CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set 790 | CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y 791 | # CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set 792 | # CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set 793 | CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y 794 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set 795 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set 796 | # end of Hooks 797 | 798 | # CONFIG_LWIP_DEBUG is not set 799 | # end of LWIP 800 | 801 | # 802 | # mbedTLS 803 | # 804 | CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y 805 | # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set 806 | # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set 807 | CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y 808 | CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 809 | CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 810 | # CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set 811 | # CONFIG_MBEDTLS_DEBUG is not set 812 | 813 | # 814 | # Certificate Bundle 815 | # 816 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y 817 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y 818 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set 819 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set 820 | # CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set 821 | # end of Certificate Bundle 822 | 823 | # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set 824 | # CONFIG_MBEDTLS_CMAC_C is not set 825 | CONFIG_MBEDTLS_HARDWARE_AES=y 826 | CONFIG_MBEDTLS_HARDWARE_MPI=y 827 | CONFIG_MBEDTLS_HARDWARE_SHA=y 828 | CONFIG_MBEDTLS_ROM_MD5=y 829 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set 830 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set 831 | CONFIG_MBEDTLS_HAVE_TIME=y 832 | # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set 833 | CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y 834 | CONFIG_MBEDTLS_SHA512_C=y 835 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 836 | # CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set 837 | # CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set 838 | # CONFIG_MBEDTLS_TLS_DISABLED is not set 839 | CONFIG_MBEDTLS_TLS_SERVER=y 840 | CONFIG_MBEDTLS_TLS_CLIENT=y 841 | CONFIG_MBEDTLS_TLS_ENABLED=y 842 | 843 | # 844 | # TLS Key Exchange Methods 845 | # 846 | # CONFIG_MBEDTLS_PSK_MODES is not set 847 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 848 | CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y 849 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 850 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 851 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 852 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 853 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 854 | # end of TLS Key Exchange Methods 855 | 856 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 857 | # CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set 858 | CONFIG_MBEDTLS_SSL_PROTO_TLS1=y 859 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y 860 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 861 | # CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set 862 | CONFIG_MBEDTLS_SSL_ALPN=y 863 | CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y 864 | CONFIG_MBEDTLS_X509_CHECK_KEY_USAGE=y 865 | CONFIG_MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE=y 866 | CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y 867 | 868 | # 869 | # Symmetric Ciphers 870 | # 871 | CONFIG_MBEDTLS_AES_C=y 872 | # CONFIG_MBEDTLS_CAMELLIA_C is not set 873 | # CONFIG_MBEDTLS_DES_C is not set 874 | CONFIG_MBEDTLS_RC4_DISABLED=y 875 | # CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set 876 | # CONFIG_MBEDTLS_RC4_ENABLED is not set 877 | # CONFIG_MBEDTLS_BLOWFISH_C is not set 878 | # CONFIG_MBEDTLS_XTEA_C is not set 879 | CONFIG_MBEDTLS_CCM_C=y 880 | CONFIG_MBEDTLS_GCM_C=y 881 | # CONFIG_MBEDTLS_NIST_KW_C is not set 882 | # end of Symmetric Ciphers 883 | 884 | # CONFIG_MBEDTLS_RIPEMD160_C is not set 885 | 886 | # 887 | # Certificates 888 | # 889 | CONFIG_MBEDTLS_PEM_PARSE_C=y 890 | CONFIG_MBEDTLS_PEM_WRITE_C=y 891 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 892 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 893 | # end of Certificates 894 | 895 | CONFIG_MBEDTLS_ECP_C=y 896 | CONFIG_MBEDTLS_ECDH_C=y 897 | CONFIG_MBEDTLS_ECDSA_C=y 898 | # CONFIG_MBEDTLS_ECJPAKE_C is not set 899 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 900 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 901 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 902 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 903 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 904 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 905 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 906 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 907 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 908 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 909 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 910 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 911 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 912 | # CONFIG_MBEDTLS_POLY1305_C is not set 913 | # CONFIG_MBEDTLS_CHACHA20_C is not set 914 | # CONFIG_MBEDTLS_HKDF_C is not set 915 | # CONFIG_MBEDTLS_THREADING_C is not set 916 | # CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set 917 | # CONFIG_MBEDTLS_SECURITY_RISKS is not set 918 | # end of mbedTLS 919 | 920 | # 921 | # mDNS 922 | # 923 | CONFIG_MDNS_MAX_SERVICES=10 924 | CONFIG_MDNS_TASK_PRIORITY=1 925 | CONFIG_MDNS_TASK_STACK_SIZE=4096 926 | # CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set 927 | CONFIG_MDNS_TASK_AFFINITY_CPU0=y 928 | # CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set 929 | CONFIG_MDNS_TASK_AFFINITY=0x0 930 | CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 931 | # CONFIG_MDNS_STRICT_MODE is not set 932 | CONFIG_MDNS_TIMER_PERIOD_MS=100 933 | # end of mDNS 934 | 935 | # 936 | # ESP-MQTT Configurations 937 | # 938 | CONFIG_MQTT_PROTOCOL_311=y 939 | CONFIG_MQTT_TRANSPORT_SSL=y 940 | CONFIG_MQTT_TRANSPORT_WEBSOCKET=y 941 | CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y 942 | # CONFIG_MQTT_MSG_ID_INCREMENTAL is not set 943 | # CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set 944 | # CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set 945 | # CONFIG_MQTT_USE_CUSTOM_CONFIG is not set 946 | # CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set 947 | # CONFIG_MQTT_CUSTOM_OUTBOX is not set 948 | # end of ESP-MQTT Configurations 949 | 950 | # 951 | # Newlib 952 | # 953 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 954 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set 955 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set 956 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set 957 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set 958 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 959 | # CONFIG_NEWLIB_NANO_FORMAT is not set 960 | # end of Newlib 961 | 962 | # 963 | # NVS 964 | # 965 | # end of NVS 966 | 967 | # 968 | # OpenSSL 969 | # 970 | # CONFIG_OPENSSL_DEBUG is not set 971 | CONFIG_OPENSSL_ERROR_STACK=y 972 | # CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set 973 | CONFIG_OPENSSL_ASSERT_EXIT=y 974 | # end of OpenSSL 975 | 976 | # 977 | # PThreads 978 | # 979 | CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 980 | CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 981 | CONFIG_PTHREAD_STACK_MIN=768 982 | CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y 983 | # CONFIG_PTHREAD_DEFAULT_CORE_0 is not set 984 | # CONFIG_PTHREAD_DEFAULT_CORE_1 is not set 985 | CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 986 | CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" 987 | # end of PThreads 988 | 989 | # 990 | # SPI Flash driver 991 | # 992 | # CONFIG_SPI_FLASH_VERIFY_WRITE is not set 993 | # CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set 994 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 995 | CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y 996 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set 997 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set 998 | # CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set 999 | # CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set 1000 | # CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set 1001 | CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y 1002 | CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 1003 | CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 1004 | CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 1005 | # CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set 1006 | # CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set 1007 | 1008 | # 1009 | # Auto-detect flash chips 1010 | # 1011 | CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y 1012 | CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y 1013 | CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y 1014 | CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y 1015 | # end of Auto-detect flash chips 1016 | 1017 | CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y 1018 | # end of SPI Flash driver 1019 | 1020 | # 1021 | # SPIFFS Configuration 1022 | # 1023 | CONFIG_SPIFFS_MAX_PARTITIONS=3 1024 | 1025 | # 1026 | # SPIFFS Cache Configuration 1027 | # 1028 | CONFIG_SPIFFS_CACHE=y 1029 | CONFIG_SPIFFS_CACHE_WR=y 1030 | # CONFIG_SPIFFS_CACHE_STATS is not set 1031 | # end of SPIFFS Cache Configuration 1032 | 1033 | CONFIG_SPIFFS_PAGE_CHECK=y 1034 | CONFIG_SPIFFS_GC_MAX_RUNS=10 1035 | # CONFIG_SPIFFS_GC_STATS is not set 1036 | CONFIG_SPIFFS_PAGE_SIZE=256 1037 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 1038 | # CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set 1039 | CONFIG_SPIFFS_USE_MAGIC=y 1040 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 1041 | CONFIG_SPIFFS_META_LENGTH=4 1042 | CONFIG_SPIFFS_USE_MTIME=y 1043 | 1044 | # 1045 | # Debug Configuration 1046 | # 1047 | # CONFIG_SPIFFS_DBG is not set 1048 | # CONFIG_SPIFFS_API_DBG is not set 1049 | # CONFIG_SPIFFS_GC_DBG is not set 1050 | # CONFIG_SPIFFS_CACHE_DBG is not set 1051 | # CONFIG_SPIFFS_CHECK_DBG is not set 1052 | # CONFIG_SPIFFS_TEST_VISUALISATION is not set 1053 | # end of Debug Configuration 1054 | # end of SPIFFS Configuration 1055 | 1056 | # 1057 | # TCP Transport 1058 | # 1059 | 1060 | # 1061 | # Websocket 1062 | # 1063 | CONFIG_WS_TRANSPORT=y 1064 | CONFIG_WS_BUFFER_SIZE=1024 1065 | # end of Websocket 1066 | # end of TCP Transport 1067 | 1068 | # 1069 | # TinyUSB 1070 | # 1071 | # end of TinyUSB 1072 | 1073 | # 1074 | # Unity unit testing library 1075 | # 1076 | CONFIG_UNITY_ENABLE_FLOAT=y 1077 | CONFIG_UNITY_ENABLE_DOUBLE=y 1078 | # CONFIG_UNITY_ENABLE_COLOR is not set 1079 | CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y 1080 | # CONFIG_UNITY_ENABLE_FIXTURE is not set 1081 | # CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set 1082 | # end of Unity unit testing library 1083 | 1084 | # 1085 | # Virtual file system 1086 | # 1087 | CONFIG_VFS_SUPPORT_IO=y 1088 | CONFIG_VFS_SUPPORT_DIR=y 1089 | CONFIG_VFS_SUPPORT_SELECT=y 1090 | CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1091 | CONFIG_VFS_SUPPORT_TERMIOS=y 1092 | 1093 | # 1094 | # Host File System I/O (Semihosting) 1095 | # 1096 | CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1097 | CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 1098 | # end of Host File System I/O (Semihosting) 1099 | # end of Virtual file system 1100 | 1101 | # 1102 | # Wear Levelling 1103 | # 1104 | # CONFIG_WL_SECTOR_SIZE_512 is not set 1105 | CONFIG_WL_SECTOR_SIZE_4096=y 1106 | CONFIG_WL_SECTOR_SIZE=4096 1107 | # end of Wear Levelling 1108 | 1109 | # 1110 | # Wi-Fi Provisioning Manager 1111 | # 1112 | CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 1113 | CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 1114 | # end of Wi-Fi Provisioning Manager 1115 | 1116 | # 1117 | # Supplicant 1118 | # 1119 | CONFIG_WPA_MBEDTLS_CRYPTO=y 1120 | # CONFIG_WPA_WAPI_PSK is not set 1121 | # CONFIG_WPA_DEBUG_PRINT is not set 1122 | # CONFIG_WPA_TESTING_OPTIONS is not set 1123 | # CONFIG_WPA_WPS_STRICT is not set 1124 | # CONFIG_WPA_11KV_SUPPORT is not set 1125 | # end of Supplicant 1126 | # end of Component config 1127 | 1128 | # 1129 | # Compatibility options 1130 | # 1131 | # CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set 1132 | # end of Compatibility options 1133 | 1134 | # Deprecated options for backward compatibility 1135 | CONFIG_TOOLPREFIX="xtensa-esp32-elf-" 1136 | # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set 1137 | # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set 1138 | # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set 1139 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 1140 | # CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set 1141 | # CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set 1142 | CONFIG_LOG_BOOTLOADER_LEVEL=3 1143 | # CONFIG_APP_ROLLBACK_ENABLE is not set 1144 | # CONFIG_FLASH_ENCRYPTION_ENABLED is not set 1145 | # CONFIG_FLASHMODE_QIO is not set 1146 | # CONFIG_FLASHMODE_QOUT is not set 1147 | CONFIG_FLASHMODE_DIO=y 1148 | # CONFIG_FLASHMODE_DOUT is not set 1149 | # CONFIG_MONITOR_BAUD_9600B is not set 1150 | # CONFIG_MONITOR_BAUD_57600B is not set 1151 | CONFIG_MONITOR_BAUD_115200B=y 1152 | # CONFIG_MONITOR_BAUD_230400B is not set 1153 | # CONFIG_MONITOR_BAUD_921600B is not set 1154 | # CONFIG_MONITOR_BAUD_2MB is not set 1155 | # CONFIG_MONITOR_BAUD_OTHER is not set 1156 | CONFIG_MONITOR_BAUD_OTHER_VAL=115200 1157 | CONFIG_MONITOR_BAUD=115200 1158 | CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y 1159 | # CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set 1160 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 1161 | # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set 1162 | # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set 1163 | # CONFIG_CXX_EXCEPTIONS is not set 1164 | CONFIG_STACK_CHECK_NONE=y 1165 | # CONFIG_STACK_CHECK_NORM is not set 1166 | # CONFIG_STACK_CHECK_STRONG is not set 1167 | # CONFIG_STACK_CHECK_ALL is not set 1168 | # CONFIG_WARN_WRITE_STRINGS is not set 1169 | # CONFIG_DISABLE_GCC8_WARNINGS is not set 1170 | # CONFIG_ESP32_APPTRACE_DEST_TRAX is not set 1171 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 1172 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 1173 | CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 1174 | CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 1175 | CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 1176 | CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 1177 | CONFIG_ADC2_DISABLE_DAC=y 1178 | # CONFIG_SPIRAM_SUPPORT is not set 1179 | CONFIG_TRACEMEM_RESERVE_DRAM=0x0 1180 | # CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set 1181 | CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y 1182 | CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 1183 | # CONFIG_ULP_COPROC_ENABLED is not set 1184 | CONFIG_ULP_COPROC_RESERVE_MEM=0 1185 | CONFIG_BROWNOUT_DET=y 1186 | CONFIG_BROWNOUT_DET_LVL_SEL_0=y 1187 | # CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set 1188 | # CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set 1189 | # CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set 1190 | # CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set 1191 | # CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set 1192 | # CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set 1193 | # CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set 1194 | CONFIG_BROWNOUT_DET_LVL=0 1195 | CONFIG_REDUCE_PHY_TX_POWER=y 1196 | CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y 1197 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set 1198 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set 1199 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set 1200 | # CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set 1201 | # CONFIG_NO_BLOBS is not set 1202 | # CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set 1203 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 1204 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 1205 | CONFIG_MAIN_TASK_STACK_SIZE=3584 1206 | CONFIG_IPC_TASK_STACK_SIZE=1024 1207 | CONFIG_CONSOLE_UART_DEFAULT=y 1208 | # CONFIG_CONSOLE_UART_CUSTOM is not set 1209 | # CONFIG_ESP_CONSOLE_UART_NONE is not set 1210 | CONFIG_CONSOLE_UART=y 1211 | CONFIG_CONSOLE_UART_NUM=0 1212 | CONFIG_CONSOLE_UART_BAUDRATE=115200 1213 | CONFIG_INT_WDT=y 1214 | CONFIG_INT_WDT_TIMEOUT_MS=300 1215 | CONFIG_INT_WDT_CHECK_CPU1=y 1216 | CONFIG_TASK_WDT=y 1217 | # CONFIG_TASK_WDT_PANIC is not set 1218 | CONFIG_TASK_WDT_TIMEOUT_S=5 1219 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 1220 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 1221 | # CONFIG_EVENT_LOOP_PROFILING is not set 1222 | CONFIG_POST_EVENTS_FROM_ISR=y 1223 | CONFIG_POST_EVENTS_FROM_IRAM_ISR=y 1224 | # CONFIG_ESP32S2_PANIC_PRINT_HALT is not set 1225 | CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y 1226 | # CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set 1227 | # CONFIG_ESP32S2_PANIC_GDBSTUB is not set 1228 | CONFIG_TIMER_TASK_STACK_SIZE=3584 1229 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set 1230 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set 1231 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 1232 | CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150 1233 | CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 1234 | CONFIG_MB_QUEUE_LENGTH=20 1235 | CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096 1236 | CONFIG_MB_SERIAL_BUF_SIZE=256 1237 | CONFIG_MB_SERIAL_TASK_PRIO=10 1238 | CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y 1239 | CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233 1240 | CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 1241 | CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 1242 | CONFIG_MB_CONTROLLER_STACK_SIZE=4096 1243 | CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 1244 | CONFIG_MB_TIMER_PORT_ENABLED=y 1245 | CONFIG_MB_TIMER_GROUP=0 1246 | CONFIG_MB_TIMER_INDEX=0 1247 | # CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set 1248 | CONFIG_TIMER_TASK_PRIORITY=1 1249 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 1250 | CONFIG_TIMER_QUEUE_LENGTH=10 1251 | # CONFIG_L2_TO_L3_COPY is not set 1252 | # CONFIG_USE_ONLY_LWIP_SELECT is not set 1253 | CONFIG_ESP_GRATUITOUS_ARP=y 1254 | CONFIG_GARP_TMR_INTERVAL=60 1255 | CONFIG_TCPIP_RECVMBOX_SIZE=32 1256 | CONFIG_TCP_MAXRTX=12 1257 | CONFIG_TCP_SYNMAXRTX=12 1258 | CONFIG_TCP_MSS=1440 1259 | CONFIG_TCP_MSL=60000 1260 | CONFIG_TCP_SND_BUF_DEFAULT=5744 1261 | CONFIG_TCP_WND_DEFAULT=5744 1262 | CONFIG_TCP_RECVMBOX_SIZE=6 1263 | CONFIG_TCP_QUEUE_OOSEQ=y 1264 | # CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set 1265 | CONFIG_TCP_OVERSIZE_MSS=y 1266 | # CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set 1267 | # CONFIG_TCP_OVERSIZE_DISABLE is not set 1268 | CONFIG_UDP_RECVMBOX_SIZE=6 1269 | CONFIG_TCPIP_TASK_STACK_SIZE=3072 1270 | CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 1271 | # CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set 1272 | # CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set 1273 | CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF 1274 | # CONFIG_PPP_SUPPORT is not set 1275 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 1276 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 1277 | CONFIG_ESP32_PTHREAD_STACK_MIN=768 1278 | CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y 1279 | # CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set 1280 | # CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set 1281 | CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 1282 | CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" 1283 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 1284 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set 1285 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set 1286 | CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1287 | CONFIG_SUPPORT_TERMIOS=y 1288 | CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1289 | CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 1290 | # End of deprecated options 1291 | -------------------------------------------------------------------------------- /sdkconfig.old: -------------------------------------------------------------------------------- 1 | # 2 | # Automatically generated file. DO NOT EDIT. 3 | # Espressif IoT Development Framework (ESP-IDF) Project Configuration 4 | # 5 | CONFIG_IDF_CMAKE=y 6 | CONFIG_IDF_TARGET_ARCH_XTENSA=y 7 | CONFIG_IDF_TARGET="esp32" 8 | CONFIG_IDF_TARGET_ESP32=y 9 | CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 10 | 11 | # 12 | # SDK tool configuration 13 | # 14 | CONFIG_SDK_TOOLPREFIX="xtensa-esp32-elf-" 15 | # CONFIG_SDK_TOOLCHAIN_SUPPORTS_TIME_WIDE_64_BITS is not set 16 | # end of SDK tool configuration 17 | 18 | # 19 | # Build type 20 | # 21 | CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y 22 | # CONFIG_APP_BUILD_TYPE_ELF_RAM is not set 23 | CONFIG_APP_BUILD_GENERATE_BINARIES=y 24 | CONFIG_APP_BUILD_BOOTLOADER=y 25 | CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y 26 | # end of Build type 27 | 28 | # 29 | # Application manager 30 | # 31 | CONFIG_APP_COMPILE_TIME_DATE=y 32 | # CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set 33 | # CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set 34 | # CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set 35 | CONFIG_APP_RETRIEVE_LEN_ELF_SHA=16 36 | # end of Application manager 37 | 38 | # 39 | # Bootloader config 40 | # 41 | CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 42 | CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y 43 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set 44 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set 45 | # CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set 46 | # CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set 47 | # CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set 48 | # CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set 49 | CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y 50 | # CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set 51 | # CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set 52 | CONFIG_BOOTLOADER_LOG_LEVEL=3 53 | # CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set 54 | CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y 55 | # CONFIG_BOOTLOADER_FACTORY_RESET is not set 56 | # CONFIG_BOOTLOADER_APP_TEST is not set 57 | CONFIG_BOOTLOADER_WDT_ENABLE=y 58 | # CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set 59 | CONFIG_BOOTLOADER_WDT_TIME_MS=9000 60 | # CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set 61 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set 62 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set 63 | # CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set 64 | CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 65 | # CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set 66 | # end of Bootloader config 67 | 68 | # 69 | # Security features 70 | # 71 | # CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set 72 | # CONFIG_SECURE_BOOT is not set 73 | # CONFIG_SECURE_FLASH_ENC_ENABLED is not set 74 | # end of Security features 75 | 76 | # 77 | # Serial flasher config 78 | # 79 | CONFIG_ESPTOOLPY_BAUD_OTHER_VAL=115200 80 | # CONFIG_ESPTOOLPY_NO_STUB is not set 81 | # CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set 82 | # CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set 83 | CONFIG_ESPTOOLPY_FLASHMODE_DIO=y 84 | # CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set 85 | CONFIG_ESPTOOLPY_FLASHMODE="dio" 86 | # CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set 87 | CONFIG_ESPTOOLPY_FLASHFREQ_40M=y 88 | # CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set 89 | # CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set 90 | CONFIG_ESPTOOLPY_FLASHFREQ="40m" 91 | # CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set 92 | # CONFIG_ESPTOOLPY_FLASHSIZE_2MB is not set 93 | CONFIG_ESPTOOLPY_FLASHSIZE_4MB=y 94 | # CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set 95 | # CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set 96 | CONFIG_ESPTOOLPY_FLASHSIZE="4MB" 97 | CONFIG_ESPTOOLPY_FLASHSIZE_DETECT=y 98 | CONFIG_ESPTOOLPY_BEFORE_RESET=y 99 | # CONFIG_ESPTOOLPY_BEFORE_NORESET is not set 100 | CONFIG_ESPTOOLPY_BEFORE="default_reset" 101 | CONFIG_ESPTOOLPY_AFTER_RESET=y 102 | # CONFIG_ESPTOOLPY_AFTER_NORESET is not set 103 | CONFIG_ESPTOOLPY_AFTER="hard_reset" 104 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_CONSOLE is not set 105 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_9600B is not set 106 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_57600B is not set 107 | CONFIG_ESPTOOLPY_MONITOR_BAUD_115200B=y 108 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_230400B is not set 109 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_921600B is not set 110 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_2MB is not set 111 | # CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER is not set 112 | CONFIG_ESPTOOLPY_MONITOR_BAUD_OTHER_VAL=115200 113 | CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 114 | # end of Serial flasher config 115 | 116 | # 117 | # Partition Table 118 | # 119 | # CONFIG_PARTITION_TABLE_SINGLE_APP is not set 120 | # CONFIG_PARTITION_TABLE_TWO_OTA is not set 121 | CONFIG_PARTITION_TABLE_CUSTOM=y 122 | CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" 123 | CONFIG_PARTITION_TABLE_FILENAME="partitions.csv" 124 | CONFIG_PARTITION_TABLE_OFFSET=0x8000 125 | CONFIG_PARTITION_TABLE_MD5=y 126 | # end of Partition Table 127 | 128 | # 129 | # Compiler options 130 | # 131 | CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y 132 | # CONFIG_COMPILER_OPTIMIZATION_SIZE is not set 133 | # CONFIG_COMPILER_OPTIMIZATION_PERF is not set 134 | # CONFIG_COMPILER_OPTIMIZATION_NONE is not set 135 | CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y 136 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set 137 | # CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set 138 | # CONFIG_COMPILER_CXX_EXCEPTIONS is not set 139 | # CONFIG_COMPILER_CXX_RTTI is not set 140 | CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y 141 | # CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set 142 | # CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set 143 | # CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set 144 | # CONFIG_COMPILER_WARN_WRITE_STRINGS is not set 145 | # CONFIG_COMPILER_DISABLE_GCC8_WARNINGS is not set 146 | # CONFIG_COMPILER_DUMP_RTL_FILES is not set 147 | # end of Compiler options 148 | 149 | # 150 | # Component config 151 | # 152 | 153 | # 154 | # Application Level Tracing 155 | # 156 | # CONFIG_APPTRACE_DEST_TRAX is not set 157 | CONFIG_APPTRACE_DEST_NONE=y 158 | CONFIG_APPTRACE_LOCK_ENABLE=y 159 | # end of Application Level Tracing 160 | 161 | # 162 | # ESP-ASIO 163 | # 164 | # CONFIG_ASIO_SSL_SUPPORT is not set 165 | # end of ESP-ASIO 166 | 167 | # 168 | # Bluetooth 169 | # 170 | # CONFIG_BT_ENABLED is not set 171 | CONFIG_BTDM_CTRL_BR_EDR_SCO_DATA_PATH_EFF=0 172 | CONFIG_BTDM_CTRL_PCM_ROLE_EFF=0 173 | CONFIG_BTDM_CTRL_PCM_POLAR_EFF=0 174 | CONFIG_BTDM_CTRL_BLE_MAX_CONN_EFF=0 175 | CONFIG_BTDM_CTRL_BR_EDR_MAX_ACL_CONN_EFF=0 176 | CONFIG_BTDM_CTRL_BR_EDR_MAX_SYNC_CONN_EFF=0 177 | CONFIG_BTDM_CTRL_PINNED_TO_CORE=0 178 | CONFIG_BTDM_BLE_SLEEP_CLOCK_ACCURACY_INDEX_EFF=1 179 | CONFIG_BT_CTRL_MODE_EFF=1 180 | CONFIG_BT_CTRL_BLE_MAX_ACT=10 181 | CONFIG_BT_CTRL_BLE_MAX_ACT_EFF=10 182 | CONFIG_BT_CTRL_BLE_STATIC_ACL_TX_BUF_NB=0 183 | CONFIG_BT_CTRL_PINNED_TO_CORE=0 184 | CONFIG_BT_CTRL_HCI_TL=1 185 | CONFIG_BT_CTRL_ADV_DUP_FILT_MAX=30 186 | CONFIG_BT_CTRL_HW_CCA_EFF=0 187 | CONFIG_BT_CTRL_DFT_TX_POWER_LEVEL_EFF=0 188 | CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_SUPP=y 189 | CONFIG_BT_CTRL_BLE_ADV_REPORT_FLOW_CTRL_NUM=100 190 | CONFIG_BT_CTRL_BLE_ADV_REPORT_DISCARD_THRSHOLD=20 191 | CONFIG_BT_CTRL_BLE_SCAN_DUPL=y 192 | CONFIG_BT_CTRL_SCAN_DUPL_TYPE=0 193 | CONFIG_BT_CTRL_SCAN_DUPL_CACHE_SIZE=100 194 | CONFIG_BT_CTRL_COEX_PHY_CODED_TX_RX_TLIM_EFF=0 195 | CONFIG_BT_CTRL_SLEEP_MODE_EFF=0 196 | CONFIG_BT_CTRL_SLEEP_CLOCK_EFF=0 197 | CONFIG_BT_CTRL_HCI_TL_EFF=1 198 | CONFIG_BT_RESERVE_DRAM=0 199 | CONFIG_BT_NIMBLE_USE_ESP_TIMER=y 200 | # end of Bluetooth 201 | 202 | # 203 | # CoAP Configuration 204 | # 205 | CONFIG_COAP_MBEDTLS_PSK=y 206 | # CONFIG_COAP_MBEDTLS_PKI is not set 207 | # CONFIG_COAP_MBEDTLS_DEBUG is not set 208 | CONFIG_COAP_LOG_DEFAULT_LEVEL=0 209 | # end of CoAP Configuration 210 | 211 | # 212 | # Driver configurations 213 | # 214 | 215 | # 216 | # ADC configuration 217 | # 218 | # CONFIG_ADC_FORCE_XPD_FSM is not set 219 | CONFIG_ADC_DISABLE_DAC=y 220 | # end of ADC configuration 221 | 222 | # 223 | # SPI configuration 224 | # 225 | # CONFIG_SPI_MASTER_IN_IRAM is not set 226 | CONFIG_SPI_MASTER_ISR_IN_IRAM=y 227 | # CONFIG_SPI_SLAVE_IN_IRAM is not set 228 | CONFIG_SPI_SLAVE_ISR_IN_IRAM=y 229 | # end of SPI configuration 230 | 231 | # 232 | # TWAI configuration 233 | # 234 | # CONFIG_TWAI_ISR_IN_IRAM is not set 235 | # CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC is not set 236 | # CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST is not set 237 | # CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID is not set 238 | # CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT is not set 239 | # end of TWAI configuration 240 | 241 | # 242 | # UART configuration 243 | # 244 | # CONFIG_UART_ISR_IN_IRAM is not set 245 | # end of UART configuration 246 | 247 | # 248 | # RTCIO configuration 249 | # 250 | # CONFIG_RTCIO_SUPPORT_RTC_GPIO_DESC is not set 251 | # end of RTCIO configuration 252 | 253 | # 254 | # GPIO Configuration 255 | # 256 | # CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set 257 | # end of GPIO Configuration 258 | # end of Driver configurations 259 | 260 | # 261 | # eFuse Bit Manager 262 | # 263 | # CONFIG_EFUSE_CUSTOM_TABLE is not set 264 | # CONFIG_EFUSE_VIRTUAL is not set 265 | # CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set 266 | CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y 267 | # CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set 268 | CONFIG_EFUSE_MAX_BLK_LEN=192 269 | # end of eFuse Bit Manager 270 | 271 | # 272 | # ESP-TLS 273 | # 274 | CONFIG_ESP_TLS_USING_MBEDTLS=y 275 | # CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set 276 | # CONFIG_ESP_TLS_SERVER is not set 277 | # CONFIG_ESP_TLS_PSK_VERIFICATION is not set 278 | # CONFIG_ESP_TLS_INSECURE is not set 279 | # end of ESP-TLS 280 | 281 | # 282 | # ESP32-specific 283 | # 284 | CONFIG_ESP32_REV_MIN_0=y 285 | # CONFIG_ESP32_REV_MIN_1 is not set 286 | # CONFIG_ESP32_REV_MIN_2 is not set 287 | # CONFIG_ESP32_REV_MIN_3 is not set 288 | CONFIG_ESP32_REV_MIN=0 289 | CONFIG_ESP32_DPORT_WORKAROUND=y 290 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set 291 | CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y 292 | # CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set 293 | CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 294 | # CONFIG_ESP32_SPIRAM_SUPPORT is not set 295 | # CONFIG_ESP32_TRAX is not set 296 | CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 297 | # CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set 298 | CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y 299 | CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 300 | # CONFIG_ESP32_ULP_COPROC_ENABLED is not set 301 | CONFIG_ESP32_ULP_COPROC_RESERVE_MEM=0 302 | CONFIG_ESP32_DEBUG_OCDAWARE=y 303 | CONFIG_ESP32_BROWNOUT_DET=y 304 | CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y 305 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set 306 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set 307 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set 308 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set 309 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set 310 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set 311 | # CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set 312 | CONFIG_ESP32_BROWNOUT_DET_LVL=0 313 | CONFIG_ESP32_REDUCE_PHY_TX_POWER=y 314 | CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y 315 | # CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set 316 | # CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set 317 | # CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set 318 | CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y 319 | # CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set 320 | # CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set 321 | # CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set 322 | CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 323 | CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 324 | CONFIG_ESP32_XTAL_FREQ_40=y 325 | # CONFIG_ESP32_XTAL_FREQ_26 is not set 326 | # CONFIG_ESP32_XTAL_FREQ_AUTO is not set 327 | CONFIG_ESP32_XTAL_FREQ=40 328 | # CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set 329 | # CONFIG_ESP32_NO_BLOBS is not set 330 | # CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set 331 | # CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set 332 | # CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set 333 | CONFIG_ESP32_DPORT_DIS_INTERRUPT_LVL=5 334 | # end of ESP32-specific 335 | 336 | # 337 | # ADC-Calibration 338 | # 339 | CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y 340 | CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y 341 | CONFIG_ADC_CAL_LUT_ENABLE=y 342 | # end of ADC-Calibration 343 | 344 | # 345 | # Common ESP-related 346 | # 347 | CONFIG_ESP_ERR_TO_NAME_LOOKUP=y 348 | CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 349 | CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 350 | CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 351 | CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 352 | CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y 353 | CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 354 | CONFIG_ESP_CONSOLE_UART_DEFAULT=y 355 | # CONFIG_ESP_CONSOLE_UART_CUSTOM is not set 356 | # CONFIG_ESP_CONSOLE_NONE is not set 357 | CONFIG_ESP_CONSOLE_UART=y 358 | CONFIG_ESP_CONSOLE_MULTIPLE_UART=y 359 | CONFIG_ESP_CONSOLE_UART_NUM=0 360 | CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 361 | CONFIG_ESP_INT_WDT=y 362 | CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 363 | CONFIG_ESP_INT_WDT_CHECK_CPU1=y 364 | CONFIG_ESP_TASK_WDT=y 365 | # CONFIG_ESP_TASK_WDT_PANIC is not set 366 | CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 367 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 368 | CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 369 | # CONFIG_ESP_PANIC_HANDLER_IRAM is not set 370 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y 371 | CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y 372 | CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y 373 | CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y 374 | # end of Common ESP-related 375 | 376 | # 377 | # Ethernet 378 | # 379 | CONFIG_ETH_ENABLED=y 380 | CONFIG_ETH_USE_ESP32_EMAC=y 381 | CONFIG_ETH_PHY_INTERFACE_RMII=y 382 | # CONFIG_ETH_PHY_INTERFACE_MII is not set 383 | CONFIG_ETH_RMII_CLK_INPUT=y 384 | # CONFIG_ETH_RMII_CLK_OUTPUT is not set 385 | CONFIG_ETH_RMII_CLK_IN_GPIO=0 386 | CONFIG_ETH_DMA_BUFFER_SIZE=512 387 | CONFIG_ETH_DMA_RX_BUFFER_NUM=10 388 | CONFIG_ETH_DMA_TX_BUFFER_NUM=10 389 | CONFIG_ETH_USE_SPI_ETHERNET=y 390 | # CONFIG_ETH_SPI_ETHERNET_DM9051 is not set 391 | # CONFIG_ETH_SPI_ETHERNET_W5500 is not set 392 | # CONFIG_ETH_USE_OPENETH is not set 393 | # end of Ethernet 394 | 395 | # 396 | # Event Loop Library 397 | # 398 | # CONFIG_ESP_EVENT_LOOP_PROFILING is not set 399 | CONFIG_ESP_EVENT_POST_FROM_ISR=y 400 | CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y 401 | # end of Event Loop Library 402 | 403 | # 404 | # GDB Stub 405 | # 406 | # end of GDB Stub 407 | 408 | # 409 | # ESP HTTP client 410 | # 411 | CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y 412 | # CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set 413 | # end of ESP HTTP client 414 | 415 | # 416 | # HTTP Server 417 | # 418 | CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 419 | CONFIG_HTTPD_MAX_URI_LEN=512 420 | CONFIG_HTTPD_ERR_RESP_NO_DELAY=y 421 | CONFIG_HTTPD_PURGE_BUF_LEN=32 422 | # CONFIG_HTTPD_LOG_PURGE_DATA is not set 423 | CONFIG_HTTPD_WS_SUPPORT=y 424 | # end of HTTP Server 425 | 426 | # 427 | # ESP HTTPS OTA 428 | # 429 | # CONFIG_OTA_ALLOW_HTTP is not set 430 | # end of ESP HTTPS OTA 431 | 432 | # 433 | # ESP HTTPS server 434 | # 435 | # CONFIG_ESP_HTTPS_SERVER_ENABLE is not set 436 | # end of ESP HTTPS server 437 | 438 | # 439 | # ESP NETIF Adapter 440 | # 441 | CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 442 | CONFIG_ESP_NETIF_TCPIP_LWIP=y 443 | # CONFIG_ESP_NETIF_LOOPBACK is not set 444 | CONFIG_ESP_NETIF_TCPIP_ADAPTER_COMPATIBLE_LAYER=y 445 | # end of ESP NETIF Adapter 446 | 447 | # 448 | # Power Management 449 | # 450 | # CONFIG_PM_ENABLE is not set 451 | # end of Power Management 452 | 453 | # 454 | # ESP System Settings 455 | # 456 | # CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set 457 | CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y 458 | # CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set 459 | # CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set 460 | CONFIG_ESP_SYSTEM_PD_FLASH=y 461 | # CONFIG_ESP_SYSTEM_FLASH_LEAKAGE_WORKAROUND is not set 462 | 463 | # 464 | # Memory protection 465 | # 466 | # end of Memory protection 467 | # end of ESP System Settings 468 | 469 | # 470 | # High resolution timer (esp_timer) 471 | # 472 | # CONFIG_ESP_TIMER_PROFILING is not set 473 | CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y 474 | CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y 475 | CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 476 | # CONFIG_ESP_TIMER_IMPL_FRC2 is not set 477 | CONFIG_ESP_TIMER_IMPL_TG0_LAC=y 478 | # end of High resolution timer (esp_timer) 479 | 480 | # 481 | # Wi-Fi 482 | # 483 | CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 484 | CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 485 | # CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set 486 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y 487 | CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 488 | CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 489 | # CONFIG_ESP32_WIFI_CSI_ENABLED is not set 490 | CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y 491 | CONFIG_ESP32_WIFI_TX_BA_WIN=6 492 | CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y 493 | CONFIG_ESP32_WIFI_RX_BA_WIN=6 494 | CONFIG_ESP32_WIFI_NVS_ENABLED=y 495 | CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y 496 | # CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set 497 | CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 498 | CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 499 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_NONE is not set 500 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_ERROR is not set 501 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_WARN is not set 502 | CONFIG_WIFI_LOG_DEFAULT_LEVEL_INFO=y 503 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_DEBUG is not set 504 | # CONFIG_WIFI_LOG_DEFAULT_LEVEL_VERBOSE is not set 505 | CONFIG_ESP32_WIFI_IRAM_OPT=y 506 | CONFIG_ESP32_WIFI_RX_IRAM_OPT=y 507 | CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y 508 | # CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set 509 | # CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE is not set 510 | # end of Wi-Fi 511 | 512 | # 513 | # PHY 514 | # 515 | CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y 516 | # CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set 517 | CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 518 | CONFIG_ESP32_PHY_MAX_TX_POWER=20 519 | # end of PHY 520 | 521 | # 522 | # Core dump 523 | # 524 | # CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set 525 | # CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set 526 | CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y 527 | # end of Core dump 528 | 529 | # 530 | # FAT Filesystem support 531 | # 532 | # CONFIG_FATFS_CODEPAGE_DYNAMIC is not set 533 | CONFIG_FATFS_CODEPAGE_437=y 534 | # CONFIG_FATFS_CODEPAGE_720 is not set 535 | # CONFIG_FATFS_CODEPAGE_737 is not set 536 | # CONFIG_FATFS_CODEPAGE_771 is not set 537 | # CONFIG_FATFS_CODEPAGE_775 is not set 538 | # CONFIG_FATFS_CODEPAGE_850 is not set 539 | # CONFIG_FATFS_CODEPAGE_852 is not set 540 | # CONFIG_FATFS_CODEPAGE_855 is not set 541 | # CONFIG_FATFS_CODEPAGE_857 is not set 542 | # CONFIG_FATFS_CODEPAGE_860 is not set 543 | # CONFIG_FATFS_CODEPAGE_861 is not set 544 | # CONFIG_FATFS_CODEPAGE_862 is not set 545 | # CONFIG_FATFS_CODEPAGE_863 is not set 546 | # CONFIG_FATFS_CODEPAGE_864 is not set 547 | # CONFIG_FATFS_CODEPAGE_865 is not set 548 | # CONFIG_FATFS_CODEPAGE_866 is not set 549 | # CONFIG_FATFS_CODEPAGE_869 is not set 550 | # CONFIG_FATFS_CODEPAGE_932 is not set 551 | # CONFIG_FATFS_CODEPAGE_936 is not set 552 | # CONFIG_FATFS_CODEPAGE_949 is not set 553 | # CONFIG_FATFS_CODEPAGE_950 is not set 554 | CONFIG_FATFS_CODEPAGE=437 555 | CONFIG_FATFS_LFN_NONE=y 556 | # CONFIG_FATFS_LFN_HEAP is not set 557 | # CONFIG_FATFS_LFN_STACK is not set 558 | CONFIG_FATFS_FS_LOCK=0 559 | CONFIG_FATFS_TIMEOUT_MS=10000 560 | CONFIG_FATFS_PER_FILE_CACHE=y 561 | # CONFIG_FATFS_USE_FASTSEEK is not set 562 | # end of FAT Filesystem support 563 | 564 | # 565 | # Modbus configuration 566 | # 567 | CONFIG_FMB_COMM_MODE_TCP_EN=y 568 | CONFIG_FMB_TCP_PORT_DEFAULT=502 569 | CONFIG_FMB_TCP_PORT_MAX_CONN=5 570 | CONFIG_FMB_TCP_CONNECTION_TOUT_SEC=20 571 | CONFIG_FMB_COMM_MODE_RTU_EN=y 572 | CONFIG_FMB_COMM_MODE_ASCII_EN=y 573 | CONFIG_FMB_MASTER_TIMEOUT_MS_RESPOND=150 574 | CONFIG_FMB_MASTER_DELAY_MS_CONVERT=200 575 | CONFIG_FMB_QUEUE_LENGTH=20 576 | CONFIG_FMB_PORT_TASK_STACK_SIZE=4096 577 | CONFIG_FMB_SERIAL_BUF_SIZE=256 578 | CONFIG_FMB_SERIAL_ASCII_BITS_PER_SYMB=8 579 | CONFIG_FMB_SERIAL_ASCII_TIMEOUT_RESPOND_MS=1000 580 | CONFIG_FMB_PORT_TASK_PRIO=10 581 | CONFIG_FMB_CONTROLLER_SLAVE_ID_SUPPORT=y 582 | CONFIG_FMB_CONTROLLER_SLAVE_ID=0x00112233 583 | CONFIG_FMB_CONTROLLER_NOTIFY_TIMEOUT=20 584 | CONFIG_FMB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 585 | CONFIG_FMB_CONTROLLER_STACK_SIZE=4096 586 | CONFIG_FMB_EVENT_QUEUE_TIMEOUT=20 587 | CONFIG_FMB_TIMER_PORT_ENABLED=y 588 | CONFIG_FMB_TIMER_GROUP=0 589 | CONFIG_FMB_TIMER_INDEX=0 590 | # CONFIG_FMB_TIMER_ISR_IN_IRAM is not set 591 | # end of Modbus configuration 592 | 593 | # 594 | # FreeRTOS 595 | # 596 | # CONFIG_FREERTOS_UNICORE is not set 597 | CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF 598 | CONFIG_FREERTOS_CORETIMER_0=y 599 | # CONFIG_FREERTOS_CORETIMER_1 is not set 600 | CONFIG_FREERTOS_HZ=100 601 | CONFIG_FREERTOS_ASSERT_ON_UNTESTED_FUNCTION=y 602 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set 603 | # CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set 604 | CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y 605 | # CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set 606 | CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y 607 | CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 608 | CONFIG_FREERTOS_ASSERT_FAIL_ABORT=y 609 | # CONFIG_FREERTOS_ASSERT_FAIL_PRINT_CONTINUE is not set 610 | # CONFIG_FREERTOS_ASSERT_DISABLE is not set 611 | CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=2304 612 | CONFIG_FREERTOS_ISR_STACKSIZE=1536 613 | # CONFIG_FREERTOS_LEGACY_HOOKS is not set 614 | CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 615 | CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y 616 | # CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set 617 | CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 618 | CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 619 | CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 620 | CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 621 | # CONFIG_FREERTOS_USE_TRACE_FACILITY is not set 622 | # CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set 623 | CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y 624 | CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y 625 | # CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set 626 | # CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set 627 | CONFIG_FREERTOS_DEBUG_OCDAWARE=y 628 | # CONFIG_FREERTOS_FPU_IN_ISR is not set 629 | # end of FreeRTOS 630 | 631 | # 632 | # Heap memory debugging 633 | # 634 | CONFIG_HEAP_POISONING_DISABLED=y 635 | # CONFIG_HEAP_POISONING_LIGHT is not set 636 | # CONFIG_HEAP_POISONING_COMPREHENSIVE is not set 637 | CONFIG_HEAP_TRACING_OFF=y 638 | # CONFIG_HEAP_TRACING_STANDALONE is not set 639 | # CONFIG_HEAP_TRACING_TOHOST is not set 640 | # CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set 641 | # end of Heap memory debugging 642 | 643 | # 644 | # jsmn 645 | # 646 | # CONFIG_JSMN_PARENT_LINKS is not set 647 | # CONFIG_JSMN_STRICT is not set 648 | # end of jsmn 649 | 650 | # 651 | # libsodium 652 | # 653 | # end of libsodium 654 | 655 | # 656 | # Log output 657 | # 658 | # CONFIG_LOG_DEFAULT_LEVEL_NONE is not set 659 | # CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set 660 | # CONFIG_LOG_DEFAULT_LEVEL_WARN is not set 661 | CONFIG_LOG_DEFAULT_LEVEL_INFO=y 662 | # CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set 663 | # CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set 664 | CONFIG_LOG_DEFAULT_LEVEL=3 665 | CONFIG_LOG_COLORS=y 666 | CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y 667 | # CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set 668 | # end of Log output 669 | 670 | # 671 | # LWIP 672 | # 673 | CONFIG_LWIP_LOCAL_HOSTNAME="espressif" 674 | CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y 675 | # CONFIG_LWIP_L2_TO_L3_COPY is not set 676 | # CONFIG_LWIP_IRAM_OPTIMIZATION is not set 677 | CONFIG_LWIP_TIMERS_ONDEMAND=y 678 | CONFIG_LWIP_MAX_SOCKETS=10 679 | # CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set 680 | # CONFIG_LWIP_SO_LINGER is not set 681 | CONFIG_LWIP_SO_REUSE=y 682 | CONFIG_LWIP_SO_REUSE_RXTOALL=y 683 | # CONFIG_LWIP_SO_RCVBUF is not set 684 | # CONFIG_LWIP_NETBUF_RECVINFO is not set 685 | CONFIG_LWIP_IP4_FRAG=y 686 | CONFIG_LWIP_IP6_FRAG=y 687 | # CONFIG_LWIP_IP4_REASSEMBLY is not set 688 | # CONFIG_LWIP_IP6_REASSEMBLY is not set 689 | # CONFIG_LWIP_IP_FORWARD is not set 690 | # CONFIG_LWIP_STATS is not set 691 | # CONFIG_LWIP_ETHARP_TRUST_IP_MAC is not set 692 | CONFIG_LWIP_ESP_GRATUITOUS_ARP=y 693 | CONFIG_LWIP_GARP_TMR_INTERVAL=60 694 | CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 695 | CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y 696 | # CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set 697 | # CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set 698 | 699 | # 700 | # DHCP server 701 | # 702 | CONFIG_LWIP_DHCPS=y 703 | CONFIG_LWIP_DHCPS_LEASE_UNIT=60 704 | CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 705 | # end of DHCP server 706 | 707 | # CONFIG_LWIP_AUTOIP is not set 708 | CONFIG_LWIP_IPV6=y 709 | # CONFIG_LWIP_IPV6_AUTOCONFIG is not set 710 | CONFIG_LWIP_NETIF_LOOPBACK=y 711 | CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 712 | 713 | # 714 | # TCP 715 | # 716 | CONFIG_LWIP_MAX_ACTIVE_TCP=16 717 | CONFIG_LWIP_MAX_LISTENING_TCP=16 718 | CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y 719 | CONFIG_LWIP_TCP_MAXRTX=12 720 | CONFIG_LWIP_TCP_SYNMAXRTX=12 721 | CONFIG_LWIP_TCP_MSS=1440 722 | CONFIG_LWIP_TCP_TMR_INTERVAL=250 723 | CONFIG_LWIP_TCP_MSL=60000 724 | CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5744 725 | CONFIG_LWIP_TCP_WND_DEFAULT=5744 726 | CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 727 | CONFIG_LWIP_TCP_QUEUE_OOSEQ=y 728 | # CONFIG_LWIP_TCP_SACK_OUT is not set 729 | # CONFIG_LWIP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set 730 | CONFIG_LWIP_TCP_OVERSIZE_MSS=y 731 | # CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set 732 | # CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set 733 | CONFIG_LWIP_TCP_RTO_TIME=1500 734 | # end of TCP 735 | 736 | # 737 | # UDP 738 | # 739 | CONFIG_LWIP_MAX_UDP_PCBS=16 740 | CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 741 | # end of UDP 742 | 743 | # 744 | # Checksums 745 | # 746 | # CONFIG_LWIP_CHECKSUM_CHECK_IP is not set 747 | # CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set 748 | CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y 749 | # end of Checksums 750 | 751 | CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 752 | CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 753 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set 754 | # CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set 755 | CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF 756 | # CONFIG_LWIP_PPP_SUPPORT is not set 757 | CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 758 | CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 759 | # CONFIG_LWIP_SLIP_SUPPORT is not set 760 | 761 | # 762 | # ICMP 763 | # 764 | CONFIG_LWIP_ICMP=y 765 | # CONFIG_LWIP_MULTICAST_PING is not set 766 | # CONFIG_LWIP_BROADCAST_PING is not set 767 | # end of ICMP 768 | 769 | # 770 | # LWIP RAW API 771 | # 772 | CONFIG_LWIP_MAX_RAW_PCBS=16 773 | # end of LWIP RAW API 774 | 775 | # 776 | # SNTP 777 | # 778 | CONFIG_LWIP_DHCP_MAX_NTP_SERVERS=1 779 | CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 780 | # end of SNTP 781 | 782 | CONFIG_LWIP_ESP_LWIP_ASSERT=y 783 | 784 | # 785 | # Hooks 786 | # 787 | # CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set 788 | CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y 789 | # CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set 790 | CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y 791 | # CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set 792 | # CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set 793 | CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y 794 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set 795 | # CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set 796 | # end of Hooks 797 | 798 | # CONFIG_LWIP_DEBUG is not set 799 | # end of LWIP 800 | 801 | # 802 | # mbedTLS 803 | # 804 | CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y 805 | # CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set 806 | # CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set 807 | CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y 808 | CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 809 | CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 810 | # CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set 811 | # CONFIG_MBEDTLS_DEBUG is not set 812 | 813 | # 814 | # Certificate Bundle 815 | # 816 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y 817 | CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y 818 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set 819 | # CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set 820 | # CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set 821 | # end of Certificate Bundle 822 | 823 | # CONFIG_MBEDTLS_ECP_RESTARTABLE is not set 824 | # CONFIG_MBEDTLS_CMAC_C is not set 825 | CONFIG_MBEDTLS_HARDWARE_AES=y 826 | CONFIG_MBEDTLS_HARDWARE_MPI=y 827 | CONFIG_MBEDTLS_HARDWARE_SHA=y 828 | CONFIG_MBEDTLS_ROM_MD5=y 829 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set 830 | # CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set 831 | CONFIG_MBEDTLS_HAVE_TIME=y 832 | # CONFIG_MBEDTLS_HAVE_TIME_DATE is not set 833 | CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y 834 | CONFIG_MBEDTLS_SHA512_C=y 835 | CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y 836 | # CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set 837 | # CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set 838 | # CONFIG_MBEDTLS_TLS_DISABLED is not set 839 | CONFIG_MBEDTLS_TLS_SERVER=y 840 | CONFIG_MBEDTLS_TLS_CLIENT=y 841 | CONFIG_MBEDTLS_TLS_ENABLED=y 842 | 843 | # 844 | # TLS Key Exchange Methods 845 | # 846 | # CONFIG_MBEDTLS_PSK_MODES is not set 847 | CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y 848 | CONFIG_MBEDTLS_KEY_EXCHANGE_DHE_RSA=y 849 | CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y 850 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y 851 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y 852 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y 853 | CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y 854 | # end of TLS Key Exchange Methods 855 | 856 | CONFIG_MBEDTLS_SSL_RENEGOTIATION=y 857 | # CONFIG_MBEDTLS_SSL_PROTO_SSL3 is not set 858 | CONFIG_MBEDTLS_SSL_PROTO_TLS1=y 859 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_1=y 860 | CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y 861 | # CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set 862 | CONFIG_MBEDTLS_SSL_ALPN=y 863 | CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y 864 | CONFIG_MBEDTLS_X509_CHECK_KEY_USAGE=y 865 | CONFIG_MBEDTLS_X509_CHECK_EXTENDED_KEY_USAGE=y 866 | CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y 867 | 868 | # 869 | # Symmetric Ciphers 870 | # 871 | CONFIG_MBEDTLS_AES_C=y 872 | # CONFIG_MBEDTLS_CAMELLIA_C is not set 873 | # CONFIG_MBEDTLS_DES_C is not set 874 | CONFIG_MBEDTLS_RC4_DISABLED=y 875 | # CONFIG_MBEDTLS_RC4_ENABLED_NO_DEFAULT is not set 876 | # CONFIG_MBEDTLS_RC4_ENABLED is not set 877 | # CONFIG_MBEDTLS_BLOWFISH_C is not set 878 | # CONFIG_MBEDTLS_XTEA_C is not set 879 | CONFIG_MBEDTLS_CCM_C=y 880 | CONFIG_MBEDTLS_GCM_C=y 881 | # CONFIG_MBEDTLS_NIST_KW_C is not set 882 | # end of Symmetric Ciphers 883 | 884 | # CONFIG_MBEDTLS_RIPEMD160_C is not set 885 | 886 | # 887 | # Certificates 888 | # 889 | CONFIG_MBEDTLS_PEM_PARSE_C=y 890 | CONFIG_MBEDTLS_PEM_WRITE_C=y 891 | CONFIG_MBEDTLS_X509_CRL_PARSE_C=y 892 | CONFIG_MBEDTLS_X509_CSR_PARSE_C=y 893 | # end of Certificates 894 | 895 | CONFIG_MBEDTLS_ECP_C=y 896 | CONFIG_MBEDTLS_ECDH_C=y 897 | CONFIG_MBEDTLS_ECDSA_C=y 898 | # CONFIG_MBEDTLS_ECJPAKE_C is not set 899 | CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y 900 | CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y 901 | CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y 902 | CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y 903 | CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y 904 | CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y 905 | CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y 906 | CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y 907 | CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y 908 | CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y 909 | CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y 910 | CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y 911 | CONFIG_MBEDTLS_ECP_NIST_OPTIM=y 912 | # CONFIG_MBEDTLS_POLY1305_C is not set 913 | # CONFIG_MBEDTLS_CHACHA20_C is not set 914 | # CONFIG_MBEDTLS_HKDF_C is not set 915 | # CONFIG_MBEDTLS_THREADING_C is not set 916 | # CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set 917 | # CONFIG_MBEDTLS_SECURITY_RISKS is not set 918 | # end of mbedTLS 919 | 920 | # 921 | # mDNS 922 | # 923 | CONFIG_MDNS_MAX_SERVICES=10 924 | CONFIG_MDNS_TASK_PRIORITY=1 925 | CONFIG_MDNS_TASK_STACK_SIZE=4096 926 | # CONFIG_MDNS_TASK_AFFINITY_NO_AFFINITY is not set 927 | CONFIG_MDNS_TASK_AFFINITY_CPU0=y 928 | # CONFIG_MDNS_TASK_AFFINITY_CPU1 is not set 929 | CONFIG_MDNS_TASK_AFFINITY=0x0 930 | CONFIG_MDNS_SERVICE_ADD_TIMEOUT_MS=2000 931 | # CONFIG_MDNS_STRICT_MODE is not set 932 | CONFIG_MDNS_TIMER_PERIOD_MS=100 933 | # end of mDNS 934 | 935 | # 936 | # ESP-MQTT Configurations 937 | # 938 | CONFIG_MQTT_PROTOCOL_311=y 939 | CONFIG_MQTT_TRANSPORT_SSL=y 940 | CONFIG_MQTT_TRANSPORT_WEBSOCKET=y 941 | CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y 942 | # CONFIG_MQTT_MSG_ID_INCREMENTAL is not set 943 | # CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set 944 | # CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set 945 | # CONFIG_MQTT_USE_CUSTOM_CONFIG is not set 946 | # CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set 947 | # CONFIG_MQTT_CUSTOM_OUTBOX is not set 948 | # end of ESP-MQTT Configurations 949 | 950 | # 951 | # Newlib 952 | # 953 | CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y 954 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set 955 | # CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set 956 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set 957 | # CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set 958 | CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y 959 | # CONFIG_NEWLIB_NANO_FORMAT is not set 960 | # end of Newlib 961 | 962 | # 963 | # NVS 964 | # 965 | # end of NVS 966 | 967 | # 968 | # OpenSSL 969 | # 970 | # CONFIG_OPENSSL_DEBUG is not set 971 | CONFIG_OPENSSL_ERROR_STACK=y 972 | # CONFIG_OPENSSL_ASSERT_DO_NOTHING is not set 973 | CONFIG_OPENSSL_ASSERT_EXIT=y 974 | # end of OpenSSL 975 | 976 | # 977 | # PThreads 978 | # 979 | CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 980 | CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 981 | CONFIG_PTHREAD_STACK_MIN=768 982 | CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y 983 | # CONFIG_PTHREAD_DEFAULT_CORE_0 is not set 984 | # CONFIG_PTHREAD_DEFAULT_CORE_1 is not set 985 | CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 986 | CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" 987 | # end of PThreads 988 | 989 | # 990 | # SPI Flash driver 991 | # 992 | # CONFIG_SPI_FLASH_VERIFY_WRITE is not set 993 | # CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set 994 | CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y 995 | CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y 996 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set 997 | # CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set 998 | # CONFIG_SPI_FLASH_USE_LEGACY_IMPL is not set 999 | # CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set 1000 | # CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set 1001 | CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y 1002 | CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 1003 | CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 1004 | CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 1005 | # CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set 1006 | # CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set 1007 | 1008 | # 1009 | # Auto-detect flash chips 1010 | # 1011 | CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y 1012 | CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y 1013 | CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y 1014 | CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y 1015 | # end of Auto-detect flash chips 1016 | 1017 | CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y 1018 | # end of SPI Flash driver 1019 | 1020 | # 1021 | # SPIFFS Configuration 1022 | # 1023 | CONFIG_SPIFFS_MAX_PARTITIONS=3 1024 | 1025 | # 1026 | # SPIFFS Cache Configuration 1027 | # 1028 | CONFIG_SPIFFS_CACHE=y 1029 | CONFIG_SPIFFS_CACHE_WR=y 1030 | # CONFIG_SPIFFS_CACHE_STATS is not set 1031 | # end of SPIFFS Cache Configuration 1032 | 1033 | CONFIG_SPIFFS_PAGE_CHECK=y 1034 | CONFIG_SPIFFS_GC_MAX_RUNS=10 1035 | # CONFIG_SPIFFS_GC_STATS is not set 1036 | CONFIG_SPIFFS_PAGE_SIZE=256 1037 | CONFIG_SPIFFS_OBJ_NAME_LEN=32 1038 | # CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set 1039 | CONFIG_SPIFFS_USE_MAGIC=y 1040 | CONFIG_SPIFFS_USE_MAGIC_LENGTH=y 1041 | CONFIG_SPIFFS_META_LENGTH=4 1042 | CONFIG_SPIFFS_USE_MTIME=y 1043 | 1044 | # 1045 | # Debug Configuration 1046 | # 1047 | # CONFIG_SPIFFS_DBG is not set 1048 | # CONFIG_SPIFFS_API_DBG is not set 1049 | # CONFIG_SPIFFS_GC_DBG is not set 1050 | # CONFIG_SPIFFS_CACHE_DBG is not set 1051 | # CONFIG_SPIFFS_CHECK_DBG is not set 1052 | # CONFIG_SPIFFS_TEST_VISUALISATION is not set 1053 | # end of Debug Configuration 1054 | # end of SPIFFS Configuration 1055 | 1056 | # 1057 | # TCP Transport 1058 | # 1059 | 1060 | # 1061 | # Websocket 1062 | # 1063 | CONFIG_WS_TRANSPORT=y 1064 | CONFIG_WS_BUFFER_SIZE=1024 1065 | # end of Websocket 1066 | # end of TCP Transport 1067 | 1068 | # 1069 | # TinyUSB 1070 | # 1071 | # end of TinyUSB 1072 | 1073 | # 1074 | # Unity unit testing library 1075 | # 1076 | CONFIG_UNITY_ENABLE_FLOAT=y 1077 | CONFIG_UNITY_ENABLE_DOUBLE=y 1078 | # CONFIG_UNITY_ENABLE_COLOR is not set 1079 | CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y 1080 | # CONFIG_UNITY_ENABLE_FIXTURE is not set 1081 | # CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set 1082 | # end of Unity unit testing library 1083 | 1084 | # 1085 | # Virtual file system 1086 | # 1087 | CONFIG_VFS_SUPPORT_IO=y 1088 | CONFIG_VFS_SUPPORT_DIR=y 1089 | CONFIG_VFS_SUPPORT_SELECT=y 1090 | CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1091 | CONFIG_VFS_SUPPORT_TERMIOS=y 1092 | 1093 | # 1094 | # Host File System I/O (Semihosting) 1095 | # 1096 | CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1097 | CONFIG_VFS_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 1098 | # end of Host File System I/O (Semihosting) 1099 | # end of Virtual file system 1100 | 1101 | # 1102 | # Wear Levelling 1103 | # 1104 | # CONFIG_WL_SECTOR_SIZE_512 is not set 1105 | CONFIG_WL_SECTOR_SIZE_4096=y 1106 | CONFIG_WL_SECTOR_SIZE=4096 1107 | # end of Wear Levelling 1108 | 1109 | # 1110 | # Wi-Fi Provisioning Manager 1111 | # 1112 | CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 1113 | CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 1114 | # end of Wi-Fi Provisioning Manager 1115 | 1116 | # 1117 | # Supplicant 1118 | # 1119 | CONFIG_WPA_MBEDTLS_CRYPTO=y 1120 | # CONFIG_WPA_WAPI_PSK is not set 1121 | # CONFIG_WPA_DEBUG_PRINT is not set 1122 | # CONFIG_WPA_TESTING_OPTIONS is not set 1123 | # CONFIG_WPA_WPS_STRICT is not set 1124 | # CONFIG_WPA_11KV_SUPPORT is not set 1125 | # end of Supplicant 1126 | # end of Component config 1127 | 1128 | # 1129 | # Compatibility options 1130 | # 1131 | # CONFIG_LEGACY_INCLUDE_COMMON_HEADERS is not set 1132 | # end of Compatibility options 1133 | 1134 | # Deprecated options for backward compatibility 1135 | CONFIG_TOOLPREFIX="xtensa-esp32-elf-" 1136 | # CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set 1137 | # CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set 1138 | # CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set 1139 | CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y 1140 | # CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set 1141 | # CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set 1142 | CONFIG_LOG_BOOTLOADER_LEVEL=3 1143 | # CONFIG_APP_ROLLBACK_ENABLE is not set 1144 | # CONFIG_FLASH_ENCRYPTION_ENABLED is not set 1145 | # CONFIG_FLASHMODE_QIO is not set 1146 | # CONFIG_FLASHMODE_QOUT is not set 1147 | CONFIG_FLASHMODE_DIO=y 1148 | # CONFIG_FLASHMODE_DOUT is not set 1149 | # CONFIG_MONITOR_BAUD_9600B is not set 1150 | # CONFIG_MONITOR_BAUD_57600B is not set 1151 | CONFIG_MONITOR_BAUD_115200B=y 1152 | # CONFIG_MONITOR_BAUD_230400B is not set 1153 | # CONFIG_MONITOR_BAUD_921600B is not set 1154 | # CONFIG_MONITOR_BAUD_2MB is not set 1155 | # CONFIG_MONITOR_BAUD_OTHER is not set 1156 | CONFIG_MONITOR_BAUD_OTHER_VAL=115200 1157 | CONFIG_MONITOR_BAUD=115200 1158 | CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y 1159 | # CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set 1160 | CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y 1161 | # CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set 1162 | # CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set 1163 | # CONFIG_CXX_EXCEPTIONS is not set 1164 | CONFIG_STACK_CHECK_NONE=y 1165 | # CONFIG_STACK_CHECK_NORM is not set 1166 | # CONFIG_STACK_CHECK_STRONG is not set 1167 | # CONFIG_STACK_CHECK_ALL is not set 1168 | # CONFIG_WARN_WRITE_STRINGS is not set 1169 | # CONFIG_DISABLE_GCC8_WARNINGS is not set 1170 | # CONFIG_ESP32_APPTRACE_DEST_TRAX is not set 1171 | CONFIG_ESP32_APPTRACE_DEST_NONE=y 1172 | CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y 1173 | CONFIG_BTDM_CONTROLLER_BLE_MAX_CONN_EFF=0 1174 | CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_ACL_CONN_EFF=0 1175 | CONFIG_BTDM_CONTROLLER_BR_EDR_MAX_SYNC_CONN_EFF=0 1176 | CONFIG_BTDM_CONTROLLER_PINNED_TO_CORE=0 1177 | CONFIG_ADC2_DISABLE_DAC=y 1178 | # CONFIG_SPIRAM_SUPPORT is not set 1179 | CONFIG_TRACEMEM_RESERVE_DRAM=0x0 1180 | # CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set 1181 | CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y 1182 | CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 1183 | # CONFIG_ULP_COPROC_ENABLED is not set 1184 | CONFIG_ULP_COPROC_RESERVE_MEM=0 1185 | CONFIG_BROWNOUT_DET=y 1186 | CONFIG_BROWNOUT_DET_LVL_SEL_0=y 1187 | # CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set 1188 | # CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set 1189 | # CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set 1190 | # CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set 1191 | # CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set 1192 | # CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set 1193 | # CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set 1194 | CONFIG_BROWNOUT_DET_LVL=0 1195 | CONFIG_REDUCE_PHY_TX_POWER=y 1196 | CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y 1197 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set 1198 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set 1199 | # CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set 1200 | # CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set 1201 | # CONFIG_NO_BLOBS is not set 1202 | # CONFIG_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set 1203 | CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 1204 | CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 1205 | CONFIG_MAIN_TASK_STACK_SIZE=3584 1206 | CONFIG_IPC_TASK_STACK_SIZE=1024 1207 | CONFIG_CONSOLE_UART_DEFAULT=y 1208 | # CONFIG_CONSOLE_UART_CUSTOM is not set 1209 | # CONFIG_ESP_CONSOLE_UART_NONE is not set 1210 | CONFIG_CONSOLE_UART=y 1211 | CONFIG_CONSOLE_UART_NUM=0 1212 | CONFIG_CONSOLE_UART_BAUDRATE=115200 1213 | CONFIG_INT_WDT=y 1214 | CONFIG_INT_WDT_TIMEOUT_MS=300 1215 | CONFIG_INT_WDT_CHECK_CPU1=y 1216 | CONFIG_TASK_WDT=y 1217 | # CONFIG_TASK_WDT_PANIC is not set 1218 | CONFIG_TASK_WDT_TIMEOUT_S=5 1219 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y 1220 | CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y 1221 | # CONFIG_EVENT_LOOP_PROFILING is not set 1222 | CONFIG_POST_EVENTS_FROM_ISR=y 1223 | CONFIG_POST_EVENTS_FROM_IRAM_ISR=y 1224 | # CONFIG_ESP32S2_PANIC_PRINT_HALT is not set 1225 | CONFIG_ESP32S2_PANIC_PRINT_REBOOT=y 1226 | # CONFIG_ESP32S2_PANIC_SILENT_REBOOT is not set 1227 | # CONFIG_ESP32S2_PANIC_GDBSTUB is not set 1228 | CONFIG_TIMER_TASK_STACK_SIZE=3584 1229 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set 1230 | # CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set 1231 | CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y 1232 | CONFIG_MB_MASTER_TIMEOUT_MS_RESPOND=150 1233 | CONFIG_MB_MASTER_DELAY_MS_CONVERT=200 1234 | CONFIG_MB_QUEUE_LENGTH=20 1235 | CONFIG_MB_SERIAL_TASK_STACK_SIZE=4096 1236 | CONFIG_MB_SERIAL_BUF_SIZE=256 1237 | CONFIG_MB_SERIAL_TASK_PRIO=10 1238 | CONFIG_MB_CONTROLLER_SLAVE_ID_SUPPORT=y 1239 | CONFIG_MB_CONTROLLER_SLAVE_ID=0x00112233 1240 | CONFIG_MB_CONTROLLER_NOTIFY_TIMEOUT=20 1241 | CONFIG_MB_CONTROLLER_NOTIFY_QUEUE_SIZE=20 1242 | CONFIG_MB_CONTROLLER_STACK_SIZE=4096 1243 | CONFIG_MB_EVENT_QUEUE_TIMEOUT=20 1244 | CONFIG_MB_TIMER_PORT_ENABLED=y 1245 | CONFIG_MB_TIMER_GROUP=0 1246 | CONFIG_MB_TIMER_INDEX=0 1247 | # CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set 1248 | CONFIG_TIMER_TASK_PRIORITY=1 1249 | CONFIG_TIMER_TASK_STACK_DEPTH=2048 1250 | CONFIG_TIMER_QUEUE_LENGTH=10 1251 | # CONFIG_L2_TO_L3_COPY is not set 1252 | # CONFIG_USE_ONLY_LWIP_SELECT is not set 1253 | CONFIG_ESP_GRATUITOUS_ARP=y 1254 | CONFIG_GARP_TMR_INTERVAL=60 1255 | CONFIG_TCPIP_RECVMBOX_SIZE=32 1256 | CONFIG_TCP_MAXRTX=12 1257 | CONFIG_TCP_SYNMAXRTX=12 1258 | CONFIG_TCP_MSS=1440 1259 | CONFIG_TCP_MSL=60000 1260 | CONFIG_TCP_SND_BUF_DEFAULT=5744 1261 | CONFIG_TCP_WND_DEFAULT=5744 1262 | CONFIG_TCP_RECVMBOX_SIZE=6 1263 | CONFIG_TCP_QUEUE_OOSEQ=y 1264 | # CONFIG_ESP_TCP_KEEP_CONNECTION_WHEN_IP_CHANGES is not set 1265 | CONFIG_TCP_OVERSIZE_MSS=y 1266 | # CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set 1267 | # CONFIG_TCP_OVERSIZE_DISABLE is not set 1268 | CONFIG_UDP_RECVMBOX_SIZE=6 1269 | CONFIG_TCPIP_TASK_STACK_SIZE=3072 1270 | CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y 1271 | # CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set 1272 | # CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set 1273 | CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF 1274 | # CONFIG_PPP_SUPPORT is not set 1275 | CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 1276 | CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 1277 | CONFIG_ESP32_PTHREAD_STACK_MIN=768 1278 | CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y 1279 | # CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set 1280 | # CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set 1281 | CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 1282 | CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" 1283 | CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y 1284 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set 1285 | # CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set 1286 | CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y 1287 | CONFIG_SUPPORT_TERMIOS=y 1288 | CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 1289 | CONFIG_SEMIHOSTFS_HOST_PATH_MAX_LEN=128 1290 | # End of deprecated options 1291 | -------------------------------------------------------------------------------- /site/.gitignore: -------------------------------------------------------------------------------- 1 | # Logs 2 | logs 3 | *.log 4 | npm-debug.log* 5 | yarn-debug.log* 6 | yarn-error.log* 7 | pnpm-debug.log* 8 | lerna-debug.log* 9 | 10 | node_modules 11 | dist 12 | dist-ssr 13 | *.local 14 | 15 | # Editor directories and files 16 | .vscode/* 17 | !.vscode/extensions.json 18 | .idea 19 | .DS_Store 20 | *.suo 21 | *.ntvs* 22 | *.njsproj 23 | *.sln 24 | *.sw? 25 | -------------------------------------------------------------------------------- /site/index.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | Vite App 8 | 9 | 10 |
11 | 12 | 13 | 14 | -------------------------------------------------------------------------------- /site/package-lock.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "site", 3 | "version": "0.0.0", 4 | "lockfileVersion": 1, 5 | "requires": true, 6 | "dependencies": { 7 | "@ampproject/remapping": { 8 | "version": "2.1.2", 9 | "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.1.2.tgz", 10 | "integrity": "sha512-hoyByceqwKirw7w3Z7gnIIZC3Wx3J484Y3L/cMpXFbr7d9ZQj2mODrirNzcJa+SM3UlpWXYvKV4RlRpFXlWgXg==", 11 | "dev": true, 12 | "requires": { 13 | "@jridgewell/trace-mapping": "^0.3.0" 14 | } 15 | }, 16 | "@babel/code-frame": { 17 | "version": "7.16.7", 18 | "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.16.7.tgz", 19 | "integrity": "sha512-iAXqUn8IIeBTNd72xsFlgaXHkMBMt6y4HJp1tIaK465CWLT/fG1aqB7ykr95gHHmlBdGbFeWWfyB4NJJ0nmeIg==", 20 | "requires": { 21 | "@babel/highlight": "^7.16.7" 22 | } 23 | }, 24 | "@babel/compat-data": { 25 | "version": "7.17.7", 26 | "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.17.7.tgz", 27 | "integrity": "sha512-p8pdE6j0a29TNGebNm7NzYZWB3xVZJBZ7XGs42uAKzQo8VQ3F0By/cQCtUEABwIqw5zo6WA4NbmxsfzADzMKnQ==", 28 | "dev": true 29 | }, 30 | "@babel/core": { 31 | "version": "7.17.8", 32 | "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.17.8.tgz", 33 | "integrity": "sha512-OdQDV/7cRBtJHLSOBqqbYNkOcydOgnX59TZx4puf41fzcVtN3e/4yqY8lMQsK+5X2lJtAdmA+6OHqsj1hBJ4IQ==", 34 | "dev": true, 35 | "requires": { 36 | "@ampproject/remapping": "^2.1.0", 37 | "@babel/code-frame": "^7.16.7", 38 | "@babel/generator": "^7.17.7", 39 | "@babel/helper-compilation-targets": "^7.17.7", 40 | "@babel/helper-module-transforms": "^7.17.7", 41 | "@babel/helpers": "^7.17.8", 42 | "@babel/parser": "^7.17.8", 43 | "@babel/template": "^7.16.7", 44 | "@babel/traverse": "^7.17.3", 45 | "@babel/types": "^7.17.0", 46 | "convert-source-map": "^1.7.0", 47 | "debug": "^4.1.0", 48 | "gensync": "^1.0.0-beta.2", 49 | "json5": "^2.1.2", 50 | "semver": "^6.3.0" 51 | } 52 | }, 53 | "@babel/generator": { 54 | "version": "7.17.7", 55 | "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.17.7.tgz", 56 | "integrity": "sha512-oLcVCTeIFadUoArDTwpluncplrYBmTCCZZgXCbgNGvOBBiSDDK3eWO4b/+eOTli5tKv1lg+a5/NAXg+nTcei1w==", 57 | "dev": true, 58 | "requires": { 59 | "@babel/types": "^7.17.0", 60 | "jsesc": "^2.5.1", 61 | "source-map": "^0.5.0" 62 | } 63 | }, 64 | "@babel/helper-annotate-as-pure": { 65 | "version": "7.16.7", 66 | "resolved": "https://registry.npmjs.org/@babel/helper-annotate-as-pure/-/helper-annotate-as-pure-7.16.7.tgz", 67 | "integrity": "sha512-s6t2w/IPQVTAET1HitoowRGXooX8mCgtuP5195wD/QJPV6wYjpujCGF7JuMODVX2ZAJOf1GT6DT9MHEZvLOFSw==", 68 | "dev": true, 69 | "requires": { 70 | "@babel/types": "^7.16.7" 71 | } 72 | }, 73 | "@babel/helper-compilation-targets": { 74 | "version": "7.17.7", 75 | "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.17.7.tgz", 76 | "integrity": "sha512-UFzlz2jjd8kroj0hmCFV5zr+tQPi1dpC2cRsDV/3IEW8bJfCPrPpmcSN6ZS8RqIq4LXcmpipCQFPddyFA5Yc7w==", 77 | "dev": true, 78 | "requires": { 79 | "@babel/compat-data": "^7.17.7", 80 | "@babel/helper-validator-option": "^7.16.7", 81 | "browserslist": "^4.17.5", 82 | "semver": "^6.3.0" 83 | } 84 | }, 85 | "@babel/helper-environment-visitor": { 86 | "version": "7.16.7", 87 | "resolved": "https://registry.npmjs.org/@babel/helper-environment-visitor/-/helper-environment-visitor-7.16.7.tgz", 88 | "integrity": "sha512-SLLb0AAn6PkUeAfKJCCOl9e1R53pQlGAfc4y4XuMRZfqeMYLE0dM1LMhqbGAlGQY0lfw5/ohoYWAe9V1yibRag==", 89 | "dev": true, 90 | "requires": { 91 | "@babel/types": "^7.16.7" 92 | } 93 | }, 94 | "@babel/helper-function-name": { 95 | "version": "7.16.7", 96 | "resolved": "https://registry.npmjs.org/@babel/helper-function-name/-/helper-function-name-7.16.7.tgz", 97 | "integrity": "sha512-QfDfEnIUyyBSR3HtrtGECuZ6DAyCkYFp7GHl75vFtTnn6pjKeK0T1DB5lLkFvBea8MdaiUABx3osbgLyInoejA==", 98 | "dev": true, 99 | "requires": { 100 | "@babel/helper-get-function-arity": "^7.16.7", 101 | "@babel/template": "^7.16.7", 102 | "@babel/types": "^7.16.7" 103 | } 104 | }, 105 | "@babel/helper-get-function-arity": { 106 | "version": "7.16.7", 107 | "resolved": "https://registry.npmjs.org/@babel/helper-get-function-arity/-/helper-get-function-arity-7.16.7.tgz", 108 | "integrity": "sha512-flc+RLSOBXzNzVhcLu6ujeHUrD6tANAOU5ojrRx/as+tbzf8+stUCj7+IfRRoAbEZqj/ahXEMsjhOhgeZsrnTw==", 109 | "dev": true, 110 | "requires": { 111 | "@babel/types": "^7.16.7" 112 | } 113 | }, 114 | "@babel/helper-hoist-variables": { 115 | "version": "7.16.7", 116 | "resolved": "https://registry.npmjs.org/@babel/helper-hoist-variables/-/helper-hoist-variables-7.16.7.tgz", 117 | "integrity": "sha512-m04d/0Op34H5v7pbZw6pSKP7weA6lsMvfiIAMeIvkY/R4xQtBSMFEigu9QTZ2qB/9l22vsxtM8a+Q8CzD255fg==", 118 | "dev": true, 119 | "requires": { 120 | "@babel/types": "^7.16.7" 121 | } 122 | }, 123 | "@babel/helper-module-imports": { 124 | "version": "7.16.7", 125 | "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.16.7.tgz", 126 | "integrity": "sha512-LVtS6TqjJHFc+nYeITRo6VLXve70xmq7wPhWTqDJusJEgGmkAACWwMiTNrvfoQo6hEhFwAIixNkvB0jPXDL8Wg==", 127 | "dev": true, 128 | "requires": { 129 | "@babel/types": "^7.16.7" 130 | } 131 | }, 132 | "@babel/helper-module-transforms": { 133 | "version": "7.17.7", 134 | "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.17.7.tgz", 135 | "integrity": "sha512-VmZD99F3gNTYB7fJRDTi+u6l/zxY0BE6OIxPSU7a50s6ZUQkHwSDmV92FfM+oCG0pZRVojGYhkR8I0OGeCVREw==", 136 | "dev": true, 137 | "requires": { 138 | "@babel/helper-environment-visitor": "^7.16.7", 139 | "@babel/helper-module-imports": "^7.16.7", 140 | "@babel/helper-simple-access": "^7.17.7", 141 | "@babel/helper-split-export-declaration": "^7.16.7", 142 | "@babel/helper-validator-identifier": "^7.16.7", 143 | "@babel/template": "^7.16.7", 144 | "@babel/traverse": "^7.17.3", 145 | "@babel/types": "^7.17.0" 146 | } 147 | }, 148 | "@babel/helper-plugin-utils": { 149 | "version": "7.16.7", 150 | "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.16.7.tgz", 151 | "integrity": "sha512-Qg3Nk7ZxpgMrsox6HreY1ZNKdBq7K72tDSliA6dCl5f007jR4ne8iD5UzuNnCJH2xBf2BEEVGr+/OL6Gdp7RxA==", 152 | "dev": true 153 | }, 154 | "@babel/helper-simple-access": { 155 | "version": "7.17.7", 156 | "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.17.7.tgz", 157 | "integrity": "sha512-txyMCGroZ96i+Pxr3Je3lzEJjqwaRC9buMUgtomcrLe5Nd0+fk1h0LLA+ixUF5OW7AhHuQ7Es1WcQJZmZsz2XA==", 158 | "dev": true, 159 | "requires": { 160 | "@babel/types": "^7.17.0" 161 | } 162 | }, 163 | "@babel/helper-split-export-declaration": { 164 | "version": "7.16.7", 165 | "resolved": "https://registry.npmjs.org/@babel/helper-split-export-declaration/-/helper-split-export-declaration-7.16.7.tgz", 166 | "integrity": "sha512-xbWoy/PFoxSWazIToT9Sif+jJTlrMcndIsaOKvTA6u7QEo7ilkRZpjew18/W3c7nm8fXdUDXh02VXTbZ0pGDNw==", 167 | "dev": true, 168 | "requires": { 169 | "@babel/types": "^7.16.7" 170 | } 171 | }, 172 | "@babel/helper-validator-identifier": { 173 | "version": "7.16.7", 174 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.16.7.tgz", 175 | "integrity": "sha512-hsEnFemeiW4D08A5gUAZxLBTXpZ39P+a+DGDsHw1yxqyQ/jzFEnxf5uTEGp+3bzAbNOxU1paTgYS4ECU/IgfDw==" 176 | }, 177 | "@babel/helper-validator-option": { 178 | "version": "7.16.7", 179 | "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.16.7.tgz", 180 | "integrity": "sha512-TRtenOuRUVo9oIQGPC5G9DgK4743cdxvtOw0weQNpZXaS16SCBi5MNjZF8vba3ETURjZpTbVn7Vvcf2eAwFozQ==", 181 | "dev": true 182 | }, 183 | "@babel/helpers": { 184 | "version": "7.17.8", 185 | "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.17.8.tgz", 186 | "integrity": "sha512-QcL86FGxpfSJwGtAvv4iG93UL6bmqBdmoVY0CMCU2g+oD2ezQse3PT5Pa+jiD6LJndBQi0EDlpzOWNlLuhz5gw==", 187 | "dev": true, 188 | "requires": { 189 | "@babel/template": "^7.16.7", 190 | "@babel/traverse": "^7.17.3", 191 | "@babel/types": "^7.17.0" 192 | } 193 | }, 194 | "@babel/highlight": { 195 | "version": "7.16.10", 196 | "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.16.10.tgz", 197 | "integrity": "sha512-5FnTQLSLswEj6IkgVw5KusNUUFY9ZGqe/TRFnP/BKYHYgfh7tc+C7mwiy95/yNP7Dh9x580Vv8r7u7ZfTBFxdw==", 198 | "requires": { 199 | "@babel/helper-validator-identifier": "^7.16.7", 200 | "chalk": "^2.0.0", 201 | "js-tokens": "^4.0.0" 202 | } 203 | }, 204 | "@babel/parser": { 205 | "version": "7.17.8", 206 | "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.17.8.tgz", 207 | "integrity": "sha512-BoHhDJrJXqcg+ZL16Xv39H9n+AqJ4pcDrQBGZN+wHxIysrLZ3/ECwCBUch/1zUNhnsXULcONU3Ei5Hmkfk6kiQ==", 208 | "dev": true 209 | }, 210 | "@babel/plugin-syntax-jsx": { 211 | "version": "7.16.7", 212 | "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.16.7.tgz", 213 | "integrity": "sha512-Esxmk7YjA8QysKeT3VhTXvF6y77f/a91SIs4pWb4H2eWGQkCKFgQaG6hdoEVZtGsrAcb2K5BW66XsOErD4WU3Q==", 214 | "dev": true, 215 | "requires": { 216 | "@babel/helper-plugin-utils": "^7.16.7" 217 | } 218 | }, 219 | "@babel/plugin-transform-react-jsx": { 220 | "version": "7.17.3", 221 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx/-/plugin-transform-react-jsx-7.17.3.tgz", 222 | "integrity": "sha512-9tjBm4O07f7mzKSIlEmPdiE6ub7kfIe6Cd+w+oQebpATfTQMAgW+YOuWxogbKVTulA+MEO7byMeIUtQ1z+z+ZQ==", 223 | "dev": true, 224 | "requires": { 225 | "@babel/helper-annotate-as-pure": "^7.16.7", 226 | "@babel/helper-module-imports": "^7.16.7", 227 | "@babel/helper-plugin-utils": "^7.16.7", 228 | "@babel/plugin-syntax-jsx": "^7.16.7", 229 | "@babel/types": "^7.17.0" 230 | } 231 | }, 232 | "@babel/plugin-transform-react-jsx-development": { 233 | "version": "7.16.7", 234 | "resolved": "https://registry.npmjs.org/@babel/plugin-transform-react-jsx-development/-/plugin-transform-react-jsx-development-7.16.7.tgz", 235 | "integrity": "sha512-RMvQWvpla+xy6MlBpPlrKZCMRs2AGiHOGHY3xRwl0pEeim348dDyxeH4xBsMPbIMhujeq7ihE702eM2Ew0Wo+A==", 236 | "dev": true, 237 | "requires": { 238 | "@babel/plugin-transform-react-jsx": "^7.16.7" 239 | } 240 | }, 241 | "@babel/template": { 242 | "version": "7.16.7", 243 | "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.16.7.tgz", 244 | "integrity": "sha512-I8j/x8kHUrbYRTUxXrrMbfCa7jxkE7tZre39x3kjr9hvI82cK1FfqLygotcWN5kdPGWcLdWMHpSBavse5tWw3w==", 245 | "dev": true, 246 | "requires": { 247 | "@babel/code-frame": "^7.16.7", 248 | "@babel/parser": "^7.16.7", 249 | "@babel/types": "^7.16.7" 250 | } 251 | }, 252 | "@babel/traverse": { 253 | "version": "7.17.3", 254 | "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.17.3.tgz", 255 | "integrity": "sha512-5irClVky7TxRWIRtxlh2WPUUOLhcPN06AGgaQSB8AEwuyEBgJVuJ5imdHm5zxk8w0QS5T+tDfnDxAlhWjpb7cw==", 256 | "dev": true, 257 | "requires": { 258 | "@babel/code-frame": "^7.16.7", 259 | "@babel/generator": "^7.17.3", 260 | "@babel/helper-environment-visitor": "^7.16.7", 261 | "@babel/helper-function-name": "^7.16.7", 262 | "@babel/helper-hoist-variables": "^7.16.7", 263 | "@babel/helper-split-export-declaration": "^7.16.7", 264 | "@babel/parser": "^7.17.3", 265 | "@babel/types": "^7.17.0", 266 | "debug": "^4.1.0", 267 | "globals": "^11.1.0" 268 | } 269 | }, 270 | "@babel/types": { 271 | "version": "7.17.0", 272 | "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.17.0.tgz", 273 | "integrity": "sha512-TmKSNO4D5rzhL5bjWFcVHHLETzfQ/AmbKpKPOSjlP0WoHZ6L911fgoOKY4Alp/emzG4cHJdyN49zpgkbXFEHHw==", 274 | "dev": true, 275 | "requires": { 276 | "@babel/helper-validator-identifier": "^7.16.7", 277 | "to-fast-properties": "^2.0.0" 278 | } 279 | }, 280 | "@jridgewell/resolve-uri": { 281 | "version": "3.0.5", 282 | "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.0.5.tgz", 283 | "integrity": "sha512-VPeQ7+wH0itvQxnG+lIzWgkysKIr3L9sslimFW55rHMdGu/qCQ5z5h9zq4gI8uBtqkpHhsF4Z/OwExufUCThew==", 284 | "dev": true 285 | }, 286 | "@jridgewell/sourcemap-codec": { 287 | "version": "1.4.11", 288 | "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.4.11.tgz", 289 | "integrity": "sha512-Fg32GrJo61m+VqYSdRSjRXMjQ06j8YIYfcTqndLYVAaHmroZHLJZCydsWBOTDqXS2v+mjxohBWEMfg97GXmYQg==", 290 | "dev": true 291 | }, 292 | "@jridgewell/trace-mapping": { 293 | "version": "0.3.4", 294 | "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.4.tgz", 295 | "integrity": "sha512-vFv9ttIedivx0ux3QSjhgtCVjPZd5l46ZOMDSCwnH1yUO2e964gO8LZGyv2QkqcgR6TnBU1v+1IFqmeoG+0UJQ==", 296 | "dev": true, 297 | "requires": { 298 | "@jridgewell/resolve-uri": "^3.0.3", 299 | "@jridgewell/sourcemap-codec": "^1.4.10" 300 | } 301 | }, 302 | "@nodelib/fs.scandir": { 303 | "version": "2.1.5", 304 | "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", 305 | "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", 306 | "requires": { 307 | "@nodelib/fs.stat": "2.0.5", 308 | "run-parallel": "^1.1.9" 309 | } 310 | }, 311 | "@nodelib/fs.stat": { 312 | "version": "2.0.5", 313 | "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", 314 | "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==" 315 | }, 316 | "@nodelib/fs.walk": { 317 | "version": "1.2.8", 318 | "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", 319 | "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", 320 | "requires": { 321 | "@nodelib/fs.scandir": "2.1.5", 322 | "fastq": "^1.6.0" 323 | } 324 | }, 325 | "@preact/preset-vite": { 326 | "version": "2.2.0", 327 | "resolved": "https://registry.npmjs.org/@preact/preset-vite/-/preset-vite-2.2.0.tgz", 328 | "integrity": "sha512-xOtPzyVSPphUF/tRnzjxkCR/ovbCS6O25ekdCw5MGKcaAkb6PDRo50tS1x2n0+O9qL7Z/qrHJKpyCVn29A4iMg==", 329 | "dev": true, 330 | "requires": { 331 | "@babel/plugin-transform-react-jsx": "^7.14.9", 332 | "@babel/plugin-transform-react-jsx-development": "^7.16.7", 333 | "@prefresh/vite": "^2.2.6", 334 | "@rollup/pluginutils": "^4.1.1", 335 | "babel-plugin-transform-hook-names": "^1.0.2", 336 | "debug": "^4.3.1", 337 | "kolorist": "^1.2.10", 338 | "resolve": "^1.20.0" 339 | } 340 | }, 341 | "@prefresh/babel-plugin": { 342 | "version": "0.4.3", 343 | "resolved": "https://registry.npmjs.org/@prefresh/babel-plugin/-/babel-plugin-0.4.3.tgz", 344 | "integrity": "sha512-fYAWbU1WDSLn108kKY4eDaaeUcnszFqXjgaGKYXNZ5NLulpRTpsrY+Sbfo9q8LDpWrBpqIgzjrwNnvglWI1xNQ==", 345 | "dev": true 346 | }, 347 | "@prefresh/core": { 348 | "version": "1.3.4", 349 | "resolved": "https://registry.npmjs.org/@prefresh/core/-/core-1.3.4.tgz", 350 | "integrity": "sha512-s7iNsnyJ3lZEUrYIgmVIB/hKtp4U6mdD91a31Zg7Q8M49O0x2KThrbrMQYraoDDrs4STdFB8Zv6bceUguOoX1A==", 351 | "dev": true 352 | }, 353 | "@prefresh/utils": { 354 | "version": "1.1.3", 355 | "resolved": "https://registry.npmjs.org/@prefresh/utils/-/utils-1.1.3.tgz", 356 | "integrity": "sha512-Mb9abhJTOV4yCfkXrMrcgFiFT7MfNOw8sDa+XyZBdq/Ai2p4Zyxqsb3EgHLOEdHpMj6J9aiZ54W8H6FTam1u+A==", 357 | "dev": true 358 | }, 359 | "@prefresh/vite": { 360 | "version": "2.2.8", 361 | "resolved": "https://registry.npmjs.org/@prefresh/vite/-/vite-2.2.8.tgz", 362 | "integrity": "sha512-yGGa+PKPYPTzMlxgQ8aBgxw9K69I8X4iQ0E6KOcIvls96WKqKLLOYZW9SUgCve446jpUXvc9udviPBZjCeZIIQ==", 363 | "dev": true, 364 | "requires": { 365 | "@babel/core": "^7.9.6", 366 | "@prefresh/babel-plugin": "0.4.3", 367 | "@prefresh/core": "^1.3.3", 368 | "@prefresh/utils": "^1.1.2", 369 | "@rollup/pluginutils": "^4.1.0" 370 | } 371 | }, 372 | "@rollup/pluginutils": { 373 | "version": "4.2.0", 374 | "resolved": "https://registry.npmjs.org/@rollup/pluginutils/-/pluginutils-4.2.0.tgz", 375 | "integrity": "sha512-2WUyJNRkyH5p487pGnn4tWAsxhEFKN/pT8CMgHshd5H+IXkOnKvKZwsz5ZWz+YCXkleZRAU5kwbfgF8CPfDRqA==", 376 | "dev": true, 377 | "requires": { 378 | "estree-walker": "^2.0.1", 379 | "picomatch": "^2.2.2" 380 | } 381 | }, 382 | "@types/lodash": { 383 | "version": "4.14.181", 384 | "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.14.181.tgz", 385 | "integrity": "sha512-n3tyKthHJbkiWhDZs3DkhkCzt2MexYHXlX0td5iMplyfwketaOeKboEVBqzceH7juqvEg3q5oUoBFxSLu7zFag==", 386 | "dev": true 387 | }, 388 | "@types/lodash.debounce": { 389 | "version": "4.0.6", 390 | "resolved": "https://registry.npmjs.org/@types/lodash.debounce/-/lodash.debounce-4.0.6.tgz", 391 | "integrity": "sha512-4WTmnnhCfDvvuLMaF3KV4Qfki93KebocUF45msxhYyjMttZDQYzHkO639ohhk8+oco2cluAFL3t5+Jn4mleylQ==", 392 | "dev": true, 393 | "requires": { 394 | "@types/lodash": "*" 395 | } 396 | }, 397 | "@types/parse-json": { 398 | "version": "4.0.0", 399 | "resolved": "https://registry.npmjs.org/@types/parse-json/-/parse-json-4.0.0.tgz", 400 | "integrity": "sha512-//oorEZjL6sbPcKUaCdIGlIUeH26mgzimjBB77G6XRgnDl/L5wOnpyBGRe/Mmf5CVW3PwEBE1NjiMZ/ssFh4wA==" 401 | }, 402 | "acorn": { 403 | "version": "7.4.1", 404 | "resolved": "https://registry.npmjs.org/acorn/-/acorn-7.4.1.tgz", 405 | "integrity": "sha512-nQyp0o1/mNdbTO1PO6kHkwSrmgZ0MT/jCCpNiwbUjGoRN4dlBhqJtoQuCnEOKzgTVwg0ZWiCoQy6SxMebQVh8A==" 406 | }, 407 | "acorn-node": { 408 | "version": "1.8.2", 409 | "resolved": "https://registry.npmjs.org/acorn-node/-/acorn-node-1.8.2.tgz", 410 | "integrity": "sha512-8mt+fslDufLYntIoPAaIMUe/lrbrehIiwmR3t2k9LljIzoigEPF27eLk2hy8zSGzmR/ogr7zbRKINMo1u0yh5A==", 411 | "requires": { 412 | "acorn": "^7.0.0", 413 | "acorn-walk": "^7.0.0", 414 | "xtend": "^4.0.2" 415 | } 416 | }, 417 | "acorn-walk": { 418 | "version": "7.2.0", 419 | "resolved": "https://registry.npmjs.org/acorn-walk/-/acorn-walk-7.2.0.tgz", 420 | "integrity": "sha512-OPdCF6GsMIP+Az+aWfAAOEt2/+iVDKE7oy6lJ098aoe59oAmK76qV6Gw60SbZ8jHuG2wH058GF4pLFbYamYrVA==" 421 | }, 422 | "ansi-styles": { 423 | "version": "3.2.1", 424 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", 425 | "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", 426 | "requires": { 427 | "color-convert": "^1.9.0" 428 | } 429 | }, 430 | "anymatch": { 431 | "version": "3.1.2", 432 | "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.2.tgz", 433 | "integrity": "sha512-P43ePfOAIupkguHUycrc4qJ9kz8ZiuOUijaETwX7THt0Y/GNK7v0aa8rY816xWjZ7rJdA5XdMcpVFTKMq+RvWg==", 434 | "requires": { 435 | "normalize-path": "^3.0.0", 436 | "picomatch": "^2.0.4" 437 | } 438 | }, 439 | "arg": { 440 | "version": "5.0.1", 441 | "resolved": "https://registry.npmjs.org/arg/-/arg-5.0.1.tgz", 442 | "integrity": "sha512-e0hDa9H2Z9AwFkk2qDlwhoMYE4eToKarchkQHovNdLTCYMHZHeRjI71crOh+dio4K6u1IcwubQqo79Ga4CyAQA==" 443 | }, 444 | "autoprefixer": { 445 | "version": "10.4.4", 446 | "resolved": "https://registry.npmjs.org/autoprefixer/-/autoprefixer-10.4.4.tgz", 447 | "integrity": "sha512-Tm8JxsB286VweiZ5F0anmbyGiNI3v3wGv3mz9W+cxEDYB/6jbnj6GM9H9mK3wIL8ftgl+C07Lcwb8PG5PCCPzA==", 448 | "dev": true, 449 | "requires": { 450 | "browserslist": "^4.20.2", 451 | "caniuse-lite": "^1.0.30001317", 452 | "fraction.js": "^4.2.0", 453 | "normalize-range": "^0.1.2", 454 | "picocolors": "^1.0.0", 455 | "postcss-value-parser": "^4.2.0" 456 | } 457 | }, 458 | "babel-plugin-transform-hook-names": { 459 | "version": "1.0.2", 460 | "resolved": "https://registry.npmjs.org/babel-plugin-transform-hook-names/-/babel-plugin-transform-hook-names-1.0.2.tgz", 461 | "integrity": "sha512-5gafyjyyBTTdX/tQQ0hRgu4AhNHG/hqWi0ZZmg2xvs2FgRkJXzDNKBZCyoYqgFkovfDrgM8OoKg8karoUvWeCw==", 462 | "dev": true 463 | }, 464 | "binary-extensions": { 465 | "version": "2.2.0", 466 | "resolved": "https://registry.npmjs.org/binary-extensions/-/binary-extensions-2.2.0.tgz", 467 | "integrity": "sha512-jDctJ/IVQbZoJykoeHbhXpOlNBqGNcwXJKJog42E5HDPUwQTSdjCHdihjj0DlnheQ7blbT6dHOafNAiS8ooQKA==" 468 | }, 469 | "braces": { 470 | "version": "3.0.2", 471 | "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.2.tgz", 472 | "integrity": "sha512-b8um+L1RzM3WDSzvhm6gIz1yfTbBt6YTlcEKAvsmqCZZFw46z626lVj9j1yEPW33H5H+lBQpZMP1k8l+78Ha0A==", 473 | "requires": { 474 | "fill-range": "^7.0.1" 475 | } 476 | }, 477 | "browserslist": { 478 | "version": "4.20.2", 479 | "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.20.2.tgz", 480 | "integrity": "sha512-CQOBCqp/9pDvDbx3xfMi+86pr4KXIf2FDkTTdeuYw8OxS9t898LA1Khq57gtufFILXpfgsSx5woNgsBgvGjpsA==", 481 | "dev": true, 482 | "requires": { 483 | "caniuse-lite": "^1.0.30001317", 484 | "electron-to-chromium": "^1.4.84", 485 | "escalade": "^3.1.1", 486 | "node-releases": "^2.0.2", 487 | "picocolors": "^1.0.0" 488 | } 489 | }, 490 | "callsites": { 491 | "version": "3.1.0", 492 | "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", 493 | "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==" 494 | }, 495 | "camelcase-css": { 496 | "version": "2.0.1", 497 | "resolved": "https://registry.npmjs.org/camelcase-css/-/camelcase-css-2.0.1.tgz", 498 | "integrity": "sha512-QOSvevhslijgYwRx6Rv7zKdMF8lbRmx+uQGx2+vDc+KI/eBnsy9kit5aj23AgGu3pa4t9AgwbnXWqS+iOY+2aA==" 499 | }, 500 | "caniuse-lite": { 501 | "version": "1.0.30001323", 502 | "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001323.tgz", 503 | "integrity": "sha512-e4BF2RlCVELKx8+RmklSEIVub1TWrmdhvA5kEUueummz1XyySW0DVk+3x9HyhU9MuWTa2BhqLgEuEmUwASAdCA==", 504 | "dev": true 505 | }, 506 | "chalk": { 507 | "version": "2.4.2", 508 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", 509 | "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", 510 | "requires": { 511 | "ansi-styles": "^3.2.1", 512 | "escape-string-regexp": "^1.0.5", 513 | "supports-color": "^5.3.0" 514 | } 515 | }, 516 | "chart.js": { 517 | "version": "3.7.1", 518 | "resolved": "https://registry.npmjs.org/chart.js/-/chart.js-3.7.1.tgz", 519 | "integrity": "sha512-8knRegQLFnPQAheZV8MjxIXc5gQEfDFD897BJgv/klO/vtIyFFmgMXrNfgrXpbTr/XbTturxRgxIXx/Y+ASJBA==" 520 | }, 521 | "chokidar": { 522 | "version": "3.5.3", 523 | "resolved": "https://registry.npmjs.org/chokidar/-/chokidar-3.5.3.tgz", 524 | "integrity": "sha512-Dr3sfKRP6oTcjf2JmUmFJfeVMvXBdegxB0iVQ5eb2V10uFJUCAS8OByZdVAyVb8xXNz3GjjTgj9kLWsZTqE6kw==", 525 | "requires": { 526 | "anymatch": "~3.1.2", 527 | "braces": "~3.0.2", 528 | "fsevents": "~2.3.2", 529 | "glob-parent": "~5.1.2", 530 | "is-binary-path": "~2.1.0", 531 | "is-glob": "~4.0.1", 532 | "normalize-path": "~3.0.0", 533 | "readdirp": "~3.6.0" 534 | }, 535 | "dependencies": { 536 | "glob-parent": { 537 | "version": "5.1.2", 538 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 539 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 540 | "requires": { 541 | "is-glob": "^4.0.1" 542 | } 543 | } 544 | } 545 | }, 546 | "color": { 547 | "version": "4.2.1", 548 | "resolved": "https://registry.npmjs.org/color/-/color-4.2.1.tgz", 549 | "integrity": "sha512-MFJr0uY4RvTQUKvPq7dh9grVOTYSFeXja2mBXioCGjnjJoXrAp9jJ1NQTDR73c9nwBSAQiNKloKl5zq9WB9UPw==", 550 | "requires": { 551 | "color-convert": "^2.0.1", 552 | "color-string": "^1.9.0" 553 | }, 554 | "dependencies": { 555 | "color-convert": { 556 | "version": "2.0.1", 557 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 558 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 559 | "requires": { 560 | "color-name": "~1.1.4" 561 | } 562 | }, 563 | "color-name": { 564 | "version": "1.1.4", 565 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 566 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 567 | } 568 | } 569 | }, 570 | "color-convert": { 571 | "version": "1.9.3", 572 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", 573 | "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", 574 | "requires": { 575 | "color-name": "1.1.3" 576 | } 577 | }, 578 | "color-name": { 579 | "version": "1.1.3", 580 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", 581 | "integrity": "sha1-p9BVi9icQveV3UIyj3QIMcpTvCU=" 582 | }, 583 | "color-string": { 584 | "version": "1.9.0", 585 | "resolved": "https://registry.npmjs.org/color-string/-/color-string-1.9.0.tgz", 586 | "integrity": "sha512-9Mrz2AQLefkH1UvASKj6v6hj/7eWgjnT/cVsR8CumieLoT+g900exWeNogqtweI8dxloXN9BDQTYro1oWu/5CQ==", 587 | "requires": { 588 | "color-name": "^1.0.0", 589 | "simple-swizzle": "^0.2.2" 590 | } 591 | }, 592 | "convert-source-map": { 593 | "version": "1.8.0", 594 | "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-1.8.0.tgz", 595 | "integrity": "sha512-+OQdjP49zViI/6i7nIJpA8rAl4sV/JdPfU9nZs3VqOwGIgizICvuN2ru6fMd+4llL0tar18UYJXfZ/TWtmhUjA==", 596 | "dev": true, 597 | "requires": { 598 | "safe-buffer": "~5.1.1" 599 | } 600 | }, 601 | "cosmiconfig": { 602 | "version": "7.0.1", 603 | "resolved": "https://registry.npmjs.org/cosmiconfig/-/cosmiconfig-7.0.1.tgz", 604 | "integrity": "sha512-a1YWNUV2HwGimB7dU2s1wUMurNKjpx60HxBB6xUM8Re+2s1g1IIfJvFR0/iCF+XHdE0GMTKTuLR32UQff4TEyQ==", 605 | "requires": { 606 | "@types/parse-json": "^4.0.0", 607 | "import-fresh": "^3.2.1", 608 | "parse-json": "^5.0.0", 609 | "path-type": "^4.0.0", 610 | "yaml": "^1.10.0" 611 | } 612 | }, 613 | "css-selector-tokenizer": { 614 | "version": "0.8.0", 615 | "resolved": "https://registry.npmjs.org/css-selector-tokenizer/-/css-selector-tokenizer-0.8.0.tgz", 616 | "integrity": "sha512-Jd6Ig3/pe62/qe5SBPTN8h8LeUg/pT4lLgtavPf7updwwHpvFzxvOQBHYj2LZDMjUnBzgvIUSjRcf6oT5HzHFg==", 617 | "requires": { 618 | "cssesc": "^3.0.0", 619 | "fastparse": "^1.1.2" 620 | } 621 | }, 622 | "cssesc": { 623 | "version": "3.0.0", 624 | "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", 625 | "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==" 626 | }, 627 | "daisyui": { 628 | "version": "2.13.4", 629 | "resolved": "https://registry.npmjs.org/daisyui/-/daisyui-2.13.4.tgz", 630 | "integrity": "sha512-seLNXMqOV0C2VigLi2OSmVm7LOr+ZcbnHW5f1byjWNhCc0DU8eX/Xc+aqPOynRnofAZ8igciKq6qmAYunewPAQ==", 631 | "requires": { 632 | "color": "^4.2", 633 | "css-selector-tokenizer": "^0.8.0", 634 | "postcss-js": "^4.0.0", 635 | "tailwindcss": "^3.0" 636 | } 637 | }, 638 | "debug": { 639 | "version": "4.3.4", 640 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.4.tgz", 641 | "integrity": "sha512-PRWFHuSU3eDtQJPvnNY7Jcket1j0t5OuOsFzPPzsekD52Zl8qUfFIPEiswXqIvHWGVHOgX+7G/vCNNhehwxfkQ==", 642 | "dev": true, 643 | "requires": { 644 | "ms": "2.1.2" 645 | } 646 | }, 647 | "defined": { 648 | "version": "1.0.0", 649 | "resolved": "https://registry.npmjs.org/defined/-/defined-1.0.0.tgz", 650 | "integrity": "sha1-yY2bzvdWdBiOEQlpFRGZ45sfppM=" 651 | }, 652 | "detective": { 653 | "version": "5.2.0", 654 | "resolved": "https://registry.npmjs.org/detective/-/detective-5.2.0.tgz", 655 | "integrity": "sha512-6SsIx+nUUbuK0EthKjv0zrdnajCCXVYGmbYYiYjFVpzcjwEs/JMDZ8tPRG29J/HhN56t3GJp2cGSWDRjjot8Pg==", 656 | "requires": { 657 | "acorn-node": "^1.6.1", 658 | "defined": "^1.0.0", 659 | "minimist": "^1.1.1" 660 | } 661 | }, 662 | "didyoumean": { 663 | "version": "1.2.2", 664 | "resolved": "https://registry.npmjs.org/didyoumean/-/didyoumean-1.2.2.tgz", 665 | "integrity": "sha512-gxtyfqMg7GKyhQmb056K7M3xszy/myH8w+B4RT+QXBQsvAOdc3XymqDDPHx1BgPgsdAA5SIifona89YtRATDzw==" 666 | }, 667 | "dlv": { 668 | "version": "1.1.3", 669 | "resolved": "https://registry.npmjs.org/dlv/-/dlv-1.1.3.tgz", 670 | "integrity": "sha512-+HlytyjlPKnIG8XuRG8WvmBP8xs8P71y+SKKS6ZXWoEgLuePxtDoUEiH7WkdePWrQ5JBpE6aoVqfZfJUQkjXwA==" 671 | }, 672 | "electron-to-chromium": { 673 | "version": "1.4.103", 674 | "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.4.103.tgz", 675 | "integrity": "sha512-c/uKWR1Z/W30Wy/sx3dkZoj4BijbXX85QKWu9jJfjho3LBAXNEGAEW3oWiGb+dotA6C6BzCTxL2/aLes7jlUeg==", 676 | "dev": true 677 | }, 678 | "error-ex": { 679 | "version": "1.3.2", 680 | "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", 681 | "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", 682 | "requires": { 683 | "is-arrayish": "^0.2.1" 684 | } 685 | }, 686 | "esbuild": { 687 | "version": "0.14.29", 688 | "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.14.29.tgz", 689 | "integrity": "sha512-SQS8cO8xFEqevYlrHt6exIhK853Me4nZ4aMW6ieysInLa0FMAL+AKs87HYNRtR2YWRcEIqoXAHh+Ytt5/66qpg==", 690 | "dev": true, 691 | "requires": { 692 | "esbuild-android-64": "0.14.29", 693 | "esbuild-android-arm64": "0.14.29", 694 | "esbuild-darwin-64": "0.14.29", 695 | "esbuild-darwin-arm64": "0.14.29", 696 | "esbuild-freebsd-64": "0.14.29", 697 | "esbuild-freebsd-arm64": "0.14.29", 698 | "esbuild-linux-32": "0.14.29", 699 | "esbuild-linux-64": "0.14.29", 700 | "esbuild-linux-arm": "0.14.29", 701 | "esbuild-linux-arm64": "0.14.29", 702 | "esbuild-linux-mips64le": "0.14.29", 703 | "esbuild-linux-ppc64le": "0.14.29", 704 | "esbuild-linux-riscv64": "0.14.29", 705 | "esbuild-linux-s390x": "0.14.29", 706 | "esbuild-netbsd-64": "0.14.29", 707 | "esbuild-openbsd-64": "0.14.29", 708 | "esbuild-sunos-64": "0.14.29", 709 | "esbuild-windows-32": "0.14.29", 710 | "esbuild-windows-64": "0.14.29", 711 | "esbuild-windows-arm64": "0.14.29" 712 | } 713 | }, 714 | "esbuild-android-64": { 715 | "version": "0.14.29", 716 | "resolved": "https://registry.npmjs.org/esbuild-android-64/-/esbuild-android-64-0.14.29.tgz", 717 | "integrity": "sha512-tJuaN33SVZyiHxRaVTo1pwW+rn3qetJX/SRuc/83rrKYtyZG0XfsQ1ao1nEudIt9w37ZSNXR236xEfm2C43sbw==", 718 | "dev": true, 719 | "optional": true 720 | }, 721 | "esbuild-android-arm64": { 722 | "version": "0.14.29", 723 | "resolved": "https://registry.npmjs.org/esbuild-android-arm64/-/esbuild-android-arm64-0.14.29.tgz", 724 | "integrity": "sha512-D74dCv6yYnMTlofVy1JKiLM5JdVSQd60/rQfJSDP9qvRAI0laPXIG/IXY1RG6jobmFMUfL38PbFnCqyI/6fPXg==", 725 | "dev": true, 726 | "optional": true 727 | }, 728 | "esbuild-darwin-64": { 729 | "version": "0.14.29", 730 | "resolved": "https://registry.npmjs.org/esbuild-darwin-64/-/esbuild-darwin-64-0.14.29.tgz", 731 | "integrity": "sha512-+CJaRvfTkzs9t+CjGa0Oa28WoXa7EeLutQhxus+fFcu0MHhsBhlmeWHac3Cc/Sf/xPi1b2ccDFfzGYJCfV0RrA==", 732 | "dev": true, 733 | "optional": true 734 | }, 735 | "esbuild-darwin-arm64": { 736 | "version": "0.14.29", 737 | "resolved": "https://registry.npmjs.org/esbuild-darwin-arm64/-/esbuild-darwin-arm64-0.14.29.tgz", 738 | "integrity": "sha512-5Wgz/+zK+8X2ZW7vIbwoZ613Vfr4A8HmIs1XdzRmdC1kG0n5EG5fvKk/jUxhNlrYPx1gSY7XadQ3l4xAManPSw==", 739 | "dev": true, 740 | "optional": true 741 | }, 742 | "esbuild-freebsd-64": { 743 | "version": "0.14.29", 744 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-64/-/esbuild-freebsd-64-0.14.29.tgz", 745 | "integrity": "sha512-VTfS7Bm9QA12JK1YXF8+WyYOfvD7WMpbArtDj6bGJ5Sy5xp01c/q70Arkn596aGcGj0TvQRplaaCIrfBG1Wdtg==", 746 | "dev": true, 747 | "optional": true 748 | }, 749 | "esbuild-freebsd-arm64": { 750 | "version": "0.14.29", 751 | "resolved": "https://registry.npmjs.org/esbuild-freebsd-arm64/-/esbuild-freebsd-arm64-0.14.29.tgz", 752 | "integrity": "sha512-WP5L4ejwLWWvd3Fo2J5mlXvG3zQHaw5N1KxFGnUc4+2ZFZknP0ST63i0IQhpJLgEJwnQpXv2uZlU1iWZjFqEIg==", 753 | "dev": true, 754 | "optional": true 755 | }, 756 | "esbuild-linux-32": { 757 | "version": "0.14.29", 758 | "resolved": "https://registry.npmjs.org/esbuild-linux-32/-/esbuild-linux-32-0.14.29.tgz", 759 | "integrity": "sha512-4myeOvFmQBWdI2U1dEBe2DCSpaZyjdQtmjUY11Zu2eQg4ynqLb8Y5mNjNU9UN063aVsCYYfbs8jbken/PjyidA==", 760 | "dev": true, 761 | "optional": true 762 | }, 763 | "esbuild-linux-64": { 764 | "version": "0.14.29", 765 | "resolved": "https://registry.npmjs.org/esbuild-linux-64/-/esbuild-linux-64-0.14.29.tgz", 766 | "integrity": "sha512-iaEuLhssReAKE7HMwxwFJFn7D/EXEs43fFy5CJeA4DGmU6JHh0qVJD2p/UP46DvUXLRKXsXw0i+kv5TdJ1w5pg==", 767 | "dev": true, 768 | "optional": true 769 | }, 770 | "esbuild-linux-arm": { 771 | "version": "0.14.29", 772 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm/-/esbuild-linux-arm-0.14.29.tgz", 773 | "integrity": "sha512-OXa9D9QL1hwrAnYYAHt/cXAuSCmoSqYfTW/0CEY0LgJNyTxJKtqc5mlwjAZAvgyjmha0auS/sQ0bXfGf2wAokQ==", 774 | "dev": true, 775 | "optional": true 776 | }, 777 | "esbuild-linux-arm64": { 778 | "version": "0.14.29", 779 | "resolved": "https://registry.npmjs.org/esbuild-linux-arm64/-/esbuild-linux-arm64-0.14.29.tgz", 780 | "integrity": "sha512-KYf7s8wDfUy+kjKymW3twyGT14OABjGHRkm9gPJ0z4BuvqljfOOUbq9qT3JYFnZJHOgkr29atT//hcdD0Pi7Mw==", 781 | "dev": true, 782 | "optional": true 783 | }, 784 | "esbuild-linux-mips64le": { 785 | "version": "0.14.29", 786 | "resolved": "https://registry.npmjs.org/esbuild-linux-mips64le/-/esbuild-linux-mips64le-0.14.29.tgz", 787 | "integrity": "sha512-05jPtWQMsZ1aMGfHOvnR5KrTvigPbU35BtuItSSWLI2sJu5VrM8Pr9Owym4wPvA4153DFcOJ1EPN/2ujcDt54g==", 788 | "dev": true, 789 | "optional": true 790 | }, 791 | "esbuild-linux-ppc64le": { 792 | "version": "0.14.29", 793 | "resolved": "https://registry.npmjs.org/esbuild-linux-ppc64le/-/esbuild-linux-ppc64le-0.14.29.tgz", 794 | "integrity": "sha512-FYhBqn4Ir9xG+f6B5VIQVbRuM4S6qwy29dDNYFPoxLRnwTEKToIYIUESN1qHyUmIbfO0YB4phG2JDV2JDN9Kgw==", 795 | "dev": true, 796 | "optional": true 797 | }, 798 | "esbuild-linux-riscv64": { 799 | "version": "0.14.29", 800 | "resolved": "https://registry.npmjs.org/esbuild-linux-riscv64/-/esbuild-linux-riscv64-0.14.29.tgz", 801 | "integrity": "sha512-eqZMqPehkb4nZcffnuOpXJQdGURGd6GXQ4ZsDHSWyIUaA+V4FpMBe+5zMPtXRD2N4BtyzVvnBko6K8IWWr36ew==", 802 | "dev": true, 803 | "optional": true 804 | }, 805 | "esbuild-linux-s390x": { 806 | "version": "0.14.29", 807 | "resolved": "https://registry.npmjs.org/esbuild-linux-s390x/-/esbuild-linux-s390x-0.14.29.tgz", 808 | "integrity": "sha512-o7EYajF1rC/4ho7kpSG3gENVx0o2SsHm7cJ5fvewWB/TEczWU7teDgusGSujxCYcMottE3zqa423VTglNTYhjg==", 809 | "dev": true, 810 | "optional": true 811 | }, 812 | "esbuild-netbsd-64": { 813 | "version": "0.14.29", 814 | "resolved": "https://registry.npmjs.org/esbuild-netbsd-64/-/esbuild-netbsd-64-0.14.29.tgz", 815 | "integrity": "sha512-/esN6tb6OBSot6+JxgeOZeBk6P8V/WdR3GKBFeFpSqhgw4wx7xWUqPrdx4XNpBVO7X4Ipw9SAqgBrWHlXfddww==", 816 | "dev": true, 817 | "optional": true 818 | }, 819 | "esbuild-openbsd-64": { 820 | "version": "0.14.29", 821 | "resolved": "https://registry.npmjs.org/esbuild-openbsd-64/-/esbuild-openbsd-64-0.14.29.tgz", 822 | "integrity": "sha512-jUTdDzhEKrD0pLpjmk0UxwlfNJNg/D50vdwhrVcW/D26Vg0hVbthMfb19PJMatzclbK7cmgk1Nu0eNS+abzoHw==", 823 | "dev": true, 824 | "optional": true 825 | }, 826 | "esbuild-sunos-64": { 827 | "version": "0.14.29", 828 | "resolved": "https://registry.npmjs.org/esbuild-sunos-64/-/esbuild-sunos-64-0.14.29.tgz", 829 | "integrity": "sha512-EfhQN/XO+TBHTbkxwsxwA7EfiTHFe+MNDfxcf0nj97moCppD9JHPq48MLtOaDcuvrTYOcrMdJVeqmmeQ7doTcg==", 830 | "dev": true, 831 | "optional": true 832 | }, 833 | "esbuild-windows-32": { 834 | "version": "0.14.29", 835 | "resolved": "https://registry.npmjs.org/esbuild-windows-32/-/esbuild-windows-32-0.14.29.tgz", 836 | "integrity": "sha512-uoyb0YAJ6uWH4PYuYjfGNjvgLlb5t6b3zIaGmpWPOjgpr1Nb3SJtQiK4YCPGhONgfg2v6DcJgSbOteuKXhwqAw==", 837 | "dev": true, 838 | "optional": true 839 | }, 840 | "esbuild-windows-64": { 841 | "version": "0.14.29", 842 | "resolved": "https://registry.npmjs.org/esbuild-windows-64/-/esbuild-windows-64-0.14.29.tgz", 843 | "integrity": "sha512-X9cW/Wl95QjsH8WUyr3NqbmfdU72jCp71cH3pwPvI4CgBM2IeOUDdbt6oIGljPu2bf5eGDIo8K3Y3vvXCCTd8A==", 844 | "dev": true, 845 | "optional": true 846 | }, 847 | "esbuild-windows-arm64": { 848 | "version": "0.14.29", 849 | "resolved": "https://registry.npmjs.org/esbuild-windows-arm64/-/esbuild-windows-arm64-0.14.29.tgz", 850 | "integrity": "sha512-+O/PI+68fbUZPpl3eXhqGHTGK7DjLcexNnyJqtLZXOFwoAjaXlS5UBCvVcR3o2va+AqZTj8o6URaz8D2K+yfQQ==", 851 | "dev": true, 852 | "optional": true 853 | }, 854 | "escalade": { 855 | "version": "3.1.1", 856 | "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.1.1.tgz", 857 | "integrity": "sha512-k0er2gUkLf8O0zKJiAhmkTnJlTvINGv7ygDNPbeIsX/TJjGJZHuh9B2UxbsaEkmlEo9MfhrSzmhIlhRlI2GXnw==", 858 | "dev": true 859 | }, 860 | "escape-string-regexp": { 861 | "version": "1.0.5", 862 | "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", 863 | "integrity": "sha1-G2HAViGQqN/2rjuyzwIAyhMLhtQ=" 864 | }, 865 | "estree-walker": { 866 | "version": "2.0.2", 867 | "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", 868 | "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==", 869 | "dev": true 870 | }, 871 | "fast-glob": { 872 | "version": "3.2.11", 873 | "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.2.11.tgz", 874 | "integrity": "sha512-xrO3+1bxSo3ZVHAnqzyuewYT6aMFHRAd4Kcs92MAonjwQZLsK9d0SF1IyQ3k5PoirxTW0Oe/RqFgMQ6TcNE5Ew==", 875 | "requires": { 876 | "@nodelib/fs.stat": "^2.0.2", 877 | "@nodelib/fs.walk": "^1.2.3", 878 | "glob-parent": "^5.1.2", 879 | "merge2": "^1.3.0", 880 | "micromatch": "^4.0.4" 881 | }, 882 | "dependencies": { 883 | "glob-parent": { 884 | "version": "5.1.2", 885 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", 886 | "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", 887 | "requires": { 888 | "is-glob": "^4.0.1" 889 | } 890 | } 891 | } 892 | }, 893 | "fastparse": { 894 | "version": "1.1.2", 895 | "resolved": "https://registry.npmjs.org/fastparse/-/fastparse-1.1.2.tgz", 896 | "integrity": "sha512-483XLLxTVIwWK3QTrMGRqUfUpoOs/0hbQrl2oz4J0pAcm3A3bu84wxTFqGqkJzewCLdME38xJLJAxBABfQT8sQ==" 897 | }, 898 | "fastq": { 899 | "version": "1.13.0", 900 | "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.13.0.tgz", 901 | "integrity": "sha512-YpkpUnK8od0o1hmeSc7UUs/eB/vIPWJYjKck2QKIzAf71Vm1AAQ3EbuZB3g2JIy+pg+ERD0vqI79KyZiB2e2Nw==", 902 | "requires": { 903 | "reusify": "^1.0.4" 904 | } 905 | }, 906 | "fill-range": { 907 | "version": "7.0.1", 908 | "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.0.1.tgz", 909 | "integrity": "sha512-qOo9F+dMUmC2Lcb4BbVvnKJxTPjCm+RRpe4gDuGrzkL7mEVl/djYSu2OdQ2Pa302N4oqkSg9ir6jaLWJ2USVpQ==", 910 | "requires": { 911 | "to-regex-range": "^5.0.1" 912 | } 913 | }, 914 | "fraction.js": { 915 | "version": "4.2.0", 916 | "resolved": "https://registry.npmjs.org/fraction.js/-/fraction.js-4.2.0.tgz", 917 | "integrity": "sha512-MhLuK+2gUcnZe8ZHlaaINnQLl0xRIGRfcGk2yl8xoQAfHrSsL3rYu6FCmBdkdbhc9EPlwyGHewaRsvwRMJtAlA==", 918 | "dev": true 919 | }, 920 | "fsevents": { 921 | "version": "2.3.2", 922 | "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.2.tgz", 923 | "integrity": "sha512-xiqMQR4xAeHTuB9uWm+fFRcIOgKBMiOBP+eXiyT7jsgVCq1bkVygt00oASowB7EdtpOHaaPgKt812P9ab+DDKA==", 924 | "optional": true 925 | }, 926 | "function-bind": { 927 | "version": "1.1.1", 928 | "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.1.tgz", 929 | "integrity": "sha512-yIovAzMX49sF8Yl58fSCWJ5svSLuaibPxXQJFLmBObTuCr0Mf1KiPopGM9NiFjiYBCbfaa2Fh6breQ6ANVTI0A==" 930 | }, 931 | "gensync": { 932 | "version": "1.0.0-beta.2", 933 | "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", 934 | "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", 935 | "dev": true 936 | }, 937 | "glob-parent": { 938 | "version": "6.0.2", 939 | "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", 940 | "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", 941 | "requires": { 942 | "is-glob": "^4.0.3" 943 | } 944 | }, 945 | "globals": { 946 | "version": "11.12.0", 947 | "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", 948 | "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", 949 | "dev": true 950 | }, 951 | "has": { 952 | "version": "1.0.3", 953 | "resolved": "https://registry.npmjs.org/has/-/has-1.0.3.tgz", 954 | "integrity": "sha512-f2dvO0VU6Oej7RkWJGrehjbzMAjFp5/VKPp5tTpWIV4JHHZK1/BxbFRtf/siA2SWTe09caDmVtYYzWEIbBS4zw==", 955 | "requires": { 956 | "function-bind": "^1.1.1" 957 | } 958 | }, 959 | "has-flag": { 960 | "version": "3.0.0", 961 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", 962 | "integrity": "sha1-tdRU3CGZriJWmfNGfloH87lVuv0=" 963 | }, 964 | "import-fresh": { 965 | "version": "3.3.0", 966 | "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", 967 | "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", 968 | "requires": { 969 | "parent-module": "^1.0.0", 970 | "resolve-from": "^4.0.0" 971 | } 972 | }, 973 | "is-arrayish": { 974 | "version": "0.2.1", 975 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", 976 | "integrity": "sha1-d8mYQFJ6qOyxqLppe4BkWnqSap0=" 977 | }, 978 | "is-binary-path": { 979 | "version": "2.1.0", 980 | "resolved": "https://registry.npmjs.org/is-binary-path/-/is-binary-path-2.1.0.tgz", 981 | "integrity": "sha512-ZMERYes6pDydyuGidse7OsHxtbI7WVeUEozgR/g7rd0xUimYNlvZRE/K2MgZTjWy725IfelLeVcEM97mmtRGXw==", 982 | "requires": { 983 | "binary-extensions": "^2.0.0" 984 | } 985 | }, 986 | "is-core-module": { 987 | "version": "2.8.1", 988 | "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.8.1.tgz", 989 | "integrity": "sha512-SdNCUs284hr40hFTFP6l0IfZ/RSrMXF3qgoRHd3/79unUTvrFO/JoXwkGm+5J/Oe3E/b5GsnG330uUNgRpu1PA==", 990 | "requires": { 991 | "has": "^1.0.3" 992 | } 993 | }, 994 | "is-extglob": { 995 | "version": "2.1.1", 996 | "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", 997 | "integrity": "sha1-qIwCU1eR8C7TfHahueqXc8gz+MI=" 998 | }, 999 | "is-glob": { 1000 | "version": "4.0.3", 1001 | "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", 1002 | "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", 1003 | "requires": { 1004 | "is-extglob": "^2.1.1" 1005 | } 1006 | }, 1007 | "is-number": { 1008 | "version": "7.0.0", 1009 | "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", 1010 | "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==" 1011 | }, 1012 | "js-tokens": { 1013 | "version": "4.0.0", 1014 | "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", 1015 | "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==" 1016 | }, 1017 | "jsesc": { 1018 | "version": "2.5.2", 1019 | "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", 1020 | "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", 1021 | "dev": true 1022 | }, 1023 | "json-parse-even-better-errors": { 1024 | "version": "2.3.1", 1025 | "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", 1026 | "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==" 1027 | }, 1028 | "json5": { 1029 | "version": "2.2.1", 1030 | "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.1.tgz", 1031 | "integrity": "sha512-1hqLFMSrGHRHxav9q9gNjJ5EXznIxGVO09xQRrwplcS8qs28pZ8s8hupZAmqDwZUmVZ2Qb2jnyPOWcDH8m8dlA==", 1032 | "dev": true 1033 | }, 1034 | "kolorist": { 1035 | "version": "1.5.1", 1036 | "resolved": "https://registry.npmjs.org/kolorist/-/kolorist-1.5.1.tgz", 1037 | "integrity": "sha512-lxpCM3HTvquGxKGzHeknB/sUjuVoUElLlfYnXZT73K8geR9jQbroGlSCFBax9/0mpGoD3kzcMLnOlGQPJJNyqQ==", 1038 | "dev": true 1039 | }, 1040 | "lilconfig": { 1041 | "version": "2.0.5", 1042 | "resolved": "https://registry.npmjs.org/lilconfig/-/lilconfig-2.0.5.tgz", 1043 | "integrity": "sha512-xaYmXZtTHPAw5m+xLN8ab9C+3a8YmV3asNSPOATITbtwrfbwaLJj8h66H1WMIpALCkqsIzK3h7oQ+PdX+LQ9Eg==" 1044 | }, 1045 | "lines-and-columns": { 1046 | "version": "1.2.4", 1047 | "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", 1048 | "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==" 1049 | }, 1050 | "lodash.debounce": { 1051 | "version": "4.0.8", 1052 | "resolved": "https://registry.npmjs.org/lodash.debounce/-/lodash.debounce-4.0.8.tgz", 1053 | "integrity": "sha1-gteb/zCmfEAF/9XiUVMArZyk168=" 1054 | }, 1055 | "merge2": { 1056 | "version": "1.4.1", 1057 | "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", 1058 | "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==" 1059 | }, 1060 | "micromatch": { 1061 | "version": "4.0.5", 1062 | "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.5.tgz", 1063 | "integrity": "sha512-DMy+ERcEW2q8Z2Po+WNXuw3c5YaUSFjAO5GsJqfEl7UjvtIuFKO6ZrKvcItdy98dwFI2N1tg3zNIdKaQT+aNdA==", 1064 | "requires": { 1065 | "braces": "^3.0.2", 1066 | "picomatch": "^2.3.1" 1067 | } 1068 | }, 1069 | "minimist": { 1070 | "version": "1.2.6", 1071 | "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.6.tgz", 1072 | "integrity": "sha512-Jsjnk4bw3YJqYzbdyBiNsPWHPfO++UGG749Cxs6peCu5Xg4nrena6OVxOYxrQTqww0Jmwt+Ref8rggumkTLz9Q==" 1073 | }, 1074 | "ms": { 1075 | "version": "2.1.2", 1076 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", 1077 | "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==", 1078 | "dev": true 1079 | }, 1080 | "nanoid": { 1081 | "version": "3.3.2", 1082 | "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.2.tgz", 1083 | "integrity": "sha512-CuHBogktKwpm5g2sRgv83jEy2ijFzBwMoYA60orPDR7ynsLijJDqgsi4RDGj3OJpy3Ieb+LYwiRmIOGyytgITA==" 1084 | }, 1085 | "node-releases": { 1086 | "version": "2.0.2", 1087 | "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.2.tgz", 1088 | "integrity": "sha512-XxYDdcQ6eKqp/YjI+tb2C5WM2LgjnZrfYg4vgQt49EK268b6gYCHsBLrK2qvJo4FmCtqmKezb0WZFK4fkrZNsg==", 1089 | "dev": true 1090 | }, 1091 | "normalize-path": { 1092 | "version": "3.0.0", 1093 | "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", 1094 | "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==" 1095 | }, 1096 | "normalize-range": { 1097 | "version": "0.1.2", 1098 | "resolved": "https://registry.npmjs.org/normalize-range/-/normalize-range-0.1.2.tgz", 1099 | "integrity": "sha1-LRDAa9/TEuqXd2laTShDlFa3WUI=", 1100 | "dev": true 1101 | }, 1102 | "object-hash": { 1103 | "version": "2.2.0", 1104 | "resolved": "https://registry.npmjs.org/object-hash/-/object-hash-2.2.0.tgz", 1105 | "integrity": "sha512-gScRMn0bS5fH+IuwyIFgnh9zBdo4DV+6GhygmWM9HyNJSgS0hScp1f5vjtm7oIIOiT9trXrShAkLFSc2IqKNgw==" 1106 | }, 1107 | "parent-module": { 1108 | "version": "1.0.1", 1109 | "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", 1110 | "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", 1111 | "requires": { 1112 | "callsites": "^3.0.0" 1113 | } 1114 | }, 1115 | "parse-json": { 1116 | "version": "5.2.0", 1117 | "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", 1118 | "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", 1119 | "requires": { 1120 | "@babel/code-frame": "^7.0.0", 1121 | "error-ex": "^1.3.1", 1122 | "json-parse-even-better-errors": "^2.3.0", 1123 | "lines-and-columns": "^1.1.6" 1124 | } 1125 | }, 1126 | "path-parse": { 1127 | "version": "1.0.7", 1128 | "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", 1129 | "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==" 1130 | }, 1131 | "path-type": { 1132 | "version": "4.0.0", 1133 | "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", 1134 | "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==" 1135 | }, 1136 | "picocolors": { 1137 | "version": "1.0.0", 1138 | "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.0.0.tgz", 1139 | "integrity": "sha512-1fygroTLlHu66zi26VoTDv8yRgm0Fccecssto+MhsZ0D/DGW2sm8E8AjW7NU5VVTRt5GxbeZ5qBuJr+HyLYkjQ==" 1140 | }, 1141 | "picomatch": { 1142 | "version": "2.3.1", 1143 | "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", 1144 | "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==" 1145 | }, 1146 | "postcss": { 1147 | "version": "8.4.12", 1148 | "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.12.tgz", 1149 | "integrity": "sha512-lg6eITwYe9v6Hr5CncVbK70SoioNQIq81nsaG86ev5hAidQvmOeETBqs7jm43K2F5/Ley3ytDtriImV6TpNiSg==", 1150 | "requires": { 1151 | "nanoid": "^3.3.1", 1152 | "picocolors": "^1.0.0", 1153 | "source-map-js": "^1.0.2" 1154 | } 1155 | }, 1156 | "postcss-js": { 1157 | "version": "4.0.0", 1158 | "resolved": "https://registry.npmjs.org/postcss-js/-/postcss-js-4.0.0.tgz", 1159 | "integrity": "sha512-77QESFBwgX4irogGVPgQ5s07vLvFqWr228qZY+w6lW599cRlK/HmnlivnnVUxkjHnCu4J16PDMHcH+e+2HbvTQ==", 1160 | "requires": { 1161 | "camelcase-css": "^2.0.1" 1162 | } 1163 | }, 1164 | "postcss-load-config": { 1165 | "version": "3.1.4", 1166 | "resolved": "https://registry.npmjs.org/postcss-load-config/-/postcss-load-config-3.1.4.tgz", 1167 | "integrity": "sha512-6DiM4E7v4coTE4uzA8U//WhtPwyhiim3eyjEMFCnUpzbrkK9wJHgKDT2mR+HbtSrd/NubVaYTOpSpjUl8NQeRg==", 1168 | "requires": { 1169 | "lilconfig": "^2.0.5", 1170 | "yaml": "^1.10.2" 1171 | } 1172 | }, 1173 | "postcss-nested": { 1174 | "version": "5.0.6", 1175 | "resolved": "https://registry.npmjs.org/postcss-nested/-/postcss-nested-5.0.6.tgz", 1176 | "integrity": "sha512-rKqm2Fk0KbA8Vt3AdGN0FB9OBOMDVajMG6ZCf/GoHgdxUJ4sBFp0A/uMIRm+MJUdo33YXEtjqIz8u7DAp8B7DA==", 1177 | "requires": { 1178 | "postcss-selector-parser": "^6.0.6" 1179 | } 1180 | }, 1181 | "postcss-selector-parser": { 1182 | "version": "6.0.10", 1183 | "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.0.10.tgz", 1184 | "integrity": "sha512-IQ7TZdoaqbT+LCpShg46jnZVlhWD2w6iQYAcYXfHARZ7X1t/UGhhceQDs5X0cGqKvYlHNOuv7Oa1xmb0oQuA3w==", 1185 | "requires": { 1186 | "cssesc": "^3.0.0", 1187 | "util-deprecate": "^1.0.2" 1188 | } 1189 | }, 1190 | "postcss-value-parser": { 1191 | "version": "4.2.0", 1192 | "resolved": "https://registry.npmjs.org/postcss-value-parser/-/postcss-value-parser-4.2.0.tgz", 1193 | "integrity": "sha512-1NNCs6uurfkVbeXG4S8JFT9t19m45ICnif8zWLd5oPSZ50QnwMfK+H3jv408d4jw/7Bttv5axS5IiHoLaVNHeQ==" 1194 | }, 1195 | "preact": { 1196 | "version": "10.7.0", 1197 | "resolved": "https://registry.npmjs.org/preact/-/preact-10.7.0.tgz", 1198 | "integrity": "sha512-9MEURwzNMKpAil/t6+wabDIJI6oG6GnwypYxiJDvQnW+fHDTt51PYuLZ1QUM31hFr7sDaj9qTaShAF9VIxuxGQ==" 1199 | }, 1200 | "queue-microtask": { 1201 | "version": "1.2.3", 1202 | "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", 1203 | "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==" 1204 | }, 1205 | "quick-lru": { 1206 | "version": "5.1.1", 1207 | "resolved": "https://registry.npmjs.org/quick-lru/-/quick-lru-5.1.1.tgz", 1208 | "integrity": "sha512-WuyALRjWPDGtt/wzJiadO5AXY+8hZ80hVpe6MyivgraREW751X3SbhRvG3eLKOYN+8VEvqLcf3wdnt44Z4S4SA==" 1209 | }, 1210 | "react-chartjs-2": { 1211 | "version": "4.0.1", 1212 | "resolved": "https://registry.npmjs.org/react-chartjs-2/-/react-chartjs-2-4.0.1.tgz", 1213 | "integrity": "sha512-q8bgWzKoFvBvD7YcjT/hXG8jt55TaMAuJ1dmI3tKFJ7CijUWYz4pIfOhkTI6PBTwqu/pmeWsClBRd/7HiWzN1g==" 1214 | }, 1215 | "readdirp": { 1216 | "version": "3.6.0", 1217 | "resolved": "https://registry.npmjs.org/readdirp/-/readdirp-3.6.0.tgz", 1218 | "integrity": "sha512-hOS089on8RduqdbhvQ5Z37A0ESjsqz6qnRcffsMU3495FuTdqSm+7bhJ29JvIOsBDEEnan5DPu9t3To9VRlMzA==", 1219 | "requires": { 1220 | "picomatch": "^2.2.1" 1221 | } 1222 | }, 1223 | "resolve": { 1224 | "version": "1.22.0", 1225 | "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.0.tgz", 1226 | "integrity": "sha512-Hhtrw0nLeSrFQ7phPp4OOcVjLPIeMnRlr5mcnVuMe7M/7eBn98A3hmFRLoFo3DLZkivSYwhRUJTyPyWAk56WLw==", 1227 | "requires": { 1228 | "is-core-module": "^2.8.1", 1229 | "path-parse": "^1.0.7", 1230 | "supports-preserve-symlinks-flag": "^1.0.0" 1231 | } 1232 | }, 1233 | "resolve-from": { 1234 | "version": "4.0.0", 1235 | "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", 1236 | "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==" 1237 | }, 1238 | "reusify": { 1239 | "version": "1.0.4", 1240 | "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", 1241 | "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==" 1242 | }, 1243 | "rollup": { 1244 | "version": "2.70.1", 1245 | "resolved": "https://registry.npmjs.org/rollup/-/rollup-2.70.1.tgz", 1246 | "integrity": "sha512-CRYsI5EuzLbXdxC6RnYhOuRdtz4bhejPMSWjsFLfVM/7w/85n2szZv6yExqUXsBdz5KT8eoubeyDUDjhLHEslA==", 1247 | "dev": true, 1248 | "requires": { 1249 | "fsevents": "~2.3.2" 1250 | } 1251 | }, 1252 | "run-parallel": { 1253 | "version": "1.2.0", 1254 | "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", 1255 | "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", 1256 | "requires": { 1257 | "queue-microtask": "^1.2.2" 1258 | } 1259 | }, 1260 | "safe-buffer": { 1261 | "version": "5.1.2", 1262 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", 1263 | "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==", 1264 | "dev": true 1265 | }, 1266 | "semver": { 1267 | "version": "6.3.0", 1268 | "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.0.tgz", 1269 | "integrity": "sha512-b39TBaTSfV6yBrapU89p5fKekE2m/NwnDocOVruQFS1/veMgdzuPcnOM34M6CwxW8jH/lxEa5rBoDeUwu5HHTw==", 1270 | "dev": true 1271 | }, 1272 | "simple-swizzle": { 1273 | "version": "0.2.2", 1274 | "resolved": "https://registry.npmjs.org/simple-swizzle/-/simple-swizzle-0.2.2.tgz", 1275 | "integrity": "sha1-pNprY1/8zMoz9w0Xy5JZLeleVXo=", 1276 | "requires": { 1277 | "is-arrayish": "^0.3.1" 1278 | }, 1279 | "dependencies": { 1280 | "is-arrayish": { 1281 | "version": "0.3.2", 1282 | "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.3.2.tgz", 1283 | "integrity": "sha512-eVRqCvVlZbuw3GrM63ovNSNAeA1K16kaR/LRY/92w0zxQ5/1YzwblUX652i4Xs9RwAGjW9d9y6X88t8OaAJfWQ==" 1284 | } 1285 | } 1286 | }, 1287 | "source-map": { 1288 | "version": "0.5.7", 1289 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.5.7.tgz", 1290 | "integrity": "sha1-igOdLRAh0i0eoUyA2OpGi6LvP8w=", 1291 | "dev": true 1292 | }, 1293 | "source-map-js": { 1294 | "version": "1.0.2", 1295 | "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.0.2.tgz", 1296 | "integrity": "sha512-R0XvVJ9WusLiqTCEiGCmICCMplcCkIwwR11mOSD9CR5u+IXYdiseeEuXCVAjS54zqwkLcPNnmU4OeJ6tUrWhDw==" 1297 | }, 1298 | "supports-color": { 1299 | "version": "5.5.0", 1300 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", 1301 | "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", 1302 | "requires": { 1303 | "has-flag": "^3.0.0" 1304 | } 1305 | }, 1306 | "supports-preserve-symlinks-flag": { 1307 | "version": "1.0.0", 1308 | "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", 1309 | "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==" 1310 | }, 1311 | "tailwindcss": { 1312 | "version": "3.0.23", 1313 | "resolved": "https://registry.npmjs.org/tailwindcss/-/tailwindcss-3.0.23.tgz", 1314 | "integrity": "sha512-+OZOV9ubyQ6oI2BXEhzw4HrqvgcARY38xv3zKcjnWtMIZstEsXdI9xftd1iB7+RbOnj2HOEzkA0OyB5BaSxPQA==", 1315 | "requires": { 1316 | "arg": "^5.0.1", 1317 | "chalk": "^4.1.2", 1318 | "chokidar": "^3.5.3", 1319 | "color-name": "^1.1.4", 1320 | "cosmiconfig": "^7.0.1", 1321 | "detective": "^5.2.0", 1322 | "didyoumean": "^1.2.2", 1323 | "dlv": "^1.1.3", 1324 | "fast-glob": "^3.2.11", 1325 | "glob-parent": "^6.0.2", 1326 | "is-glob": "^4.0.3", 1327 | "normalize-path": "^3.0.0", 1328 | "object-hash": "^2.2.0", 1329 | "postcss": "^8.4.6", 1330 | "postcss-js": "^4.0.0", 1331 | "postcss-load-config": "^3.1.0", 1332 | "postcss-nested": "5.0.6", 1333 | "postcss-selector-parser": "^6.0.9", 1334 | "postcss-value-parser": "^4.2.0", 1335 | "quick-lru": "^5.1.1", 1336 | "resolve": "^1.22.0" 1337 | }, 1338 | "dependencies": { 1339 | "ansi-styles": { 1340 | "version": "4.3.0", 1341 | "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", 1342 | "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", 1343 | "requires": { 1344 | "color-convert": "^2.0.1" 1345 | } 1346 | }, 1347 | "chalk": { 1348 | "version": "4.1.2", 1349 | "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", 1350 | "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", 1351 | "requires": { 1352 | "ansi-styles": "^4.1.0", 1353 | "supports-color": "^7.1.0" 1354 | } 1355 | }, 1356 | "color-convert": { 1357 | "version": "2.0.1", 1358 | "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", 1359 | "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", 1360 | "requires": { 1361 | "color-name": "~1.1.4" 1362 | } 1363 | }, 1364 | "color-name": { 1365 | "version": "1.1.4", 1366 | "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", 1367 | "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==" 1368 | }, 1369 | "has-flag": { 1370 | "version": "4.0.0", 1371 | "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", 1372 | "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==" 1373 | }, 1374 | "supports-color": { 1375 | "version": "7.2.0", 1376 | "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", 1377 | "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", 1378 | "requires": { 1379 | "has-flag": "^4.0.0" 1380 | } 1381 | } 1382 | } 1383 | }, 1384 | "to-fast-properties": { 1385 | "version": "2.0.0", 1386 | "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", 1387 | "integrity": "sha1-3F5pjL0HkmW8c+A3doGk5Og/YW4=", 1388 | "dev": true 1389 | }, 1390 | "to-regex-range": { 1391 | "version": "5.0.1", 1392 | "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", 1393 | "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", 1394 | "requires": { 1395 | "is-number": "^7.0.0" 1396 | } 1397 | }, 1398 | "typescript": { 1399 | "version": "4.6.3", 1400 | "resolved": "https://registry.npmjs.org/typescript/-/typescript-4.6.3.tgz", 1401 | "integrity": "sha512-yNIatDa5iaofVozS/uQJEl3JRWLKKGJKh6Yaiv0GLGSuhpFJe7P3SbHZ8/yjAHRQwKRoA6YZqlfjXWmVzoVSMw==", 1402 | "dev": true 1403 | }, 1404 | "util-deprecate": { 1405 | "version": "1.0.2", 1406 | "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", 1407 | "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8=" 1408 | }, 1409 | "vite": { 1410 | "version": "2.9.0", 1411 | "resolved": "https://registry.npmjs.org/vite/-/vite-2.9.0.tgz", 1412 | "integrity": "sha512-5NAnNqzPmZzJvrswZGeTS2JHrBGIzIWJA2hBTTMYuoBVEMh0xwE0b5yyIXFxf7F07hrK4ugX2LJ7q6t7iIbd4Q==", 1413 | "dev": true, 1414 | "requires": { 1415 | "esbuild": "^0.14.27", 1416 | "fsevents": "~2.3.2", 1417 | "postcss": "^8.4.12", 1418 | "resolve": "^1.22.0", 1419 | "rollup": "^2.59.0" 1420 | } 1421 | }, 1422 | "wouter": { 1423 | "version": "2.8.0-alpha.2", 1424 | "resolved": "https://registry.npmjs.org/wouter/-/wouter-2.8.0-alpha.2.tgz", 1425 | "integrity": "sha512-aPsL5m5rW9RiceClOmGj6t5gn9Ut2TJVr98UDi1u9MIRNYiYVflg6vFIjdDYJ4IAyH0JdnkSgGwfo0LQS3k2zg==" 1426 | }, 1427 | "xtend": { 1428 | "version": "4.0.2", 1429 | "resolved": "https://registry.npmjs.org/xtend/-/xtend-4.0.2.tgz", 1430 | "integrity": "sha512-LKYU1iAXJXUgAXn9URjiu+MWhyUXHsvfp7mcuYm9dSUKK0/CjtrUwFAxD82/mCWbtLsGjFIad0wIsod4zrTAEQ==" 1431 | }, 1432 | "yaml": { 1433 | "version": "1.10.2", 1434 | "resolved": "https://registry.npmjs.org/yaml/-/yaml-1.10.2.tgz", 1435 | "integrity": "sha512-r3vXyErRCYJ7wg28yvBY5VSoAF8ZvlcW9/BwUzEtUsjvX/DKs24dIkuwjtuprwJJHsbyUbLApepYTR1BN4uHrg==" 1436 | } 1437 | } 1438 | } 1439 | -------------------------------------------------------------------------------- /site/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "site", 3 | "private": true, 4 | "version": "0.0.0", 5 | "scripts": { 6 | "dev": "vite", 7 | "build": "tsc && vite build", 8 | "preview": "vite preview" 9 | }, 10 | "dependencies": { 11 | "chart.js": "^3.7.1", 12 | "daisyui": "^2.13.4", 13 | "lodash.debounce": "^4.0.8", 14 | "preact": "^10.5.15", 15 | "react-chartjs-2": "^4.0.1", 16 | "wouter": "^2.8.0-alpha.2" 17 | }, 18 | "devDependencies": { 19 | "@preact/preset-vite": "^2.1.5", 20 | "@types/lodash.debounce": "^4.0.6", 21 | "autoprefixer": "^10.4.4", 22 | "postcss": "^8.4.12", 23 | "tailwindcss": "^3.0.23", 24 | "typescript": "^4.5.4", 25 | "vite": "^2.9.0" 26 | } 27 | } 28 | -------------------------------------------------------------------------------- /site/postcss.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | plugins: { 3 | tailwindcss: {}, 4 | autoprefixer: {}, 5 | }, 6 | } 7 | -------------------------------------------------------------------------------- /site/src/app.tsx: -------------------------------------------------------------------------------- 1 | import { Link, Route } from "wouter"; 2 | import { Magnetometer } from "./views/Magnetometer"; 3 | import { HelloWorld } from "./views/hello-world"; 4 | import { PushButton } from "./views/button-push"; 5 | import { Servo } from "./views/servo"; 6 | import { Led } from "./views/led"; 7 | 8 | export const App = () => ( 9 |
10 |
11 | 12 |
13 | {/* */} 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 28 |
29 |
30 | 31 | 59 |
60 |
61 |
62 | ); 63 | 64 | const InboxPage = () =>
inbox
; 65 | -------------------------------------------------------------------------------- /site/src/components/spinner.tsx: -------------------------------------------------------------------------------- 1 | const Spinner = () =>
; 2 | 3 | export default Spinner; 4 | -------------------------------------------------------------------------------- /site/src/favicon.svg: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | -------------------------------------------------------------------------------- /site/src/index.css: -------------------------------------------------------------------------------- 1 | @tailwind base; 2 | @tailwind components; 3 | @tailwind utilities; 4 | -------------------------------------------------------------------------------- /site/src/logo.tsx: -------------------------------------------------------------------------------- 1 | export const Logo = () => ( 2 | 47 | ) 48 | -------------------------------------------------------------------------------- /site/src/main.tsx: -------------------------------------------------------------------------------- 1 | import { render } from 'preact' 2 | import { App } from './app' 3 | import './index.css' 4 | 5 | render(, document.getElementById('app')!) 6 | -------------------------------------------------------------------------------- /site/src/preact.d.ts: -------------------------------------------------------------------------------- 1 | import JSX = preact.JSX 2 | -------------------------------------------------------------------------------- /site/src/views/Magnetometer.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useRef, useState } from "preact/hooks"; 2 | import { Chart as ChartJS, CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend, LineOptions } from "chart.js"; 3 | import { Line } from "react-chartjs-2"; 4 | 5 | ChartJS.register(CategoryScale, LinearScale, PointElement, LineElement, Title, Tooltip, Legend); 6 | 7 | export const options = { 8 | responsive: true, 9 | animation: { 10 | duration: 0, 11 | }, 12 | plugins: { 13 | legend: { 14 | position: "top" as const, 15 | }, 16 | title: { 17 | display: true, 18 | text: "Chart.js Line Chart", 19 | }, 20 | }, 21 | scales: { 22 | y: { 23 | min: 0, 24 | max: 500, 25 | }, 26 | }, 27 | }; 28 | 29 | const labels = ["January", "February", "March", "April", "May", "June", "July"]; 30 | 31 | export const data = { 32 | labels, 33 | datasets: [ 34 | { 35 | label: "Dataset 1", 36 | data: [80, 60, 66, 23, 65, 23, 73], 37 | borderColor: "rgb(255, 99, 132)", 38 | backgroundColor: "rgba(255, 99, 132, 0.5)", 39 | }, 40 | ], 41 | }; 42 | 43 | export function Magnetometer() { 44 | const [update, setUpdate] = useState(data); 45 | 46 | const chartRef = useRef(null); 47 | useEffect(() => { 48 | var socket = new WebSocket("ws://my-esp32.local/ws-api/magnetometer"); 49 | socket.onopen = () => socket.send(JSON.stringify({ cmd: "start", interval: 200 })); 50 | let max = 0; 51 | let min = 0; 52 | socket.onmessage = (event) => { 53 | setUpdate((d) => { 54 | const data = JSON.parse(event.data); 55 | let newData = [...d.datasets[0].data]; 56 | newData.shift(); 57 | max = Math.max(max, data.val); 58 | min = Math.min(min, data.val); 59 | let normalized = ((data.val - min) / (max - min)) * 100; 60 | console.log(data.val); 61 | newData.push(data.val); 62 | return { 63 | ...d, 64 | datasets: d.datasets.map((set) => { 65 | return { 66 | ...set, 67 | data: newData, 68 | }; 69 | }), 70 | }; 71 | }); 72 | }; 73 | return () => { 74 | socket.send(JSON.stringify({ cmd: "stop" })); 75 | }; 76 | }, []); 77 | 78 | return
{data.datasets && }
; 79 | } 80 | -------------------------------------------------------------------------------- /site/src/views/button-push.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "preact/hooks"; 2 | 3 | export function PushButton() { 4 | const [count, setCount] = useState(0); 5 | const [btnPressed, setBtnPressed] = useState(false); 6 | 7 | useEffect(() => { 8 | var socket = new WebSocket("ws://my-esp32.local/ws-api/btn-push"); 9 | socket.onopen = () => socket.send("ready for button press"); 10 | 11 | socket.onmessage = (event) => { 12 | console.log(event.data); 13 | const data = JSON.parse(event.data); 14 | setBtnPressed(data.btn_state); 15 | setCount((c) => (c++ > 99 ? 0 : c)); 16 | }; 17 | return () => { 18 | socket.send(JSON.stringify({ cmd: "stop" })); 19 | }; 20 | }, []); 21 | 22 | return ( 23 | <> 24 | 25 | 26 | 27 | 28 |
29 |
30 | 31 | 32 | 33 | {btnPressed ? "pressed" : "released"} 34 |
35 |
36 | 37 | ); 38 | } 39 | -------------------------------------------------------------------------------- /site/src/views/hello-world.tsx: -------------------------------------------------------------------------------- 1 | import { useEffect, useState } from "preact/hooks"; 2 | import Spinner from "../components/spinner"; 3 | 4 | export const HelloWorld = () => { 5 | const [message, setMessage] = useState(""); 6 | 7 | useEffect(() => { 8 | fetch("/api/hello-world") 9 | .then((res) => res.text()) 10 | .then((res) => setMessage(res)) 11 | .catch((err) => console.error(err)); 12 | }, []); 13 | 14 | return ( 15 | <> 16 | {!message ? ( 17 | 18 | ) : ( 19 |
20 |
21 | 22 | 23 | 24 | 25 | 26 | ESP32 returned: {message}!!! 27 | 28 |
29 |
30 | )} 31 | 32 | ); 33 | }; 34 | -------------------------------------------------------------------------------- /site/src/views/led.tsx: -------------------------------------------------------------------------------- 1 | import { useState } from "preact/hooks"; 2 | 3 | export const Led = () => { 4 | const [isOn, setIsOn] = useState(false); 5 | 6 | const onClick = async () => { 7 | let is_on = !isOn; 8 | await fetch("/api/toggle-led", { 9 | method: "POST", 10 | headers: { 11 | "Content-Type": "application/json", 12 | }, 13 | body: JSON.stringify({ is_on }), 14 | }); 15 | setIsOn(is_on); 16 | }; 17 | 18 | return
; 19 | }; 20 | -------------------------------------------------------------------------------- /site/src/views/servo.tsx: -------------------------------------------------------------------------------- 1 | import { useCallback, useEffect, useMemo, useState } from "preact/hooks"; 2 | import debounce from "lodash.debounce"; 3 | 4 | export const Servo = () => { 5 | const [angle, setAngle] = useState(0); 6 | var socket = useMemo(() => new WebSocket("ws://my-esp32.local/ws-api/servo"), []); 7 | 8 | useEffect(() => { 9 | socket.onopen = () => socket.send(JSON.stringify({ angle: 0 })); 10 | return () => { 11 | socket.send(JSON.stringify({ angle: 0 })); 12 | }; 13 | }, []); 14 | 15 | const onSlide = (value: number) => { 16 | setAngle(value); 17 | console.log(value); 18 | socket.send(JSON.stringify({ angle })); 19 | }; 20 | 21 | //const debounceOnSlide = debounce((value) => onSlide(value), 500); 22 | 23 | return ( 24 | <> 25 | 26 | 27 | 28 | onSlide(Number(e.target.value))}> 29 | 30 | ); 31 | }; 32 | -------------------------------------------------------------------------------- /site/src/vite-env.d.ts: -------------------------------------------------------------------------------- 1 | /// 2 | -------------------------------------------------------------------------------- /site/tailwind.config.js: -------------------------------------------------------------------------------- 1 | module.exports = { 2 | content: ["./index.html", "./src/**/*.{js,ts,jsx,tsx}"], 3 | theme: { 4 | extend: {}, 5 | }, 6 | plugins: [require("daisyui")], 7 | }; 8 | -------------------------------------------------------------------------------- /site/tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "target": "ESNext", 4 | "useDefineForClassFields": true, 5 | "lib": ["DOM", "DOM.Iterable", "ESNext"], 6 | "allowJs": false, 7 | "skipLibCheck": true, 8 | "esModuleInterop": false, 9 | "allowSyntheticDefaultImports": true, 10 | "strict": false, 11 | "forceConsistentCasingInFileNames": true, 12 | "module": "ESNext", 13 | "moduleResolution": "Node", 14 | "resolveJsonModule": true, 15 | "isolatedModules": true, 16 | "noEmit": true, 17 | "jsx": "preserve", 18 | "jsxFactory": "h", 19 | "jsxFragmentFactory": "Fragment" 20 | }, 21 | "include": ["src"], 22 | "references": [{ "path": "./tsconfig.node.json" }] 23 | } 24 | -------------------------------------------------------------------------------- /site/tsconfig.node.json: -------------------------------------------------------------------------------- 1 | { 2 | "compilerOptions": { 3 | "composite": true, 4 | "module": "esnext", 5 | "moduleResolution": "node" 6 | }, 7 | "include": ["vite.config.ts"] 8 | } 9 | -------------------------------------------------------------------------------- /site/vite.config.ts: -------------------------------------------------------------------------------- 1 | import { defineConfig } from "vite"; 2 | import preact from "@preact/preset-vite"; 3 | 4 | // https://vitejs.dev/config/ 5 | export default defineConfig({ 6 | plugins: [preact()], 7 | resolve: { 8 | alias: { 9 | react: "preact/compat", 10 | "react-dom": "preact/compat", 11 | }, 12 | }, 13 | server: { 14 | proxy: { 15 | "/api": "http://my-esp32.local", 16 | }, 17 | }, 18 | }); 19 | --------------------------------------------------------------------------------