Initialize project structure with configuration files and basic setup

This commit is contained in:
unai_71 2026-01-25 16:26:21 +01:00
commit e21e74b1f7
13 changed files with 242 additions and 0 deletions

4
.clang-format Normal file
View File

@ -0,0 +1,4 @@
BasedOnStyle: Google
IndentWidth: 4
ColumnLimit: 120
SortIncludes: true

2
.clangd Normal file
View File

@ -0,0 +1,2 @@
CompileFlags:
Remove: [-f*, -m*]

13
.devcontainer/Dockerfile Normal file
View File

@ -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"]

View File

@ -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"]
}

52
.gitea/ci.yml Normal file
View File

@ -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

78
.gitignore vendored Normal file
View File

@ -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

23
.vscode/c_cpp_properties.json vendored Normal file
View File

@ -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
}

15
.vscode/launch.json vendored Normal file
View File

@ -0,0 +1,15 @@
{
"version": "0.2.0",
"configurations": [
{
"type": "gdbtarget",
"request": "attach",
"name": "Eclipse CDT GDB Adapter"
},
{
"type": "espidf",
"name": "Launch",
"request": "launch"
}
]
}

19
.vscode/settings.json vendored Normal file
View File

@ -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"
]
}

6
CMakeLists.txt Executable file
View File

@ -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)

0
components/.gitkeep Normal file
View File

2
main/CMakeLists.txt Executable file
View File

@ -0,0 +1,2 @@
idf_component_register(SRCS "main.c"
INCLUDE_DIRS ".")

7
main/main.c Executable file
View File

@ -0,0 +1,7 @@
#include <stdio.h>
void app_main(void)
{
// Boilerplate ready.
// Place your initialization code here.
}