From e21e74b1f718b576621eb06f3e75aafe443a05fd Mon Sep 17 00:00:00 2001 From: unai_71 Date: Sun, 25 Jan 2026 16:26:21 +0100 Subject: [PATCH] Initialize project structure with configuration files and basic setup --- .clang-format | 4 ++ .clangd | 2 + .devcontainer/Dockerfile | 13 ++++++ .devcontainer/devcontainer.json | 21 +++++++++ .gitea/ci.yml | 52 ++++++++++++++++++++++ .gitignore | 78 +++++++++++++++++++++++++++++++++ .vscode/c_cpp_properties.json | 23 ++++++++++ .vscode/launch.json | 15 +++++++ .vscode/settings.json | 19 ++++++++ CMakeLists.txt | 6 +++ components/.gitkeep | 0 main/CMakeLists.txt | 2 + main/main.c | 7 +++ 13 files changed, 242 insertions(+) create mode 100644 .clang-format create mode 100644 .clangd create mode 100644 .devcontainer/Dockerfile create mode 100644 .devcontainer/devcontainer.json create mode 100644 .gitea/ci.yml create mode 100644 .gitignore create mode 100644 .vscode/c_cpp_properties.json create mode 100644 .vscode/launch.json create mode 100644 .vscode/settings.json create mode 100755 CMakeLists.txt create mode 100644 components/.gitkeep create mode 100755 main/CMakeLists.txt create mode 100755 main/main.c diff --git a/.clang-format b/.clang-format new file mode 100644 index 0000000..5cc9a70 --- /dev/null +++ b/.clang-format @@ -0,0 +1,4 @@ +BasedOnStyle: Google +IndentWidth: 4 +ColumnLimit: 120 +SortIncludes: true \ No newline at end of file diff --git a/.clangd b/.clangd new file mode 100644 index 0000000..437f255 --- /dev/null +++ b/.clangd @@ -0,0 +1,2 @@ +CompileFlags: + Remove: [-f*, -m*] diff --git a/.devcontainer/Dockerfile b/.devcontainer/Dockerfile new file mode 100644 index 0000000..dafb8ad --- /dev/null +++ b/.devcontainer/Dockerfile @@ -0,0 +1,13 @@ +ARG DOCKER_TAG=latest +FROM espressif/idf:${DOCKER_TAG} + +ENV LC_ALL=C.UTF-8 +ENV LANG=C.UTF-8 + +RUN apt-get update -y && apt-get install udev -y + +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/.devcontainer/devcontainer.json b/.devcontainer/devcontainer.json new file mode 100644 index 0000000..b801786 --- /dev/null +++ b/.devcontainer/devcontainer.json @@ -0,0 +1,21 @@ +{ + "name": "ESP-IDF QEMU", + "build": { + "dockerfile": "Dockerfile" + }, + "customizations": { + "vscode": { + "settings": { + "terminal.integrated.defaultProfile.linux": "bash", + "idf.espIdfPath": "/opt/esp/idf", + "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/.gitea/ci.yml b/.gitea/ci.yml new file mode 100644 index 0000000..437a314 --- /dev/null +++ b/.gitea/ci.yml @@ -0,0 +1,52 @@ +name: ESP-IDF CI + +on: + push: + branches: [ "main", "master" ] + pull_request: + +jobs: + build-and-test: + runs-on: ubuntu-latest + container: + image: espressif/idf:release-v5.5.2 # Usa una versión estable fija + options: --user root # Necesario en algunos runners de Gitea + + steps: + - name: Checkout repository + uses: actions/checkout@v3 + with: + submodules: 'recursive' + + - name: Setup Build Environment + run: | + . $IDF_PATH/export.sh + idf.py --version + + # 1. Compilación para el Hardware Real (ej. ESP32-S3) + - name: Build Firmware (Target) + env: + IDF_TARGET: esp32c6 # Cambia esto a tu chip (esp32, esp32c3, etc) + run: | + . $IDF_PATH/export.sh + idf.py build + + # 2. Ejecutar Tests en Host (Linux) + # Esto compila tu lógica y la corre en el contenedor para verificar algoritmos + - name: Run Host Tests + run: | + . $IDF_PATH/export.sh + # Configura el target a linux para ejecutar tests en el CI + idf.py --preview set-target linux + idf.py build + # Ejecuta el binario generado que contiene los tests + find build -maxdepth 1 -name "*.elf" -type f -exec {} \; + - name: Upload Artifacts + uses: actions/upload-artifact@v3 + if: success() + with: + name: firmware-binaries + path: | + build/*.bin + build/*.elf + build/flasher_args.json diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7805557 --- /dev/null +++ b/.gitignore @@ -0,0 +1,78 @@ +# macOS +.DS_Store +.AppleDouble +.LSOverride + +# Directory metadata +.directory + +# Temporary files +*~ +*.swp +*.swo +*.bak +*.tmp + +# Log files +*.log + +# Build artifacts and directories +**/build/ +build/ +*.o +*.a +*.out +*.exe # For any host-side utilities compiled on Windows + +# ESP-IDF specific build outputs +*.bin +*.elf +*.map +flasher_args.json # Generated in build directory +sdkconfig.old +sdkconfig + +# ESP-IDF dependencies +# For older versions or manual component management +/components/.idf/ +**/components/.idf/ +# For modern ESP-IDF component manager +managed_components/ +# If ESP-IDF tools are installed/referenced locally to the project +.espressif/ + +# CMake generated files +CMakeCache.txt +CMakeFiles/ +cmake_install.cmake +install_manifest.txt +CTestTestfile.cmake + +# Python environment files +*.pyc +*.pyo +*.pyd +__pycache__/ +*.egg-info/ +dist/ + +# Virtual environment folders +venv/ +.venv/ +env/ + +# Language Servers +.clangd/ +.ccls-cache/ +compile_commands.json + +# Windows specific +Thumbs.db +ehthumbs.db +Desktop.ini + +# User-specific configuration files +*.user +*.workspace # General workspace files, can be from various tools +*.suo # Visual Studio Solution User Options +*.sln.docstates # Visual Studio diff --git a/.vscode/c_cpp_properties.json b/.vscode/c_cpp_properties.json new file mode 100644 index 0000000..b7d20b2 --- /dev/null +++ b/.vscode/c_cpp_properties.json @@ -0,0 +1,23 @@ +{ + "configurations": [ + { + "name": "ESP-IDF", + "compilerPath": "${config:idf.toolsPath}/tools/xtensa-esp-elf/esp-14.2.0_20251107/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/.vscode/launch.json b/.vscode/launch.json new file mode 100644 index 0000000..2511a38 --- /dev/null +++ b/.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/.vscode/settings.json b/.vscode/settings.json new file mode 100644 index 0000000..6a14ecf --- /dev/null +++ b/.vscode/settings.json @@ -0,0 +1,19 @@ +{ + "C_Cpp.intelliSenseEngine": "default", + "idf.espIdfPath": "/home/unai/.esp/v5.5.2/esp-idf", + "idf.pythonInstallPath": "/usr/bin/python", + "idf.openOcdConfigs": [ + "board/esp32c6-builtin.cfg" + ], + "idf.port": "detect", + "idf.toolsPath": "/home/unai/.espressif", + "idf.customExtraVars": { + "IDF_TARGET": "esp32c6" + }, + "clangd.path": "/home/unai/.espressif/tools/esp-clang/esp-19.1.2_20250312/esp-clang/bin/clangd", + "clangd.arguments": [ + "--background-index", + "--query-driver=**", + "--compile-commands-dir=/home/unai/Development/espresssif_template_project/build" + ] +} diff --git a/CMakeLists.txt b/CMakeLists.txt new file mode 100755 index 0000000..958b4c8 --- /dev/null +++ b/CMakeLists.txt @@ -0,0 +1,6 @@ +# The following five 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(espresssif_template_project) diff --git a/components/.gitkeep b/components/.gitkeep new file mode 100644 index 0000000..e69de29 diff --git a/main/CMakeLists.txt b/main/CMakeLists.txt new file mode 100755 index 0000000..cf2c455 --- /dev/null +++ b/main/CMakeLists.txt @@ -0,0 +1,2 @@ +idf_component_register(SRCS "main.c" + INCLUDE_DIRS ".") diff --git a/main/main.c b/main/main.c new file mode 100755 index 0000000..153a236 --- /dev/null +++ b/main/main.c @@ -0,0 +1,7 @@ +#include + +void app_main(void) +{ + // Boilerplate ready. + // Place your initialization code here. +}