diff --git a/.gitignore b/.gitignore index e69de29..5e9ec91 100644 --- a/.gitignore +++ b/.gitignore @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c1522355fa37a100397d929259e376bbcbced3d6a34648ba469e760cdae7e771 +size 58 diff --git a/3d-print/models/BoardPositionMarker/Vison Marker Clip - Marker.stl b/3d-print/models/BoardPositionMarker/Vison Marker Clip - Marker.stl new file mode 100644 index 0000000..a479895 --- /dev/null +++ b/3d-print/models/BoardPositionMarker/Vison Marker Clip - Marker.stl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:c93dcde4694edd493b6c5088ad34f9ad9eb8a4bbf7830c2cb541a78f9651cfc6 +size 684 diff --git a/3d-print/models/BoardPositionMarker/Vison Marker Clip - WhiteRing1.stl b/3d-print/models/BoardPositionMarker/Vison Marker Clip - WhiteRing1.stl new file mode 100644 index 0000000..13156ed --- /dev/null +++ b/3d-print/models/BoardPositionMarker/Vison Marker Clip - WhiteRing1.stl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8c0a961e95c94984c67e3a8f317e529bbe358b8b358c2fee492cbf402832d259 +size 3684 diff --git a/3d-print/models/BoardPositionMarker/Vison Marker Clip - WhiteRing2.stl b/3d-print/models/BoardPositionMarker/Vison Marker Clip - WhiteRing2.stl new file mode 100644 index 0000000..9daffea --- /dev/null +++ b/3d-print/models/BoardPositionMarker/Vison Marker Clip - WhiteRing2.stl @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:77b40b432072fdfc273aaf0250ef7199b523f168dabdab31d74ebb0609d9d705 +size 1684 diff --git a/3d-print/models/HeadPipeMount/HeadPipeMount - DownPart.stl b/3d-print/models/HeadPipeMount/HeadPipeMount - DownPart.stl new file mode 100644 index 0000000..ef784a9 Binary files /dev/null and b/3d-print/models/HeadPipeMount/HeadPipeMount - DownPart.stl differ diff --git a/3d-print/models/HeadPipeMount/HeadPipeMount - HoseAdapter.stl b/3d-print/models/HeadPipeMount/HeadPipeMount - HoseAdapter.stl new file mode 100644 index 0000000..4fe01f3 Binary files /dev/null and b/3d-print/models/HeadPipeMount/HeadPipeMount - HoseAdapter.stl differ diff --git a/3d-print/models/HeadPipeMount/HeadPipeMount - RightPart.stl b/3d-print/models/HeadPipeMount/HeadPipeMount - RightPart.stl new file mode 100644 index 0000000..30d8cbc Binary files /dev/null and b/3d-print/models/HeadPipeMount/HeadPipeMount - RightPart.stl differ diff --git a/3d-print/models/YGantryMount/GantryMount - GantryPlate (1).stl b/3d-print/models/YGantryMount/GantryMount - GantryPlate (1).stl new file mode 100644 index 0000000..ad76dc8 Binary files /dev/null and b/3d-print/models/YGantryMount/GantryMount - GantryPlate (1).stl differ diff --git a/3d-print/models/YGantryMount/GantryMount - GantryPlate.stl b/3d-print/models/YGantryMount/GantryMount - GantryPlate.stl new file mode 100644 index 0000000..0292726 Binary files /dev/null and b/3d-print/models/YGantryMount/GantryMount - GantryPlate.stl differ diff --git a/3d-print/models/YGantryMount/GantryMount - Mount (1).stl b/3d-print/models/YGantryMount/GantryMount - Mount (1).stl new file mode 100644 index 0000000..9e5bb3c Binary files /dev/null and b/3d-print/models/YGantryMount/GantryMount - Mount (1).stl differ diff --git a/3d-print/models/YGantryMount/GantryMount - Mount.stl b/3d-print/models/YGantryMount/GantryMount - Mount.stl new file mode 100644 index 0000000..302b0b5 Binary files /dev/null and b/3d-print/models/YGantryMount/GantryMount - Mount.stl differ diff --git a/3d-print/slicers/BoardPositionMarker.3mf b/3d-print/slicers/BoardPositionMarker.3mf new file mode 100644 index 0000000..80e3a03 --- /dev/null +++ b/3d-print/slicers/BoardPositionMarker.3mf @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:97187d6a2dbcdbf27432673e43ae8dd7b944f13d0498ad6b3f6d78cca5005f98 +size 29328 diff --git a/3d-print/slicers/HeadPipeMount.3mf b/3d-print/slicers/HeadPipeMount.3mf new file mode 100644 index 0000000..c4707c4 Binary files /dev/null and b/3d-print/slicers/HeadPipeMount.3mf differ diff --git a/3d-print/slicers/YGantryMount.3mf b/3d-print/slicers/YGantryMount.3mf new file mode 100644 index 0000000..cc3f246 Binary files /dev/null and b/3d-print/slicers/YGantryMount.3mf differ diff --git a/can-interface/.devcontainer/Dockerfile b/can-interface/.devcontainer/Dockerfile new file mode 100644 index 0000000..8d7b92d --- /dev/null +++ b/can-interface/.devcontainer/Dockerfile @@ -0,0 +1,47 @@ +FROM espressif/idf + +ARG DEBIAN_FRONTEND=nointeractive +ARG CONTAINER_USER=esp +ARG USER_UID=1050 +ARG USER_GID=$USER_UID + +RUN apt-get update \ + && apt install -y -q \ + cmake \ + git \ + libglib2.0-0 \ + libnuma1 \ + libpixman-1-0 \ + && rm -rf /var/lib/apt/lists/* + +# QEMU +ENV QEMU_REL=esp_develop_8.2.0_20240122 +ENV QEMU_SHA256=e7c72ef5705ad1444d391711088c8717fc89f42e9bf6d1487f9c2a326b8cfa83 +ENV QEMU_DIST=qemu-xtensa-softmmu-${QEMU_REL}-x86_64-linux-gnu.tar.xz +ENV QEMU_URL=https://github.com/espressif/qemu/releases/download/esp-develop-8.2.0-20240122/${QEMU_DIST} + +ENV LC_ALL=C.UTF-8 +ENV LANG=C.UTF-8 + +RUN wget --no-verbose ${QEMU_URL} \ + && echo "${QEMU_SHA256} *${QEMU_DIST}" | sha256sum --check --strict - \ + && tar -xf $QEMU_DIST -C /opt \ + && rm ${QEMU_DIST} + +ENV PATH=/opt/qemu/bin:${PATH} + +RUN groupadd --gid $USER_GID $CONTAINER_USER \ + && adduser --uid $USER_UID --gid $USER_GID --disabled-password --gecos "" ${CONTAINER_USER} \ + && usermod -a -G root $CONTAINER_USER && usermod -a -G dialout $CONTAINER_USER + +RUN chmod -R 775 /opt/esp/python_env/ + +USER ${CONTAINER_USER} +ENV USER=${CONTAINER_USER} +WORKDIR /home/${CONTAINER_USER} + +RUN echo "source /opt/esp/idf/export.sh > /dev/null 2>&1" >> ~/.bashrc + +ENTRYPOINT [ "/opt/esp/entrypoint.sh" ] + +CMD ["/bin/bash", "-c"] \ No newline at end of file diff --git a/can-interface/.devcontainer/devcontainer.json b/can-interface/.devcontainer/devcontainer.json new file mode 100644 index 0000000..09d3b42 --- /dev/null +++ b/can-interface/.devcontainer/devcontainer.json @@ -0,0 +1,36 @@ +{ + "name": "ESP-IDF QEMU", + "build": { + "dockerfile": "Dockerfile" + }, + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "bash", + "idf.espIdfPath": "/opt/esp/idf", + "idf.customExtraPaths": "", + "idf.pythonBinPath": "/opt/esp/python_env/idf5.4_py3.12_env/bin/python", + "idf.toolsPath": "/opt/esp", + "idf.gitPath": "/usr/bin/git" + }, + "extensions": [ + "espressif.esp-idf-extension" + ] + }, + "codespaces": { + "settings": { + "terminal.integrated.defaultProfile.linux": "bash", + "idf.espIdfPath": "/opt/esp/idf", + "idf.customExtraPaths": "", + "idf.pythonBinPath": "/opt/esp/python_env/idf5.4_py3.12_env/bin/python", + "idf.toolsPath": "/opt/esp", + "idf.gitPath": "/usr/bin/git" + }, + "extensions": [ + "espressif.esp-idf-extension", + "espressif.esp-idf-web" + ] + } + }, + "runArgs": ["--privileged"] +} \ No newline at end of file diff --git a/can-interface/.gitignore b/can-interface/.gitignore new file mode 100644 index 0000000..8b71134 --- /dev/null +++ b/can-interface/.gitignore @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:01abafe3698e84e649f8dc06faa3763c76fd84136ee6e87268cb8e61f46b14d8 +size 8 diff --git a/can-interface/.vscode/c_cpp_properties.json b/can-interface/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..9065583 --- /dev/null +++ b/can-interface/.vscode/c_cpp_properties.json @@ -0,0 +1,23 @@ +{ + "configurations": [ + { + "name": "ESP-IDF", + "compilerPath": "${config:idf.toolsPath}/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin/xtensa-esp32-elf-gcc", + "compileCommands": "${config:idf.buildPath}/compile_commands.json", + "includePath": [ + "${config:idf.espIdfPath}/components/**", + "${config:idf.espIdfPathWin}/components/**", + "${workspaceFolder}/**" + ], + "browse": { + "path": [ + "${config:idf.espIdfPath}/components", + "${config:idf.espIdfPathWin}/components", + "${workspaceFolder}" + ], + "limitSymbolsToIncludedHeaders": true + } + } + ], + "version": 4 +} diff --git a/can-interface/.vscode/launch.json b/can-interface/.vscode/launch.json new file mode 100644 index 0000000..2511a38 --- /dev/null +++ b/can-interface/.vscode/launch.json @@ -0,0 +1,15 @@ +{ + "version": "0.2.0", + "configurations": [ + { + "type": "gdbtarget", + "request": "attach", + "name": "Eclipse CDT GDB Adapter" + }, + { + "type": "espidf", + "name": "Launch", + "request": "launch" + } + ] +} \ No newline at end of file diff --git a/can-interface/.vscode/settings.json b/can-interface/.vscode/settings.json new file mode 100644 index 0000000..d4cb104 --- /dev/null +++ b/can-interface/.vscode/settings.json @@ -0,0 +1,29 @@ +{ + "C_Cpp.intelliSenseEngine": "default", + "idf.adapterTargetName": "esp32", + "idf.customExtraPaths": "/home/alexander/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin:/home/alexander/.espressif/tools/riscv32-esp-elf-gdb/14.2_20240403/riscv32-esp-elf-gdb/bin:/home/alexander/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin:/home/alexander/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20240530/riscv32-esp-elf/bin:/home/alexander/.espressif/tools/esp32ulp-elf/2.38_20240113/esp32ulp-elf/bin:/home/alexander/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/bin:/home/alexander/.espressif/tools/ninja/1.11.1:/home/alexander/.espressif/tools/esp-rom-elfs/20240305", + "idf.customExtraVars": { + "OPENOCD_SCRIPTS": "/home/alexander/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/share/openocd/scripts", + "ESP_ROM_ELF_DIR": "/home/alexander/.espressif/tools/esp-rom-elfs/20240305/" + }, + "idf.espIdfPath": "/opt/esp/v5.3.1/esp-idf", + "idf.openOcdConfigs": [ + "board/esp32-wrover-kit-3.3v.cfg" + ], + "idf.port": "/dev/ttyUSB0", + "idf.pythonBinPath": "/home/alexander/.espressif/python_env/idf5.3_py3.12_env/bin/python", + "idf.toolsPath": "/home/alexander/.espressif", + "idf.flashType": "UART", + "files.associations": { + "*.tcc": "cpp", + "cstdint": "cpp", + "random": "cpp", + "future": "cpp", + "bitset": "cpp", + "string_view": "cpp", + "regex": "cpp", + "array": "cpp", + "string": "cpp", + "span": "cpp" + } +} diff --git a/can-interface/.vscode/tasks.json b/can-interface/.vscode/tasks.json new file mode 100644 index 0000000..1dc7915 --- /dev/null +++ b/can-interface/.vscode/tasks.json @@ -0,0 +1,259 @@ +{ + "version": "2.0.0", + "tasks": [ + { + "label": "Build - Build project", + "type": "shell", + "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py build", + "windows": { + "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py build", + "options": { + "env": { + "PATH": "${env:PATH};${config:idf.customExtraPaths}" + } + } + }, + "options": { + "env": { + "PATH": "${env:PATH}:${config:idf.customExtraPaths}" + } + }, + "problemMatcher": [ + { + "owner": "cpp", + "fileLocation": [ + "autoDetect", + "${workspaceFolder}" + ], + "pattern": { + "regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + } + ], + "group": { + "kind": "build", + "isDefault": true + } + }, + { + "label": "Set ESP-IDF Target", + "type": "shell", + "command": "${command:espIdf.setTarget}", + "problemMatcher": { + "owner": "cpp", + "fileLocation": [ + "autoDetect", + "${workspaceFolder}" + ], + "pattern": { + "regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + } + }, + { + "label": "Clean - Clean the project", + "type": "shell", + "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py fullclean", + "windows": { + "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py fullclean", + "options": { + "env": { + "PATH": "${env:PATH};${config:idf.customExtraPaths}" + } + } + }, + "options": { + "env": { + "PATH": "${env:PATH}:${config:idf.customExtraPaths}" + } + }, + "problemMatcher": [ + { + "owner": "cpp", + "fileLocation": [ + "autoDetect", + "${workspaceFolder}" + ], + "pattern": { + "regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + } + ] + }, + { + "label": "Flash - Flash the device", + "type": "shell", + "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} -b ${config:idf.flashBaudRate} flash", + "windows": { + "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py flash -p ${config:idf.portWin} -b ${config:idf.flashBaudRate}", + "options": { + "env": { + "PATH": "${env:PATH};${config:idf.customExtraPaths}" + } + } + }, + "options": { + "env": { + "PATH": "${env:PATH}:${config:idf.customExtraPaths}" + } + }, + "problemMatcher": [ + { + "owner": "cpp", + "fileLocation": [ + "autoDetect", + "${workspaceFolder}" + ], + "pattern": { + "regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + } + ] + }, + { + "label": "Monitor: Start the monitor", + "type": "shell", + "command": "${config:idf.pythonBinPath} ${config:idf.espIdfPath}/tools/idf.py -p ${config:idf.port} monitor", + "windows": { + "command": "${config:idf.pythonBinPathWin} ${config:idf.espIdfPathWin}\\tools\\idf.py -p ${config:idf.portWin} monitor", + "options": { + "env": { + "PATH": "${env:PATH};${config:idf.customExtraPaths}" + } + } + }, + "options": { + "env": { + "PATH": "${env:PATH}:${config:idf.customExtraPaths}" + } + }, + "problemMatcher": [ + { + "owner": "cpp", + "fileLocation": [ + "autoDetect", + "${workspaceFolder}" + ], + "pattern": { + "regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + } + ], + "dependsOn": "Flash - Flash the device" + }, + { + "label": "OpenOCD: Start openOCD", + "type": "shell", + "presentation": { + "echo": true, + "reveal": "never", + "focus": false, + "panel": "new" + }, + "command": "openocd -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}", + "windows": { + "command": "openocd.exe -s ${command:espIdf.getOpenOcdScriptValue} ${command:espIdf.getOpenOcdConfigs}", + "options": { + "env": { + "PATH": "${env:PATH};${config:idf.customExtraPaths}" + } + } + }, + "options": { + "env": { + "PATH": "${env:PATH}:${config:idf.customExtraPaths}" + } + }, + "problemMatcher": { + "owner": "cpp", + "fileLocation": [ + "autoDetect", + "${workspaceFolder}" + ], + "pattern": { + "regexp": "^(.*?):(\\d+):(\\d*):?\\s+(?:fatal\\s+)?(warning|error):\\s+(.*)$", + "file": 1, + "line": 2, + "column": 3, + "severity": 4, + "message": 5 + } + } + }, + { + "label": "adapter", + "type": "shell", + "command": "${config:idf.pythonBinPath}", + "isBackground": true, + "options": { + "env": { + "PATH": "${env:PATH}:${config:idf.customExtraPaths}", + "PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter" + } + }, + "problemMatcher": { + "background": { + "beginsPattern": "\bDEBUG_ADAPTER_STARTED\b", + "endsPattern": "DEBUG_ADAPTER_READY2CONNECT", + "activeOnStart": true + }, + "pattern": { + "regexp": "(\\d+)-(\\d+)-(\\d+)\\s(\\d+):(\\d+):(\\d+),(\\d+)\\s-(.+)\\s(ERROR)", + "file": 8, + "line": 2, + "column": 3, + "severity": 4, + "message": 9 + } + }, + "args": [ + "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter_main.py", + "-e", + "${workspaceFolder}/build/${command:espIdf.getProjectName}.elf", + "-s", + "$OPENOCD_SCRIPTS", + "-dn", + "esp32", + "-om", + "connect_to_instance", + "-t", + "xtensa-esp32-elf-" + + ], + "windows": { + "command": "${config:idf.pythonBinPathWin}", + "options": { + "env": { + "PATH": "${env:PATH};${config:idf.customExtraPaths}", + "PYTHONPATH": "${command:espIdf.getExtensionPath}/esp_debug_adapter/debug_adapter" + } + } + } + } + ] +} \ No newline at end of file diff --git a/can-interface/CMakeLists.txt b/can-interface/CMakeLists.txt new file mode 100755 index 0000000..39572a2 --- /dev/null +++ b/can-interface/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following lines of boilerplate have to be in your project's +# CMakeLists in this exact order for cmake to work correctly +cmake_minimum_required(VERSION 3.16) + +include($ENV{IDF_PATH}/tools/cmake/project.cmake) +project(can-interface) diff --git a/can-interface/ESP-IDF.code-profile b/can-interface/ESP-IDF.code-profile new file mode 100644 index 0000000..f460877 --- /dev/null +++ b/can-interface/ESP-IDF.code-profile @@ -0,0 +1 @@ +{"name":"ESP-IDF","settings":"{\"settings\":\"{\\n \\\"workbench.iconTheme\\\": \\\"material-icon-theme\\\",\\n \\\"workbench.colorTheme\\\": \\\"Material Theme Ocean\\\",\\n \\\"idf.espIdfPath\\\": \\\"/opt/esp/v5.3.1/esp-idf\\\",\\n \\\"idf.pythonBinPath\\\": \\\"/home/alexander/.espressif/python_env/idf5.3_py3.12_env/bin/python\\\",\\n \\\"idf.toolsPath\\\": \\\"/home/alexander/.espressif\\\",\\n \\\"idf.customExtraPaths\\\": \\\"/home/alexander/.espressif/tools/xtensa-esp-elf-gdb/14.2_20240403/xtensa-esp-elf-gdb/bin:/home/alexander/.espressif/tools/riscv32-esp-elf-gdb/14.2_20240403/riscv32-esp-elf-gdb/bin:/home/alexander/.espressif/tools/xtensa-esp-elf/esp-13.2.0_20240530/xtensa-esp-elf/bin:/home/alexander/.espressif/tools/riscv32-esp-elf/esp-13.2.0_20240530/riscv32-esp-elf/bin:/home/alexander/.espressif/tools/esp32ulp-elf/2.38_20240113/esp32ulp-elf/bin:/home/alexander/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/bin:/home/alexander/.espressif/tools/ninja/1.11.1:/home/alexander/.espressif/tools/esp-rom-elfs/20240305\\\",\\n \\\"idf.customExtraVars\\\": {\\n \\\"OPENOCD_SCRIPTS\\\": \\\"/home/alexander/.espressif/tools/openocd-esp32/v0.12.0-esp32-20240318/openocd-esp32/share/openocd/scripts\\\",\\n \\\"ESP_ROM_ELF_DIR\\\": \\\"/home/alexander/.espressif/tools/esp-rom-elfs/20240305/\\\"\\n },\\n \\\"idf.gitPath\\\": \\\"/usr/bin/git\\\",\\n \\\"cmake.pinnedCommands\\\": [\\n \\\"workbench.action.tasks.configureTaskRunner\\\",\\n \\\"workbench.action.tasks.runTask\\\"\\n ]\\n}\"}","keybindings":"{\"keybindings\":\"// Place your key bindings in this file to override the defaults\\n[\\n {\\n \\\"key\\\": \\\"f1\\\",\\n \\\"command\\\": \\\"espIdf.buildFlashMonitor\\\"\\n },\\n {\\n \\\"key\\\": \\\"ctrl+e d\\\",\\n \\\"command\\\": \\\"-espIdf.buildFlashMonitor\\\"\\n },\\n {\\n \\\"key\\\": \\\"ctrl+f1\\\",\\n \\\"command\\\": \\\"workbench.action.showCommands\\\"\\n },\\n {\\n \\\"key\\\": \\\"f1\\\",\\n \\\"command\\\": \\\"-workbench.action.showCommands\\\"\\n }\\n]\",\"platform\":2}","extensions":"[{\"identifier\":{\"id\":\"adamvoss.vscode-languagetool\",\"uuid\":\"5b45bff0-e35e-4317-8686-1625c2a9c411\"},\"displayName\":\"LanguageTool for Visual Studio Code\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"cschlosser.doxdocgen\",\"uuid\":\"da7e26d5-d57c-4742-ab47-d77fb189e195\"},\"displayName\":\"Doxygen Documentation Generator\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"equinusocio.vsc-material-theme\",\"uuid\":\"45bfc9eb-5e03-487f-bffe-315fa6881d6a\"},\"displayName\":\"Material Theme — Free\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"equinusocio.vsc-material-theme-icons\",\"uuid\":\"6959958f-be4d-42c4-8aa4-dc2c2f086b0a\"},\"displayName\":\"Material Theme Icons — Free\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"espressif.esp-idf-extension\",\"uuid\":\"2f6509f0-2abc-4e12-91e8-91b6ff24c654\"},\"displayName\":\"ESP-IDF\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"github.copilot\",\"uuid\":\"23c4aeee-f844-43cd-b53e-1113e483f1a6\"},\"displayName\":\"GitHub Copilot\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"github.copilot-chat\",\"uuid\":\"7ec7d6e6-b89e-4cc5-a59b-d6c4d238246f\"},\"displayName\":\"GitHub Copilot Chat\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-python.debugpy\",\"uuid\":\"4bd5d2c9-9d65-401a-b0b2-7498d9f17615\"},\"displayName\":\"Python Debugger\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-python.python\",\"uuid\":\"f1f59ae4-9318-4f3c-a9b5-81b2eaa5f8a5\"},\"displayName\":\"Python\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-python.vscode-pylance\",\"uuid\":\"364d2426-116a-433a-a5d8-a5098dc3afbd\"},\"displayName\":\"Pylance\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-vscode-remote.remote-containers\",\"uuid\":\"93ce222b-5f6f-49b7-9ab1-a0463c6238df\"},\"displayName\":\"Dev Containers\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-vscode-remote.remote-ssh\",\"uuid\":\"607fd052-be03-4363-b657-2bd62b83d28a\"},\"displayName\":\"Remote - SSH\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-vscode.cmake-tools\",\"uuid\":\"7c889349-8749-43d4-8b5e-08939936d7f4\"},\"displayName\":\"CMake Tools\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-vscode.cpptools\",\"uuid\":\"690b692e-e8a9-493f-b802-8089d50ac1b2\"},\"displayName\":\"C/C++\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-vscode.cpptools-extension-pack\",\"uuid\":\"3957b2f6-f086-49b5-a7b4-5da772123130\"},\"displayName\":\"C/C++ Extension Pack\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"ms-vscode.cpptools-themes\",\"uuid\":\"99b17261-8f6e-45f0-9ad5-a69c6f509a4f\"},\"displayName\":\"C/C++ Themes\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"pkief.material-icon-theme\",\"uuid\":\"5db78037-f674-459f-a236-db622c427c5b\"},\"displayName\":\"Material Icon Theme\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"tobiasalthoff.atom-material-theme\",\"uuid\":\"ae903c6f-d094-48b1-918b-18947348fe44\"},\"displayName\":\"Atom Material Theme\",\"applicationScoped\":false},{\"identifier\":{\"id\":\"twxs.cmake\",\"uuid\":\"2be7cf14-2603-402e-9771-fd79df83cdf8\"},\"displayName\":\"CMake\",\"applicationScoped\":false}]","globalState":"{\"storage\":{\"workbench.activity.pinnedViewlets2\":\"[{\\\"id\\\":\\\"workbench.view.explorer\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":0},{\\\"id\\\":\\\"workbench.view.search\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":1},{\\\"id\\\":\\\"workbench.view.debug\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":3},{\\\"id\\\":\\\"workbench.view.remote\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":4},{\\\"id\\\":\\\"workbench.view.scm\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":2},{\\\"id\\\":\\\"workbench.view.extension.test\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":6},{\\\"id\\\":\\\"workbench.view.extensions\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":4},{\\\"id\\\":\\\"workbench.view.extension.references-view\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":7},{\\\"id\\\":\\\"workbench.view.extension.idfViewController\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":8},{\\\"id\\\":\\\"workbench.view.extension.cmake-view\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":10},{\\\"id\\\":\\\"workbench.view.extension.copilot-chat\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":9},{\\\"id\\\":\\\"workbench.panel.chatSidebar\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":100},{\\\"id\\\":\\\"workbench.view.sync\\\",\\\"pinned\\\":true,\\\"visible\\\":false},{\\\"id\\\":\\\"workbench.view.editSessions\\\",\\\"pinned\\\":true,\\\"visible\\\":false}]\",\"workbench.panel.pinnedPanels\":\"[{\\\"id\\\":\\\"workbench.panel.markers\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":0},{\\\"id\\\":\\\"workbench.panel.output\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":1},{\\\"id\\\":\\\"workbench.view.extension.espIdfHints\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":6},{\\\"id\\\":\\\"workbench.panel.comments\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":10},{\\\"id\\\":\\\"refactorPreview\\\",\\\"pinned\\\":true,\\\"visible\\\":false},{\\\"id\\\":\\\"workbench.panel.repl\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":2},{\\\"id\\\":\\\"workbench.panel.testResults\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":3},{\\\"id\\\":\\\"terminal\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":3},{\\\"id\\\":\\\"~remote.forwardedPortsContainer\\\",\\\"pinned\\\":true,\\\"visible\\\":false,\\\"order\\\":5}]\",\"workbench.view.remote.state.hidden\":\"[{\\\"id\\\":\\\"remoteTargets\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"targetsContainers\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"targetsWsl\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"detailsContainers\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"devVolumes\\\",\\\"isHidden\\\":false}]\",\"workbench.panel.alignment\":\"center\",\"workbench.panel.chatSidebar.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.chat.view.copilot\\\",\\\"isHidden\\\":false}]\",\"workbench.panel.repl.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.repl.view\\\",\\\"isHidden\\\":false}]\",\"workbench.view.extension.espIdfHints.state.hidden\":\"[{\\\"id\\\":\\\"errorHints\\\",\\\"isHidden\\\":false}]\",\"workbench.view.debug.state.hidden\":\"[{\\\"id\\\":\\\"workbench.debug.welcome\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.variablesView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.watchExpressionsView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.callStackView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.loadedScriptsView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.debug.breakPointsView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"jsBrowserBreakpoints\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"jsExcludedCallers\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"jsDebugNetworkTree\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"espIdf.peripheralView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"CppSshTargetsView\\\",\\\"isHidden\\\":false}]\",\"workbench.view.extension.idfViewController.state.hidden\":\"[{\\\"id\\\":\\\"idfCommands\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"idfSearchResults\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"idfPartitionExplorer\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"idfAppTracer\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"idfAppTraceArchive\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"espRainmaker\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"espEFuseExplorer\\\",\\\"isHidden\\\":false}]\",\"workbench.explorer.views.state.hidden\":\"[{\\\"id\\\":\\\"workbench.explorer.openEditorsView\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"workbench.explorer.fileView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"outline\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"timeline\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"npm\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"idfComponents\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"memory-view.memoryView\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"copilot-chat-requests\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"rtos-views.rtos\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.explorer.emptyView\\\",\\\"isHidden\\\":false}]\",\"colorThemeData\":\"{\\\"id\\\":\\\"vs-dark Equinusocio-vsc-material-theme-build-themes-Material-Theme-Ocean-json\\\",\\\"label\\\":\\\"Material Theme Ocean\\\",\\\"settingsId\\\":\\\"Material Theme Ocean\\\",\\\"themeTokenColors\\\":[{\\\"settings\\\":{\\\"background\\\":\\\"#0F111A\\\",\\\"foreground\\\":\\\"#babed8\\\"}},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C3E88D\\\"},\\\"scope\\\":\\\"string\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"punctuation, constant.other.symbol\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed8\\\"},\\\"scope\\\":\\\"constant.character.escape, text.html constant.character.entity.named\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ff9cac\\\"},\\\"scope\\\":\\\"constant.language.boolean\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#F78C6C\\\"},\\\"scope\\\":\\\"constant.numeric\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed8\\\"},\\\"scope\\\":\\\"variable, variable.parameter, support.variable, variable.language, support.constant, meta.definition.variable entity.name.function, meta.function-call.arguments\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#F78C6C\\\"},\\\"scope\\\":\\\"keyword.other\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"keyword, modifier, variable.language.this, support.type.object, constant.language\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#82AAFF\\\"},\\\"scope\\\":\\\"entity.name.function, support.function\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C792EA\\\"},\\\"scope\\\":\\\"storage.type, storage.modifier, storage.control\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\",\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"support.module, support.node\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"support.type, constant.other.key\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"entity.name.type, entity.other.inherited-class, entity.other\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#464B5D\\\",\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"comment\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#464B5D\\\",\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"comment punctuation.definition.comment, string.quoted.docstring\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"punctuation\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"entity.name, entity.name.type.class, support.type, support.class, meta.use\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"variable.object.property, meta.field.declaration entity.name.function\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"meta.definition.method entity.name.function\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#82AAFF\\\"},\\\"scope\\\":\\\"meta.function entity.name.function\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"template.expression.begin, template.expression.end, punctuation.definition.template-expression.begin, punctuation.definition.template-expression.end\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed8\\\"},\\\"scope\\\":\\\"meta.embedded, source.groovy.embedded, meta.template.expression\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"entity.name.tag.yaml\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"meta.object-literal.key, meta.object-literal.key string, support.type.property-name.json\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"constant.language.json\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"entity.other.attribute-name.class\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#F78C6C\\\"},\\\"scope\\\":\\\"entity.other.attribute-name.id\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"source.css entity.name.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#B2CCD6\\\"},\\\"scope\\\":\\\"support.type.property-name.css\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"meta.tag, punctuation.definition.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"entity.name.tag\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C792EA\\\"},\\\"scope\\\":\\\"entity.other.attribute-name\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed8\\\"},\\\"scope\\\":\\\"punctuation.definition.entity.html\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"markup.heading\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"text.html.markdown meta.link.inline, meta.link.reference\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"text.html.markdown beginning.punctuation.definition.list\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\",\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"markup.italic\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\",\\\"fontStyle\\\":\\\"bold\\\"},\\\"scope\\\":\\\"markup.bold\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\",\\\"fontStyle\\\":\\\"italic bold\\\"},\\\"scope\\\":\\\"markup.bold markup.italic, markup.italic markup.bold\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C3E88D\\\"},\\\"scope\\\":\\\"markup.fenced_code.block.markdown punctuation.definition.markdown\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C3E88D\\\"},\\\"scope\\\":\\\"markup.inline.raw.string.markdown\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"keyword.other.definition.ini\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":\\\"entity.name.section.group-title.ini\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"source.cs meta.class.identifier storage.type\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"source.cs meta.method.identifier entity.name.function\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#82AAFF\\\"},\\\"scope\\\":\\\"source.cs meta.method-call meta.method, source.cs entity.name.function\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"source.cs storage.type\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"source.cs meta.method.return-type\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#464B5D\\\"},\\\"scope\\\":\\\"source.cs meta.preprocessor\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed8\\\"},\\\"scope\\\":\\\"source.cs entity.name.type.namespace\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed8\\\"},\\\"scope\\\":\\\"meta.jsx.children, SXNested\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":\\\"support.class.component\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed8\\\"},\\\"scope\\\":\\\"source.cpp meta.block variable.other\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"source.python meta.member.access.python\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#82AAFF\\\"},\\\"scope\\\":\\\"source.python meta.function-call.python, meta.function-call.arguments\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":\\\"meta.block\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#82AAFF\\\"},\\\"scope\\\":\\\"entity.name.function.call\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed8\\\"},\\\"scope\\\":\\\"source.php support.other.namespace, source.php meta.use support.class\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\",\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":\\\"constant.keyword\\\"},{\\\"settings\\\":{\\\"foreground\\\":\\\"#82AAFF\\\"},\\\"scope\\\":\\\"entity.name.function\\\"},{\\\"settings\\\":{\\\"background\\\":\\\"#0F111A\\\",\\\"foreground\\\":\\\"#babed8\\\"}},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":[\\\"constant.other.placeholder\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":[\\\"markup.deleted\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C3E88D\\\"},\\\"scope\\\":[\\\"markup.inserted\\\"]},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"underline\\\"},\\\"scope\\\":[\\\"markup.underline\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#89DDFF\\\",\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":[\\\"keyword.control\\\"]},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":[\\\"variable.parameter\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\",\\\"fontStyle\\\":\\\"italic\\\"},\\\"scope\\\":[\\\"variable.parameter.function.language.special.self.python\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#F78C6C\\\"},\\\"scope\\\":[\\\"constant.character.format.placeholder.other.python\\\"]},{\\\"settings\\\":{\\\"fontStyle\\\":\\\"italic\\\",\\\"foreground\\\":\\\"#89DDFF\\\"},\\\"scope\\\":[\\\"markup.quote\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#babed890\\\"},\\\"scope\\\":[\\\"markup.fenced_code.block\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ff9cac\\\"},\\\"scope\\\":[\\\"punctuation.definition.quote\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C792EA\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json support.type.property-name.json\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#FFCB6B\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#F78C6C\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#f07178\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#916b53\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#82AAFF\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#ff9cac\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C792EA\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\\\"]},{\\\"settings\\\":{\\\"foreground\\\":\\\"#C3E88D\\\"},\\\"scope\\\":[\\\"meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json meta.structure.dictionary.value.json meta.structure.dictionary.json support.type.property-name.json\\\"]}],\\\"semanticTokenRules\\\":[],\\\"extensionData\\\":{\\\"_extensionId\\\":\\\"Equinusocio.vsc-material-theme\\\",\\\"_extensionIsBuiltin\\\":false,\\\"_extensionName\\\":\\\"vsc-material-theme\\\",\\\"_extensionPublisher\\\":\\\"Equinusocio\\\"},\\\"themeSemanticHighlighting\\\":true,\\\"colorMap\\\":{\\\"focusBorder\\\":\\\"#ffffff00\\\",\\\"foreground\\\":\\\"#babed8\\\",\\\"button.background\\\":\\\"#717cb450\\\",\\\"button.foreground\\\":\\\"#ffffff\\\",\\\"dropdown.background\\\":\\\"#0f111a\\\",\\\"input.background\\\":\\\"#1a1c25\\\",\\\"inputOption.activeBorder\\\":\\\"#babed830\\\",\\\"list.activeSelectionBackground\\\":\\\"#0f111a\\\",\\\"list.activeSelectionForeground\\\":\\\"#80cbc4\\\",\\\"list.dropBackground\\\":\\\"#f0717880\\\",\\\"list.focusBackground\\\":\\\"#babed820\\\",\\\"list.focusForeground\\\":\\\"#babed8\\\",\\\"list.highlightForeground\\\":\\\"#80cbc4\\\",\\\"list.hoverBackground\\\":\\\"#0f111a\\\",\\\"list.inactiveSelectionBackground\\\":\\\"#00000030\\\",\\\"activityBar.background\\\":\\\"#0f111a\\\",\\\"activityBar.dropBackground\\\":\\\"#f0717880\\\",\\\"activityBarBadge.background\\\":\\\"#80cbc4\\\",\\\"activityBarBadge.foreground\\\":\\\"#000000\\\",\\\"badge.background\\\":\\\"#00000030\\\",\\\"badge.foreground\\\":\\\"#464b5d\\\",\\\"sideBar.background\\\":\\\"#0f111a\\\",\\\"sideBarSectionHeader.background\\\":\\\"#0f111a\\\",\\\"editorGroup.dropBackground\\\":\\\"#f0717880\\\",\\\"editorGroup.focusedEmptyBorder\\\":\\\"#f07178\\\",\\\"editorGroupHeader.tabsBackground\\\":\\\"#0f111a\\\",\\\"tab.border\\\":\\\"#0f111a\\\",\\\"tab.activeBorder\\\":\\\"#80cbc4\\\",\\\"tab.inactiveBackground\\\":\\\"#0f111a\\\",\\\"tab.activeModifiedBorder\\\":\\\"#525975\\\",\\\"tab.inactiveModifiedBorder\\\":\\\"#904348\\\",\\\"tab.unfocusedActiveModifiedBorder\\\":\\\"#c05a60\\\",\\\"tab.unfocusedInactiveModifiedBorder\\\":\\\"#904348\\\",\\\"editor.background\\\":\\\"#0f111a\\\",\\\"editor.foreground\\\":\\\"#babed8\\\",\\\"editorLineNumber.foreground\\\":\\\"#3b3f5180\\\",\\\"editorLineNumber.activeForeground\\\":\\\"#525975\\\",\\\"editorCursor.foreground\\\":\\\"#ffcc00\\\",\\\"editor.selectionBackground\\\":\\\"#717cb450\\\",\\\"editor.selectionHighlightBackground\\\":\\\"#ffcc0020\\\",\\\"editor.wordHighlightBackground\\\":\\\"#ff9cac30\\\",\\\"editor.wordHighlightStrongBackground\\\":\\\"#c3e88d30\\\",\\\"editor.findMatchHighlight\\\":\\\"#babed8\\\",\\\"editor.findRangeHighlightBackground\\\":\\\"#ffcb6b30\\\",\\\"editor.lineHighlightBorder\\\":\\\"#00000000\\\",\\\"editor.rangeHighlightBackground\\\":\\\"#ffffff0d\\\",\\\"editorWhitespace.foreground\\\":\\\"#babed840\\\",\\\"editorWidget.background\\\":\\\"#0f111a\\\",\\\"editorHoverWidget.background\\\":\\\"#0f111a\\\",\\\"editorMarkerNavigation.background\\\":\\\"#babed805\\\",\\\"peekView.border\\\":\\\"#00000030\\\",\\\"peekViewEditor.background\\\":\\\"#1a1c25\\\",\\\"peekViewResult.background\\\":\\\"#1a1c25\\\",\\\"peekViewTitle.background\\\":\\\"#1a1c25\\\",\\\"panel.background\\\":\\\"#0f111a\\\",\\\"panel.border\\\":\\\"#0f111a60\\\",\\\"panelTitle.activeBorder\\\":\\\"#80cbc4\\\",\\\"panelTitle.inactiveForeground\\\":\\\"#babed8\\\",\\\"notebook.focusedCellBorder\\\":\\\"#80cbc4\\\",\\\"notebook.inactiveFocusedCellBorder\\\":\\\"#80cbc450\\\",\\\"statusBar.background\\\":\\\"#0f111a\\\",\\\"statusBar.debuggingBackground\\\":\\\"#c792ea\\\",\\\"statusBar.debuggingForeground\\\":\\\"#ffffff\\\",\\\"statusBar.noFolderBackground\\\":\\\"#0f111a\\\",\\\"statusBarItem.activeBackground\\\":\\\"#f0717880\\\",\\\"statusBarItem.hoverBackground\\\":\\\"#464b5d20\\\",\\\"statusBarItem.remoteBackground\\\":\\\"#80cbc4\\\",\\\"statusBarItem.remoteForeground\\\":\\\"#000000\\\",\\\"titleBar.activeBackground\\\":\\\"#0f111a\\\",\\\"pickerGroup.border\\\":\\\"#ffffff1a\\\",\\\"terminal.ansiBlack\\\":\\\"#000000\\\",\\\"terminal.ansiBlue\\\":\\\"#82aaff\\\",\\\"terminal.ansiBrightBlack\\\":\\\"#464b5d\\\",\\\"terminal.ansiBrightBlue\\\":\\\"#82aaff\\\",\\\"terminal.ansiBrightCyan\\\":\\\"#89ddff\\\",\\\"terminal.ansiBrightGreen\\\":\\\"#c3e88d\\\",\\\"terminal.ansiBrightMagenta\\\":\\\"#c792ea\\\",\\\"terminal.ansiBrightRed\\\":\\\"#f07178\\\",\\\"terminal.ansiBrightWhite\\\":\\\"#ffffff\\\",\\\"terminal.ansiBrightYellow\\\":\\\"#ffcb6b\\\",\\\"terminal.ansiCyan\\\":\\\"#89ddff\\\",\\\"terminal.ansiGreen\\\":\\\"#c3e88d\\\",\\\"terminal.ansiMagenta\\\":\\\"#c792ea\\\",\\\"terminal.ansiRed\\\":\\\"#f07178\\\",\\\"terminal.ansiWhite\\\":\\\"#ffffff\\\",\\\"terminal.ansiYellow\\\":\\\"#ffcb6b\\\",\\\"debugToolBar.background\\\":\\\"#0f111a\\\",\\\"debugConsole.errorForeground\\\":\\\"#f07178\\\",\\\"debugConsole.infoForeground\\\":\\\"#89ddff\\\",\\\"debugConsole.warningForeground\\\":\\\"#ffcb6b\\\",\\\"selection.background\\\":\\\"#00000080\\\",\\\"editorRuler.foreground\\\":\\\"#3b3f51\\\",\\\"widget.shadow\\\":\\\"#00000030\\\",\\\"scrollbar.shadow\\\":\\\"#00000030\\\",\\\"editorLink.activeForeground\\\":\\\"#babed8\\\",\\\"progressBar.background\\\":\\\"#80cbc4\\\",\\\"pickerGroup.foreground\\\":\\\"#80cbc4\\\",\\\"tree.indentGuidesStroke\\\":\\\"#3b3f51\\\",\\\"terminalCursor.foreground\\\":\\\"#ffcb6b\\\",\\\"terminalCursor.background\\\":\\\"#000000\\\",\\\"inputOption.activeBackground\\\":\\\"#babed830\\\",\\\"textLink.foreground\\\":\\\"#80cbc4\\\",\\\"textLink.activeForeground\\\":\\\"#babed8\\\",\\\"sideBar.foreground\\\":\\\"#525975\\\",\\\"sideBar.border\\\":\\\"#0f111a60\\\",\\\"sideBarTitle.foreground\\\":\\\"#babed8\\\",\\\"sideBarSectionHeader.border\\\":\\\"#0f111a60\\\",\\\"panel.dropBackground\\\":\\\"#babed8\\\",\\\"sash.hoverBorder\\\":\\\"#80cbc450\\\",\\\"panelTitle.activeForeground\\\":\\\"#ffffff\\\",\\\"editor.lineHighlightBackground\\\":\\\"#00000050\\\",\\\"editor.findMatchBackground\\\":\\\"#000000\\\",\\\"editor.findMatchHighlightBackground\\\":\\\"#00000050\\\",\\\"editor.findMatchBorder\\\":\\\"#80cbc4\\\",\\\"editor.findMatchHighlightBorder\\\":\\\"#ffffff30\\\",\\\"editorIndentGuide.background\\\":\\\"#3b3f5170\\\",\\\"editorIndentGuide.activeBackground\\\":\\\"#3b3f51\\\",\\\"editorGroup.border\\\":\\\"#00000030\\\",\\\"editorGutter.modifiedBackground\\\":\\\"#82aaff60\\\",\\\"editorGutter.addedBackground\\\":\\\"#c3e88d60\\\",\\\"editorGutter.deletedBackground\\\":\\\"#f0717860\\\",\\\"activityBar.border\\\":\\\"#0f111a60\\\",\\\"activityBar.foreground\\\":\\\"#babed8\\\",\\\"activityBar.activeBorder\\\":\\\"#80cbc4\\\",\\\"extensionBadge.remoteForeground\\\":\\\"#babed8\\\",\\\"scrollbarSlider.background\\\":\\\"#8f93a220\\\",\\\"scrollbarSlider.hoverBackground\\\":\\\"#8f93a210\\\",\\\"scrollbarSlider.activeBackground\\\":\\\"#80cbc4\\\",\\\"tab.unfocusedActiveBorder\\\":\\\"#464b5d\\\",\\\"tab.activeForeground\\\":\\\"#ffffff\\\",\\\"tab.inactiveForeground\\\":\\\"#525975\\\",\\\"tab.activeBackground\\\":\\\"#0f111a\\\",\\\"tab.unfocusedActiveForeground\\\":\\\"#babed8\\\",\\\"editorWidget.resizeBorder\\\":\\\"#80cbc4\\\",\\\"editorWidget.border\\\":\\\"#80cbc4\\\",\\\"statusBar.border\\\":\\\"#0f111a60\\\",\\\"statusBar.foreground\\\":\\\"#4b526d\\\",\\\"editorBracketMatch.border\\\":\\\"#ffcc0050\\\",\\\"editorBracketMatch.background\\\":\\\"#0f111a\\\",\\\"editorOverviewRuler.findMatchForeground\\\":\\\"#80cbc4\\\",\\\"editorOverviewRuler.border\\\":\\\"#0f111a\\\",\\\"editorOverviewRuler.errorForeground\\\":\\\"#f0717840\\\",\\\"editorOverviewRuler.infoForeground\\\":\\\"#82aaff40\\\",\\\"editorOverviewRuler.warningForeground\\\":\\\"#ffcb6b40\\\",\\\"editorInfo.foreground\\\":\\\"#82aaff70\\\",\\\"editorWarning.foreground\\\":\\\"#ffcb6b70\\\",\\\"editorError.foreground\\\":\\\"#f0717870\\\",\\\"editorHoverWidget.border\\\":\\\"#ffffff10\\\",\\\"titleBar.activeForeground\\\":\\\"#babed8\\\",\\\"titleBar.inactiveBackground\\\":\\\"#0f111a\\\",\\\"titleBar.inactiveForeground\\\":\\\"#525975\\\",\\\"titleBar.border\\\":\\\"#0f111a60\\\",\\\"input.foreground\\\":\\\"#babed8\\\",\\\"input.placeholderForeground\\\":\\\"#babed860\\\",\\\"input.border\\\":\\\"#ffffff10\\\",\\\"inputValidation.errorBorder\\\":\\\"#f07178\\\",\\\"inputValidation.infoBorder\\\":\\\"#82aaff\\\",\\\"inputValidation.warningBorder\\\":\\\"#ffcb6b\\\",\\\"dropdown.border\\\":\\\"#ffffff10\\\",\\\"quickInput.background\\\":\\\"#0f111a\\\",\\\"quickInput.foreground\\\":\\\"#525975\\\",\\\"list.hoverForeground\\\":\\\"#ffffff\\\",\\\"list.inactiveSelectionForeground\\\":\\\"#80cbc4\\\",\\\"quickInput.list.focusBackground\\\":\\\"#babed820\\\",\\\"editorSuggestWidget.background\\\":\\\"#0f111a\\\",\\\"editorSuggestWidget.foreground\\\":\\\"#babed8\\\",\\\"editorSuggestWidget.highlightForeground\\\":\\\"#80cbc4\\\",\\\"editorSuggestWidget.selectedBackground\\\":\\\"#00000050\\\",\\\"editorSuggestWidget.border\\\":\\\"#ffffff10\\\",\\\"diffEditor.insertedTextBackground\\\":\\\"#89ddff20\\\",\\\"diffEditor.removedTextBackground\\\":\\\"#ff9cac20\\\",\\\"notifications.background\\\":\\\"#0f111a\\\",\\\"notifications.foreground\\\":\\\"#babed8\\\",\\\"notificationLink.foreground\\\":\\\"#80cbc4\\\",\\\"extensionButton.prominentBackground\\\":\\\"#c3e88d90\\\",\\\"extensionButton.prominentHoverBackground\\\":\\\"#c3e88d\\\",\\\"extensionButton.prominentForeground\\\":\\\"#babed8\\\",\\\"peekViewEditorGutter.background\\\":\\\"#1a1c25\\\",\\\"peekViewTitleDescription.foreground\\\":\\\"#babed860\\\",\\\"peekViewResult.matchHighlightBackground\\\":\\\"#717cb450\\\",\\\"peekViewEditor.matchHighlightBackground\\\":\\\"#717cb450\\\",\\\"peekViewResult.selectionBackground\\\":\\\"#52597570\\\",\\\"gitDecoration.deletedResourceForeground\\\":\\\"#f0717890\\\",\\\"gitDecoration.conflictingResourceForeground\\\":\\\"#ffcb6b90\\\",\\\"gitDecoration.modifiedResourceForeground\\\":\\\"#82aaff90\\\",\\\"gitDecoration.untrackedResourceForeground\\\":\\\"#c3e88d90\\\",\\\"gitDecoration.ignoredResourceForeground\\\":\\\"#52597590\\\",\\\"breadcrumb.background\\\":\\\"#0f111a\\\",\\\"breadcrumb.foreground\\\":\\\"#525975\\\",\\\"breadcrumb.focusForeground\\\":\\\"#babed8\\\",\\\"breadcrumb.activeSelectionForeground\\\":\\\"#80cbc4\\\",\\\"breadcrumbPicker.background\\\":\\\"#0f111a\\\",\\\"menu.background\\\":\\\"#0f111a\\\",\\\"menu.foreground\\\":\\\"#babed8\\\",\\\"menu.selectionBackground\\\":\\\"#00000050\\\",\\\"menu.selectionForeground\\\":\\\"#80cbc4\\\",\\\"menu.selectionBorder\\\":\\\"#00000030\\\",\\\"menu.separatorBackground\\\":\\\"#babed8\\\",\\\"menubar.selectionBackground\\\":\\\"#00000030\\\",\\\"menubar.selectionForeground\\\":\\\"#80cbc4\\\",\\\"menubar.selectionBorder\\\":\\\"#00000030\\\",\\\"settings.dropdownForeground\\\":\\\"#babed8\\\",\\\"settings.dropdownBackground\\\":\\\"#0f111a\\\",\\\"settings.numberInputForeground\\\":\\\"#babed8\\\",\\\"settings.numberInputBackground\\\":\\\"#0f111a\\\",\\\"settings.textInputForeground\\\":\\\"#babed8\\\",\\\"settings.textInputBackground\\\":\\\"#0f111a\\\",\\\"settings.headerForeground\\\":\\\"#80cbc4\\\",\\\"settings.modifiedItemIndicator\\\":\\\"#80cbc4\\\",\\\"settings.checkboxBackground\\\":\\\"#0f111a\\\",\\\"settings.checkboxForeground\\\":\\\"#babed8\\\",\\\"listFilterWidget.background\\\":\\\"#00000030\\\",\\\"listFilterWidget.outline\\\":\\\"#00000030\\\",\\\"listFilterWidget.noMatchesOutline\\\":\\\"#00000030\\\",\\\"terminalCommandGuide.foreground\\\":\\\"#3b3f5180\\\"},\\\"watch\\\":false}\",\"workbench.panel.markers.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.markers.view\\\",\\\"isHidden\\\":false}]\",\"terminal.hidden\":\"[{\\\"id\\\":\\\"terminal\\\",\\\"isHidden\\\":false}]\",\"workbench.view.extensions.state.hidden\":\"[{\\\"id\\\":\\\"workbench.views.extensions.installed\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchOutdated\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.workspaceRecommendations\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.popular\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchRecentlyUpdated\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.otherRecommendations\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"extensions.recommendedList\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.enabled\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"workbench.views.extensions.disabled\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"workbench.views.extensions.marketplace\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchInstalled\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchEnabled\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchDisabled\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchBuiltin\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.searchWorkspaceUnsupported\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.builtinFeatureExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.builtinThemeExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.builtinProgrammingLanguageExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.untrustedUnsupportedExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.untrustedPartiallySupportedExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.virtualUnsupportedExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.virtualPartiallySupportedExtensions\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.views.extensions.deprecatedExtensions\\\",\\\"isHidden\\\":false}]\",\"workbench.welcomePage.walkthroughMetadata\":\"[[\\\"GitHub.copilot#copilotWelcome\\\",{\\\"firstSeen\\\":1717883048617,\\\"stepIDs\\\":[\\\"copilot.signin\\\",\\\"copilot.firstsuggest\\\",\\\"copilot.chatWin\\\",\\\"copilot.chatNonWin\\\",\\\"copilot.realfiles.openrecent\\\",\\\"copilot.realfiles.quickopen\\\",\\\"copilot.iterate\\\",\\\"copilot.creativity\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-python.python#pythonWelcome\\\",{\\\"firstSeen\\\":1717883048617,\\\"stepIDs\\\":[\\\"python.createPythonFolder\\\",\\\"python.createPythonFile\\\",\\\"python.installPythonWin8\\\",\\\"python.installPythonMac\\\",\\\"python.installPythonLinux\\\",\\\"python.createEnvironment\\\",\\\"python.runAndDebug\\\",\\\"python.learnMoreWithDS\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-python.python#pythonDataScienceWelcome\\\",{\\\"firstSeen\\\":1717883048617,\\\"stepIDs\\\":[\\\"python.installJupyterExt\\\",\\\"python.createNewNotebook\\\",\\\"python.openInteractiveWindow\\\",\\\"python.dataScienceLearnMore\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-azuretools.vscode-docker#dockerStart\\\",{\\\"firstSeen\\\":1719054505868,\\\"stepIDs\\\":[\\\"openFolder\\\",\\\"openFolderMac\\\",\\\"scaffold\\\",\\\"buildImage\\\",\\\"runContainer\\\",\\\"dockerExplorer\\\",\\\"pushImage\\\",\\\"azDeploy\\\",\\\"learn\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-toolsai.jupyter#jupyterWelcome\\\",{\\\"firstSeen\\\":1719054505868,\\\"stepIDs\\\":[\\\"ipynb.newUntitledIpynb\\\",\\\"jupyter.selectKernel\\\",\\\"jupyter.exploreAndDebug\\\",\\\"jupyter.dataScienceLearnMore\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-vscode.cpptools#cppWelcome\\\",{\\\"firstSeen\\\":1719066559515,\\\"stepIDs\\\":[\\\"awaiting.activation.mac\\\",\\\"awaiting.activation.linux\\\",\\\"awaiting.activation.windows\\\",\\\"awaiting.activation.windows10\\\",\\\"awaiting.activation.windows11\\\",\\\"no.compilers.found.mac\\\",\\\"no.compilers.found.linux\\\",\\\"no.compilers.found.windows\\\",\\\"no.compilers.found.windows10\\\",\\\"no.compilers.found.windows11\\\",\\\"verify.compiler.mac\\\",\\\"verify.compiler.linux\\\",\\\"verify.compiler.windows\\\",\\\"verify.compiler.windows10\\\",\\\"verify.compiler.windows11\\\",\\\"create.cpp.file\\\",\\\"relaunch.developer.command.prompt.windows\\\",\\\"run.project.mac\\\",\\\"run.project.linux\\\",\\\"run.project.windows\\\",\\\"customize.debugging.linux\\\",\\\"customize.debugging.windows\\\",\\\"customize.debugging.mac\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-vscode.remote-repositories#remoteRepositoriesWalkthrough\\\",{\\\"firstSeen\\\":1727522472161,\\\"stepIDs\\\":[\\\"editCommitRepo\\\",\\\"createGitHubPullRequest\\\",\\\"continueOn\\\",\\\"openRepo\\\",\\\"remoteIndicator\\\"],\\\"manaullyOpened\\\":false}],[\\\"ms-vscode-remote.remote-wsl#wslWalkthrough\\\",{\\\"firstSeen\\\":1727522485041,\\\"stepIDs\\\":[\\\"explore.commands\\\",\\\"open.wslwindow\\\",\\\"create.project\\\",\\\"open.project\\\",\\\"linux.environment\\\",\\\"install.tools\\\",\\\"run.debug\\\",\\\"come.back\\\"],\\\"manaullyOpened\\\":false}]]\",\"workbench.view.extension.test.state.hidden\":\"[{\\\"id\\\":\\\"workbench.view.testing\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.view.testCoverage\\\",\\\"isHidden\\\":false}]\",\"workbench.panel.output.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.output\\\",\\\"isHidden\\\":false}]\",\"workbench.scm.views.state.hidden\":\"[{\\\"id\\\":\\\"workbench.scm.repositories\\\",\\\"isHidden\\\":true},{\\\"id\\\":\\\"workbench.scm\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"workbench.scm.history\\\",\\\"isHidden\\\":false}]\",\"workbench.view.search.state.hidden\":\"[{\\\"id\\\":\\\"workbench.view.search\\\",\\\"isHidden\\\":false}]\",\"workbench.activityBar.location\":\"default\",\"~remote.forwardedPortsContainer.hidden\":\"[{\\\"id\\\":\\\"~remote.forwardedPorts\\\",\\\"isHidden\\\":false}]\",\"workbench.telemetryOptOutShown\":\"true\",\"memento/gettingStartedService\":\"{\\\"installGit\\\":{\\\"done\\\":true},\\\"pickColorTheme\\\":{\\\"done\\\":true},\\\"pickColorThemeWeb\\\":{\\\"done\\\":true},\\\"pickAFolderTask-Other\\\":{\\\"done\\\":true},\\\"ms-python.python#pythonWelcome#python.createPythonFolder\\\":{\\\"done\\\":true},\\\"ms-python.python#pythonDataScienceWelcome#python.createNewNotebook\\\":{\\\"done\\\":true},\\\"ms-azuretools.vscode-docker#dockerStart#openFolder\\\":{\\\"done\\\":true},\\\"GitHub.copilot#copilotWelcome#copilot.signin\\\":{\\\"done\\\":true},\\\"commandPaletteTask\\\":{\\\"done\\\":true},\\\"commandPaletteTaskWeb\\\":{\\\"done\\\":true},\\\"ms-toolsai.jupyter#jupyterWelcome#ipynb.newUntitledIpynb\\\":{\\\"done\\\":true},\\\"ms-azuretools.vscode-docker#dockerStart#dockerExplorer\\\":{\\\"done\\\":true},\\\"ms-vscode.cpptools#cppWelcome#verify.compiler.mac\\\":{\\\"done\\\":true},\\\"ms-vscode.cpptools#cppWelcome#verify.compiler.linux\\\":{\\\"done\\\":true},\\\"ms-vscode.cpptools#cppWelcome#verify.compiler.windows\\\":{\\\"done\\\":true},\\\"ms-vscode.cpptools#cppWelcome#verify.compiler.windows10\\\":{\\\"done\\\":true},\\\"ms-vscode.cpptools#cppWelcome#verify.compiler.windows11\\\":{\\\"done\\\":true},\\\"quickOpen\\\":{\\\"done\\\":true},\\\"quickOpenWeb\\\":{\\\"done\\\":true},\\\"shortcuts\\\":{\\\"done\\\":true},\\\"tasks\\\":{\\\"done\\\":true},\\\"GitHub.copilot#copilotWelcome#copilot.chatWin\\\":{\\\"done\\\":true},\\\"GitHub.copilot#copilotWelcome#copilot.chatNonWin\\\":{\\\"done\\\":true},\\\"GitHub.copilot#copilotWelcome#copilot.realfiles.quickopen\\\":{\\\"done\\\":true},\\\"pickAFolderTask-WebWeb\\\":{\\\"done\\\":true},\\\"intellisense\\\":{\\\"done\\\":true}}\",\"fileBasedRecommendations/promptedRecommendations\":\"{\\\"c\\\":[\\\"ms-vscode.cpptools-extension-pack\\\"]}\",\"workbench.view.extension.cmake-view.state.hidden\":\"[{\\\"id\\\":\\\"cmake.projectStatus\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"cmake.outline\\\",\\\"isHidden\\\":false},{\\\"id\\\":\\\"cmake.pinnedCommands\\\",\\\"isHidden\\\":false}]\",\"commandPalette.mru.cache\":\"{\\\"usesLRU\\\":true,\\\"entries\\\":[{\\\"key\\\":\\\"espIdf.buildDevice\\\",\\\"value\\\":2},{\\\"key\\\":\\\"workbench.action.terminal.new\\\",\\\"value\\\":4},{\\\"key\\\":\\\"cmake.configure\\\",\\\"value\\\":6},{\\\"key\\\":\\\"workbench.action.reloadWindow\\\",\\\"value\\\":12}]}\",\"commandPalette.mru.counter\":\"13\",\"expandSuggestionDocs\":\"false\",\"memento/workbench.editor.keybindings\":\"{\\\"searchHistory\\\":[\\\"I\\\",\\\"\\\\\\\"f1\\\\\\\"\\\",\\\"stop\\\",\\\"stop \\\",\\\"stop moni\\\",\\\"stop mon\\\",\\\"stop mo\\\",\\\"ID\\\",\\\"IDF\\\",\\\"IDF: Mo\\\",\\\"IDF: Bui\\\",\\\"IDF: Build\\\",\\\"IDF: \\\"]}\",\"refactorPreview.hidden\":\"[{\\\"id\\\":\\\"refactorPreview\\\",\\\"isHidden\\\":false}]\",\"Comments.hidden\":\"[{\\\"id\\\":\\\"workbench.panel.comments\\\",\\\"isHidden\\\":false}]\",\"extension.features.state\":\"{\\\"GitHub.copilot-chat\\\":{\\\"languageModels\\\":{\\\"disabled\\\":false,\\\"accessCount\\\":6}}}\"}}"} \ No newline at end of file diff --git a/can-interface/README.md b/can-interface/README.md new file mode 100755 index 0000000..277c4f5 --- /dev/null +++ b/can-interface/README.md @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:2e5e9341d4cb10a34d2c6e5cb83255df03c6f5463d589c489ac28d45cdd10f8d +size 2467 diff --git a/can-interface/components/mcp2521 b/can-interface/components/mcp2521 new file mode 120000 index 0000000..5f7b89f --- /dev/null +++ b/can-interface/components/mcp2521 @@ -0,0 +1 @@ +/home/alexander/Projects/gobot/common-libaries/mcp2521 \ No newline at end of file diff --git a/can-interface/components/mcp2521_hardware_interface b/can-interface/components/mcp2521_hardware_interface new file mode 120000 index 0000000..b8e9b91 --- /dev/null +++ b/can-interface/components/mcp2521_hardware_interface @@ -0,0 +1 @@ +/home/alexander/Projects/gobot/common-libaries/mcp2521_hardware_interface \ No newline at end of file diff --git a/can-interface/main/CMakeLists.txt b/can-interface/main/CMakeLists.txt new file mode 100755 index 0000000..aff3abc --- /dev/null +++ b/can-interface/main/CMakeLists.txt @@ -0,0 +1,6 @@ +idf_component_register(SRCS "hello_world_main.cpp" + REQUIRES driver + REQUIRES mcp2521 + REQUIRES mcp2521_hardware_interface + REQUIRES spi_flash + INCLUDE_DIRS "") diff --git a/can-interface/main/can-interface.code-workspace b/can-interface/main/can-interface.code-workspace new file mode 100644 index 0000000..9e68e72 --- /dev/null +++ b/can-interface/main/can-interface.code-workspace @@ -0,0 +1,7 @@ +{ + "folders": [ + { + "path": ".." + } + ] +} \ No newline at end of file diff --git a/can-interface/main/hello_world_main.cpp b/can-interface/main/hello_world_main.cpp new file mode 100755 index 0000000..70432f2 --- /dev/null +++ b/can-interface/main/hello_world_main.cpp @@ -0,0 +1,105 @@ +/* + * SPDX-FileCopyrightText: 2010-2022 Espressif Systems (Shanghai) CO LTD + * + * SPDX-License-Identifier: CC0-1.0 + */ + +#include +#include +#include +#include "sdkconfig.h" + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "freertos/semphr.h" +#include "freertos/queue.h" + +#include "esp_chip_info.h" +#include "esp_flash.h" +#include "esp_system.h" + +#include "driver/gpio.h" +#include "driver/spi_master.h" + +#include "mcp2521.hpp" + +#define SPI_PIN_CS0 GPIO_NUM_5 +#define SPI_PIN_SCLK GPIO_NUM_18 +#define SPI_PIN_MISO GPIO_NUM_19 +#define SPI_PIN_MOSI GPIO_NUM_23 +#define CAN_INT_PIN GPIO_NUM_21 + +#define EXTERNAL_TRIGGER GPIO_NUM_26 + +void onRX(void *arg) { + MCP2521 *mcp2521 = (MCP2521 *)arg; + + rx_info info = mcp2521->get_rx_id(MCP2521_RX_BUFFER::RXB0); + uint8_t data[8]; + + mcp2521->read_rx_buf(MCP2521_RX_BUFFER::RXB0, MCP2521_BUFFER_TYPE::DATA, data, info.length); + + printf("RX: (%x) ", info.id); + for (int i = 0; i < info.length; i++) { + printf("%x ", data[i]); + } + printf("\n"); +} + +extern "C" void app_main() { + printf("Hello world!\n"); + + const gpio_num_t LED_PIN = GPIO_NUM_2; + gpio_set_direction(LED_PIN, GPIO_MODE_OUTPUT); + + gpio_set_direction(EXTERNAL_TRIGGER, GPIO_MODE_OUTPUT); + gpio_set_level(EXTERNAL_TRIGGER, true); + + vTaskDelay(100 / portTICK_PERIOD_MS); + + + spi_bus_config_t spi_bus; + + MCP2521_Hardware_Handle_ESP hardware_mcp2521( + VSPI_HOST, + &spi_bus, + SPI_PIN_MOSI, + SPI_PIN_MISO, + SPI_PIN_SCLK, + SPI_PIN_CS0, + CAN_INT_PIN + ); + + MCP2521 mcp2521(&hardware_mcp2521); + + uint8_t data[4] = {0xf0, 0x42, 0x13, 0x37}; + + gpio_set_level(EXTERNAL_TRIGGER, false); + mcp2521.reset(); + mcp2521.enable_interrupts(true, true, true, true, true, true, true, true); + + mcp2521.register_rx0_handler(onRX, &mcp2521); + mcp2521.register_rx1_handler(onRX, &mcp2521); + mcp2521.set_mode_of_operation(MCP2521_OPERATION_MODE::LOOPBACK, true); + + vTaskDelay(3 / portTICK_PERIOD_MS); + + mcp2521.prepare_tx( + MCP2521_TX_BUFFER::TXB0, 0x042, data, 4, false, false); + + mcp2521.request_to_send(MCP2521_TX_BUFFER::TXB0); + + mcp2521.set_tx_id(MCP2521_TX_BUFFER::TXB0, 0x041, false); + mcp2521.request_to_send(MCP2521_TX_BUFFER::TXB0); + + + vTaskDelay(20 / portTICK_PERIOD_MS); + + bool flag = true; + while (true) { + gpio_set_level(LED_PIN, flag); + flag = !flag; + + vTaskDelay(100 / portTICK_PERIOD_MS); + } +} diff --git a/can-interface/pulseView-debug-session b/can-interface/pulseView-debug-session new file mode 100644 index 0000000..8913bfb Binary files /dev/null and b/can-interface/pulseView-debug-session differ diff --git a/can-interface/pulseview-session b/can-interface/pulseview-session new file mode 100644 index 0000000..88df98f Binary files /dev/null and b/can-interface/pulseview-session differ diff --git a/can-interface/pytest_hello_world.py b/can-interface/pytest_hello_world.py new file mode 100755 index 0000000..bf6c178 --- /dev/null +++ b/can-interface/pytest_hello_world.py @@ -0,0 +1,3 @@ +version https://git-lfs.github.com/spec/v1 +oid sha256:8542dcf95356eceee93ebd8aa7c32abc01e4fc100b2c2e8d2b2a316324036a0c +size 1608 diff --git a/can-interface/sdkconfig b/can-interface/sdkconfig new file mode 100644 index 0000000..a4995fe --- /dev/null +++ b/can-interface/sdkconfig @@ -0,0 +1,2008 @@ +# +# Automatically generated file. DO NOT EDIT. +# Espressif IoT Development Framework (ESP-IDF) 5.3.1 Project Configuration +# +CONFIG_SOC_BROWNOUT_RESET_SUPPORTED="Not determined" +CONFIG_SOC_TWAI_BRP_DIV_SUPPORTED="Not determined" +CONFIG_SOC_DPORT_WORKAROUND="Not determined" +CONFIG_SOC_CAPS_ECO_VER_MAX=301 +CONFIG_SOC_ADC_SUPPORTED=y +CONFIG_SOC_DAC_SUPPORTED=y +CONFIG_SOC_UART_SUPPORTED=y +CONFIG_SOC_MCPWM_SUPPORTED=y +CONFIG_SOC_GPTIMER_SUPPORTED=y +CONFIG_SOC_SDMMC_HOST_SUPPORTED=y +CONFIG_SOC_BT_SUPPORTED=y +CONFIG_SOC_PCNT_SUPPORTED=y +CONFIG_SOC_PHY_SUPPORTED=y +CONFIG_SOC_WIFI_SUPPORTED=y +CONFIG_SOC_SDIO_SLAVE_SUPPORTED=y +CONFIG_SOC_TWAI_SUPPORTED=y +CONFIG_SOC_EFUSE_SUPPORTED=y +CONFIG_SOC_EMAC_SUPPORTED=y +CONFIG_SOC_ULP_SUPPORTED=y +CONFIG_SOC_CCOMP_TIMER_SUPPORTED=y +CONFIG_SOC_RTC_FAST_MEM_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_MEM_SUPPORTED=y +CONFIG_SOC_RTC_MEM_SUPPORTED=y +CONFIG_SOC_I2S_SUPPORTED=y +CONFIG_SOC_RMT_SUPPORTED=y +CONFIG_SOC_SDM_SUPPORTED=y +CONFIG_SOC_GPSPI_SUPPORTED=y +CONFIG_SOC_LEDC_SUPPORTED=y +CONFIG_SOC_I2C_SUPPORTED=y +CONFIG_SOC_SUPPORT_COEXISTENCE=y +CONFIG_SOC_AES_SUPPORTED=y +CONFIG_SOC_MPI_SUPPORTED=y +CONFIG_SOC_SHA_SUPPORTED=y +CONFIG_SOC_FLASH_ENC_SUPPORTED=y +CONFIG_SOC_SECURE_BOOT_SUPPORTED=y +CONFIG_SOC_TOUCH_SENSOR_SUPPORTED=y +CONFIG_SOC_BOD_SUPPORTED=y +CONFIG_SOC_ULP_FSM_SUPPORTED=y +CONFIG_SOC_CLK_TREE_SUPPORTED=y +CONFIG_SOC_MPU_SUPPORTED=y +CONFIG_SOC_WDT_SUPPORTED=y +CONFIG_SOC_SPI_FLASH_SUPPORTED=y +CONFIG_SOC_RNG_SUPPORTED=y +CONFIG_SOC_LIGHT_SLEEP_SUPPORTED=y +CONFIG_SOC_DEEP_SLEEP_SUPPORTED=y +CONFIG_SOC_LP_PERIPH_SHARE_INTERRUPT=y +CONFIG_SOC_PM_SUPPORTED=y +CONFIG_SOC_DPORT_WORKAROUND_DIS_INTERRUPT_LVL=5 +CONFIG_SOC_XTAL_SUPPORT_26M=y +CONFIG_SOC_XTAL_SUPPORT_40M=y +CONFIG_SOC_XTAL_SUPPORT_AUTO_DETECT=y +CONFIG_SOC_ADC_RTC_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DIG_CTRL_SUPPORTED=y +CONFIG_SOC_ADC_DMA_SUPPORTED=y +CONFIG_SOC_ADC_PERIPH_NUM=2 +CONFIG_SOC_ADC_MAX_CHANNEL_NUM=10 +CONFIG_SOC_ADC_ATTEN_NUM=4 +CONFIG_SOC_ADC_DIGI_CONTROLLER_NUM=2 +CONFIG_SOC_ADC_PATT_LEN_MAX=16 +CONFIG_SOC_ADC_DIGI_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_DIGI_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_DIGI_RESULT_BYTES=2 +CONFIG_SOC_ADC_DIGI_DATA_BYTES_PER_CONV=4 +CONFIG_SOC_ADC_DIGI_MONITOR_NUM=0 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_HIGH=2 +CONFIG_SOC_ADC_SAMPLE_FREQ_THRES_LOW=20 +CONFIG_SOC_ADC_RTC_MIN_BITWIDTH=9 +CONFIG_SOC_ADC_RTC_MAX_BITWIDTH=12 +CONFIG_SOC_ADC_SHARED_POWER=y +CONFIG_SOC_SHARED_IDCACHE_SUPPORTED=y +CONFIG_SOC_IDCACHE_PER_CORE=y +CONFIG_SOC_CPU_CORES_NUM=2 +CONFIG_SOC_CPU_INTR_NUM=32 +CONFIG_SOC_CPU_HAS_FPU=y +CONFIG_SOC_HP_CPU_HAS_MULTIPLE_CORES=y +CONFIG_SOC_CPU_BREAKPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINTS_NUM=2 +CONFIG_SOC_CPU_WATCHPOINT_MAX_REGION_SIZE=64 +CONFIG_SOC_DAC_CHAN_NUM=2 +CONFIG_SOC_DAC_RESOLUTION=8 +CONFIG_SOC_DAC_DMA_16BIT_ALIGN=y +CONFIG_SOC_GPIO_PORT=1 +CONFIG_SOC_GPIO_PIN_COUNT=40 +CONFIG_SOC_GPIO_VALID_GPIO_MASK=0xFFFFFFFFFF +CONFIG_SOC_GPIO_IN_RANGE_MAX=39 +CONFIG_SOC_GPIO_OUT_RANGE_MAX=33 +CONFIG_SOC_GPIO_VALID_DIGITAL_IO_PAD_MASK=0xEF0FEA +CONFIG_SOC_GPIO_CLOCKOUT_BY_IO_MUX=y +CONFIG_SOC_GPIO_CLOCKOUT_CHANNEL_NUM=3 +CONFIG_SOC_I2C_NUM=2 +CONFIG_SOC_HP_I2C_NUM=2 +CONFIG_SOC_I2C_FIFO_LEN=32 +CONFIG_SOC_I2C_CMD_REG_NUM=16 +CONFIG_SOC_I2C_SUPPORT_SLAVE=y +CONFIG_SOC_I2C_SUPPORT_APB=y +CONFIG_SOC_I2C_STOP_INDEPENDENT=y +CONFIG_SOC_I2S_NUM=2 +CONFIG_SOC_I2S_HW_VERSION_1=y +CONFIG_SOC_I2S_SUPPORTS_APLL=y +CONFIG_SOC_I2S_SUPPORTS_PLL_F160M=y +CONFIG_SOC_I2S_SUPPORTS_PDM=y +CONFIG_SOC_I2S_SUPPORTS_PDM_TX=y +CONFIG_SOC_I2S_PDM_MAX_TX_LINES=1 +CONFIG_SOC_I2S_SUPPORTS_PDM_RX=y +CONFIG_SOC_I2S_PDM_MAX_RX_LINES=1 +CONFIG_SOC_I2S_SUPPORTS_ADC_DAC=y +CONFIG_SOC_I2S_SUPPORTS_ADC=y +CONFIG_SOC_I2S_SUPPORTS_DAC=y +CONFIG_SOC_I2S_SUPPORTS_LCD_CAMERA=y +CONFIG_SOC_I2S_TRANS_SIZE_ALIGN_WORD=y +CONFIG_SOC_I2S_LCD_I80_VARIANT=y +CONFIG_SOC_LCD_I80_SUPPORTED=y +CONFIG_SOC_LCD_I80_BUSES=2 +CONFIG_SOC_LCD_I80_BUS_WIDTH=24 +CONFIG_SOC_LEDC_HAS_TIMER_SPECIFIC_MUX=y +CONFIG_SOC_LEDC_SUPPORT_APB_CLOCK=y +CONFIG_SOC_LEDC_SUPPORT_REF_TICK=y +CONFIG_SOC_LEDC_SUPPORT_HS_MODE=y +CONFIG_SOC_LEDC_CHANNEL_NUM=8 +CONFIG_SOC_LEDC_TIMER_BIT_WIDTH=20 +CONFIG_SOC_MCPWM_GROUPS=2 +CONFIG_SOC_MCPWM_TIMERS_PER_GROUP=3 +CONFIG_SOC_MCPWM_OPERATORS_PER_GROUP=3 +CONFIG_SOC_MCPWM_COMPARATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GENERATORS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_TRIGGERS_PER_OPERATOR=2 +CONFIG_SOC_MCPWM_GPIO_FAULTS_PER_GROUP=3 +CONFIG_SOC_MCPWM_CAPTURE_TIMERS_PER_GROUP=y +CONFIG_SOC_MCPWM_CAPTURE_CHANNELS_PER_TIMER=3 +CONFIG_SOC_MCPWM_GPIO_SYNCHROS_PER_GROUP=3 +CONFIG_SOC_MMU_PERIPH_NUM=2 +CONFIG_SOC_MMU_LINEAR_ADDRESS_REGION_NUM=3 +CONFIG_SOC_MPU_MIN_REGION_SIZE=0x20000000 +CONFIG_SOC_MPU_REGIONS_MAX_NUM=8 +CONFIG_SOC_PCNT_GROUPS=1 +CONFIG_SOC_PCNT_UNITS_PER_GROUP=8 +CONFIG_SOC_PCNT_CHANNELS_PER_UNIT=2 +CONFIG_SOC_PCNT_THRES_POINT_PER_UNIT=2 +CONFIG_SOC_RMT_GROUPS=1 +CONFIG_SOC_RMT_TX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_RX_CANDIDATES_PER_GROUP=8 +CONFIG_SOC_RMT_CHANNELS_PER_GROUP=8 +CONFIG_SOC_RMT_MEM_WORDS_PER_CHANNEL=64 +CONFIG_SOC_RMT_SUPPORT_REF_TICK=y +CONFIG_SOC_RMT_SUPPORT_APB=y +CONFIG_SOC_RMT_CHANNEL_CLK_INDEPENDENT=y +CONFIG_SOC_RTCIO_PIN_COUNT=18 +CONFIG_SOC_RTCIO_INPUT_OUTPUT_SUPPORTED=y +CONFIG_SOC_RTCIO_HOLD_SUPPORTED=y +CONFIG_SOC_RTCIO_WAKE_SUPPORTED=y +CONFIG_SOC_SDM_GROUPS=1 +CONFIG_SOC_SDM_CHANNELS_PER_GROUP=8 +CONFIG_SOC_SDM_CLK_SUPPORT_APB=y +CONFIG_SOC_SPI_HD_BOTH_INOUT_SUPPORTED=y +CONFIG_SOC_SPI_AS_CS_SUPPORTED=y +CONFIG_SOC_SPI_PERIPH_NUM=3 +CONFIG_SOC_SPI_DMA_CHAN_NUM=2 +CONFIG_SOC_SPI_MAX_CS_NUM=3 +CONFIG_SOC_SPI_SUPPORT_CLK_APB=y +CONFIG_SOC_SPI_MAXIMUM_BUFFER_SIZE=64 +CONFIG_SOC_SPI_MAX_PRE_DIVIDER=8192 +CONFIG_SOC_MEMSPI_SRC_FREQ_80M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_40M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_26M_SUPPORTED=y +CONFIG_SOC_MEMSPI_SRC_FREQ_20M_SUPPORTED=y +CONFIG_SOC_TIMER_GROUPS=2 +CONFIG_SOC_TIMER_GROUP_TIMERS_PER_GROUP=2 +CONFIG_SOC_TIMER_GROUP_COUNTER_BIT_WIDTH=64 +CONFIG_SOC_TIMER_GROUP_TOTAL_TIMERS=4 +CONFIG_SOC_TIMER_GROUP_SUPPORT_APB=y +CONFIG_SOC_TOUCH_SENSOR_VERSION=1 +CONFIG_SOC_TOUCH_SENSOR_NUM=10 +CONFIG_SOC_TOUCH_SAMPLE_CFG_NUM=1 +CONFIG_SOC_TWAI_CONTROLLER_NUM=1 +CONFIG_SOC_TWAI_BRP_MIN=2 +CONFIG_SOC_TWAI_CLK_SUPPORT_APB=y +CONFIG_SOC_TWAI_SUPPORT_MULTI_ADDRESS_LAYOUT=y +CONFIG_SOC_UART_NUM=3 +CONFIG_SOC_UART_HP_NUM=3 +CONFIG_SOC_UART_SUPPORT_APB_CLK=y +CONFIG_SOC_UART_SUPPORT_REF_TICK=y +CONFIG_SOC_UART_FIFO_LEN=128 +CONFIG_SOC_UART_BITRATE_MAX=5000000 +CONFIG_SOC_SPIRAM_SUPPORTED=y +CONFIG_SOC_SPI_MEM_SUPPORT_CONFIG_GPIO_BY_EFUSE=y +CONFIG_SOC_SHA_SUPPORT_PARALLEL_ENG=y +CONFIG_SOC_SHA_ENDIANNESS_BE=y +CONFIG_SOC_SHA_SUPPORT_SHA1=y +CONFIG_SOC_SHA_SUPPORT_SHA256=y +CONFIG_SOC_SHA_SUPPORT_SHA384=y +CONFIG_SOC_SHA_SUPPORT_SHA512=y +CONFIG_SOC_MPI_MEM_BLOCKS_NUM=4 +CONFIG_SOC_MPI_OPERATIONS_NUM=y +CONFIG_SOC_RSA_MAX_BIT_LEN=4096 +CONFIG_SOC_AES_SUPPORT_AES_128=y +CONFIG_SOC_AES_SUPPORT_AES_192=y +CONFIG_SOC_AES_SUPPORT_AES_256=y +CONFIG_SOC_SECURE_BOOT_V1=y +CONFIG_SOC_EFUSE_SECURE_BOOT_KEY_DIGESTS=y +CONFIG_SOC_FLASH_ENCRYPTED_XTS_AES_BLOCK_MAX=32 +CONFIG_SOC_PHY_DIG_REGS_MEM_SIZE=21 +CONFIG_SOC_PM_SUPPORT_EXT0_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT1_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_EXT_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_TOUCH_SENSOR_WAKEUP=y +CONFIG_SOC_PM_SUPPORT_RTC_PERIPH_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_FAST_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RTC_SLOW_MEM_PD=y +CONFIG_SOC_PM_SUPPORT_RC_FAST_PD=y +CONFIG_SOC_PM_SUPPORT_VDDSDIO_PD=y +CONFIG_SOC_PM_SUPPORT_MODEM_PD=y +CONFIG_SOC_CONFIGURABLE_VDDSDIO_SUPPORTED=y +CONFIG_SOC_CLK_APLL_SUPPORTED=y +CONFIG_SOC_CLK_RC_FAST_D256_SUPPORTED=y +CONFIG_SOC_RTC_SLOW_CLK_SUPPORT_RC_FAST_D256=y +CONFIG_SOC_CLK_RC_FAST_SUPPORT_CALIBRATION=y +CONFIG_SOC_CLK_XTAL32K_SUPPORTED=y +CONFIG_SOC_SDMMC_USE_IOMUX=y +CONFIG_SOC_SDMMC_NUM_SLOTS=2 +CONFIG_SOC_WIFI_WAPI_SUPPORT=y +CONFIG_SOC_WIFI_CSI_SUPPORT=y +CONFIG_SOC_WIFI_MESH_SUPPORT=y +CONFIG_SOC_WIFI_SUPPORT_VARIABLE_BEACON_WINDOW=y +CONFIG_SOC_WIFI_NAN_SUPPORT=y +CONFIG_SOC_BLE_SUPPORTED=y +CONFIG_SOC_BLE_MESH_SUPPORTED=y +CONFIG_SOC_BT_CLASSIC_SUPPORTED=y +CONFIG_SOC_BLUFI_SUPPORTED=y +CONFIG_SOC_BT_H2C_ENC_KEY_CTRL_ENH_VSC_SUPPORTED=y +CONFIG_SOC_ULP_HAS_ADC=y +CONFIG_SOC_PHY_COMBO_MODULE=y +CONFIG_SOC_EMAC_RMII_CLK_OUT_INTERNAL_LOOPBACK=y +CONFIG_IDF_CMAKE=y +CONFIG_IDF_TOOLCHAIN="gcc" +CONFIG_IDF_TARGET_ARCH_XTENSA=y +CONFIG_IDF_TARGET_ARCH="xtensa" +CONFIG_IDF_TARGET="esp32" +CONFIG_IDF_INIT_VERSION="5.3.1" +CONFIG_IDF_TARGET_ESP32=y +CONFIG_IDF_FIRMWARE_CHIP_ID=0x0000 + +# +# Build type +# +CONFIG_APP_BUILD_TYPE_APP_2NDBOOT=y +# CONFIG_APP_BUILD_TYPE_RAM is not set +CONFIG_APP_BUILD_GENERATE_BINARIES=y +CONFIG_APP_BUILD_BOOTLOADER=y +CONFIG_APP_BUILD_USE_FLASH_SECTIONS=y +# CONFIG_APP_REPRODUCIBLE_BUILD is not set +# CONFIG_APP_NO_BLOBS is not set +# CONFIG_APP_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_APP_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# end of Build type + +# +# Bootloader config +# + +# +# Bootloader manager +# +CONFIG_BOOTLOADER_COMPILE_TIME_DATE=y +CONFIG_BOOTLOADER_PROJECT_VER=1 +# end of Bootloader manager + +CONFIG_BOOTLOADER_OFFSET_IN_FLASH=0x1000 +CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_SIZE=y +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_DEBUG is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_BOOTLOADER_COMPILER_OPTIMIZATION_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_NONE is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_ERROR is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_WARN is not set +CONFIG_BOOTLOADER_LOG_LEVEL_INFO=y +# CONFIG_BOOTLOADER_LOG_LEVEL_DEBUG is not set +# CONFIG_BOOTLOADER_LOG_LEVEL_VERBOSE is not set +CONFIG_BOOTLOADER_LOG_LEVEL=3 + +# +# Serial Flash Configurations +# +# CONFIG_BOOTLOADER_FLASH_DC_AWARE is not set +CONFIG_BOOTLOADER_FLASH_XMC_SUPPORT=y +# end of Serial Flash Configurations + +# CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_8V is not set +CONFIG_BOOTLOADER_VDDSDIO_BOOST_1_9V=y +# CONFIG_BOOTLOADER_FACTORY_RESET is not set +# CONFIG_BOOTLOADER_APP_TEST is not set +CONFIG_BOOTLOADER_REGION_PROTECTION_ENABLE=y +CONFIG_BOOTLOADER_WDT_ENABLE=y +# CONFIG_BOOTLOADER_WDT_DISABLE_IN_USER_CODE is not set +CONFIG_BOOTLOADER_WDT_TIME_MS=9000 +# CONFIG_BOOTLOADER_APP_ROLLBACK_ENABLE is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_IN_DEEP_SLEEP is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ON_POWER_ON is not set +# CONFIG_BOOTLOADER_SKIP_VALIDATE_ALWAYS is not set +CONFIG_BOOTLOADER_RESERVE_RTC_SIZE=0 +# CONFIG_BOOTLOADER_CUSTOM_RESERVE_RTC is not set +# end of Bootloader config + +# +# Security features +# +CONFIG_SECURE_BOOT_V1_SUPPORTED=y +# CONFIG_SECURE_SIGNED_APPS_NO_SECURE_BOOT is not set +# CONFIG_SECURE_BOOT is not set +# CONFIG_SECURE_FLASH_ENC_ENABLED is not set +# end of Security features + +# +# Application manager +# +CONFIG_APP_COMPILE_TIME_DATE=y +# CONFIG_APP_EXCLUDE_PROJECT_VER_VAR is not set +# CONFIG_APP_EXCLUDE_PROJECT_NAME_VAR is not set +# CONFIG_APP_PROJECT_VER_FROM_CONFIG is not set +CONFIG_APP_RETRIEVE_LEN_ELF_SHA=9 +# end of Application manager + +CONFIG_ESP_ROM_HAS_CRC_LE=y +CONFIG_ESP_ROM_HAS_CRC_BE=y +CONFIG_ESP_ROM_HAS_MZ_CRC32=y +CONFIG_ESP_ROM_HAS_JPEG_DECODE=y +CONFIG_ESP_ROM_HAS_UART_BUF_SWITCH=y +CONFIG_ESP_ROM_NEEDS_SWSETUP_WORKAROUND=y +CONFIG_ESP_ROM_HAS_NEWLIB=y +CONFIG_ESP_ROM_HAS_NEWLIB_NANO_FORMAT=y +CONFIG_ESP_ROM_HAS_NEWLIB_32BIT_TIME=y +CONFIG_ESP_ROM_HAS_SW_FLOAT=y +CONFIG_ESP_ROM_USB_OTG_NUM=-1 +CONFIG_ESP_ROM_USB_SERIAL_DEVICE_NUM=-1 +CONFIG_ESP_ROM_SUPPORT_DEEP_SLEEP_WAKEUP_STUB=y + +# +# Serial flasher config +# +# CONFIG_ESPTOOLPY_NO_STUB is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QIO is not set +# CONFIG_ESPTOOLPY_FLASHMODE_QOUT is not set +CONFIG_ESPTOOLPY_FLASHMODE_DIO=y +# CONFIG_ESPTOOLPY_FLASHMODE_DOUT is not set +CONFIG_ESPTOOLPY_FLASH_SAMPLE_MODE_STR=y +CONFIG_ESPTOOLPY_FLASHMODE="dio" +# CONFIG_ESPTOOLPY_FLASHFREQ_80M is not set +CONFIG_ESPTOOLPY_FLASHFREQ_40M=y +# CONFIG_ESPTOOLPY_FLASHFREQ_26M is not set +# CONFIG_ESPTOOLPY_FLASHFREQ_20M is not set +CONFIG_ESPTOOLPY_FLASHFREQ="40m" +# CONFIG_ESPTOOLPY_FLASHSIZE_1MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE_2MB=y +# CONFIG_ESPTOOLPY_FLASHSIZE_4MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_8MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_16MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_32MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_64MB is not set +# CONFIG_ESPTOOLPY_FLASHSIZE_128MB is not set +CONFIG_ESPTOOLPY_FLASHSIZE="2MB" +# CONFIG_ESPTOOLPY_HEADER_FLASHSIZE_UPDATE is not set +CONFIG_ESPTOOLPY_BEFORE_RESET=y +# CONFIG_ESPTOOLPY_BEFORE_NORESET is not set +CONFIG_ESPTOOLPY_BEFORE="default_reset" +CONFIG_ESPTOOLPY_AFTER_RESET=y +# CONFIG_ESPTOOLPY_AFTER_NORESET is not set +CONFIG_ESPTOOLPY_AFTER="hard_reset" +CONFIG_ESPTOOLPY_MONITOR_BAUD=115200 +# end of Serial flasher config + +# +# Partition Table +# +CONFIG_PARTITION_TABLE_SINGLE_APP=y +# CONFIG_PARTITION_TABLE_SINGLE_APP_LARGE is not set +# CONFIG_PARTITION_TABLE_TWO_OTA is not set +# CONFIG_PARTITION_TABLE_CUSTOM is not set +CONFIG_PARTITION_TABLE_CUSTOM_FILENAME="partitions.csv" +CONFIG_PARTITION_TABLE_FILENAME="partitions_singleapp.csv" +CONFIG_PARTITION_TABLE_OFFSET=0x8000 +CONFIG_PARTITION_TABLE_MD5=y +# end of Partition Table + +# +# Compiler options +# +CONFIG_COMPILER_OPTIMIZATION_DEBUG=y +# CONFIG_COMPILER_OPTIMIZATION_SIZE is not set +# CONFIG_COMPILER_OPTIMIZATION_PERF is not set +# CONFIG_COMPILER_OPTIMIZATION_NONE is not set +CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_ENABLE=y +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_COMPILER_OPTIMIZATION_ASSERTIONS_DISABLE is not set +CONFIG_COMPILER_FLOAT_LIB_FROM_GCCLIB=y +CONFIG_COMPILER_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_COMPILER_OPTIMIZATION_CHECKS_SILENT is not set +CONFIG_COMPILER_HIDE_PATHS_MACROS=y +# CONFIG_COMPILER_CXX_EXCEPTIONS is not set +# CONFIG_COMPILER_CXX_RTTI is not set +CONFIG_COMPILER_STACK_CHECK_MODE_NONE=y +# CONFIG_COMPILER_STACK_CHECK_MODE_NORM is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_STRONG is not set +# CONFIG_COMPILER_STACK_CHECK_MODE_ALL is not set +# CONFIG_COMPILER_WARN_WRITE_STRINGS is not set +# CONFIG_COMPILER_DISABLE_GCC12_WARNINGS is not set +# CONFIG_COMPILER_DISABLE_GCC13_WARNINGS is not set +# CONFIG_COMPILER_DUMP_RTL_FILES is not set +CONFIG_COMPILER_RT_LIB_GCCLIB=y +CONFIG_COMPILER_RT_LIB_NAME="gcc" +# CONFIG_COMPILER_ORPHAN_SECTIONS_WARNING is not set +CONFIG_COMPILER_ORPHAN_SECTIONS_PLACE=y +# end of Compiler options + +# +# Component config +# + +# +# Application Level Tracing +# +# CONFIG_APPTRACE_DEST_JTAG is not set +CONFIG_APPTRACE_DEST_NONE=y +# CONFIG_APPTRACE_DEST_UART1 is not set +# CONFIG_APPTRACE_DEST_UART2 is not set +CONFIG_APPTRACE_DEST_UART_NONE=y +CONFIG_APPTRACE_UART_TASK_PRIO=1 +CONFIG_APPTRACE_LOCK_ENABLE=y +# end of Application Level Tracing + +# +# Bluetooth +# +# CONFIG_BT_ENABLED is not set +CONFIG_BT_ALARM_MAX_NUM=50 +# end of Bluetooth + +# +# Console Library +# +# CONFIG_CONSOLE_SORTED_HELP is not set +# end of Console Library + +# +# Driver Configurations +# + +# +# TWAI Configuration +# +# CONFIG_TWAI_ISR_IN_IRAM is not set +CONFIG_TWAI_ERRATA_FIX_BUS_OFF_REC=y +CONFIG_TWAI_ERRATA_FIX_TX_INTR_LOST=y +CONFIG_TWAI_ERRATA_FIX_RX_FRAME_INVALID=y +CONFIG_TWAI_ERRATA_FIX_RX_FIFO_CORRUPT=y +CONFIG_TWAI_ERRATA_FIX_LISTEN_ONLY_DOM=y +# end of TWAI Configuration + +# +# Legacy ADC Driver Configuration +# +CONFIG_ADC_DISABLE_DAC=y +# CONFIG_ADC_SUPPRESS_DEPRECATE_WARN is not set + +# +# Legacy ADC Calibration Configuration +# +CONFIG_ADC_CAL_EFUSE_TP_ENABLE=y +CONFIG_ADC_CAL_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CAL_LUT_ENABLE=y +# CONFIG_ADC_CALI_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy ADC Calibration Configuration +# end of Legacy ADC Driver Configuration + +# +# Legacy DAC Driver Configurations +# +# CONFIG_DAC_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy DAC Driver Configurations + +# +# Legacy MCPWM Driver Configurations +# +# CONFIG_MCPWM_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy MCPWM Driver Configurations + +# +# Legacy Timer Group Driver Configurations +# +# CONFIG_GPTIMER_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy Timer Group Driver Configurations + +# +# Legacy RMT Driver Configurations +# +# CONFIG_RMT_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy RMT Driver Configurations + +# +# Legacy I2S Driver Configurations +# +# CONFIG_I2S_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy I2S Driver Configurations + +# +# Legacy PCNT Driver Configurations +# +# CONFIG_PCNT_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy PCNT Driver Configurations + +# +# Legacy SDM Driver Configurations +# +# CONFIG_SDM_SUPPRESS_DEPRECATE_WARN is not set +# end of Legacy SDM Driver Configurations +# end of Driver Configurations + +# +# eFuse Bit Manager +# +# CONFIG_EFUSE_CUSTOM_TABLE is not set +# CONFIG_EFUSE_VIRTUAL is not set +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_NONE is not set +CONFIG_EFUSE_CODE_SCHEME_COMPAT_3_4=y +# CONFIG_EFUSE_CODE_SCHEME_COMPAT_REPEAT is not set +CONFIG_EFUSE_MAX_BLK_LEN=192 +# end of eFuse Bit Manager + +# +# ESP-TLS +# +CONFIG_ESP_TLS_USING_MBEDTLS=y +# CONFIG_ESP_TLS_USE_SECURE_ELEMENT is not set +# CONFIG_ESP_TLS_CLIENT_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER_SESSION_TICKETS is not set +# CONFIG_ESP_TLS_SERVER_CERT_SELECT_HOOK is not set +# CONFIG_ESP_TLS_SERVER_MIN_AUTH_MODE_OPTIONAL is not set +# CONFIG_ESP_TLS_PSK_VERIFICATION is not set +# CONFIG_ESP_TLS_INSECURE is not set +# end of ESP-TLS + +# +# ADC and ADC Calibration +# +# CONFIG_ADC_ONESHOT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_ADC_CONTINUOUS_ISR_IRAM_SAFE is not set + +# +# ADC Calibration Configurations +# +CONFIG_ADC_CALI_EFUSE_TP_ENABLE=y +CONFIG_ADC_CALI_EFUSE_VREF_ENABLE=y +CONFIG_ADC_CALI_LUT_ENABLE=y +# end of ADC Calibration Configurations + +CONFIG_ADC_DISABLE_DAC_OUTPUT=y +# CONFIG_ADC_ENABLE_DEBUG_LOG is not set +# end of ADC and ADC Calibration + +# +# Wireless Coexistence +# +CONFIG_ESP_COEX_ENABLED=y +# end of Wireless Coexistence + +# +# Common ESP-related +# +CONFIG_ESP_ERR_TO_NAME_LOOKUP=y +# end of Common ESP-related + +# +# ESP-Driver:DAC Configurations +# +# CONFIG_DAC_CTRL_FUNC_IN_IRAM is not set +# CONFIG_DAC_ISR_IRAM_SAFE is not set +# CONFIG_DAC_ENABLE_DEBUG_LOG is not set +CONFIG_DAC_DMA_AUTO_16BIT_ALIGN=y +# end of ESP-Driver:DAC Configurations + +# +# ESP-Driver:GPIO Configurations +# +# CONFIG_GPIO_ESP32_SUPPORT_SWITCH_SLP_PULL is not set +# CONFIG_GPIO_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:GPIO Configurations + +# +# ESP-Driver:GPTimer Configurations +# +CONFIG_GPTIMER_ISR_HANDLER_IN_IRAM=y +# CONFIG_GPTIMER_CTRL_FUNC_IN_IRAM is not set +# CONFIG_GPTIMER_ISR_IRAM_SAFE is not set +# CONFIG_GPTIMER_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:GPTimer Configurations + +# +# ESP-Driver:I2C Configurations +# +# CONFIG_I2C_ISR_IRAM_SAFE is not set +# CONFIG_I2C_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:I2C Configurations + +# +# ESP-Driver:I2S Configurations +# +# CONFIG_I2S_ISR_IRAM_SAFE is not set +# CONFIG_I2S_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:I2S Configurations + +# +# ESP-Driver:LEDC Configurations +# +# CONFIG_LEDC_CTRL_FUNC_IN_IRAM is not set +# end of ESP-Driver:LEDC Configurations + +# +# ESP-Driver:MCPWM Configurations +# +# CONFIG_MCPWM_ISR_IRAM_SAFE is not set +# CONFIG_MCPWM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_MCPWM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:MCPWM Configurations + +# +# ESP-Driver:PCNT Configurations +# +# CONFIG_PCNT_CTRL_FUNC_IN_IRAM is not set +# CONFIG_PCNT_ISR_IRAM_SAFE is not set +# CONFIG_PCNT_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:PCNT Configurations + +# +# ESP-Driver:RMT Configurations +# +# CONFIG_RMT_ISR_IRAM_SAFE is not set +# CONFIG_RMT_RECV_FUNC_IN_IRAM is not set +# CONFIG_RMT_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:RMT Configurations + +# +# ESP-Driver:Sigma Delta Modulator Configurations +# +# CONFIG_SDM_CTRL_FUNC_IN_IRAM is not set +# CONFIG_SDM_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Sigma Delta Modulator Configurations + +# +# ESP-Driver:SPI Configurations +# +# CONFIG_SPI_MASTER_IN_IRAM is not set +CONFIG_SPI_MASTER_ISR_IN_IRAM=y +# CONFIG_SPI_SLAVE_IN_IRAM is not set +CONFIG_SPI_SLAVE_ISR_IN_IRAM=y +# end of ESP-Driver:SPI Configurations + +# +# ESP-Driver:Touch Sensor Configurations +# +# CONFIG_TOUCH_CTRL_FUNC_IN_IRAM is not set +# CONFIG_TOUCH_ISR_IRAM_SAFE is not set +# CONFIG_TOUCH_ENABLE_DEBUG_LOG is not set +# end of ESP-Driver:Touch Sensor Configurations + +# +# ESP-Driver:UART Configurations +# +# CONFIG_UART_ISR_IN_IRAM is not set +# end of ESP-Driver:UART Configurations + +# +# Ethernet +# +CONFIG_ETH_ENABLED=y +CONFIG_ETH_USE_ESP32_EMAC=y +CONFIG_ETH_PHY_INTERFACE_RMII=y +CONFIG_ETH_RMII_CLK_INPUT=y +# CONFIG_ETH_RMII_CLK_OUTPUT is not set +CONFIG_ETH_RMII_CLK_IN_GPIO=0 +CONFIG_ETH_DMA_BUFFER_SIZE=512 +CONFIG_ETH_DMA_RX_BUFFER_NUM=10 +CONFIG_ETH_DMA_TX_BUFFER_NUM=10 +# CONFIG_ETH_IRAM_OPTIMIZATION is not set +CONFIG_ETH_USE_SPI_ETHERNET=y +# CONFIG_ETH_SPI_ETHERNET_DM9051 is not set +# CONFIG_ETH_SPI_ETHERNET_W5500 is not set +# CONFIG_ETH_SPI_ETHERNET_KSZ8851SNL is not set +# CONFIG_ETH_USE_OPENETH is not set +# CONFIG_ETH_TRANSMIT_MUTEX is not set +# end of Ethernet + +# +# Event Loop Library +# +# CONFIG_ESP_EVENT_LOOP_PROFILING is not set +CONFIG_ESP_EVENT_POST_FROM_ISR=y +CONFIG_ESP_EVENT_POST_FROM_IRAM_ISR=y +# end of Event Loop Library + +# +# GDB Stub +# +CONFIG_ESP_GDBSTUB_ENABLED=y +# CONFIG_ESP_SYSTEM_GDBSTUB_RUNTIME is not set +CONFIG_ESP_GDBSTUB_SUPPORT_TASKS=y +CONFIG_ESP_GDBSTUB_MAX_TASKS=32 +# end of GDB Stub + +# +# ESP HTTP client +# +CONFIG_ESP_HTTP_CLIENT_ENABLE_HTTPS=y +# CONFIG_ESP_HTTP_CLIENT_ENABLE_BASIC_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_DIGEST_AUTH is not set +# CONFIG_ESP_HTTP_CLIENT_ENABLE_CUSTOM_TRANSPORT is not set +# end of ESP HTTP client + +# +# HTTP Server +# +CONFIG_HTTPD_MAX_REQ_HDR_LEN=512 +CONFIG_HTTPD_MAX_URI_LEN=512 +CONFIG_HTTPD_ERR_RESP_NO_DELAY=y +CONFIG_HTTPD_PURGE_BUF_LEN=32 +# CONFIG_HTTPD_LOG_PURGE_DATA is not set +# CONFIG_HTTPD_WS_SUPPORT is not set +# CONFIG_HTTPD_QUEUE_WORK_BLOCKING is not set +# end of HTTP Server + +# +# ESP HTTPS OTA +# +# CONFIG_ESP_HTTPS_OTA_DECRYPT_CB is not set +# CONFIG_ESP_HTTPS_OTA_ALLOW_HTTP is not set +# end of ESP HTTPS OTA + +# +# ESP HTTPS server +# +# CONFIG_ESP_HTTPS_SERVER_ENABLE is not set +# end of ESP HTTPS server + +# +# Hardware Settings +# + +# +# Chip revision +# +CONFIG_ESP32_REV_MIN_0=y +# CONFIG_ESP32_REV_MIN_1 is not set +# CONFIG_ESP32_REV_MIN_1_1 is not set +# CONFIG_ESP32_REV_MIN_2 is not set +# CONFIG_ESP32_REV_MIN_3 is not set +# CONFIG_ESP32_REV_MIN_3_1 is not set +CONFIG_ESP32_REV_MIN=0 +CONFIG_ESP32_REV_MIN_FULL=0 +CONFIG_ESP_REV_MIN_FULL=0 + +# +# Maximum Supported ESP32 Revision (Rev v3.99) +# +CONFIG_ESP32_REV_MAX_FULL=399 +CONFIG_ESP_REV_MAX_FULL=399 +# end of Chip revision + +# +# MAC Config +# +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_STA=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_WIFI_AP=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_BT=y +CONFIG_ESP_MAC_ADDR_UNIVERSE_ETH=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP_MAC_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_TWO is not set +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES_FOUR=y +CONFIG_ESP32_UNIVERSAL_MAC_ADDRESSES=4 +# CONFIG_ESP_MAC_IGNORE_MAC_CRC_ERROR is not set +# CONFIG_ESP_MAC_USE_CUSTOM_MAC_AS_BASE_MAC is not set +# end of MAC Config + +# +# Sleep Config +# +# CONFIG_ESP_SLEEP_POWER_DOWN_FLASH is not set +CONFIG_ESP_SLEEP_FLASH_LEAKAGE_WORKAROUND=y +# CONFIG_ESP_SLEEP_MSPI_NEED_ALL_IO_PU is not set +CONFIG_ESP_SLEEP_RTC_BUS_ISO_WORKAROUND=y +# CONFIG_ESP_SLEEP_GPIO_RESET_WORKAROUND is not set +CONFIG_ESP_SLEEP_WAIT_FLASH_READY_EXTRA_DELAY=2000 +# CONFIG_ESP_SLEEP_CACHE_SAFE_ASSERTION is not set +# CONFIG_ESP_SLEEP_DEBUG is not set +CONFIG_ESP_SLEEP_GPIO_ENABLE_INTERNAL_RESISTORS=y +# end of Sleep Config + +# +# RTC Clock Config +# +CONFIG_RTC_CLK_SRC_INT_RC=y +# CONFIG_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_RTC_CLK_SRC_INT_8MD256 is not set +CONFIG_RTC_CLK_CAL_CYCLES=1024 +# end of RTC Clock Config + +# +# Peripheral Control +# +CONFIG_PERIPH_CTRL_FUNC_IN_IRAM=y +# end of Peripheral Control + +# +# Main XTAL Config +# +# CONFIG_XTAL_FREQ_26 is not set +CONFIG_XTAL_FREQ_40=y +# CONFIG_XTAL_FREQ_AUTO is not set +CONFIG_XTAL_FREQ=40 +# end of Main XTAL Config + +CONFIG_ESP_SPI_BUS_LOCK_ISR_FUNCS_IN_IRAM=y +# end of Hardware Settings + +# +# LCD and Touch Panel +# + +# +# LCD Touch Drivers are maintained in the IDF Component Registry +# + +# +# LCD Peripheral Configuration +# +CONFIG_LCD_PANEL_IO_FORMAT_BUF_SIZE=32 +# CONFIG_LCD_ENABLE_DEBUG_LOG is not set +# end of LCD Peripheral Configuration +# end of LCD and Touch Panel + +# +# ESP NETIF Adapter +# +CONFIG_ESP_NETIF_IP_LOST_TIMER_INTERVAL=120 +CONFIG_ESP_NETIF_TCPIP_LWIP=y +# CONFIG_ESP_NETIF_LOOPBACK is not set +CONFIG_ESP_NETIF_USES_TCPIP_WITH_BSD_API=y +# CONFIG_ESP_NETIF_RECEIVE_REPORT_ERRORS is not set +# CONFIG_ESP_NETIF_L2_TAP is not set +# CONFIG_ESP_NETIF_BRIDGE_EN is not set +# end of ESP NETIF Adapter + +# +# Partition API Configuration +# +# end of Partition API Configuration + +# +# PHY +# +CONFIG_ESP_PHY_ENABLED=y +CONFIG_ESP_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP_PHY_MAX_TX_POWER=20 +# CONFIG_ESP_PHY_REDUCE_TX_POWER is not set +CONFIG_ESP_PHY_RF_CAL_PARTIAL=y +# CONFIG_ESP_PHY_RF_CAL_NONE is not set +# CONFIG_ESP_PHY_RF_CAL_FULL is not set +CONFIG_ESP_PHY_CALIBRATION_MODE=0 +# CONFIG_ESP_PHY_PLL_TRACK_DEBUG is not set +# end of PHY + +# +# Power Management +# +# CONFIG_PM_ENABLE is not set +# end of Power Management + +# +# ESP PSRAM +# +# CONFIG_SPIRAM is not set +# end of ESP PSRAM + +# +# ESP Ringbuf +# +# CONFIG_RINGBUF_PLACE_FUNCTIONS_INTO_FLASH is not set +# end of ESP Ringbuf + +# +# ESP System Settings +# +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_80 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_160=y +# CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ_240 is not set +CONFIG_ESP_DEFAULT_CPU_FREQ_MHZ=160 + +# +# Memory +# +# CONFIG_ESP32_USE_FIXED_STATIC_RAM_SIZE is not set + +# +# Non-backward compatible options +# +# CONFIG_ESP_SYSTEM_ESP32_SRAM1_REGION_AS_IRAM is not set +# end of Non-backward compatible options +# end of Memory + +# +# Trace memory +# +# CONFIG_ESP32_TRAX is not set +CONFIG_ESP32_TRACEMEM_RESERVE_DRAM=0x0 +# end of Trace memory + +# CONFIG_ESP_SYSTEM_PANIC_PRINT_HALT is not set +CONFIG_ESP_SYSTEM_PANIC_PRINT_REBOOT=y +# CONFIG_ESP_SYSTEM_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP_SYSTEM_PANIC_GDBSTUB is not set +CONFIG_ESP_SYSTEM_PANIC_REBOOT_DELAY_SECONDS=0 + +# +# Memory protection +# +# end of Memory protection + +CONFIG_ESP_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_ESP_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_ESP_MAIN_TASK_STACK_SIZE=3584 +CONFIG_ESP_MAIN_TASK_AFFINITY_CPU0=y +# CONFIG_ESP_MAIN_TASK_AFFINITY_CPU1 is not set +# CONFIG_ESP_MAIN_TASK_AFFINITY_NO_AFFINITY is not set +CONFIG_ESP_MAIN_TASK_AFFINITY=0x0 +CONFIG_ESP_MINIMAL_SHARED_STACK_SIZE=2048 +CONFIG_ESP_CONSOLE_UART_DEFAULT=y +# CONFIG_ESP_CONSOLE_UART_CUSTOM is not set +# CONFIG_ESP_CONSOLE_NONE is not set +CONFIG_ESP_CONSOLE_UART=y +CONFIG_ESP_CONSOLE_UART_NUM=0 +CONFIG_ESP_CONSOLE_ROM_SERIAL_PORT_NUM=0 +CONFIG_ESP_CONSOLE_UART_BAUDRATE=115200 +CONFIG_ESP_INT_WDT=y +CONFIG_ESP_INT_WDT_TIMEOUT_MS=300 +CONFIG_ESP_INT_WDT_CHECK_CPU1=y +CONFIG_ESP_TASK_WDT_EN=y +CONFIG_ESP_TASK_WDT_INIT=y +# CONFIG_ESP_TASK_WDT_PANIC is not set +CONFIG_ESP_TASK_WDT_TIMEOUT_S=5 +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_ESP_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP_PANIC_HANDLER_IRAM is not set +# CONFIG_ESP_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP_DEBUG_OCDAWARE=y +# CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_5 is not set +CONFIG_ESP_SYSTEM_CHECK_INT_LEVEL_4=y + +# +# Brownout Detector +# +CONFIG_ESP_BROWNOUT_DET=y +CONFIG_ESP_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_ESP_BROWNOUT_DET_LVL=0 +# end of Brownout Detector + +# CONFIG_ESP32_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_ESP_SYSTEM_BROWNOUT_INTR=y +# end of ESP System Settings + +# +# IPC (Inter-Processor Call) +# +CONFIG_ESP_IPC_TASK_STACK_SIZE=1024 +CONFIG_ESP_IPC_USES_CALLERS_PRIORITY=y +CONFIG_ESP_IPC_ISR_ENABLE=y +# end of IPC (Inter-Processor Call) + +# +# ESP Timer (High Resolution Timer) +# +# CONFIG_ESP_TIMER_PROFILING is not set +CONFIG_ESP_TIME_FUNCS_USE_RTC_TIMER=y +CONFIG_ESP_TIME_FUNCS_USE_ESP_TIMER=y +CONFIG_ESP_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP_TIMER_INTERRUPT_LEVEL=1 +# CONFIG_ESP_TIMER_SHOW_EXPERIMENTAL is not set +CONFIG_ESP_TIMER_TASK_AFFINITY=0x0 +CONFIG_ESP_TIMER_TASK_AFFINITY_CPU0=y +CONFIG_ESP_TIMER_ISR_AFFINITY_CPU0=y +# CONFIG_ESP_TIMER_SUPPORTS_ISR_DISPATCH_METHOD is not set +CONFIG_ESP_TIMER_IMPL_TG0_LAC=y +# end of ESP Timer (High Resolution Timer) + +# +# Wi-Fi +# +CONFIG_ESP_WIFI_ENABLED=y +CONFIG_ESP_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +CONFIG_ESP_WIFI_STATIC_RX_MGMT_BUFFER=y +# CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUFFER is not set +CONFIG_ESP_WIFI_DYNAMIC_RX_MGMT_BUF=0 +CONFIG_ESP_WIFI_RX_MGMT_BUF_NUM_DEF=5 +# CONFIG_ESP_WIFI_CSI_ENABLED is not set +CONFIG_ESP_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP_WIFI_TX_BA_WIN=6 +CONFIG_ESP_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP_WIFI_RX_BA_WIN=6 +CONFIG_ESP_WIFI_NVS_ENABLED=y +CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP_WIFI_IRAM_OPT=y +# CONFIG_ESP_WIFI_EXTRA_IRAM_OPT is not set +CONFIG_ESP_WIFI_RX_IRAM_OPT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP_WIFI_ENABLE_SAE_PK=y +CONFIG_ESP_WIFI_SOFTAP_SAE_SUPPORT=y +CONFIG_ESP_WIFI_ENABLE_WPA3_OWE_STA=y +# CONFIG_ESP_WIFI_SLP_IRAM_OPT is not set +CONFIG_ESP_WIFI_SLP_DEFAULT_MIN_ACTIVE_TIME=50 +CONFIG_ESP_WIFI_SLP_DEFAULT_MAX_ACTIVE_TIME=10 +CONFIG_ESP_WIFI_SLP_DEFAULT_WAIT_BROADCAST_DATA_TIME=15 +CONFIG_ESP_WIFI_STA_DISCONNECTED_PM_ENABLE=y +CONFIG_ESP_WIFI_GMAC_SUPPORT=y +CONFIG_ESP_WIFI_SOFTAP_SUPPORT=y +# CONFIG_ESP_WIFI_SLP_BEACON_LOST_OPT is not set +CONFIG_ESP_WIFI_ESPNOW_MAX_ENCRYPT_NUM=7 +# CONFIG_ESP_WIFI_NAN_ENABLE is not set +CONFIG_ESP_WIFI_MBEDTLS_CRYPTO=y +CONFIG_ESP_WIFI_MBEDTLS_TLS_CLIENT=y +# CONFIG_ESP_WIFI_WAPI_PSK is not set +# CONFIG_ESP_WIFI_11KV_SUPPORT is not set +# CONFIG_ESP_WIFI_MBO_SUPPORT is not set +# CONFIG_ESP_WIFI_DPP_SUPPORT is not set +# CONFIG_ESP_WIFI_11R_SUPPORT is not set +# CONFIG_ESP_WIFI_WPS_SOFTAP_REGISTRAR is not set + +# +# WPS Configuration Options +# +# CONFIG_ESP_WIFI_WPS_STRICT is not set +# CONFIG_ESP_WIFI_WPS_PASSPHRASE is not set +# end of WPS Configuration Options + +# CONFIG_ESP_WIFI_DEBUG_PRINT is not set +# CONFIG_ESP_WIFI_TESTING_OPTIONS is not set +CONFIG_ESP_WIFI_ENTERPRISE_SUPPORT=y +# CONFIG_ESP_WIFI_ENT_FREE_DYNAMIC_BUFFER is not set +# end of Wi-Fi + +# +# Core dump +# +# CONFIG_ESP_COREDUMP_ENABLE_TO_FLASH is not set +# CONFIG_ESP_COREDUMP_ENABLE_TO_UART is not set +CONFIG_ESP_COREDUMP_ENABLE_TO_NONE=y +# end of Core dump + +# +# FAT Filesystem support +# +CONFIG_FATFS_VOLUME_COUNT=2 +CONFIG_FATFS_LFN_NONE=y +# CONFIG_FATFS_LFN_HEAP is not set +# CONFIG_FATFS_LFN_STACK is not set +# CONFIG_FATFS_SECTOR_512 is not set +CONFIG_FATFS_SECTOR_4096=y +# CONFIG_FATFS_CODEPAGE_DYNAMIC is not set +CONFIG_FATFS_CODEPAGE_437=y +# CONFIG_FATFS_CODEPAGE_720 is not set +# CONFIG_FATFS_CODEPAGE_737 is not set +# CONFIG_FATFS_CODEPAGE_771 is not set +# CONFIG_FATFS_CODEPAGE_775 is not set +# CONFIG_FATFS_CODEPAGE_850 is not set +# CONFIG_FATFS_CODEPAGE_852 is not set +# CONFIG_FATFS_CODEPAGE_855 is not set +# CONFIG_FATFS_CODEPAGE_857 is not set +# CONFIG_FATFS_CODEPAGE_860 is not set +# CONFIG_FATFS_CODEPAGE_861 is not set +# CONFIG_FATFS_CODEPAGE_862 is not set +# CONFIG_FATFS_CODEPAGE_863 is not set +# CONFIG_FATFS_CODEPAGE_864 is not set +# CONFIG_FATFS_CODEPAGE_865 is not set +# CONFIG_FATFS_CODEPAGE_866 is not set +# CONFIG_FATFS_CODEPAGE_869 is not set +# CONFIG_FATFS_CODEPAGE_932 is not set +# CONFIG_FATFS_CODEPAGE_936 is not set +# CONFIG_FATFS_CODEPAGE_949 is not set +# CONFIG_FATFS_CODEPAGE_950 is not set +CONFIG_FATFS_CODEPAGE=437 +CONFIG_FATFS_FS_LOCK=0 +CONFIG_FATFS_TIMEOUT_MS=10000 +CONFIG_FATFS_PER_FILE_CACHE=y +# CONFIG_FATFS_USE_FASTSEEK is not set +CONFIG_FATFS_VFS_FSTAT_BLKSIZE=0 +# CONFIG_FATFS_IMMEDIATE_FSYNC is not set +# CONFIG_FATFS_USE_LABEL is not set +CONFIG_FATFS_LINK_LOCK=y +# end of FAT Filesystem support + +# +# FreeRTOS +# + +# +# Kernel +# +# CONFIG_FREERTOS_SMP is not set +# CONFIG_FREERTOS_UNICORE is not set +CONFIG_FREERTOS_HZ=100 +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_NONE is not set +# CONFIG_FREERTOS_CHECK_STACKOVERFLOW_PTRVAL is not set +CONFIG_FREERTOS_CHECK_STACKOVERFLOW_CANARY=y +CONFIG_FREERTOS_THREAD_LOCAL_STORAGE_POINTERS=1 +CONFIG_FREERTOS_IDLE_TASK_STACKSIZE=1536 +# CONFIG_FREERTOS_USE_IDLE_HOOK is not set +# CONFIG_FREERTOS_USE_TICK_HOOK is not set +CONFIG_FREERTOS_MAX_TASK_NAME_LEN=16 +# CONFIG_FREERTOS_ENABLE_BACKWARD_COMPATIBILITY is not set +CONFIG_FREERTOS_TIMER_SERVICE_TASK_NAME="Tmr Svc" +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU0 is not set +# CONFIG_FREERTOS_TIMER_TASK_AFFINITY_CPU1 is not set +CONFIG_FREERTOS_TIMER_TASK_NO_AFFINITY=y +CONFIG_FREERTOS_TIMER_SERVICE_TASK_CORE_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_TIMER_TASK_PRIORITY=1 +CONFIG_FREERTOS_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_FREERTOS_TIMER_QUEUE_LENGTH=10 +CONFIG_FREERTOS_QUEUE_REGISTRY_SIZE=0 +CONFIG_FREERTOS_TASK_NOTIFICATION_ARRAY_ENTRIES=1 +# CONFIG_FREERTOS_USE_TRACE_FACILITY is not set +# CONFIG_FREERTOS_USE_LIST_DATA_INTEGRITY_CHECK_BYTES is not set +# CONFIG_FREERTOS_GENERATE_RUN_TIME_STATS is not set +# CONFIG_FREERTOS_USE_APPLICATION_TASK_TAG is not set +# end of Kernel + +# +# Port +# +CONFIG_FREERTOS_TASK_FUNCTION_WRAPPER=y +# CONFIG_FREERTOS_WATCHPOINT_END_OF_STACK is not set +CONFIG_FREERTOS_TLSP_DELETION_CALLBACKS=y +# CONFIG_FREERTOS_TASK_PRE_DELETION_HOOK is not set +# CONFIG_FREERTOS_ENABLE_STATIC_TASK_CLEAN_UP is not set +CONFIG_FREERTOS_CHECK_MUTEX_GIVEN_BY_OWNER=y +CONFIG_FREERTOS_ISR_STACKSIZE=1536 +CONFIG_FREERTOS_INTERRUPT_BACKTRACE=y +# CONFIG_FREERTOS_FPU_IN_ISR is not set +CONFIG_FREERTOS_TICK_SUPPORT_CORETIMER=y +CONFIG_FREERTOS_CORETIMER_0=y +# CONFIG_FREERTOS_CORETIMER_1 is not set +CONFIG_FREERTOS_SYSTICK_USES_CCOUNT=y +# CONFIG_FREERTOS_PLACE_FUNCTIONS_INTO_FLASH is not set +# CONFIG_FREERTOS_CHECK_PORT_CRITICAL_COMPLIANCE is not set +# end of Port + +CONFIG_FREERTOS_PORT=y +CONFIG_FREERTOS_NO_AFFINITY=0x7FFFFFFF +CONFIG_FREERTOS_SUPPORT_STATIC_ALLOCATION=y +CONFIG_FREERTOS_DEBUG_OCDAWARE=y +CONFIG_FREERTOS_ENABLE_TASK_SNAPSHOT=y +CONFIG_FREERTOS_PLACE_SNAPSHOT_FUNS_INTO_FLASH=y +CONFIG_FREERTOS_NUMBER_OF_CORES=2 +# end of FreeRTOS + +# +# Hardware Abstraction Layer (HAL) and Low Level (LL) +# +CONFIG_HAL_ASSERTION_EQUALS_SYSTEM=y +# CONFIG_HAL_ASSERTION_DISABLE is not set +# CONFIG_HAL_ASSERTION_SILENT is not set +# CONFIG_HAL_ASSERTION_ENABLE is not set +CONFIG_HAL_DEFAULT_ASSERTION_LEVEL=2 +CONFIG_HAL_SPI_MASTER_FUNC_IN_IRAM=y +CONFIG_HAL_SPI_SLAVE_FUNC_IN_IRAM=y +# end of Hardware Abstraction Layer (HAL) and Low Level (LL) + +# +# Heap memory debugging +# +CONFIG_HEAP_POISONING_DISABLED=y +# CONFIG_HEAP_POISONING_LIGHT is not set +# CONFIG_HEAP_POISONING_COMPREHENSIVE is not set +CONFIG_HEAP_TRACING_OFF=y +# CONFIG_HEAP_TRACING_STANDALONE is not set +# CONFIG_HEAP_TRACING_TOHOST is not set +# CONFIG_HEAP_USE_HOOKS is not set +# CONFIG_HEAP_TASK_TRACKING is not set +# CONFIG_HEAP_ABORT_WHEN_ALLOCATION_FAILS is not set +# CONFIG_HEAP_PLACE_FUNCTION_INTO_FLASH is not set +# end of Heap memory debugging + +# +# Log output +# +# CONFIG_LOG_DEFAULT_LEVEL_NONE is not set +# CONFIG_LOG_DEFAULT_LEVEL_ERROR is not set +# CONFIG_LOG_DEFAULT_LEVEL_WARN is not set +CONFIG_LOG_DEFAULT_LEVEL_INFO=y +# CONFIG_LOG_DEFAULT_LEVEL_DEBUG is not set +# CONFIG_LOG_DEFAULT_LEVEL_VERBOSE is not set +CONFIG_LOG_DEFAULT_LEVEL=3 +CONFIG_LOG_MAXIMUM_EQUALS_DEFAULT=y +# CONFIG_LOG_MAXIMUM_LEVEL_DEBUG is not set +# CONFIG_LOG_MAXIMUM_LEVEL_VERBOSE is not set +CONFIG_LOG_MAXIMUM_LEVEL=3 +# CONFIG_LOG_MASTER_LEVEL is not set +CONFIG_LOG_COLORS=y +CONFIG_LOG_TIMESTAMP_SOURCE_RTOS=y +# CONFIG_LOG_TIMESTAMP_SOURCE_SYSTEM is not set +# end of Log output + +# +# LWIP +# +CONFIG_LWIP_ENABLE=y +CONFIG_LWIP_LOCAL_HOSTNAME="espressif" +# CONFIG_LWIP_NETIF_API is not set +CONFIG_LWIP_TCPIP_TASK_PRIO=18 +# CONFIG_LWIP_TCPIP_CORE_LOCKING is not set +# CONFIG_LWIP_CHECK_THREAD_SAFETY is not set +CONFIG_LWIP_DNS_SUPPORT_MDNS_QUERIES=y +# CONFIG_LWIP_L2_TO_L3_COPY is not set +# CONFIG_LWIP_IRAM_OPTIMIZATION is not set +# CONFIG_LWIP_EXTRA_IRAM_OPTIMIZATION is not set +CONFIG_LWIP_TIMERS_ONDEMAND=y +CONFIG_LWIP_ND6=y +# CONFIG_LWIP_FORCE_ROUTER_FORWARDING is not set +CONFIG_LWIP_MAX_SOCKETS=10 +# CONFIG_LWIP_USE_ONLY_LWIP_SELECT is not set +# CONFIG_LWIP_SO_LINGER is not set +CONFIG_LWIP_SO_REUSE=y +CONFIG_LWIP_SO_REUSE_RXTOALL=y +# CONFIG_LWIP_SO_RCVBUF is not set +# CONFIG_LWIP_NETBUF_RECVINFO is not set +CONFIG_LWIP_IP_DEFAULT_TTL=64 +CONFIG_LWIP_IP4_FRAG=y +CONFIG_LWIP_IP6_FRAG=y +# CONFIG_LWIP_IP4_REASSEMBLY is not set +# CONFIG_LWIP_IP6_REASSEMBLY is not set +CONFIG_LWIP_IP_REASS_MAX_PBUFS=10 +# CONFIG_LWIP_IP_FORWARD is not set +# CONFIG_LWIP_STATS is not set +CONFIG_LWIP_ESP_GRATUITOUS_ARP=y +CONFIG_LWIP_GARP_TMR_INTERVAL=60 +CONFIG_LWIP_ESP_MLDV6_REPORT=y +CONFIG_LWIP_MLDV6_TMR_INTERVAL=40 +CONFIG_LWIP_TCPIP_RECVMBOX_SIZE=32 +CONFIG_LWIP_DHCP_DOES_ARP_CHECK=y +# CONFIG_LWIP_DHCP_DISABLE_CLIENT_ID is not set +CONFIG_LWIP_DHCP_DISABLE_VENDOR_CLASS_ID=y +# CONFIG_LWIP_DHCP_RESTORE_LAST_IP is not set +CONFIG_LWIP_DHCP_OPTIONS_LEN=68 +CONFIG_LWIP_NUM_NETIF_CLIENT_DATA=0 +CONFIG_LWIP_DHCP_COARSE_TIMER_SECS=1 + +# +# DHCP server +# +CONFIG_LWIP_DHCPS=y +CONFIG_LWIP_DHCPS_LEASE_UNIT=60 +CONFIG_LWIP_DHCPS_MAX_STATION_NUM=8 +CONFIG_LWIP_DHCPS_STATIC_ENTRIES=y +# end of DHCP server + +# CONFIG_LWIP_AUTOIP is not set +CONFIG_LWIP_IPV4=y +CONFIG_LWIP_IPV6=y +# CONFIG_LWIP_IPV6_AUTOCONFIG is not set +CONFIG_LWIP_IPV6_NUM_ADDRESSES=3 +# CONFIG_LWIP_IPV6_FORWARD is not set +# CONFIG_LWIP_NETIF_STATUS_CALLBACK is not set +CONFIG_LWIP_NETIF_LOOPBACK=y +CONFIG_LWIP_LOOPBACK_MAX_PBUFS=8 + +# +# TCP +# +CONFIG_LWIP_MAX_ACTIVE_TCP=16 +CONFIG_LWIP_MAX_LISTENING_TCP=16 +CONFIG_LWIP_TCP_HIGH_SPEED_RETRANSMISSION=y +CONFIG_LWIP_TCP_MAXRTX=12 +CONFIG_LWIP_TCP_SYNMAXRTX=12 +CONFIG_LWIP_TCP_MSS=1440 +CONFIG_LWIP_TCP_TMR_INTERVAL=250 +CONFIG_LWIP_TCP_MSL=60000 +CONFIG_LWIP_TCP_FIN_WAIT_TIMEOUT=20000 +CONFIG_LWIP_TCP_SND_BUF_DEFAULT=5760 +CONFIG_LWIP_TCP_WND_DEFAULT=5760 +CONFIG_LWIP_TCP_RECVMBOX_SIZE=6 +CONFIG_LWIP_TCP_ACCEPTMBOX_SIZE=6 +CONFIG_LWIP_TCP_QUEUE_OOSEQ=y +CONFIG_LWIP_TCP_OOSEQ_TIMEOUT=6 +CONFIG_LWIP_TCP_OOSEQ_MAX_PBUFS=4 +# CONFIG_LWIP_TCP_SACK_OUT is not set +CONFIG_LWIP_TCP_OVERSIZE_MSS=y +# CONFIG_LWIP_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_LWIP_TCP_OVERSIZE_DISABLE is not set +CONFIG_LWIP_TCP_RTO_TIME=1500 +# end of TCP + +# +# UDP +# +CONFIG_LWIP_MAX_UDP_PCBS=16 +CONFIG_LWIP_UDP_RECVMBOX_SIZE=6 +# end of UDP + +# +# Checksums +# +# CONFIG_LWIP_CHECKSUM_CHECK_IP is not set +# CONFIG_LWIP_CHECKSUM_CHECK_UDP is not set +CONFIG_LWIP_CHECKSUM_CHECK_ICMP=y +# end of Checksums + +CONFIG_LWIP_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_LWIP_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_LWIP_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_LWIP_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_LWIP_PPP_SUPPORT is not set +CONFIG_LWIP_IPV6_MEMP_NUM_ND6_QUEUE=3 +CONFIG_LWIP_IPV6_ND6_NUM_NEIGHBORS=5 +# CONFIG_LWIP_SLIP_SUPPORT is not set + +# +# ICMP +# +CONFIG_LWIP_ICMP=y +# CONFIG_LWIP_MULTICAST_PING is not set +# CONFIG_LWIP_BROADCAST_PING is not set +# end of ICMP + +# +# LWIP RAW API +# +CONFIG_LWIP_MAX_RAW_PCBS=16 +# end of LWIP RAW API + +# +# SNTP +# +CONFIG_LWIP_SNTP_MAX_SERVERS=1 +# CONFIG_LWIP_DHCP_GET_NTP_SRV is not set +CONFIG_LWIP_SNTP_UPDATE_DELAY=3600000 +CONFIG_LWIP_SNTP_STARTUP_DELAY=y +CONFIG_LWIP_SNTP_MAXIMUM_STARTUP_DELAY=5000 +# end of SNTP + +# +# DNS +# +CONFIG_LWIP_DNS_MAX_SERVERS=3 +# CONFIG_LWIP_FALLBACK_DNS_SERVER_SUPPORT is not set +# end of DNS + +CONFIG_LWIP_BRIDGEIF_MAX_PORTS=7 +CONFIG_LWIP_ESP_LWIP_ASSERT=y + +# +# Hooks +# +# CONFIG_LWIP_HOOK_TCP_ISN_NONE is not set +CONFIG_LWIP_HOOK_TCP_ISN_DEFAULT=y +# CONFIG_LWIP_HOOK_TCP_ISN_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_ROUTE_NONE=y +# CONFIG_LWIP_HOOK_IP6_ROUTE_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_ROUTE_CUSTOM is not set +CONFIG_LWIP_HOOK_ND6_GET_GW_NONE=y +# CONFIG_LWIP_HOOK_ND6_GET_GW_DEFAULT is not set +# CONFIG_LWIP_HOOK_ND6_GET_GW_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_NONE=y +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_SELECT_SRC_ADDR_CUSTOM is not set +CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_NONE=y +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_DEFAULT is not set +# CONFIG_LWIP_HOOK_NETCONN_EXT_RESOLVE_CUSTOM is not set +CONFIG_LWIP_HOOK_IP6_INPUT_NONE=y +# CONFIG_LWIP_HOOK_IP6_INPUT_DEFAULT is not set +# CONFIG_LWIP_HOOK_IP6_INPUT_CUSTOM is not set +# end of Hooks + +# CONFIG_LWIP_DEBUG is not set +# end of LWIP + +# +# mbedTLS +# +CONFIG_MBEDTLS_INTERNAL_MEM_ALLOC=y +# CONFIG_MBEDTLS_DEFAULT_MEM_ALLOC is not set +# CONFIG_MBEDTLS_CUSTOM_MEM_ALLOC is not set +CONFIG_MBEDTLS_ASYMMETRIC_CONTENT_LEN=y +CONFIG_MBEDTLS_SSL_IN_CONTENT_LEN=16384 +CONFIG_MBEDTLS_SSL_OUT_CONTENT_LEN=4096 +# CONFIG_MBEDTLS_DYNAMIC_BUFFER is not set +# CONFIG_MBEDTLS_DEBUG is not set + +# +# mbedTLS v3.x related +# +# CONFIG_MBEDTLS_SSL_PROTO_TLS1_3 is not set +# CONFIG_MBEDTLS_SSL_VARIABLE_BUFFER_LENGTH is not set +# CONFIG_MBEDTLS_X509_TRUSTED_CERT_CALLBACK is not set +# CONFIG_MBEDTLS_SSL_CONTEXT_SERIALIZATION is not set +CONFIG_MBEDTLS_SSL_KEEP_PEER_CERTIFICATE=y +CONFIG_MBEDTLS_PKCS7_C=y +# end of mbedTLS v3.x related + +# +# Certificate Bundle +# +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE=y +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_FULL=y +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_CMN is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEFAULT_NONE is not set +# CONFIG_MBEDTLS_CUSTOM_CERTIFICATE_BUNDLE is not set +# CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_DEPRECATED_LIST is not set +CONFIG_MBEDTLS_CERTIFICATE_BUNDLE_MAX_CERTS=200 +# end of Certificate Bundle + +# CONFIG_MBEDTLS_ECP_RESTARTABLE is not set +CONFIG_MBEDTLS_CMAC_C=y +CONFIG_MBEDTLS_HARDWARE_AES=y +CONFIG_MBEDTLS_GCM_SUPPORT_NON_AES_CIPHER=y +CONFIG_MBEDTLS_HARDWARE_MPI=y +# CONFIG_MBEDTLS_LARGE_KEY_SOFTWARE_MPI is not set +CONFIG_MBEDTLS_HARDWARE_SHA=y +CONFIG_MBEDTLS_ROM_MD5=y +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_SIGN is not set +# CONFIG_MBEDTLS_ATCA_HW_ECDSA_VERIFY is not set +CONFIG_MBEDTLS_HAVE_TIME=y +# CONFIG_MBEDTLS_PLATFORM_TIME_ALT is not set +# CONFIG_MBEDTLS_HAVE_TIME_DATE is not set +CONFIG_MBEDTLS_ECDSA_DETERMINISTIC=y +CONFIG_MBEDTLS_SHA512_C=y +CONFIG_MBEDTLS_TLS_SERVER_AND_CLIENT=y +# CONFIG_MBEDTLS_TLS_SERVER_ONLY is not set +# CONFIG_MBEDTLS_TLS_CLIENT_ONLY is not set +# CONFIG_MBEDTLS_TLS_DISABLED is not set +CONFIG_MBEDTLS_TLS_SERVER=y +CONFIG_MBEDTLS_TLS_CLIENT=y +CONFIG_MBEDTLS_TLS_ENABLED=y + +# +# TLS Key Exchange Methods +# +# CONFIG_MBEDTLS_PSK_MODES is not set +CONFIG_MBEDTLS_KEY_EXCHANGE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ELLIPTIC_CURVE=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_RSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDHE_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_ECDSA=y +CONFIG_MBEDTLS_KEY_EXCHANGE_ECDH_RSA=y +# end of TLS Key Exchange Methods + +CONFIG_MBEDTLS_SSL_RENEGOTIATION=y +CONFIG_MBEDTLS_SSL_PROTO_TLS1_2=y +# CONFIG_MBEDTLS_SSL_PROTO_GMTSSL1_1 is not set +# CONFIG_MBEDTLS_SSL_PROTO_DTLS is not set +CONFIG_MBEDTLS_SSL_ALPN=y +CONFIG_MBEDTLS_CLIENT_SSL_SESSION_TICKETS=y +CONFIG_MBEDTLS_SERVER_SSL_SESSION_TICKETS=y + +# +# Symmetric Ciphers +# +CONFIG_MBEDTLS_AES_C=y +# CONFIG_MBEDTLS_CAMELLIA_C is not set +# CONFIG_MBEDTLS_DES_C is not set +# CONFIG_MBEDTLS_BLOWFISH_C is not set +# CONFIG_MBEDTLS_XTEA_C is not set +CONFIG_MBEDTLS_CCM_C=y +CONFIG_MBEDTLS_GCM_C=y +# CONFIG_MBEDTLS_NIST_KW_C is not set +# end of Symmetric Ciphers + +# CONFIG_MBEDTLS_RIPEMD160_C is not set + +# +# Certificates +# +CONFIG_MBEDTLS_PEM_PARSE_C=y +CONFIG_MBEDTLS_PEM_WRITE_C=y +CONFIG_MBEDTLS_X509_CRL_PARSE_C=y +CONFIG_MBEDTLS_X509_CSR_PARSE_C=y +# end of Certificates + +CONFIG_MBEDTLS_ECP_C=y +# CONFIG_MBEDTLS_DHM_C is not set +CONFIG_MBEDTLS_ECDH_C=y +CONFIG_MBEDTLS_ECDSA_C=y +# CONFIG_MBEDTLS_ECJPAKE_C is not set +CONFIG_MBEDTLS_ECP_DP_SECP192R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP521R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP192K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP224K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_SECP256K1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP256R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP384R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_BP512R1_ENABLED=y +CONFIG_MBEDTLS_ECP_DP_CURVE25519_ENABLED=y +CONFIG_MBEDTLS_ECP_NIST_OPTIM=y +CONFIG_MBEDTLS_ECP_FIXED_POINT_OPTIM=y +# CONFIG_MBEDTLS_POLY1305_C is not set +# CONFIG_MBEDTLS_CHACHA20_C is not set +# CONFIG_MBEDTLS_HKDF_C is not set +# CONFIG_MBEDTLS_THREADING_C is not set +CONFIG_MBEDTLS_ERROR_STRINGS=y +# end of mbedTLS + +# +# ESP-MQTT Configurations +# +CONFIG_MQTT_PROTOCOL_311=y +# CONFIG_MQTT_PROTOCOL_5 is not set +CONFIG_MQTT_TRANSPORT_SSL=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET=y +CONFIG_MQTT_TRANSPORT_WEBSOCKET_SECURE=y +# CONFIG_MQTT_MSG_ID_INCREMENTAL is not set +# CONFIG_MQTT_SKIP_PUBLISH_IF_DISCONNECTED is not set +# CONFIG_MQTT_REPORT_DELETED_MESSAGES is not set +# CONFIG_MQTT_USE_CUSTOM_CONFIG is not set +# CONFIG_MQTT_TASK_CORE_SELECTION_ENABLED is not set +# CONFIG_MQTT_CUSTOM_OUTBOX is not set +# end of ESP-MQTT Configurations + +# +# Newlib +# +CONFIG_NEWLIB_STDOUT_LINE_ENDING_CRLF=y +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_LF is not set +# CONFIG_NEWLIB_STDOUT_LINE_ENDING_CR is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_CRLF is not set +# CONFIG_NEWLIB_STDIN_LINE_ENDING_LF is not set +CONFIG_NEWLIB_STDIN_LINE_ENDING_CR=y +# CONFIG_NEWLIB_NANO_FORMAT is not set +CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC_HRT=y +# CONFIG_NEWLIB_TIME_SYSCALL_USE_RTC is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_HRT is not set +# CONFIG_NEWLIB_TIME_SYSCALL_USE_NONE is not set +# end of Newlib + +# +# NVS +# +# CONFIG_NVS_ASSERT_ERROR_CHECK is not set +# CONFIG_NVS_LEGACY_DUP_KEYS_COMPATIBILITY is not set +# end of NVS + +# +# OpenThread +# +# CONFIG_OPENTHREAD_ENABLED is not set + +# +# Thread Operational Dataset +# +CONFIG_OPENTHREAD_NETWORK_NAME="OpenThread-ESP" +CONFIG_OPENTHREAD_MESH_LOCAL_PREFIX="fd00:db8:a0:0::/64" +CONFIG_OPENTHREAD_NETWORK_CHANNEL=15 +CONFIG_OPENTHREAD_NETWORK_PANID=0x1234 +CONFIG_OPENTHREAD_NETWORK_EXTPANID="dead00beef00cafe" +CONFIG_OPENTHREAD_NETWORK_MASTERKEY="00112233445566778899aabbccddeeff" +CONFIG_OPENTHREAD_NETWORK_PSKC="104810e2315100afd6bc9215a6bfac53" +# end of Thread Operational Dataset + +CONFIG_OPENTHREAD_XTAL_ACCURACY=130 +# CONFIG_OPENTHREAD_SPINEL_ONLY is not set +CONFIG_OPENTHREAD_RX_ON_WHEN_IDLE=y + +# +# Thread Address Query Config +# +# end of Thread Address Query Config +# end of OpenThread + +# +# Protocomm +# +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_0=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_1=y +CONFIG_ESP_PROTOCOMM_SUPPORT_SECURITY_VERSION_2=y +# end of Protocomm + +# +# PThreads +# +CONFIG_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_PTHREAD_STACK_MIN=768 +CONFIG_PTHREAD_DEFAULT_CORE_NO_AFFINITY=y +# CONFIG_PTHREAD_DEFAULT_CORE_0 is not set +# CONFIG_PTHREAD_DEFAULT_CORE_1 is not set +CONFIG_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_PTHREAD_TASK_NAME_DEFAULT="pthread" +# end of PThreads + +# +# MMU Config +# +CONFIG_MMU_PAGE_SIZE_64KB=y +CONFIG_MMU_PAGE_MODE="64KB" +CONFIG_MMU_PAGE_SIZE=0x10000 +# end of MMU Config + +# +# Main Flash configuration +# + +# +# SPI Flash behavior when brownout +# +CONFIG_SPI_FLASH_BROWNOUT_RESET_XMC=y +CONFIG_SPI_FLASH_BROWNOUT_RESET=y +# end of SPI Flash behavior when brownout + +# +# Optional and Experimental Features (READ DOCS FIRST) +# + +# +# Features here require specific hardware (READ DOCS FIRST!) +# +CONFIG_SPI_FLASH_SUSPEND_TSUS_VAL_US=50 +# end of Optional and Experimental Features (READ DOCS FIRST) +# end of Main Flash configuration + +# +# SPI Flash driver +# +# CONFIG_SPI_FLASH_VERIFY_WRITE is not set +# CONFIG_SPI_FLASH_ENABLE_COUNTERS is not set +CONFIG_SPI_FLASH_ROM_DRIVER_PATCH=y +CONFIG_SPI_FLASH_DANGEROUS_WRITE_ABORTS=y +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_FAILS is not set +# CONFIG_SPI_FLASH_DANGEROUS_WRITE_ALLOWED is not set +# CONFIG_SPI_FLASH_SHARE_SPI1_BUS is not set +# CONFIG_SPI_FLASH_BYPASS_BLOCK_ERASE is not set +CONFIG_SPI_FLASH_YIELD_DURING_ERASE=y +CONFIG_SPI_FLASH_ERASE_YIELD_DURATION_MS=20 +CONFIG_SPI_FLASH_ERASE_YIELD_TICKS=1 +CONFIG_SPI_FLASH_WRITE_CHUNK_SIZE=8192 +# CONFIG_SPI_FLASH_SIZE_OVERRIDE is not set +# CONFIG_SPI_FLASH_CHECK_ERASE_TIMEOUT_DISABLED is not set +# CONFIG_SPI_FLASH_OVERRIDE_CHIP_DRIVER_LIST is not set + +# +# Auto-detect flash chips +# +CONFIG_SPI_FLASH_VENDOR_XMC_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_GD_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_ISSI_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_MXIC_SUPPORTED=y +CONFIG_SPI_FLASH_VENDOR_WINBOND_SUPPORTED=y +CONFIG_SPI_FLASH_SUPPORT_ISSI_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_MXIC_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_GD_CHIP=y +CONFIG_SPI_FLASH_SUPPORT_WINBOND_CHIP=y +# CONFIG_SPI_FLASH_SUPPORT_BOYA_CHIP is not set +# CONFIG_SPI_FLASH_SUPPORT_TH_CHIP is not set +# end of Auto-detect flash chips + +CONFIG_SPI_FLASH_ENABLE_ENCRYPTED_READ_WRITE=y +# end of SPI Flash driver + +# +# SPIFFS Configuration +# +CONFIG_SPIFFS_MAX_PARTITIONS=3 + +# +# SPIFFS Cache Configuration +# +CONFIG_SPIFFS_CACHE=y +CONFIG_SPIFFS_CACHE_WR=y +# CONFIG_SPIFFS_CACHE_STATS is not set +# end of SPIFFS Cache Configuration + +CONFIG_SPIFFS_PAGE_CHECK=y +CONFIG_SPIFFS_GC_MAX_RUNS=10 +# CONFIG_SPIFFS_GC_STATS is not set +CONFIG_SPIFFS_PAGE_SIZE=256 +CONFIG_SPIFFS_OBJ_NAME_LEN=32 +# CONFIG_SPIFFS_FOLLOW_SYMLINKS is not set +CONFIG_SPIFFS_USE_MAGIC=y +CONFIG_SPIFFS_USE_MAGIC_LENGTH=y +CONFIG_SPIFFS_META_LENGTH=4 +CONFIG_SPIFFS_USE_MTIME=y + +# +# Debug Configuration +# +# CONFIG_SPIFFS_DBG is not set +# CONFIG_SPIFFS_API_DBG is not set +# CONFIG_SPIFFS_GC_DBG is not set +# CONFIG_SPIFFS_CACHE_DBG is not set +# CONFIG_SPIFFS_CHECK_DBG is not set +# CONFIG_SPIFFS_TEST_VISUALISATION is not set +# end of Debug Configuration +# end of SPIFFS Configuration + +# +# TCP Transport +# + +# +# Websocket +# +CONFIG_WS_TRANSPORT=y +CONFIG_WS_BUFFER_SIZE=1024 +# CONFIG_WS_DYNAMIC_BUFFER is not set +# end of Websocket +# end of TCP Transport + +# +# Ultra Low Power (ULP) Co-processor +# +# CONFIG_ULP_COPROC_ENABLED is not set + +# +# ULP Debugging Options +# +# end of ULP Debugging Options +# end of Ultra Low Power (ULP) Co-processor + +# +# Unity unit testing library +# +CONFIG_UNITY_ENABLE_FLOAT=y +CONFIG_UNITY_ENABLE_DOUBLE=y +# CONFIG_UNITY_ENABLE_64BIT is not set +# CONFIG_UNITY_ENABLE_COLOR is not set +CONFIG_UNITY_ENABLE_IDF_TEST_RUNNER=y +# CONFIG_UNITY_ENABLE_FIXTURE is not set +# CONFIG_UNITY_ENABLE_BACKTRACE_ON_FAIL is not set +# end of Unity unit testing library + +# +# Virtual file system +# +CONFIG_VFS_SUPPORT_IO=y +CONFIG_VFS_SUPPORT_DIR=y +CONFIG_VFS_SUPPORT_SELECT=y +CONFIG_VFS_SUPPRESS_SELECT_DEBUG_OUTPUT=y +# CONFIG_VFS_SELECT_IN_RAM is not set +CONFIG_VFS_SUPPORT_TERMIOS=y +CONFIG_VFS_MAX_COUNT=8 + +# +# Host File System I/O (Semihosting) +# +CONFIG_VFS_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# end of Host File System I/O (Semihosting) +# end of Virtual file system + +# +# Wear Levelling +# +# CONFIG_WL_SECTOR_SIZE_512 is not set +CONFIG_WL_SECTOR_SIZE_4096=y +CONFIG_WL_SECTOR_SIZE=4096 +# end of Wear Levelling + +# +# Wi-Fi Provisioning Manager +# +CONFIG_WIFI_PROV_SCAN_MAX_ENTRIES=16 +CONFIG_WIFI_PROV_AUTOSTOP_TIMEOUT=30 +# CONFIG_WIFI_PROV_BLE_FORCE_ENCRYPTION is not set +CONFIG_WIFI_PROV_STA_ALL_CHANNEL_SCAN=y +# CONFIG_WIFI_PROV_STA_FAST_SCAN is not set +# end of Wi-Fi Provisioning Manager +# end of Component config + +# CONFIG_IDF_EXPERIMENTAL_FEATURES is not set + +# Deprecated options for backward compatibility +# CONFIG_APP_BUILD_TYPE_ELF_RAM is not set +# CONFIG_NO_BLOBS is not set +# CONFIG_ESP32_NO_BLOBS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V2_1_BOOTLOADERS is not set +# CONFIG_ESP32_COMPATIBLE_PRE_V3_1_BOOTLOADERS is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_NONE is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_ERROR is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_WARN is not set +CONFIG_LOG_BOOTLOADER_LEVEL_INFO=y +# CONFIG_LOG_BOOTLOADER_LEVEL_DEBUG is not set +# CONFIG_LOG_BOOTLOADER_LEVEL_VERBOSE is not set +CONFIG_LOG_BOOTLOADER_LEVEL=3 +# CONFIG_APP_ROLLBACK_ENABLE is not set +# CONFIG_FLASH_ENCRYPTION_ENABLED is not set +# CONFIG_FLASHMODE_QIO is not set +# CONFIG_FLASHMODE_QOUT is not set +CONFIG_FLASHMODE_DIO=y +# CONFIG_FLASHMODE_DOUT is not set +CONFIG_MONITOR_BAUD=115200 +CONFIG_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_LEVEL_DEBUG=y +CONFIG_COMPILER_OPTIMIZATION_DEFAULT=y +# CONFIG_OPTIMIZATION_LEVEL_RELEASE is not set +# CONFIG_COMPILER_OPTIMIZATION_LEVEL_RELEASE is not set +CONFIG_OPTIMIZATION_ASSERTIONS_ENABLED=y +# CONFIG_OPTIMIZATION_ASSERTIONS_SILENT is not set +# CONFIG_OPTIMIZATION_ASSERTIONS_DISABLED is not set +CONFIG_OPTIMIZATION_ASSERTION_LEVEL=2 +# CONFIG_CXX_EXCEPTIONS is not set +CONFIG_STACK_CHECK_NONE=y +# CONFIG_STACK_CHECK_NORM is not set +# CONFIG_STACK_CHECK_STRONG is not set +# CONFIG_STACK_CHECK_ALL is not set +# CONFIG_WARN_WRITE_STRINGS is not set +# CONFIG_ESP32_APPTRACE_DEST_TRAX is not set +CONFIG_ESP32_APPTRACE_DEST_NONE=y +CONFIG_ESP32_APPTRACE_LOCK_ENABLE=y +CONFIG_ADC2_DISABLE_DAC=y +# CONFIG_MCPWM_ISR_IN_IRAM is not set +# CONFIG_EVENT_LOOP_PROFILING is not set +CONFIG_POST_EVENTS_FROM_ISR=y +CONFIG_POST_EVENTS_FROM_IRAM_ISR=y +CONFIG_GDBSTUB_SUPPORT_TASKS=y +CONFIG_GDBSTUB_MAX_TASKS=32 +# CONFIG_OTA_ALLOW_HTTP is not set +# CONFIG_TWO_UNIVERSAL_MAC_ADDRESS is not set +CONFIG_FOUR_UNIVERSAL_MAC_ADDRESS=y +CONFIG_NUMBER_OF_UNIVERSAL_MAC_ADDRESS=4 +# CONFIG_ESP_SYSTEM_PD_FLASH is not set +CONFIG_ESP32_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP_SLEEP_DEEP_SLEEP_WAKEUP_DELAY=2000 +CONFIG_ESP32_RTC_CLK_SRC_INT_RC=y +CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_RC=y +# CONFIG_ESP32_RTC_CLK_SRC_EXT_CRYS is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_CRYSTAL is not set +# CONFIG_ESP32_RTC_CLK_SRC_EXT_OSC is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_EXTERNAL_OSC is not set +# CONFIG_ESP32_RTC_CLK_SRC_INT_8MD256 is not set +# CONFIG_ESP32_RTC_CLOCK_SOURCE_INTERNAL_8MD256 is not set +CONFIG_ESP32_RTC_CLK_CAL_CYCLES=1024 +# CONFIG_ESP32_XTAL_FREQ_26 is not set +CONFIG_ESP32_XTAL_FREQ_40=y +# CONFIG_ESP32_XTAL_FREQ_AUTO is not set +CONFIG_ESP32_XTAL_FREQ=40 +CONFIG_ESP32_PHY_CALIBRATION_AND_DATA_STORAGE=y +# CONFIG_ESP32_PHY_INIT_DATA_IN_PARTITION is not set +CONFIG_ESP32_PHY_MAX_WIFI_TX_POWER=20 +CONFIG_ESP32_PHY_MAX_TX_POWER=20 +# CONFIG_REDUCE_PHY_TX_POWER is not set +# CONFIG_ESP32_REDUCE_PHY_TX_POWER is not set +# CONFIG_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_SPIRAM_SUPPORT is not set +# CONFIG_ESP32_DEFAULT_CPU_FREQ_80 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_160=y +# CONFIG_ESP32_DEFAULT_CPU_FREQ_240 is not set +CONFIG_ESP32_DEFAULT_CPU_FREQ_MHZ=160 +CONFIG_TRACEMEM_RESERVE_DRAM=0x0 +# CONFIG_ESP32_PANIC_PRINT_HALT is not set +CONFIG_ESP32_PANIC_PRINT_REBOOT=y +# CONFIG_ESP32_PANIC_SILENT_REBOOT is not set +# CONFIG_ESP32_PANIC_GDBSTUB is not set +CONFIG_SYSTEM_EVENT_QUEUE_SIZE=32 +CONFIG_SYSTEM_EVENT_TASK_STACK_SIZE=2304 +CONFIG_MAIN_TASK_STACK_SIZE=3584 +CONFIG_CONSOLE_UART_DEFAULT=y +# CONFIG_CONSOLE_UART_CUSTOM is not set +# CONFIG_CONSOLE_UART_NONE is not set +# CONFIG_ESP_CONSOLE_UART_NONE is not set +CONFIG_CONSOLE_UART=y +CONFIG_CONSOLE_UART_NUM=0 +CONFIG_CONSOLE_UART_BAUDRATE=115200 +CONFIG_INT_WDT=y +CONFIG_INT_WDT_TIMEOUT_MS=300 +CONFIG_INT_WDT_CHECK_CPU1=y +CONFIG_TASK_WDT=y +CONFIG_ESP_TASK_WDT=y +# CONFIG_TASK_WDT_PANIC is not set +CONFIG_TASK_WDT_TIMEOUT_S=5 +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU0=y +CONFIG_TASK_WDT_CHECK_IDLE_TASK_CPU1=y +# CONFIG_ESP32_DEBUG_STUBS_ENABLE is not set +CONFIG_ESP32_DEBUG_OCDAWARE=y +CONFIG_BROWNOUT_DET=y +CONFIG_ESP32_BROWNOUT_DET=y +CONFIG_BROWNOUT_DET_LVL_SEL_0=y +CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_0=y +# CONFIG_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_1 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_2 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_3 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_4 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_5 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_6 is not set +# CONFIG_BROWNOUT_DET_LVL_SEL_7 is not set +# CONFIG_ESP32_BROWNOUT_DET_LVL_SEL_7 is not set +CONFIG_BROWNOUT_DET_LVL=0 +CONFIG_ESP32_BROWNOUT_DET_LVL=0 +# CONFIG_DISABLE_BASIC_ROM_CONSOLE is not set +CONFIG_IPC_TASK_STACK_SIZE=1024 +CONFIG_TIMER_TASK_STACK_SIZE=3584 +CONFIG_ESP32_WIFI_ENABLED=y +CONFIG_ESP32_WIFI_STATIC_RX_BUFFER_NUM=10 +CONFIG_ESP32_WIFI_DYNAMIC_RX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_STATIC_TX_BUFFER is not set +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER=y +CONFIG_ESP32_WIFI_TX_BUFFER_TYPE=1 +CONFIG_ESP32_WIFI_DYNAMIC_TX_BUFFER_NUM=32 +# CONFIG_ESP32_WIFI_CSI_ENABLED is not set +CONFIG_ESP32_WIFI_AMPDU_TX_ENABLED=y +CONFIG_ESP32_WIFI_TX_BA_WIN=6 +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_AMPDU_RX_ENABLED=y +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_RX_BA_WIN=6 +CONFIG_ESP32_WIFI_NVS_ENABLED=y +CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_0=y +# CONFIG_ESP32_WIFI_TASK_PINNED_TO_CORE_1 is not set +CONFIG_ESP32_WIFI_SOFTAP_BEACON_MAX_LEN=752 +CONFIG_ESP32_WIFI_MGMT_SBUF_NUM=32 +CONFIG_ESP32_WIFI_IRAM_OPT=y +CONFIG_ESP32_WIFI_RX_IRAM_OPT=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_SAE=y +CONFIG_ESP32_WIFI_ENABLE_WPA3_OWE_STA=y +CONFIG_WPA_MBEDTLS_CRYPTO=y +CONFIG_WPA_MBEDTLS_TLS_CLIENT=y +# CONFIG_WPA_WAPI_PSK is not set +# CONFIG_WPA_11KV_SUPPORT is not set +# CONFIG_WPA_MBO_SUPPORT is not set +# CONFIG_WPA_DPP_SUPPORT is not set +# CONFIG_WPA_11R_SUPPORT is not set +# CONFIG_WPA_WPS_SOFTAP_REGISTRAR is not set +# CONFIG_WPA_WPS_STRICT is not set +# CONFIG_WPA_DEBUG_PRINT is not set +# CONFIG_WPA_TESTING_OPTIONS is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_FLASH is not set +# CONFIG_ESP32_ENABLE_COREDUMP_TO_UART is not set +CONFIG_ESP32_ENABLE_COREDUMP_TO_NONE=y +CONFIG_TIMER_TASK_PRIORITY=1 +CONFIG_TIMER_TASK_STACK_DEPTH=2048 +CONFIG_TIMER_QUEUE_LENGTH=10 +# CONFIG_ENABLE_STATIC_TASK_CLEAN_UP_HOOK is not set +# CONFIG_HAL_ASSERTION_SILIENT is not set +# CONFIG_L2_TO_L3_COPY is not set +CONFIG_ESP_GRATUITOUS_ARP=y +CONFIG_GARP_TMR_INTERVAL=60 +CONFIG_TCPIP_RECVMBOX_SIZE=32 +CONFIG_TCP_MAXRTX=12 +CONFIG_TCP_SYNMAXRTX=12 +CONFIG_TCP_MSS=1440 +CONFIG_TCP_MSL=60000 +CONFIG_TCP_SND_BUF_DEFAULT=5760 +CONFIG_TCP_WND_DEFAULT=5760 +CONFIG_TCP_RECVMBOX_SIZE=6 +CONFIG_TCP_QUEUE_OOSEQ=y +CONFIG_TCP_OVERSIZE_MSS=y +# CONFIG_TCP_OVERSIZE_QUARTER_MSS is not set +# CONFIG_TCP_OVERSIZE_DISABLE is not set +CONFIG_UDP_RECVMBOX_SIZE=6 +CONFIG_TCPIP_TASK_STACK_SIZE=3072 +CONFIG_TCPIP_TASK_AFFINITY_NO_AFFINITY=y +# CONFIG_TCPIP_TASK_AFFINITY_CPU0 is not set +# CONFIG_TCPIP_TASK_AFFINITY_CPU1 is not set +CONFIG_TCPIP_TASK_AFFINITY=0x7FFFFFFF +# CONFIG_PPP_SUPPORT is not set +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_HRT=y +CONFIG_ESP32_TIME_SYSCALL_USE_RTC_FRC1=y +# CONFIG_ESP32_TIME_SYSCALL_USE_RTC is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_HRT is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_FRC1 is not set +# CONFIG_ESP32_TIME_SYSCALL_USE_NONE is not set +CONFIG_ESP32_PTHREAD_TASK_PRIO_DEFAULT=5 +CONFIG_ESP32_PTHREAD_TASK_STACK_SIZE_DEFAULT=3072 +CONFIG_ESP32_PTHREAD_STACK_MIN=768 +CONFIG_ESP32_DEFAULT_PTHREAD_CORE_NO_AFFINITY=y +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_0 is not set +# CONFIG_ESP32_DEFAULT_PTHREAD_CORE_1 is not set +CONFIG_ESP32_PTHREAD_TASK_CORE_DEFAULT=-1 +CONFIG_ESP32_PTHREAD_TASK_NAME_DEFAULT="pthread" +CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ABORTS=y +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_FAILS is not set +# CONFIG_SPI_FLASH_WRITING_DANGEROUS_REGIONS_ALLOWED is not set +# CONFIG_ESP32_ULP_COPROC_ENABLED is not set +CONFIG_SUPPRESS_SELECT_DEBUG_OUTPUT=y +CONFIG_SUPPORT_TERMIOS=y +CONFIG_SEMIHOSTFS_MAX_MOUNT_POINTS=1 +# End of deprecated options diff --git a/can-interface/sdkconfig.ci b/can-interface/sdkconfig.ci new file mode 100755 index 0000000..e69de29 diff --git a/common-libaries/mcp2521/CMakeLists.txt b/common-libaries/mcp2521/CMakeLists.txt new file mode 100644 index 0000000..f56cbe2 --- /dev/null +++ b/common-libaries/mcp2521/CMakeLists.txt @@ -0,0 +1,8 @@ +idf_component_register(SRCS + "interface_commands.cpp" + "interface_interrupts.cpp" + "toplevel_commands.cpp" + INCLUDE_DIRS "include" + REQUIRES driver + REQUIRES mcp2521_hardware_interface + ) \ No newline at end of file diff --git a/common-libaries/mcp2521/include/bitfields.hpp b/common-libaries/mcp2521/include/bitfields.hpp new file mode 100644 index 0000000..bd9b674 --- /dev/null +++ b/common-libaries/mcp2521/include/bitfields.hpp @@ -0,0 +1,177 @@ +#pragma once +#include + +/** + * @brief RXnBF PIN CONTROL AND STATUS REGISTER (ADDRESS: 0Ch) + * + */ +struct BFPCTRL { + uint8_t B0BFM : 1; + uint8_t B1BFM : 1; + uint8_t B0BFE : 1; + uint8_t B1BFE : 1; + uint8_t B0BFS : 1; + uint8_t B1BFS : 1; + uint8_t : 2; +}; + +/** + * @brief TXnRTS PIN CONTROL AND STATUS REGISTER + * + */ +struct TXRTSCTRL { + uint8_t B0RTSM : 1; + uint8_t B1RTSM : 1; + uint8_t B2RTSM : 1; + uint8_t B0RTS : 1; + uint8_t B1RTS : 1; + uint8_t B2RTS : 1; + uint8_t : 2; +}; + +struct CANSTAT { + uint8_t ICOD0 : ; + uint8_t : 1; + uint8_t OPMOD0 : 1; + uint8_t OPMOD1 : 1; + uint8_t OPMOD2 : 1; + uint8_t : 1; +}; + +struct CANCTRL { + uint8_t CLKPRE0 : 1; + uint8_t CLKPRE1 : 1; + uint8_t CLKEN : 1; + uint8_t OSM : 1; + uint8_t ABAT : 1; + uint8_t REQOP0 : 1; + uint8_t REQOP1 : 1; + uint8_t REQOP2 : 1; +}; + +struct TEC { + uint8_t TEC; +}; + +struct REC { + uint8_t REC; +}; + +struct CNF3 { + uint8_t PHSEG20 : 1; + uint8_t PHSEG21 : 1; + uint8_t PHSEG22 : 1; + uint8_t : 3; + uint8_t WAKFIL : 1; + uint8_t SOF : 1; +}; + +struct CNF2 { + uint8_t PRSEG0 : 1; + uint8_t PRSEG1 : 1; + uint8_t PRSEG2 : 1; + uint8_t PHSEG10 : 1; + uint8_t PHSEG11 : 1; + uint8_t PHSEG12 : 1; + uint8_t SAM : 1; + uint8_t BTLMODE : 1; +}; + +struct CNF1 { + uint8_t BRP0 : 1; + uint8_t BRP1 : 1; + uint8_t BRP2 : 1; + uint8_t BRP3 : 1; + uint8_t BRP4 : 1; + uint8_t BRP5 : 1; + uint8_t SJW0 : 1; + uint8_t SJW1 : 1; +}; + +struct CANINTE { + uint8_t RX0IE : 1; + uint8_t RX1IE : 1; + uint8_t TX0IE : 1; + uint8_t TX1IE : 1; + uint8_t TX2IE : 1; + uint8_t ERRIE : 1; + uint8_t WAKIE : 1; + uint8_t MERRE : 1; +}; + +struct CANINTF { + uint8_t RX0IF : 1; + uint8_t RX1IF : 1; + uint8_t TX0IF : 1; + uint8_t TX1IF : 1; + uint8_t TX2IF : 1; + uint8_t ERRIF : 1; + uint8_t WAKIF : 1; + uint8_t MERRF : 1; +}; + +struct EFLG { + uint8_t EWARN : 1; + uint8_t RXWAR : 1; + uint8_t TXWAR : 1; + uint8_t RXEP : 1; + uint8_t TXEP : 1; + uint8_t TXBO : 1; + uint8_t RX0OVR : 1; + uint8_t RX1OVR : 1; +}; + +struct TXB0CTRL { + uint8_t TXP0 : 1; + uint8_t TXP1 : 1; + uint8_t : 1; + uint8_t TXREQ : 1; + uint8_t TXERR : 1; + uint8_t MLOA : 1; + uint8_t ABTF : 1; + uint8_t : 1; +}; + +struct TXB1CTRL { + uint8_t TXP0 : 1; + uint8_t TXP1 : 1; + uint8_t : 1; + uint8_t TXREQ : 1; + uint8_t TXERR : 1; + uint8_t MLOA : 1; + uint8_t ABTF : 1; + uint8_t : 1; +}; + +struct TXB2CTRL { + uint8_t TXP0 : 1; + uint8_t TXP1 : 1; + uint8_t : 1; + uint8_t TXREQ : 1; + uint8_t TXERR : 1; + uint8_t MLOA : 1; + uint8_t ABTF : 1; + uint8_t : 1; +}; + +struct RXB0CTRL { + uint8_t FILHIT0 : 1; + uint8_t BUKT1 : 1; + uint8_t BUKT : 1; + uint8_t RXRTR : 1; + uint8_t : 1; + uint8_t RXM0 : 1; + uint8_t RXM1 : 1; + uint8_t : 1; +}; + +struct RXB1CTRL { + uint8_t FILHIT0 : 1; + uint8_t FILHIT1 : 1; + uint8_t FILHIT2 : 1; + uint8_t RXRTR : 1; + uint8_t : 1; + uint8_t RXM0 : 1; + uint8_t RXM1 : 1; + uint8_t : 1; +}; diff --git a/common-libaries/mcp2521/include/mcp2521.hpp b/common-libaries/mcp2521/include/mcp2521.hpp new file mode 100644 index 0000000..af3517d --- /dev/null +++ b/common-libaries/mcp2521/include/mcp2521.hpp @@ -0,0 +1,6 @@ +#pragma once + +#include "mcp2521_toplevel.hpp" +#include "mcp2521_command.hpp" +#include "mcp2521_hardware_esp.hpp" +#include "mcp2521_addresses.hpp" \ No newline at end of file diff --git a/common-libaries/mcp2521/include/mcp2521_addresses.hpp b/common-libaries/mcp2521/include/mcp2521_addresses.hpp new file mode 100644 index 0000000..d87ba99 --- /dev/null +++ b/common-libaries/mcp2521/include/mcp2521_addresses.hpp @@ -0,0 +1,192 @@ +#pragma once +#include + +#define MCP2521_BFPCTRL 0x0C +#define MCP2521_BFPCTRL_B1BFS (1 << 5) +#define MCP2521_BFPCTRL_B0BFS (1 << 4) +#define MCP2521_BFPCTRL_B1BFE (1 << 3) +#define MCP2521_BFPCTRL_B0BFE (1 << 2) +#define MCP2521_BFPCTRL_B1BFM (1 << 1) +#define MCP2521_BFPCTRL_B0BFM (1 << 0) + +#define MCP2521_TXRTSCTRL 0x0D +#define MCP2521_TXRTSCTRL_B2RTS (1 << 5) +#define MCP2521_TXRTSCTRL_B1RTS (1 << 4) +#define MCP2521_TXRTSCTRL_B0RTS (1 << 3) +#define MCP2521_TXRTSCTRL_B2RTSM (1 << 2) +#define MCP2521_TXRTSCTRL_B1RTSM (1 << 1) +#define MCP2521_TXRTSCTRL_B0RTSM (1 << 0) + +#define MCP2521_CANSTAT 0x0E +#define MCP2521_CANSTAT_OPMOD2 (1 << 7) +#define MCP2521_CANSTAT_OPMOD1 (1 << 6) +#define MCP2521_CANSTAT_OPMOD0 (1 << 5) +#define MCP2521_CANSTAT_ICOD2 (1 << 2) +#define MCP2521_CANSTAT_ICOD1 (1 << 1) +#define MCP2521_CANSTAT_ICOD0 (1 << 0) + +struct CANSTAT_Register { + uint8_t ICOD : 3; + uint8_t : 1; // Unused bit + uint8_t OPMOD : 3; + uint8_t : 1; // Unused bit +}; + +#define MCP2521_CANCTRL 0x0F +#define MCP2521_CANCTRL_REQOP2 (1 << 7) +#define MCP2521_CANCTRL_REQOP1 (1 << 6) +#define MCP2521_CANCTRL_REQOP0 (1 << 5) +#define MCP2521_CANCTRL_ABAT (1 << 4) +#define MCP2521_CANCTRL_OSM (1 << 3) +#define MCP2521_CANCTRL_CLKEN (1 << 2) +#define MCP2521_CANCTRL_CLKPRE1 (1 << 1) +#define MCP2521_CANCTRL_CLKPRE0 (1 << 0) + +#define MCP2521_TEC 0x1C + +#define MCP2521_REC 0x1D + +#define MCP2521_CNF3 0x28 +#define MCP2521_CNF3_SOF (1 << 7) +#define MCP2521_CNF3_WAKFIL (1 << 6) +#define MCP2521_CNF3_PHSEG22 (1 << 2) +#define MCP2521_CNF3_PHSEG21 (1 << 1) +#define MCP2521_CNF3_PHSEG20 (1 << 0) + +#define MCP2521_CNF2 0x29 +#define MCP2521_CNF2_BTLMODE (1 << 7) +#define MCP2521_CNF2_SAM (1 << 6) +#define MCP2521_CNF2_PHSEG12 (1 << 5) +#define MCP2521_CNF2_PHSEG11 (1 << 4) +#define MCP2521_CNF2_PHSEG10 (1 << 3) +#define MCP2521_CNF2_PRSEG2 (1 << 2) +#define MCP2521_CNF2_PRSEG1 (1 << 1) +#define MCP2521_CNF2_PRSEG0 (1 << 0) + +#define MCP2521_CNF1 0x2A +#define MCP2521_CNF1_SJW1 (1 << 7) +#define MCP2521_CNF1_SJW0 (1 << 6) +#define MCP2521_CNF1_BRP5 (1 << 5) +#define MCP2521_CNF1_BRP4 (1 << 4) +#define MCP2521_CNF1_BRP3 (1 << 3) +#define MCP2521_CNF1_BRP2 (1 << 2) +#define MCP2521_CNF1_BRP1 (1 << 1) +#define MCP2521_CNF1_BRP0 (1 << 0) + +#define MCP2521_CANINTE 0x2B +#define MCP2521_CANINTE_MERRE (1 << 7) +#define MCP2521_CANINTE_WAKIE (1 << 6) +#define MCP2521_CANINTE_ERRIE (1 << 5) +#define MCP2521_CANINTE_TX2IE (1 << 4) +#define MCP2521_CANINTE_TX1IE (1 << 3) +#define MCP2521_CANINTE_TX0IE (1 << 2) +#define MCP2521_CANINTE_RX1IE (1 << 1) +#define MCP2521_CANINTE_RX0IE (1 << 0) + +#define MCP2521_CANINTF 0x2C +#define MCP2521_CANINTF_MERRF (1 << 7) +#define MCP2521_CANINTF_WAKIF (1 << 6) +#define MCP2521_CANINTF_ERRIF (1 << 5) +#define MCP2521_CANINTF_TX2IF (1 << 4) +#define MCP2521_CANINTF_TX1IF (1 << 3) +#define MCP2521_CANINTF_TX0IF (1 << 2) +#define MCP2521_CANINTF_RX1IF (1 << 1) +#define MCP2521_CANINTF_RX0IF (1 << 0) + +#define MCP2521_EFLG 0x2D +#define MCP2521_EFLG_RX1OVR (1 << 7) +#define MCP2521_EFLG_RX0OVR (1 << 6) +#define MCP2521_EFLG_TXBO (1 << 5) +#define MCP2521_EFLG_TXEP (1 << 4) +#define MCP2521_EFLG_RXEP (1 << 3) +#define MCP2521_EFLG_TXWAR (1 << 2) +#define MCP2521_EFLG_RXWAR (1 << 1) +#define MCP2521_EFLG_EWARN (1 << 0) + +#define MCP2521_TXB0CTRL 0x30 +#define MCP2521_TXB0CTRL_ABTF (1 << 6) +#define MCP2521_TXB0CTRL_MLOA (1 << 5) +#define MCP2521_TXB0CTRL_TXERR (1 << 4) +#define MCP2521_TXB0CTRL_TXREQ (1 << 3) +#define MCP2521_TXB0CTRL_TXP1 (1 << 1) +#define MCP2521_TXB0CTRL_TXP0 (1 << 0) + +#define MCP2521_TXB0DLC 0x35 +#define MCP2521_TXB1DLC 0x45 +#define MCP2521_TXB2DLC 0x55 + +#define MCP2521_TXB1CTRL 0x40 +#define MCP2521_TXB1CTRL_ABTF (1 << 6) +#define MCP2521_TXB1CTRL_MLOA (1 << 5) +#define MCP2521_TXB1CTRL_TXERR (1 << 4) +#define MCP2521_TXB1CTRL_TXREQ (1 << 3) +#define MCP2521_TXB1CTRL_TXP1 (1 << 1) +#define MCP2521_TXB1CTRL_TXP0 (1 << 0) + +#define MCP2521_TXB2CTRL 0x50 +#define MCP2521_TXB2CTRL_ABTF (1 << 6) +#define MCP2521_TXB2CTRL_MLOA (1 << 5) +#define MCP2521_TXB2CTRL_TXERR (1 << 4) +#define MCP2521_TXB2CTRL_TXREQ (1 << 3) +#define MCP2521_TXB2CTRL_TXP1 (1 << 1) +#define MCP2521_TXB2CTRL_TXP0 (1 << 0) + +struct TXBnCTRL_Register { + uint8_t TXP : 2; + uint8_t : 1; // Unused bit + uint8_t TXREQ : 1; + uint8_t TXERR : 1; + uint8_t MLOA : 1; + uint8_t ABTF : 1; + uint8_t : 1; // Unused bit +}; + + +#define MCP2521_RXB0CTRL 0x60 +#define MCP2521_RXB0CTRL_RXM1 (1 << 6) +#define MCP2521_RXB0CTRL_RXM0 (1 << 5) +#define MCP2521_RXB0CTRL_RXRTR (1 << 3) +#define MCP2521_RXB0CTRL_BUKT (1 << 2) +#define MCP2521_RXB0CTRL_BUKT1 (1 << 1) +#define MCP2521_RXB0CTRL_FILHIT0 (1 << 0) + +#define MCP2521_RXB1CTRL 0x70 +#define MCP2521_RXB1CTRL_RXM1 (1 << 6) +#define MCP2521_RXB1CTRL_RXM0 (1 << 5) +#define MCP2521_RXB1CTRL_RXRTR (1 << 3) +#define MCP2521_RXB1CTRL_FILHIT2 (1 << 2) +#define MCP2521_RXB1CTRL_FILHIT1 (1 << 1) +#define MCP2521_RXB1CTRL_FILHIT0 (1 << 0) + +#define MCP2521_OP_RESET 0b11000000 +#define MCP2521_OP_READ 0b00000011 +#define MCP2521_OP_READ_RX_BUFFER 0b10010000 +#define MCP2521_OP_WRITE 0b00000010 +#define MCP2521_OP_LOAD_TX_BUFFER 0b01000000 +#define MCP2521_OP_RTS 0b10000000 +#define MCP2521_OP_READ_STATUS 0b10100000 +#define MCP2521_OP_RX_STATUS 0b10110000 +#define MCP2521_OP_BIT_MODIFY 0b00000101 + +#define MCP2521_TXB0SIDH 0x31 +#define MCP2521_TXB1SIDH 0x41 +#define MCP2521_TXB2SIDH 0x51 + +#define MCP2521_TXB0SIDL 0x32 +#define MCP2521_TXB1SIDL 0x42 +#define MCP2521_TXB2SIDL 0x52 + +#define MCP2521_RXB0SIDH 0x61 +#define MCP2521_RXB1SIDH 0x71 + +#define MCP2521_RXB0SIDL 0x62 +#define MCP2521_RXB1SIDL 0x72 + +#define MCP2521_RXB0EID8 0x63 +#define MCP2521_RXB1EID8 0x73 + +#define MCP2521_RXB0EID0 0x64 +#define MCP2521_RXB1EID0 0x74 + +#define MCP2521_RXB0DLC 0x65 +#define MCP2521_RXB1DLC 0x75 \ No newline at end of file diff --git a/common-libaries/mcp2521/include/mcp2521_command.hpp b/common-libaries/mcp2521/include/mcp2521_command.hpp new file mode 100644 index 0000000..13877d0 --- /dev/null +++ b/common-libaries/mcp2521/include/mcp2521_command.hpp @@ -0,0 +1,102 @@ +#pragma once +#include "mcp2521_addresses.hpp" +#include "mcp2521_hardware_handle.hpp" + +#include + +enum MCP2521_RX_BUFFER { + RXB0 = 0, + RXB1 = 1 +}; + +enum MCP2521_TX_BUFFER { + TXB0 = 0, + TXB1 = 1, + TXB2 = 2 +}; + +enum MCP2521_BUFFER_TYPE { + ID = 0, + DATA = 1 +}; + +enum MCP2521_OPERATION_MODE { + NORMAL = 0b000, + SLEEP = 0b001, + LOOPBACK = 0b010, + LISTEN_ONLY = 0b011, + CONFIG = 0b100 +}; + +struct rx_info { + bool extended; + + uint16_t id; + uint32_t extended_id; + + bool rtr; + bool extended_rtr; + + uint8_t length; +}; + +class MCP2521_Command_Interface { +private: + MCP2521_Hardware_Handle * hardware_handle; + + intHandlerFunction_t rx0_handler; + intHandlerFunction_t rx1_handler; + intHandlerFunction_t tx0_handler; + intHandlerFunction_t tx1_handler; + intHandlerFunction_t tx2_handler; + intHandlerFunction_t error_handler; + intHandlerFunction_t wakeup_handler; + intHandlerFunction_t message_error_handler; + + void * rx0_handler_arg; + void * rx1_handler_arg; + void * tx0_handler_arg; + void * tx1_handler_arg; + void * tx2_handler_arg; + void * error_handler_arg; + void * wakeup_handler_arg; + void * message_error_handler_arg; +public: + + MCP2521_Command_Interface( + MCP2521_Hardware_Handle * hardware_handle + ); + + void handleInterrupt(); + + void reset(); + + void read_reg(uint8_t address, uint8_t *data, size_t length); + uint8_t read_reg(uint8_t address); + + void read_rx_buf(MCP2521_RX_BUFFER buffer, MCP2521_BUFFER_TYPE type, uint8_t *data, size_t length); + + void write_reg(uint8_t address, uint8_t *data, size_t length); + void write_reg(uint8_t address, uint8_t data); + + void write_tx_buf(MCP2521_TX_BUFFER buffer, MCP2521_BUFFER_TYPE type, uint8_t *data, size_t length); + + void request_to_send(bool txb2, bool txb1, bool txb0); + void request_to_send(MCP2521_TX_BUFFER buffer); + + uint8_t read_status(); + uint8_t read_rx_status(); + + void bit_modify(uint8_t address, uint8_t mask, uint8_t data); + + // Registering Handlers for Interrupts + void register_rx0_handler(intHandlerFunction_t handler, void * arg); + void register_rx1_handler(intHandlerFunction_t handler, void * arg); + void register_tx0_handler(intHandlerFunction_t handler, void * arg); + void register_tx1_handler(intHandlerFunction_t handler, void * arg); + void register_tx2_handler(intHandlerFunction_t handler, void * arg); + void register_error_handler(intHandlerFunction_t handler, void * arg); + void register_wakeup_handler(intHandlerFunction_t handler, void * arg); + void register_message_error_handler(intHandlerFunction_t handler, void * arg); +}; + diff --git a/common-libaries/mcp2521/include/mcp2521_toplevel.hpp b/common-libaries/mcp2521/include/mcp2521_toplevel.hpp new file mode 100644 index 0000000..a93fddf --- /dev/null +++ b/common-libaries/mcp2521/include/mcp2521_toplevel.hpp @@ -0,0 +1,38 @@ +#pragma once +#include + +#include "mcp2521.hpp" +#include "mcp2521_command.hpp" +#include "mcp2521_addresses.hpp" + +class MCP2521 : public MCP2521_Command_Interface { + private: + public: + void set_tx_id(MCP2521_TX_BUFFER buffer, uint16_t id, bool extended); + + /** + * @brief Loads the Data Length Code register for the specified buffer + * + * @param buffer What Buffer to load the DLC register for + * @param length How many bytes are in the message (0-8) + * @param rtr: Remote Transmission Request + */ + void set_DLC_reg(MCP2521_TX_BUFFER buffer, uint8_t length, bool rtr); + + /** + * @brief Loads the data and id into the specified buffer + * + * @param buffer + * @param id + * @param data + * @param length + */ + void prepare_tx(MCP2521_TX_BUFFER buffer, uint32_t id, uint8_t *data, size_t length, bool rtr, bool extended); + + void set_mode_of_operation(MCP2521_OPERATION_MODE mode, bool singleshot); + void set_singleshot_mode(bool enable); + + void enable_interrupts(bool MessageError, bool ErrorInterrupt, bool WakeUp, bool TXB0, bool TXB1, bool TXB2, bool RXB0, bool RXB1); + rx_info get_rx_id(MCP2521_RX_BUFFER buffer); + +}; \ No newline at end of file diff --git a/common-libaries/mcp2521/interface_commands.cpp b/common-libaries/mcp2521/interface_commands.cpp new file mode 100644 index 0000000..dfc25cc --- /dev/null +++ b/common-libaries/mcp2521/interface_commands.cpp @@ -0,0 +1,100 @@ +#include + +#include "mcp2521.hpp" +#include "mcp2521_addresses.hpp" + +void runIntHandler(void *arg) { + MCP2521_Command_Interface *command_interface = (MCP2521_Command_Interface *)arg; + command_interface->handleInterrupt(); +} + +MCP2521_Command_Interface::MCP2521_Command_Interface( + MCP2521_Hardware_Handle * hardware_handle +) { + this->hardware_handle = hardware_handle; + this->hardware_handle->registerIntHandler(runIntHandler, (void *)this); + + rx0_handler = NULL; + rx1_handler = NULL; + tx0_handler = NULL; + tx1_handler = NULL; + tx2_handler = NULL; + error_handler = NULL; + wakeup_handler = NULL; + message_error_handler = NULL; + + rx0_handler_arg = NULL; + rx1_handler_arg = NULL; + tx0_handler_arg = NULL; + tx1_handler_arg = NULL; + tx2_handler_arg = NULL; + error_handler_arg = NULL; + wakeup_handler_arg = NULL; + message_error_handler_arg = NULL; +} + +void MCP2521_Command_Interface::reset() { + hardware_handle->execute(MCP2521_OP_RESET); +} + +void MCP2521_Command_Interface::read_reg(uint8_t address, uint8_t *data, size_t length) { + hardware_handle->read(MCP2521_OP_READ, data, length, address); +} + +uint8_t MCP2521_Command_Interface::read_reg(uint8_t address) { + return hardware_handle->read(MCP2521_OP_READ, address); +} + +void MCP2521_Command_Interface::read_rx_buf(MCP2521_RX_BUFFER buffer, MCP2521_BUFFER_TYPE type, uint8_t *data, size_t length) { + uint8_t address = (buffer << 1) | (type << 2); + hardware_handle->read(MCP2521_OP_READ_RX_BUFFER | address, data, length); +} + +void MCP2521_Command_Interface::write_reg(uint8_t address, uint8_t *data, size_t length) { + hardware_handle->write(MCP2521_OP_WRITE, data, length, address); +} + +void MCP2521_Command_Interface::write_reg(uint8_t address, uint8_t data) { + hardware_handle->write(MCP2521_OP_WRITE, data, address); +} + +void MCP2521_Command_Interface::write_tx_buf(MCP2521_TX_BUFFER buffer, MCP2521_BUFFER_TYPE type, uint8_t *data, size_t length) { + uint8_t address = (buffer << 1) | (type); + hardware_handle->write(MCP2521_OP_LOAD_TX_BUFFER | address, data, length); +} + +void MCP2521_Command_Interface::request_to_send(bool txb2, bool txb1, bool txb0) { + uint8_t data = (txb2 << 2) | (txb1 << 1) | txb0; + hardware_handle->execute(MCP2521_OP_RTS | data); +} + +void MCP2521_Command_Interface::request_to_send(MCP2521_TX_BUFFER buffer) { + uint8_t mask = 0; + + switch (buffer) { + case MCP2521_TX_BUFFER::TXB0: + mask = 0b001; + break; + case MCP2521_TX_BUFFER::TXB1: + mask = 0b010; + break; + case MCP2521_TX_BUFFER::TXB2: + mask = 0b100; + break; + } + + hardware_handle->execute(MCP2521_OP_RTS | mask); +} + +uint8_t MCP2521_Command_Interface::read_status() { + return hardware_handle->read(MCP2521_OP_READ_STATUS); +} + +uint8_t MCP2521_Command_Interface::read_rx_status() { + return hardware_handle->read(MCP2521_OP_RX_STATUS); +} + +void MCP2521_Command_Interface::bit_modify(uint8_t address, uint8_t mask, uint8_t data) { + uint8_t data_array[3] = {address, mask, data}; + hardware_handle->write(MCP2521_OP_BIT_MODIFY, data_array, 3); +} \ No newline at end of file diff --git a/common-libaries/mcp2521/interface_interrupts.cpp b/common-libaries/mcp2521/interface_interrupts.cpp new file mode 100644 index 0000000..3cd9eb7 --- /dev/null +++ b/common-libaries/mcp2521/interface_interrupts.cpp @@ -0,0 +1,113 @@ +#include "mcp2521.hpp" +#include "mcp2521_addresses.hpp" + +void MCP2521_Command_Interface::register_rx0_handler(intHandlerFunction_t handler, void* args) { + rx0_handler = handler; + rx0_handler_arg = args; +} + +void MCP2521_Command_Interface::register_rx1_handler(intHandlerFunction_t handler, void* args) { + rx1_handler = handler; + rx1_handler_arg = args; +} + +void MCP2521_Command_Interface::register_tx0_handler(intHandlerFunction_t handler, void* args) { + tx0_handler = handler; + tx0_handler_arg = args; +} + +void MCP2521_Command_Interface::register_tx1_handler(intHandlerFunction_t handler, void* args) { + tx1_handler = handler; + tx1_handler_arg = args; +} + +void MCP2521_Command_Interface::register_tx2_handler(intHandlerFunction_t handler, void* args) { + tx2_handler = handler; + tx2_handler_arg = args; +} + +void MCP2521_Command_Interface::register_error_handler(intHandlerFunction_t handler, void* args) { + error_handler = handler; + error_handler_arg = args; +} + +void MCP2521_Command_Interface::register_wakeup_handler(intHandlerFunction_t handler, void* args) { + wakeup_handler = handler; + wakeup_handler_arg = args; +} + +void MCP2521_Command_Interface::register_message_error_handler(intHandlerFunction_t handler, void* args) { + message_error_handler = handler; + message_error_handler_arg = args; +} + +void MCP2521_Command_Interface::handleInterrupt() { + uint8_t flags = read_reg(MCP2521_CANINTF); + uint8_t clearBits = 0; + + if (flags & MCP2521_CANINTF_RX0IF) { + if (rx0_handler) { + rx0_handler(rx0_handler_arg); + } + flags &= ~MCP2521_CANINTF_RX0IF; + clearBits |= MCP2521_CANINTF_RX0IF; + } + + if (flags & MCP2521_CANINTF_RX1IF) { + if (rx1_handler) { + rx1_handler(rx1_handler_arg); + } + flags &= ~MCP2521_CANINTF_RX1IF; + clearBits |= MCP2521_CANINTF_RX1IF; + } + + if (flags & MCP2521_CANINTF_TX0IF) { + if (tx0_handler) { + tx0_handler(tx0_handler_arg); + } + flags &= ~MCP2521_CANINTF_TX0IF; + clearBits |= MCP2521_CANINTF_TX0IF; + } + + if (flags & MCP2521_CANINTF_TX1IF) { + if (tx1_handler) { + tx1_handler(tx1_handler_arg); + } + flags &= ~MCP2521_CANINTF_TX1IF; + clearBits |= MCP2521_CANINTF_TX1IF; + } + + if (flags & MCP2521_CANINTF_TX2IF) { + if (tx2_handler) { + tx2_handler(tx2_handler_arg); + } + flags &= ~MCP2521_CANINTF_TX2IF; + clearBits |= MCP2521_CANINTF_TX2IF; + } + + if (flags & MCP2521_CANINTF_ERRIF) { + if (error_handler) { + error_handler(error_handler_arg); + } + flags &= ~MCP2521_CANINTF_ERRIF; + clearBits |= MCP2521_CANINTF_ERRIF; + } + + if (flags & MCP2521_CANINTF_WAKIF) { + if (wakeup_handler) { + wakeup_handler(wakeup_handler_arg); + } + flags &= ~MCP2521_CANINTF_WAKIF; + clearBits |= MCP2521_CANINTF_WAKIF; + } + + if (flags & MCP2521_CANINTF_MERRF) { + if (message_error_handler) { + message_error_handler(message_error_handler_arg); + } + flags &= ~MCP2521_CANINTF_MERRF; + clearBits |= MCP2521_CANINTF_MERRF; + } + + bit_modify(MCP2521_CANINTF, clearBits, 0); +} \ No newline at end of file diff --git a/common-libaries/mcp2521/toplevel_commands.cpp b/common-libaries/mcp2521/toplevel_commands.cpp new file mode 100644 index 0000000..6211996 --- /dev/null +++ b/common-libaries/mcp2521/toplevel_commands.cpp @@ -0,0 +1,119 @@ +#include + +#include "mcp2521.hpp" +#include "mcp2521_addresses.hpp" + +void MCP2521::set_tx_id(MCP2521_TX_BUFFER buffer, uint16_t id, bool extended) { + uint8_t addr_offset = 0; + switch (buffer) + { + case MCP2521_TX_BUFFER::TXB0: + addr_offset = 0x00; + break; + case MCP2521_TX_BUFFER::TXB1: + addr_offset = 0x10; + break; + case MCP2521_TX_BUFFER::TXB2: + addr_offset = 0x20; + break; + } + + uint8_t upper_id = (id >> 3) & 0xFF; + uint8_t lower_id = ((id & 0b111) << 5); + + if(extended) { + lower_id |= 0b1000; + lower_id |= (id >> 8) & 0b11; + } + + write_reg(MCP2521_TXB0SIDH | addr_offset, upper_id); + write_reg(MCP2521_TXB0SIDL | addr_offset, lower_id); +} + +void MCP2521::set_DLC_reg(MCP2521_TX_BUFFER buffer, uint8_t length, bool rtr) { + uint8_t data = length; + + if (rtr) + data |= 0b01000000; + + uint8_t reg_address = 0; + + switch (buffer) { + case MCP2521_TX_BUFFER::TXB0: + reg_address = MCP2521_TXB0DLC; + break; + case MCP2521_TX_BUFFER::TXB1: + reg_address = MCP2521_TXB1DLC; + break; + case MCP2521_TX_BUFFER::TXB2: + reg_address = MCP2521_TXB2DLC; + break; + } + + write_reg(reg_address, data); +} + +void MCP2521::set_mode_of_operation(MCP2521_OPERATION_MODE mode, bool singleshot) { + + uint8_t single = singleshot ? 0b00001000 : 0x0; + + bit_modify(MCP2521_CANCTRL, 0b11101000 , (mode << 5) | single); +} + +void MCP2521::set_singleshot_mode(bool enable) { + uint8_t data = enable ? 0x08 : 0x00; + bit_modify(MCP2521_CANCTRL, 0x08, data); +} + +void MCP2521::enable_interrupts(bool MessageError, bool ErrorInterrupt, bool WakeUp, bool TXB0, bool TXB1, bool TXB2, bool RXB0, bool RXB1) { + uint8_t interrupt_flags = 0; + + if (MessageError) interrupt_flags |= 0b10000000; + if (WakeUp) interrupt_flags |= 0b01000000; + if (ErrorInterrupt) interrupt_flags |= 0b00100000; + if (TXB2) interrupt_flags |= 0b00010000; + if (TXB1) interrupt_flags |= 0b00001000; + if (TXB0) interrupt_flags |= 0b00000100; + if (RXB1) interrupt_flags |= 0b00000010; + if (RXB0) interrupt_flags |= 0b00000001; + + write_reg(MCP2521_CANINTE, interrupt_flags); +} + +rx_info MCP2521::get_rx_id(MCP2521_RX_BUFFER buffer) { + uint8_t data[5]; + uint8_t addr_offset = MCP2521_RXB0SIDH; + + switch (buffer) { + case MCP2521_RX_BUFFER::RXB0: + addr_offset |= 0x00; + break; + case MCP2521_RX_BUFFER::RXB1: + addr_offset |= 0x10; + break; + } + + read_reg(addr_offset, data, 5); + + rx_info res; + res.extended = data[1] & 0b1000; + res.id = (data[0] << 3) | (data[1] >> 5); + res.extended_id = ((data[1] & 0b11) << 16) | (data[2] << 8) | data[3]; + res.rtr = data[1] & 0b10000; + res.extended_rtr = (data[4] & 0b1000000); + res.length = (data[4] & 0b1111); + + return res; +} + +void MCP2521::prepare_tx( + MCP2521_TX_BUFFER buffer, + uint32_t id, + uint8_t *data, + size_t length, + bool rtr, bool extended) { + + set_tx_id(buffer, id, extended); + set_DLC_reg(buffer, length, rtr); + write_tx_buf(buffer, MCP2521_BUFFER_TYPE::DATA, data, length); +} \ No newline at end of file diff --git a/common-libaries/mcp2521_hardware_interface/CMakeLists.txt b/common-libaries/mcp2521_hardware_interface/CMakeLists.txt new file mode 100644 index 0000000..abe86ac --- /dev/null +++ b/common-libaries/mcp2521_hardware_interface/CMakeLists.txt @@ -0,0 +1,5 @@ +idf_component_register(SRCS "esp_implementation_init.cpp" + "esp_implementation_cmd.cpp" + "esp_implementation_int.cpp" + INCLUDE_DIRS "include" + REQUIRES driver) \ No newline at end of file diff --git a/common-libaries/mcp2521_hardware_interface/esp_implementation_cmd.cpp b/common-libaries/mcp2521_hardware_interface/esp_implementation_cmd.cpp new file mode 100644 index 0000000..f6f5974 --- /dev/null +++ b/common-libaries/mcp2521_hardware_interface/esp_implementation_cmd.cpp @@ -0,0 +1,209 @@ +#include "mcp2521_hardware_handle.hpp" + +#ifdef ESP_PLATFORM +#include "mcp2521_hardware_esp.hpp" + +const uint8_t null_buffer[32] = {0}; + +void MCP2521_Hardware_Handle_ESP::spi_transmit(spi_transaction_t *t) { + xSemaphoreTake(spiMutex, portMAX_DELAY); + spi_device_transmit(this->spi_device_handle, t); + xSemaphoreGive(spiMutex); +} + +void MCP2521_Hardware_Handle_ESP::execute(uint8_t cmd) { + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = 0, + .length = 0, + .rxlength = 0, + .tx_buffer = NULL, + .rx_buffer = NULL + }, + .command_bits = 8, + .address_bits = 0, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); +} + +void MCP2521_Hardware_Handle_ESP::execute(uint8_t cmd, uint8_t address) { + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = address, + .length = 0, + .rxlength = 0, + .tx_buffer = NULL, + .rx_buffer = NULL + }, + .command_bits = 8, + .address_bits = 8, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); +} + +void MCP2521_Hardware_Handle_ESP::read(uint8_t cmd, uint8_t *data, size_t length, uint8_t address) { + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = address, + .length = 8*length, + .rxlength = 8*length, + .tx_buffer = null_buffer, + .rx_buffer = data + }, + .command_bits = 8, + .address_bits = 8, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); +} + +void MCP2521_Hardware_Handle_ESP::read(uint8_t cmd, uint8_t *data, size_t length) { + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = 0, + .length = 8*length, + .rxlength = 8*length, + .tx_buffer = NULL, + .rx_buffer = data + }, + .command_bits = 8, + .address_bits = 0, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); +} + +uint8_t MCP2521_Hardware_Handle_ESP::read(uint8_t cmd, uint8_t address) { + uint8_t result = 0; + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = address, + .length = 8, + .rxlength = 8, + .tx_buffer = null_buffer, + .rx_buffer = &result + }, + .command_bits = 8, + .address_bits = 8, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); + return result; +} + +uint8_t MCP2521_Hardware_Handle_ESP::read(uint8_t cmd) { + uint8_t result; + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = 0, + .length = 8, + .rxlength = 8, + .tx_buffer = null_buffer, + .rx_buffer = &result + }, + .command_bits = 8, + .address_bits = 0, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); + return result; +} + +void MCP2521_Hardware_Handle_ESP::write(uint8_t cmd, uint8_t *data, size_t length, uint8_t address) { + uint8_t result; + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = address, + .length = 8*length, + .rxlength = 0, + .tx_buffer = data, + .rx_buffer = NULL + }, + .command_bits = 8, + .address_bits = 8, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); +} + +void MCP2521_Hardware_Handle_ESP::write(uint8_t cmd, uint8_t *data, size_t length) { + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = 0, + .length = 8*length, + .rxlength = 0, + .tx_buffer = data, + .rx_buffer = NULL + }, + .command_bits = 8, + .address_bits = 0, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); +} + +void MCP2521_Hardware_Handle_ESP::write(uint8_t cmd, uint8_t data, uint8_t address) { + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = address, + .length = 8, + .rxlength = 0, + .tx_buffer = &data, + .rx_buffer = NULL + }, + .command_bits = 8, + .address_bits = 8, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); +} + +void MCP2521_Hardware_Handle_ESP::write(uint8_t cmd, uint8_t data) { + spi_transaction_ext_t t = { + .base = { + .flags = SPI_TRANS_VARIABLE_CMD | SPI_TRANS_VARIABLE_ADDR, + .cmd = cmd, + .addr = 0, + .length = 8, + .rxlength = 0, + .tx_buffer = &data, + .rx_buffer = NULL + }, + .command_bits = 8, + .address_bits = 0, + .dummy_bits = 0, + }; + + spi_transmit((spi_transaction_t*)(&t)); +} + +#endif diff --git a/common-libaries/mcp2521_hardware_interface/esp_implementation_init.cpp b/common-libaries/mcp2521_hardware_interface/esp_implementation_init.cpp new file mode 100644 index 0000000..b2610b8 --- /dev/null +++ b/common-libaries/mcp2521_hardware_interface/esp_implementation_init.cpp @@ -0,0 +1,92 @@ +#include "mcp2521_hardware_handle.hpp" + +#ifdef ESP_PLATFORM +#include "mcp2521_hardware_esp.hpp" +#include "driver/gpio.h" +#include + +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +MCP2521_Hardware_Handle_ESP::MCP2521_Hardware_Handle_ESP( + spi_host_device_t spi_host, + spi_bus_config_t *bus_config, + gpio_num_t mosi, + gpio_num_t miso, + gpio_num_t sclk, + gpio_num_t cs, + gpio_num_t int_pin +) { + initPins(int_pin); + initSPIBus(spi_host, mosi, miso, sclk, bus_config); + this->spi_bus_config = bus_config; + initSPIDevice(spi_host, cs); +} + +MCP2521_Hardware_Handle_ESP::MCP2521_Hardware_Handle_ESP( + spi_host_device_t spi_host, + spi_bus_config_t *bus_config, + gpio_num_t cs, + gpio_num_t int_pin +) { + initPins(int_pin); + this->spi_bus_config = bus_config; + initSPIDevice(spi_host, cs); +} + +MCP2521_Hardware_Handle_ESP::~MCP2521_Hardware_Handle_ESP() { + +} + +void MCP2521_Hardware_Handle_ESP::initSPIBus( + spi_host_device_t spi_host, + gpio_num_t mosi, + gpio_num_t miso, + gpio_num_t sclk, + spi_bus_config_t *bus_config +) { + memset(bus_config, 0, sizeof(spi_bus_config_t)); + bus_config->mosi_io_num = mosi; + bus_config->miso_io_num = miso; + bus_config->sclk_io_num = sclk; + + bus_config->quadwp_io_num = -1; + bus_config->quadhd_io_num = -1; + + bus_config->flags = SPICOMMON_BUSFLAG_MASTER; + spi_bus_initialize(spi_host, bus_config, SPI_DMA_CH_AUTO); +} + +void MCP2521_Hardware_Handle_ESP::initSPIDevice( + spi_host_device_t spi_host, + gpio_num_t cs +) { + memset(&this->spi_device_config, 0, sizeof(spi_device_interface_config_t)); + this->spi_device_config = { + .command_bits = 8, + .address_bits = 0, + .dummy_bits = 0, + + .mode = 0, + .duty_cycle_pos = 128, + // cs_ena_pretrans = 0 and cs_ena_posttrans = 0 need to be set to zero, if not its not compatible with full-duplex mode + // Learned this the hard way + .cs_ena_pretrans = 0, + .cs_ena_posttrans = 0, + .clock_speed_hz = 10000, + + .spics_io_num = cs, + .flags = SPI_DEVICE_NO_DUMMY, + .queue_size = 5, + }; + + spi_bus_add_device(spi_host, &this->spi_device_config, &this->spi_device_handle); + + spiMutex = xSemaphoreCreateMutex(); +} + +spi_bus_config_t * MCP2521_Hardware_Handle_ESP::getSPI_bus_config() { + return this->spi_bus_config; +} + +#endif diff --git a/common-libaries/mcp2521_hardware_interface/esp_implementation_int.cpp b/common-libaries/mcp2521_hardware_interface/esp_implementation_int.cpp new file mode 100644 index 0000000..a186324 --- /dev/null +++ b/common-libaries/mcp2521_hardware_interface/esp_implementation_int.cpp @@ -0,0 +1,65 @@ +#include "mcp2521_hardware_handle.hpp" + +#ifdef ESP_PLATFORM +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" +#include "mcp2521_hardware_esp.hpp" + +static void IRAM_ATTR gpio_isr_can_handler(void* arg) { + MCP2521_Hardware_Handle_ESP * handle = (MCP2521_Hardware_Handle_ESP *)arg; + handle->isr_can_interrupt(); +} + +static void handleInteruptTaskCallerFn(void *arg) { + MCP2521_Hardware_Handle_ESP * handle = (MCP2521_Hardware_Handle_ESP *)arg; + handle->handleIntteruptTaskFn(); +} + +void MCP2521_Hardware_Handle_ESP::initPins( + gpio_num_t int_pin +) { + canInterruptSemaphore = xSemaphoreCreateBinary(); + + gpio_config_t io_conf; + io_conf.intr_type = GPIO_INTR_NEGEDGE; + io_conf.mode = GPIO_MODE_INPUT; + io_conf.pin_bit_mask = 1 << int_pin; + io_conf.pull_down_en = GPIO_PULLDOWN_DISABLE; + io_conf.pull_up_en = GPIO_PULLUP_ENABLE; + gpio_config(&io_conf); + + gpio_install_isr_service(0); + gpio_isr_handler_add(int_pin, gpio_isr_can_handler, this); + + xTaskCreate( + (TaskFunction_t)&handleInteruptTaskCallerFn, + "canInterruptTask", + 2048, + this, + 5, + &canInterruptTaskHandle + ); +} + +void MCP2521_Hardware_Handle_ESP::handleIntteruptTaskFn() { + while(true) { + xSemaphoreTake(canInterruptSemaphore, portMAX_DELAY); + intHandler(intHandlerArg); + } +} + +void MCP2521_Hardware_Handle_ESP::isr_can_interrupt() { + BaseType_t wokenTask = pdFALSE; + xSemaphoreGiveFromISR(canInterruptSemaphore, &wokenTask); + + if(wokenTask) { + portYIELD_FROM_ISR(); + } +} + +void MCP2521_Hardware_Handle_ESP::registerIntHandler(intHandlerFunction_t handler, void * arg) { + intHandlerArg = arg; + intHandler = handler; +} + +#endif \ No newline at end of file diff --git a/common-libaries/mcp2521_hardware_interface/include/mcp2521_hardware_esp.hpp b/common-libaries/mcp2521_hardware_interface/include/mcp2521_hardware_esp.hpp new file mode 100644 index 0000000..08df7c5 --- /dev/null +++ b/common-libaries/mcp2521_hardware_interface/include/mcp2521_hardware_esp.hpp @@ -0,0 +1,87 @@ +#pragma once +#include "mcp2521_hardware_handle.hpp" + +#ifdef ESP_PLATFORM + +#include "driver/gpio.h" +#include "driver/spi_master.h" +#include "freertos/FreeRTOS.h" +#include "freertos/task.h" + +class MCP2521_Hardware_Handle_ESP : public MCP2521_Hardware_Handle { + char spi_tmp_buffer; + + spi_bus_config_t * spi_bus_config; + spi_device_interface_config_t spi_device_config; + spi_device_handle_t spi_device_handle; + + SemaphoreHandle_t canInterruptSemaphore = NULL; + SemaphoreHandle_t spiMutex = NULL; + TaskHandle_t canInterruptTaskHandle = NULL; + + void spi_transmit(spi_transaction_t *t); + + void * intHandlerArg = NULL; + intHandlerFunction_t intHandler = NULL; + +public: + MCP2521_Hardware_Handle_ESP( + spi_host_device_t spi_host, + spi_bus_config_t *bus_config, + gpio_num_t mosi, + gpio_num_t miso, + gpio_num_t sclk, + gpio_num_t cs, + gpio_num_t int_pin + ); + + MCP2521_Hardware_Handle_ESP( + spi_host_device_t spi_host, + spi_bus_config_t *bus_config, + gpio_num_t cs, + gpio_num_t int_pin + ); + + static void initSPIBus( + spi_host_device_t spi_host, + gpio_num_t mosi, + gpio_num_t miso, + gpio_num_t sclk, + spi_bus_config_t *bus_config + ); + + void initSPIDevice( + spi_host_device_t spi_host, + gpio_num_t cs + ); + + void initPins( + gpio_num_t int_pin + ); + + ~MCP2521_Hardware_Handle_ESP(); + + spi_bus_config_t * getSPI_bus_config(); + + // ISR Stuff + void isr_can_interrupt(); + void handleIntteruptTaskFn(); + + // Inherited from MCP2521_Hardware_Handle + void execute(uint8_t cmd); + void execute(uint8_t cmd, uint8_t address); + + void read(uint8_t cmd, uint8_t *data, size_t length, uint8_t address); + void read(uint8_t cmd, uint8_t *data, size_t length); + uint8_t read(uint8_t cmd, uint8_t address); + uint8_t read(uint8_t cmd); + + void write(uint8_t cmd, uint8_t *data, size_t length, uint8_t address); + void write(uint8_t cmd, uint8_t *data, size_t length); + void write(uint8_t cmd, uint8_t data, uint8_t address); + void write(uint8_t cmd, uint8_t data); + + void registerIntHandler(intHandlerFunction_t handler, void * arg); +}; + +#endif diff --git a/common-libaries/mcp2521_hardware_interface/include/mcp2521_hardware_handle.hpp b/common-libaries/mcp2521_hardware_interface/include/mcp2521_hardware_handle.hpp new file mode 100644 index 0000000..34ffe1c --- /dev/null +++ b/common-libaries/mcp2521_hardware_interface/include/mcp2521_hardware_handle.hpp @@ -0,0 +1,24 @@ +#pragma once +#include +#include + +typedef void (*intHandlerFunction_t)(void *); + +class MCP2521_Hardware_Handle { +public: + virtual void registerIntHandler(intHandlerFunction_t handler, void * arg) = 0; + + virtual void execute(uint8_t cmd) = 0; + virtual void execute(uint8_t cmd, uint8_t address) = 0; + + virtual void read(uint8_t cmd, uint8_t *data, size_t length, uint8_t address) = 0; + virtual void read(uint8_t cmd, uint8_t *data, size_t length) = 0; + virtual uint8_t read(uint8_t cmd, uint8_t address) = 0; + virtual uint8_t read(uint8_t cmd) = 0; + + virtual void write(uint8_t cmd, uint8_t *data, size_t length, uint8_t address) = 0; + virtual void write(uint8_t cmd, uint8_t *data, size_t length) = 0; + virtual void write(uint8_t cmd, uint8_t data, uint8_t address) = 0; + virtual void write(uint8_t cmd, uint8_t data) = 0; +}; +