diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index 5e0d99c0457..6a803943690 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -13,7 +13,7 @@ ## Description of Change Please describe your proposed Pull Request and it's impact. -## Tests scenarios +## Test Scenarios Please describe on what Hardware and Software combinations you have tested this Pull Request and how. (*eg. I have tested my Pull Request on Arduino-esp32 core v2.0.2 with ESP32 and ESP32-S2 Board with this scenario*) diff --git a/.github/codeql/codeql-config.yml b/.github/codeql/codeql-config.yml index c640d7bd6ef..1c284c9d68e 100644 --- a/.github/codeql/codeql-config.yml +++ b/.github/codeql/codeql-config.yml @@ -20,7 +20,9 @@ query-filters: problem.severity: - recommendation - exclude: - id: tob/cpp/use-of-legacy-algorithm + id: tob/cpp/use-of-legacy-algorithm # We use legacy algorithms in many places for integrity checks + - exclude: + id: cpp/dead-code-goto # Too many false positives in no-build mode paths-ignore: - tests/** diff --git a/.github/scripts/set_push_chunks.sh b/.github/scripts/set_push_chunks.sh index ff0af7da6e8..69cd9a7f7de 100644 --- a/.github/scripts/set_push_chunks.sh +++ b/.github/scripts/set_push_chunks.sh @@ -78,7 +78,6 @@ chunks+="]" echo "build_all=$build_all" echo "build_libraries=$BUILD_LIBRARIES" echo "build_static_sketches=$BUILD_STATIC_SKETCHES" - echo "build_idf=$BUILD_IDF" echo "chunk_count=$chunks_count" echo "chunks=$chunks" } >> "$GITHUB_OUTPUT" diff --git a/.github/workflows/allboards.yml b/.github/workflows/allboards.yml index 6910ad05d3f..31eee587ca9 100644 --- a/.github/workflows/allboards.yml +++ b/.github/workflows/allboards.yml @@ -5,6 +5,9 @@ on: repository_dispatch: types: [test-boards] +permissions: + contents: read + jobs: find-boards: runs-on: ubuntu-latest @@ -36,10 +39,6 @@ jobs: with: ref: ${{ github.event.client_payload.branch }} - - run: npm install - - name: Setup jq - uses: dcarbone/install-jq-action@e397bd87438d72198f81efd21f876461183d383a # v3.0.1 - - id: set-test-chunks name: Set Chunks run: echo "test-chunks<> $GITHUB_OUTPUT diff --git a/.github/workflows/boards.yml b/.github/workflows/boards.yml index 287e97219c4..4ddb1443746 100644 --- a/.github/workflows/boards.yml +++ b/.github/workflows/boards.yml @@ -8,6 +8,9 @@ on: - "libraries/ESP32/examples/CI/CIBoardsTest/CIBoardsTest.ino" - ".github/workflows/boards.yml" +permissions: + contents: read + env: # It's convenient to set variables for values used multiple times in the workflow GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} @@ -24,9 +27,6 @@ jobs: - name: Checkout repository uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - name: Setup jq - uses: dcarbone/install-jq-action@e397bd87438d72198f81efd21f876461183d383a # v3.0.1 - - name: Get board name run: bash .github/scripts/find_new_boards.sh ${{ github.repository }} ${{github.base_ref}} diff --git a/.github/workflows/build_component.yml b/.github/workflows/build_component.yml new file mode 100644 index 00000000000..6d5dd38c626 --- /dev/null +++ b/.github/workflows/build_component.yml @@ -0,0 +1,137 @@ +name: Arduino as ESP-IDF Component + +on: + workflow_dispatch: + inputs: + idf_ver: + description: "IDF Versions" + default: "release-v5.3,release-v5.4,release-v5.5" + type: "string" + required: true + idf_targets: + description: "IDF Targets" + default: "esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c6,esp32h2,esp32p4" + type: "string" + required: true + push: + branches: + - master + - release/* + pull_request: + paths: + - "cores/**" + - "libraries/**/*.cpp" + - "libraries/**/*.c" + - "libraries/**/*.h" + - "libraries/**/*.ino" + - "libraries/**/ci.json" + - "idf_component_examples/**" + - "idf_component.yml" + - "Kconfig.projbuild" + - "CMakeLists.txt" + - ".github/workflows/build_component.yml" + - ".github/scripts/check-cmakelists.sh" + - ".github/scripts/on-push-idf.sh" + - ".github/scripts/sketch_utils.sh" + - "variants/esp32/**" + - "variants/esp32c2/**" + - "variants/esp32c3/**" + - "variants/esp32c6/**" + - "variants/esp32h2/**" + - "variants/esp32p4/**" + - "variants/esp32s2/**" + - "variants/esp32s3/**" + - "!*.md" + - "!*.txt" + - "!*.properties" + +permissions: + contents: read + +concurrency: + group: build-component-${{github.event.pull_request.number || github.ref}} + cancel-in-progress: true + +jobs: + cmake-check: + name: Check CMakeLists + runs-on: ubuntu-latest + if: ${{ !(github.event_name == 'pull_request' && startsWith(github.head_ref, 'release/')) }} + steps: + - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + - run: bash ./.github/scripts/check-cmakelists.sh + + set-matrix: + name: Set Matrix + runs-on: ubuntu-latest + if: ${{ !(github.event_name == 'pull_request' && startsWith(github.head_ref, 'release/')) }} + outputs: + idf_ver: ${{ steps.set-matrix.outputs.idf_ver }} + idf_target: ${{ steps.set-matrix.outputs.idf_target }} + steps: + - name: Get IDF Version and Targets + id: set-matrix + run: | + # Default values + idf_ver="release-v5.3,release-v5.4,release-v5.5" + idf_targets="esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c6,esp32h2,esp32p4" + + # Override with inputs if provided + if [[ -n "${{ inputs.idf_ver }}" ]]; then + idf_ver="${{ inputs.idf_ver }}" + fi + if [[ -n "${{ inputs.idf_targets }}" ]]; then + idf_targets="${{ inputs.idf_targets }}" + fi + + # Convert comma-separated strings to JSON arrays using a more robust method + idf_ver_json=$(printf '%s\n' "$idf_ver" | tr ',' '\n' | jq -R . | jq -s . | jq -c .) + idf_targets_json=$(printf '%s\n' "$idf_targets" | tr ',' '\n' | jq -R . | jq -s . | jq -c .) + + # Debug: Print the JSON for verification + echo "Debug - idf_ver_json: $idf_ver_json" + echo "Debug - idf_targets_json: $idf_targets_json" + + # Set outputs - ensure no extra whitespace + printf "idf_ver=%s\n" "$idf_ver_json" >> $GITHUB_OUTPUT + printf "idf_target=%s\n" "$idf_targets_json" >> $GITHUB_OUTPUT + + build-esp-idf-component: + name: Build IDF ${{ matrix.idf_ver }} for ${{ matrix.idf_target }} + runs-on: ubuntu-latest + needs: set-matrix + strategy: + fail-fast: false + matrix: + # The version names here correspond to the versions of espressif/idf Docker image. + # See https://hub.docker.com/r/espressif/idf/tags and + # https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-docker-image.html + # for details. + idf_ver: ${{ fromJson(needs.set-matrix.outputs.idf_ver) }} + idf_target: ${{ fromJson(needs.set-matrix.outputs.idf_target) }} + container: espressif/idf:${{ matrix.idf_ver }} + steps: + - name: Check out arduino-esp32 as a component + uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 + with: + submodules: recursive + path: components/arduino-esp32 + + # Need to install jq in the container to be able to use it in the script + - name: Setup jq + uses: dcarbone/install-jq-action@e397bd87438d72198f81efd21f876461183d383a # v3.0.1 + + - name: Build + env: + IDF_TARGET: ${{ matrix.idf_target }} + shell: bash + run: | + chmod a+x ./components/arduino-esp32/.github/scripts/* + ./components/arduino-esp32/.github/scripts/on-push-idf.sh + + - name: Upload generated sdkconfig files for debugging + uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 + if: always() + with: + name: sdkconfig-${{ matrix.idf_ver }}-${{ matrix.idf_target }} + path: ./components/arduino-esp32/idf_component_examples/**/sdkconfig diff --git a/.github/workflows/build_py_tools.yml b/.github/workflows/build_py_tools.yml index bbb36589c84..e22d8df5eff 100644 --- a/.github/workflows/build_py_tools.yml +++ b/.github/workflows/build_py_tools.yml @@ -9,6 +9,10 @@ on: - "tools/gen_esp32part.py" - "tools/gen_insights_package.py" +permissions: + contents: write + pull-requests: read + jobs: find-changed-tools: name: Check if tools have been changed diff --git a/.github/workflows/codeql.yml b/.github/workflows/codeql.yml index 9b2c6bccab1..26bd868c190 100644 --- a/.github/workflows/codeql.yml +++ b/.github/workflows/codeql.yml @@ -15,6 +15,12 @@ on: - ".github/workflows/*.yml" - ".github/workflows/*.yaml" +permissions: + actions: read + contents: read + pull-requests: read + security-events: write + jobs: codeql-analysis: name: CodeQL ${{ matrix.language }} analysis diff --git a/.github/workflows/docs_build.yml b/.github/workflows/docs_build.yml index d9b9f160228..5253c166f85 100644 --- a/.github/workflows/docs_build.yml +++ b/.github/workflows/docs_build.yml @@ -13,6 +13,9 @@ on: - "docs/**" - ".github/workflows/docs_build.yml" +permissions: + contents: read + jobs: build-docs: name: Build ESP-Docs diff --git a/.github/workflows/docs_deploy.yml b/.github/workflows/docs_deploy.yml index 9f45e35aef8..0c54d24aaf9 100644 --- a/.github/workflows/docs_deploy.yml +++ b/.github/workflows/docs_deploy.yml @@ -13,6 +13,9 @@ on: - "docs/**" - ".github/workflows/docs_deploy.yml" +permissions: + contents: read + jobs: deploy-prod-docs: name: Deploy Documentation on Production diff --git a/.github/workflows/gh-pages.yml b/.github/workflows/gh-pages.yml index 60795229eff..5dcb46dc36a 100644 --- a/.github/workflows/gh-pages.yml +++ b/.github/workflows/gh-pages.yml @@ -10,6 +10,10 @@ on: - ".github/scripts/on-pages.sh" - ".github/workflows/gh-pages.yml" +permissions: + contents: write + pages: write + jobs: build-pages: name: Build GitHub Pages diff --git a/.github/workflows/lib.yml b/.github/workflows/lib.yml index 0cb50842e5d..8af0992ebea 100644 --- a/.github/workflows/lib.yml +++ b/.github/workflows/lib.yml @@ -13,6 +13,11 @@ concurrency: group: libs-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +permissions: + contents: write + pull-requests: read + pages: write + env: # It's convenient to set variables for values used multiple times in the workflow SKETCHES_REPORTS_PATH: libraries-report diff --git a/.github/workflows/pre-commit.yml b/.github/workflows/pre-commit.yml index a3b858dd0fb..7eb60afc468 100644 --- a/.github/workflows/pre-commit.yml +++ b/.github/workflows/pre-commit.yml @@ -12,6 +12,10 @@ concurrency: group: pre-commit-${{github.event.pull_request.number || github.ref}} cancel-in-progress: true +permissions: + contents: write + pull-requests: read + jobs: lint: if: | diff --git a/.github/workflows/publishlib.yml b/.github/workflows/publishlib.yml index 0e1c3f64afd..f97a2e3b5f5 100644 --- a/.github/workflows/publishlib.yml +++ b/.github/workflows/publishlib.yml @@ -12,6 +12,10 @@ env: SKETCHES_REPORTS_PATH: artifacts/libraries-report GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} +permissions: + contents: read + pull-requests: write + jobs: lib-test-results: name: External Libraries Test Results diff --git a/.github/workflows/publishsizes-2.x.yml b/.github/workflows/publishsizes-2.x.yml index 738e215bc3f..f912445e622 100644 --- a/.github/workflows/publishsizes-2.x.yml +++ b/.github/workflows/publishsizes-2.x.yml @@ -9,6 +9,10 @@ env: RESULT_SIZES_TEST_FILE: SIZES_TEST.md GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} +permissions: + contents: write + pull-requests: write + jobs: sizes-test-results: name: Sizes Comparison Results diff --git a/.github/workflows/publishsizes.yml b/.github/workflows/publishsizes.yml index fad2418668c..611ee741efa 100644 --- a/.github/workflows/publishsizes.yml +++ b/.github/workflows/publishsizes.yml @@ -12,6 +12,11 @@ env: SKETCHES_REPORTS_PATH: artifacts/sizes-report GITHUB_TOKEN: ${{secrets.GITHUB_TOKEN}} +permissions: + contents: read + pull-requests: write + pages: write + jobs: sizes-test-results: name: Sizes Comparison Results diff --git a/.github/workflows/push.yml b/.github/workflows/push.yml index 1523b7231be..a415ccde755 100644 --- a/.github/workflows/push.yml +++ b/.github/workflows/push.yml @@ -25,51 +25,46 @@ on: pull_request: paths: - "cores/**" - - "libraries/**" - - "!libraries/**.md" - - "!libraries/**.txt" - - "!libraries/**.properties" - - "!libraries/**.py" + - "libraries/**/*.cpp" + - "libraries/**/*.c" + - "libraries/**/*.h" + - "libraries/**/*.ino" + - "libraries/**/ci.json" - "package/**" - - "idf_component_examples/**" - - "tools/**.py" + - "tools/get.*" - "platform.txt" - "programmers.txt" - - "idf_component.yml" - - "Kconfig.projbuild" - "package.json" - - "CMakeLists.txt" - ".github/workflows/push.yml" - - ".github/scripts/**" - - "!.github/scripts/find_*" - - "!.github/scripts/on-release.sh" - - "!.github/scripts/tests_*" - - "!.github/scripts/upload_*" - - "variants/esp32/**/*" - - "variants/esp32c3/**/*" - - "variants/esp32c5/**/*" - - "variants/esp32c6/**/*" - - "variants/esp32h2/**/*" - - "variants/esp32p4/**/*" - - "variants/esp32s2/**/*" - - "variants/esp32s3/**/*" + - ".github/scripts/install-*" + - ".github/scripts/on-push.sh" + - ".github/scripts/set_push_chunks.sh" + - ".github/scripts/sketch_utils.sh" + - "variants/esp32/**" + - "variants/esp32c3/**" + - "variants/esp32c5/**" + - "variants/esp32c6/**" + - "variants/esp32h2/**" + - "variants/esp32p4/**" + - "variants/esp32s2/**" + - "variants/esp32s3/**" + - "!*.md" + - "!*.txt" + - "!*.properties" concurrency: group: build-${{github.event.pull_request.number || github.ref}} cancel-in-progress: true +permissions: + contents: write + pull-requests: read + pages: write + env: MAX_CHUNKS: 15 jobs: - cmake-check: - name: Check cmake file - runs-on: ubuntu-latest - if: ${{ !(github.event_name == 'pull_request' && startsWith(github.head_ref, 'release/')) }} - steps: - - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - - run: bash ./.github/scripts/check-cmakelists.sh - gen-chunks: name: Generate chunks runs-on: ubuntu-latest @@ -78,7 +73,6 @@ jobs: build_all: ${{ steps.set-chunks.outputs.build_all }} build_libraries: ${{ steps.set-chunks.outputs.build_libraries }} build_static_sketches: ${{ steps.set-chunks.outputs.build_static_sketches }} - build_idf: ${{ steps.set-chunks.outputs.build_idf }} chunk_count: ${{ steps.set-chunks.outputs.chunk_count }} chunks: ${{ steps.set-chunks.outputs.chunks }} steps: @@ -99,13 +93,7 @@ jobs: - 'tools/**' - 'platform.txt' - 'programmers.txt' - - "variants/esp32/**/*" - - "variants/esp32c3/**/*" - - "variants/esp32c6/**/*" - - "variants/esp32h2/**/*" - - "variants/esp32p4/**/*" - - "variants/esp32s2/**/*" - - "variants/esp32s3/**/*" + - "variants/**" libraries: - 'libraries/**/examples/**' - 'libraries/**/src/**' @@ -113,7 +101,7 @@ jobs: - 'libraries/Network/src/**' fs: - 'libraries/FS/src/**' - static_sketeches: + static_sketches: - 'libraries/NetworkClientSecure/examples/WiFiClientSecure/WiFiClientSecure.ino' - 'libraries/BLE/examples/Server/Server.ino' - 'libraries/ESP32/examples/Camera/CameraWebServer/CameraWebServer.ino' @@ -121,11 +109,6 @@ jobs: - 'libraries/NetworkClientSecure/src/**' - 'libraries/BLE/src/**' - 'libraries/Insights/src/**' - idf: - - 'idf_component.yml' - - 'Kconfig.projbuild' - - 'CMakeLists.txt' - - "idf_component_examples/**" - name: Set chunks id: set-chunks @@ -133,9 +116,8 @@ jobs: LIB_FILES: ${{ steps.changed-files.outputs.libraries_all_changed_files }} IS_PR: ${{ github.event_name == 'pull_request' }} MAX_CHUNKS: ${{ env.MAX_CHUNKS }} - BUILD_IDF: ${{ steps.changed-files.outputs.idf_any_changed == 'true' }} BUILD_LIBRARIES: ${{ steps.changed-files.outputs.libraries_any_changed == 'true' }} - BUILD_STATIC_SKETCHES: ${{ steps.changed-files.outputs.static_sketeches_any_changed == 'true' }} + BUILD_STATIC_SKETCHES: ${{ steps.changed-files.outputs.static_sketches_any_changed == 'true' }} FS_CHANGED: ${{ steps.changed-files.outputs.fs_any_changed == 'true' }} NETWORKING_CHANGED: ${{ steps.changed-files.outputs.networking_any_changed == 'true' }} CORE_CHANGED: ${{ steps.changed-files.outputs.core_any_changed == 'true' }} @@ -233,59 +215,6 @@ jobs: - name: Build Sketches run: bash ./.github/scripts/on-push.sh - build-esp-idf-component: - name: Build with ESP-IDF ${{ matrix.idf_ver }} for ${{ matrix.idf_target }} - needs: gen-chunks - if: | - needs.gen-chunks.outputs.build_all == 'true' || - needs.gen-chunks.outputs.build_libraries == 'true' || - needs.gen-chunks.outputs.build_idf == 'true' - runs-on: ubuntu-latest - strategy: - fail-fast: false - matrix: - # The version names here correspond to the versions of espressif/idf Docker image. - # See https://hub.docker.com/r/espressif/idf/tags and - # https://docs.espressif.com/projects/esp-idf/en/latest/esp32/api-guides/tools/idf-docker-image.html - # for details. - idf_ver: ["release-v5.3","release-v5.4","release-v5.5"] - idf_target: - [ - "esp32", - "esp32s2", - "esp32s3", - "esp32c2", - "esp32c3", - "esp32c6", - "esp32h2", - "esp32p4" - ] - container: espressif/idf:${{ matrix.idf_ver }} - steps: - - name: Check out arduino-esp32 as a component - uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 - with: - submodules: recursive - path: components/arduino-esp32 - - - name: Setup jq - uses: dcarbone/install-jq-action@e397bd87438d72198f81efd21f876461183d383a # v3.0.1 - - - name: Build - env: - IDF_TARGET: ${{ matrix.idf_target }} - shell: bash - run: | - chmod a+x ./components/arduino-esp32/.github/scripts/* - ./components/arduino-esp32/.github/scripts/on-push-idf.sh - - - name: Upload generated sdkconfig files for debugging - uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 - if: always() - with: - name: sdkconfig-${{ matrix.idf_ver }}-${{ matrix.idf_target }} - path: ./components/arduino-esp32/idf_component_examples/**/sdkconfig - # Save artifacts to gh-pages save-master-artifacts: name: Save master artifacts diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 7b23c80c49a..ddefdf69258 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -4,6 +4,10 @@ on: release: types: published +permissions: + contents: write + pages: write + jobs: build: name: Publish Release diff --git a/.github/workflows/tests.yml b/.github/workflows/tests.yml index ddc9b64aace..557de11b509 100644 --- a/.github/workflows/tests.yml +++ b/.github/workflows/tests.yml @@ -16,27 +16,28 @@ on: pull_request: types: [opened, reopened, closed, synchronize, labeled, unlabeled] paths: + - ".github/scripts/install*.sh" - ".github/workflows/tests*" - - ".github/scripts/*.sh" - - "!.github/scripts/check-cmakelists.sh" - - "!.github/scripts/find_*" - - "!.github/scripts/on-*.sh" - - "!.github/scripts/set_push_chunks.sh" - - "!.github/scripts/update-version.sh" - - "!.github/scripts/upload_py_tools.sh" + - ".github/scripts/sketch_utils.sh" - "tests/**" - "cores/**" - "libraries/*/src/**.cpp" - "libraries/*/src/**.h" - "libraries/*/src/**.c" - "package/**" + - "!*.md" + - "!*.properties" schedule: - - cron: "0 2 * * *" + - cron: "0 0 * * *" concurrency: group: tests-${{ github.event.pull_request.number || github.ref }} cancel-in-progress: true +permissions: + contents: read + pull-requests: read + jobs: push-event-file: name: Push event file diff --git a/.github/workflows/tests_build.yml b/.github/workflows/tests_build.yml index ac1f40644ed..bf5a33f538f 100644 --- a/.github/workflows/tests_build.yml +++ b/.github/workflows/tests_build.yml @@ -12,6 +12,9 @@ on: description: "Chip to build tests for" required: true +permissions: + contents: read + jobs: build-tests: name: Build ${{ inputs.type }} tests for ${{ inputs.chip }} @@ -24,7 +27,7 @@ jobs: if: github.event.pull_request.number != null uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: - key: tests-${{ env.id }}-bin + key: test-${{ env.id }}-bin path: | ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.bin ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.elf @@ -71,7 +74,7 @@ jobs: uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 if: steps.check-build.outputs.enabled == 'true' && github.event.pull_request.number != null with: - key: tests-${{ env.id }}-bin + key: test-${{ env.id }}-bin path: | ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.bin ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.elf @@ -81,7 +84,7 @@ jobs: - name: Upload ${{ inputs.chip }} ${{ inputs.type }} binaries as artifacts uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 with: - name: tests-bin-${{ inputs.chip }}-${{ inputs.type }} + name: test-bin-${{ inputs.chip }}-${{ inputs.type }} overwrite: true path: | ~/.arduino/tests/${{ inputs.chip }}/**/build*.tmp/*.bin diff --git a/.github/workflows/tests_hw.yml b/.github/workflows/tests_hw.yml index 6f5fc67f7b9..d3b2ef79301 100644 --- a/.github/workflows/tests_hw.yml +++ b/.github/workflows/tests_hw.yml @@ -12,6 +12,9 @@ on: description: "Chip to run tests for" required: true +permissions: + contents: read + env: DEBIAN_FRONTEND: noninteractive @@ -39,7 +42,7 @@ jobs: if: github.event.pull_request.number != null uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: - key: tests-${{ env.id }}-results-hw + key: test-${{ env.id }}-results-hw path: | tests/**/*.xml tests/**/result_*.json @@ -61,6 +64,7 @@ jobs: if: ${{ steps.check-tests.outputs.enabled == 'true' }} uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 with: + # Workaround for missing files in checkout sparse-checkout: | * @@ -84,7 +88,7 @@ jobs: if: ${{ steps.check-tests.outputs.enabled == 'true' }} uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 with: - name: tests-bin-${{ inputs.chip }}-${{ inputs.type }} + name: test-bin-${{ inputs.chip }}-${{ inputs.type }} path: | ~/.arduino/tests/${{ inputs.chip }} @@ -102,7 +106,7 @@ jobs: uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 if: steps.check-tests.outputs.enabled == 'true' && github.event.pull_request.number != null with: - key: tests-${{ env.id }}-results-hw + key: test-${{ env.id }}-results-hw path: | tests/**/*.xml tests/**/result_*.json @@ -111,7 +115,7 @@ jobs: uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: always() with: - name: tests-results-hw-${{ inputs.chip }}-${{ inputs.type }} + name: test-results-hw-${{ inputs.chip }}-${{ inputs.type }} overwrite: true path: | tests/**/*.xml diff --git a/.github/workflows/tests_qemu.yml b/.github/workflows/tests_qemu.yml index fa3f874cbbb..9375f802073 100644 --- a/.github/workflows/tests_qemu.yml +++ b/.github/workflows/tests_qemu.yml @@ -10,6 +10,9 @@ on: required: true type: string +permissions: + contents: read + jobs: qemu-test: name: QEMU ${{ inputs.chip }} ${{ inputs.type }} tests @@ -23,7 +26,7 @@ jobs: if: github.event.pull_request.number != null uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: - key: tests-${{ env.id }}-results-qemu + key: test-${{ env.id }}-results-qemu path: | tests/**/*.xml tests/**/result_*.json @@ -115,7 +118,7 @@ jobs: if: ${{ steps.check-tests.outputs.enabled == 'true' }} uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 with: - name: tests-bin-${{ inputs.chip }}-${{ inputs.type }} + name: test-bin-${{ inputs.chip }}-${{ inputs.type }} path: | ~/.arduino/tests/${{ inputs.chip }} @@ -127,7 +130,7 @@ jobs: uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 if: steps.check-tests.outputs.enabled == 'true' && github.event.pull_request.number != null with: - key: tests-${{ env.id }}-results-qemu + key: test-${{ env.id }}-results-qemu path: | tests/**/*.xml tests/**/result_*.json @@ -136,7 +139,7 @@ jobs: uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: always() with: - name: tests-results-qemu-${{ inputs.chip }}-${{ inputs.type }} + name: test-results-qemu-${{ inputs.chip }}-${{ inputs.type }} overwrite: true path: | tests/**/*.xml diff --git a/.github/workflows/tests_results.yml b/.github/workflows/tests_results.yml index ebba2a3aa08..ab4bb31fca5 100644 --- a/.github/workflows/tests_results.yml +++ b/.github/workflows/tests_results.yml @@ -7,7 +7,8 @@ on: - completed # No permissions by default -permissions: { contents: read } +permissions: + contents: read jobs: unit-test-results: @@ -113,7 +114,7 @@ jobs: with: script: | const ref = process.env.original_ref; - const key_prefix = 'tests-' + ref + '-'; + const key_prefix = 'test-' + ref + '-'; if (process.env.original_event == 'pull_request' && process.env.original_action != 'closed') { console.log('Skipping cache cleanup for open PR'); @@ -163,15 +164,16 @@ jobs: - name: Generate report if: ${{ !cancelled() && (env.original_event == 'schedule' || env.original_event == 'workflow_dispatch') }} # codespell:ignore cancelled env: - REPORT_FILE: ./runtime-tests-results/RUNTIME_TESTS_REPORT.md + REPORT_FILE: ./runtime-test-results/RUNTIME_TEST_RESULTS.md WOKWI_RUN_ID: ${{ github.event.workflow_run.id }} BUILD_RUN_ID: ${{ env.original_run_id }} IS_FAILING: ${{ env.original_conclusion == 'failure' || env.original_conclusion == 'timed_out' || github.event.workflow_run.conclusion == 'failure' || github.event.workflow_run.conclusion == 'timed_out' || job.status == 'failure' }} run: | rm -rf artifacts $REPORT_FILE - mv -f ./unity_results.json ./runtime-tests-results/unity_results.json + mv -f ./unity_results.json ./runtime-test-results/unity_results.json touch $REPORT_FILE - python3 ./runtime-tests-results/table_generator.py ./runtime-tests-results/unity_results.json >> $REPORT_FILE + python3 ./runtime-test-results/table_generator.py ./runtime-test-results/unity_results.json >> $REPORT_FILE + mv -f ./test_results.json ./runtime-test-results/test_results.json - name: Generate badge if: ${{ !cancelled() && (env.original_event == 'schedule' || env.original_event == 'workflow_dispatch') }} # codespell:ignore cancelled @@ -179,7 +181,7 @@ jobs: with: label: Runtime Tests status: ${{ job.status == 'success' && 'passing' || 'failing' }} - output: runtime-tests-results/badge.svg + output: runtime-test-results/badge.svg color: ${{ job.status == 'success' && 'green' || 'red' }} style: flat @@ -190,6 +192,6 @@ jobs: git config user.email "41898282+github-actions[bot]@users.noreply.github.com" if [[ `git status --porcelain` ]]; then git add --all - git commit -m "Updated runtime tests report" + git commit -m "Updated runtime test results" git push origin HEAD:gh-pages fi diff --git a/.github/workflows/tests_wokwi.yml b/.github/workflows/tests_wokwi.yml index 03dd64fc0fb..cfea30a501d 100644 --- a/.github/workflows/tests_wokwi.yml +++ b/.github/workflows/tests_wokwi.yml @@ -7,7 +7,8 @@ on: - completed # No permissions by default -permissions: { contents: read } +permissions: + contents: read env: WOKWI_TIMEOUT: 600000 # Milliseconds @@ -135,17 +136,27 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} - pattern: tests-results-hw-* + pattern: test-results-hw-* merge-multiple: true path: artifacts/results/hw + - name: Download and extract parent GitLab results + uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 + continue-on-error: true + with: + github-token: ${{ secrets.GITHUB_TOKEN }} + run-id: ${{ github.event.workflow_run.id }} + pattern: test-results-gitlab + merge-multiple: true + path: artifacts/results/gitlab + - name: Download and extract parent QEMU results uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1 continue-on-error: true with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} - pattern: tests-results-qemu-* + pattern: test-results-qemu-* merge-multiple: true path: artifacts/results/qemu @@ -221,7 +232,7 @@ jobs: if: needs.get-artifacts.outputs.pr_num uses: actions/cache/restore@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 with: - key: tests-${{ env.id }}-results-wokwi + key: test-${{ env.id }}-results-wokwi path: | tests/**/*.xml tests/**/result_*.json @@ -274,7 +285,7 @@ jobs: with: github-token: ${{ secrets.GITHUB_TOKEN }} run-id: ${{ github.event.workflow_run.id }} - name: tests-bin-${{ matrix.chip }}-${{ matrix.type }} + name: test-bin-${{ matrix.chip }}-${{ matrix.type }} path: | ~/.arduino/tests/${{ matrix.chip }} @@ -289,7 +300,7 @@ jobs: uses: actions/cache/save@5a3ec84eff668545956fd18022155c47e93e2684 # v4.2.3 if: steps.check-tests.outputs.enabled == 'true' && needs.get-artifacts.outputs.pr_num with: - key: tests-${{ env.id }}-results-wokwi + key: test-${{ env.id }}-results-wokwi path: | tests/**/*.xml tests/**/result_*.json @@ -298,7 +309,7 @@ jobs: uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2 if: always() with: - name: tests-results-wokwi-${{ matrix.chip }}-${{ matrix.type }} + name: test-results-wokwi-${{ matrix.chip }}-${{ matrix.type }} overwrite: true path: | tests/**/*.xml diff --git a/.gitlab/workflows/sample.yml b/.gitlab/workflows/sample.yml index 32b6fce042d..e20cecf9e9e 100644 --- a/.gitlab/workflows/sample.yml +++ b/.gitlab/workflows/sample.yml @@ -1,6 +1,16 @@ hello-world: stage: test - script: - - echo "Hello, World from GitLab CI!" rules: - if: $CI_PIPELINE_SOURCE == "push" + - if: $CI_PIPELINE_SOURCE == "web" + - if: $CI_PIPELINE_SOURCE == "trigger" + variables: + PIPELINE_TRIGGER_TOKEN: $CI_PIPELINE_TRIGGER_TOKEN + script: + - echo "Hello, World from GitLab CI!" + - echo "Hello World!" > sample_artifact.txt + artifacts: + name: "sample-artifact" + paths: + - sample_artifact.txt + expire_in: 1 day diff --git a/README.md b/README.md index f40315c03cc..f8ff1f28eaa 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ [![Build Status](https://img.shields.io/github/actions/workflow/status/espressif/arduino-esp32/push.yml?branch=master&event=push&label=Compilation%20Tests)](https://github.com/espressif/arduino-esp32/actions/workflows/push.yml?query=branch%3Amaster+event%3Apush) [![Verbose Build Status](https://img.shields.io/github/actions/workflow/status/espressif/arduino-esp32/push.yml?branch=master&event=schedule&label=Compilation%20Tests%20(Verbose))](https://github.com/espressif/arduino-esp32/actions/workflows/push.yml?query=branch%3Amaster+event%3Aschedule) [![External Libraries Test](https://img.shields.io/github/actions/workflow/status/espressif/arduino-esp32/lib.yml?branch=master&event=schedule&label=External%20Libraries%20Test)](https://github.com/espressif/arduino-esp32/blob/gh-pages/LIBRARIES_TEST.md) -[![Runtime Tests](https://github.com/espressif/arduino-esp32/blob/gh-pages/runtime-tests-results/badge.svg)](https://github.com/espressif/arduino-esp32/blob/gh-pages/runtime-tests-results/RUNTIME_TESTS_REPORT.md) +[![Runtime Tests](https://github.com/espressif/arduino-esp32/blob/gh-pages/runtime-test-results/badge.svg)](https://github.com/espressif/arduino-esp32/blob/gh-pages/runtime-test-results/RUNTIME_TEST_RESULTS.md) ### Need help or have a question? Join the chat at [Discord](https://discord.gg/8xY6e9crwv) or [open a new Discussion](https://github.com/espressif/arduino-esp32/discussions) diff --git a/boards.txt b/boards.txt index 52554372ef4..d747d628d9d 100644 --- a/boards.txt +++ b/boards.txt @@ -13747,16 +13747,16 @@ adafruit_metro_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_metro_esp32s2.menu.PSRAM.disabled=Disabled adafruit_metro_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_metro_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_metro_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_metro_esp32s2.menu.PartitionScheme.default.build.partitions=default adafruit_metro_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -14133,16 +14133,16 @@ adafruit_magtag29_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_magtag29_esp32s2.menu.PSRAM.disabled=Disabled adafruit_magtag29_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_magtag29_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_magtag29_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_magtag29_esp32s2.menu.PartitionScheme.default.build.partitions=default adafruit_magtag29_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -14316,16 +14316,16 @@ adafruit_funhouse_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_funhouse_esp32s2.menu.PSRAM.disabled=Disabled adafruit_funhouse_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_funhouse_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_funhouse_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_funhouse_esp32s2.menu.PartitionScheme.default.build.partitions=default adafruit_funhouse_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -14754,16 +14754,16 @@ adafruit_feather_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_feather_esp32s2.menu.PSRAM.disabled=Disabled adafruit_feather_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_feather_esp32s2.menu.PartitionScheme.default.build.partitions=default adafruit_feather_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -14937,16 +14937,16 @@ adafruit_feather_esp32s2_tft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_feather_esp32s2_tft.menu.PSRAM.disabled=Disabled adafruit_feather_esp32s2_tft.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s2_tft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s2_tft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_feather_esp32s2_tft.menu.PartitionScheme.default.build.partitions=default adafruit_feather_esp32s2_tft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -15120,16 +15120,16 @@ adafruit_feather_esp32s2_reversetft.menu.PSRAM.enabled.build.defines=-DBOARD_HAS adafruit_feather_esp32s2_reversetft.menu.PSRAM.disabled=Disabled adafruit_feather_esp32s2_reversetft.menu.PSRAM.disabled.build.defines= -adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.default.build.partitions=default adafruit_feather_esp32s2_reversetft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -15329,16 +15329,16 @@ adafruit_feather_esp32s3.menu.PSRAM.opi=OPI PSRAM adafruit_feather_esp32s3.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM adafruit_feather_esp32s3.menu.PSRAM.opi.build.psram_type=opi -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s3.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s3.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_feather_esp32s3.menu.PartitionScheme.default.build.partitions=default adafruit_feather_esp32s3.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -15734,16 +15734,16 @@ adafruit_feather_esp32s3_tft.menu.PSRAM.opi=OPI PSRAM adafruit_feather_esp32s3_tft.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM adafruit_feather_esp32s3_tft.menu.PSRAM.opi.build.psram_type=opi -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s3_tft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s3_tft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_feather_esp32s3_tft.menu.PartitionScheme.default.build.partitions=default adafruit_feather_esp32s3_tft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -15952,16 +15952,16 @@ adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi=OPI PSRAM adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM adafruit_feather_esp32s3_reversetft.menu.PSRAM.opi.build.psram_type=opi -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.default.build.partitions=default adafruit_feather_esp32s3_reversetft.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -16575,16 +16575,16 @@ adafruit_qtpy_esp32s2.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM adafruit_qtpy_esp32s2.menu.PSRAM.disabled=Disabled adafruit_qtpy_esp32s2.menu.PSRAM.disabled.build.defines= -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_qtpy_esp32s2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_qtpy_esp32s2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_qtpy_esp32s2.menu.PartitionScheme.default.build.partitions=default adafruit_qtpy_esp32s2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -16971,16 +16971,16 @@ adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.opi=OPI PSRAM adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM adafruit_qtpy_esp32s3_n4r2.menu.PSRAM.opi.build.psram_type=opi -adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) -adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 -adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB -adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 -adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.default.build.partitions=default adafruit_qtpy_esp32s3_n4r2.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) @@ -32372,7 +32372,7 @@ ch_denky.menu.Revision.denkyd4.build.board=DENKY_PICOV3 ch_denky.menu.Revision.denkyd4.build.flash_size=8MB ch_denky.menu.Revision.denky32=WROOM32 ch_denky.menu.Revision.denky32.build.board=DENKY_WROOM32 -ch_denky.menu.Revision.denkyd4.build.flash_size=4MB +ch_denky.menu.Revision.denky32.build.flash_size=4MB ch_denky.menu.PartitionScheme.default=Default ch_denky.menu.PartitionScheme.default.build.partitions=default @@ -36120,6 +36120,200 @@ XIAO_ESP32C3.menu.EraseFlash.all.upload.erase_cmd=-e ############################################################## + +XIAO_ESP32C5.name=XIAO_ESP32C5 + +XIAO_ESP32C5.vid.0=0x2886 +XIAO_ESP32C5.pid.0=0x0067 + +XIAO_ESP32C5.bootloader.tool=esptool_py +XIAO_ESP32C5.bootloader.tool.default=esptool_py + +XIAO_ESP32C5.upload.tool=esptool_py +XIAO_ESP32C5.upload.tool.default=esptool_py +XIAO_ESP32C5.upload.tool.network=esp_ota + +XIAO_ESP32C5.upload.maximum_size=1310720 +XIAO_ESP32C5.upload.maximum_data_size=327680 +XIAO_ESP32C5.upload.flags= +XIAO_ESP32C5.upload.extra_flags= +XIAO_ESP32C5.upload.use_1200bps_touch=false +XIAO_ESP32C5.upload.wait_for_upload_port=false + +XIAO_ESP32C5.serial.disableDTR=false +XIAO_ESP32C5.serial.disableRTS=false + +XIAO_ESP32C5.build.tarch=riscv32 +XIAO_ESP32C5.build.target=esp +XIAO_ESP32C5.build.mcu=esp32c5 +XIAO_ESP32C5.build.core=esp32 +XIAO_ESP32C5.build.variant=XIAO_ESP32C5 +XIAO_ESP32C5.build.board=XIAO_ESP32C5 +XIAO_ESP32C5.build.bootloader_addr=0x2000 + +XIAO_ESP32C5.build.cdc_on_boot=1 +XIAO_ESP32C5.build.f_cpu=240000000L +XIAO_ESP32C5.build.flash_size=8MB +XIAO_ESP32C5.build.flash_freq=80m +XIAO_ESP32C5.build.flash_mode=qio +XIAO_ESP32C5.build.boot=qio +XIAO_ESP32C5.build.partitions=default_8MB +XIAO_ESP32C5.build.defines= + +## IDE 2.0 Seems to not update the value +XIAO_ESP32C5.menu.JTAGAdapter.default=Disabled +XIAO_ESP32C5.menu.JTAGAdapter.default.build.copy_jtag_files=0 +XIAO_ESP32C5.menu.JTAGAdapter.builtin=Integrated USB JTAG +XIAO_ESP32C5.menu.JTAGAdapter.builtin.build.openocdscript=esp32c5-builtin.cfg +XIAO_ESP32C5.menu.JTAGAdapter.builtin.build.copy_jtag_files=1 +XIAO_ESP32C5.menu.JTAGAdapter.external=FTDI Adapter +XIAO_ESP32C5.menu.JTAGAdapter.external.build.openocdscript=esp32c5-ftdi.cfg +XIAO_ESP32C5.menu.JTAGAdapter.external.build.copy_jtag_files=1 +XIAO_ESP32C5.menu.JTAGAdapter.bridge=ESP USB Bridge +XIAO_ESP32C5.menu.JTAGAdapter.bridge.build.openocdscript=esp32c5-bridge.cfg +XIAO_ESP32C5.menu.JTAGAdapter.bridge.build.copy_jtag_files=1 + +XIAO_ESP32C5.menu.PSRAM.disabled=Disabled +XIAO_ESP32C5.menu.PSRAM.disabled.build.defines= +XIAO_ESP32C5.menu.PSRAM.enabled=Enabled +XIAO_ESP32C5.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM + +XIAO_ESP32C5.menu.CDCOnBoot.cdc=Enabled +XIAO_ESP32C5.menu.CDCOnBoot.cdc.build.cdc_on_boot=1 +XIAO_ESP32C5.menu.CDCOnBoot.default=Disabled +XIAO_ESP32C5.menu.CDCOnBoot.default.build.cdc_on_boot=0 + +XIAO_ESP32C5.menu.PartitionScheme.default_8MB=8M with spiffs (3MB APP/1.5MB SPIFFS) +XIAO_ESP32C5.menu.PartitionScheme.default_8MB.build.partitions=default_8MB +XIAO_ESP32C5.menu.PartitionScheme.default_8MB.upload.maximum_size=3342336 +XIAO_ESP32C5.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +XIAO_ESP32C5.menu.PartitionScheme.default.build.partitions=default +XIAO_ESP32C5.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +XIAO_ESP32C5.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +XIAO_ESP32C5.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) +XIAO_ESP32C5.menu.PartitionScheme.minimal.build.partitions=minimal +XIAO_ESP32C5.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +XIAO_ESP32C5.menu.PartitionScheme.no_ota.build.partitions=no_ota +XIAO_ESP32C5.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +XIAO_ESP32C5.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +XIAO_ESP32C5.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +XIAO_ESP32C5.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +XIAO_ESP32C5.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +XIAO_ESP32C5.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +XIAO_ESP32C5.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +XIAO_ESP32C5.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +XIAO_ESP32C5.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +XIAO_ESP32C5.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +XIAO_ESP32C5.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +XIAO_ESP32C5.menu.PartitionScheme.huge_app.build.partitions=huge_app +XIAO_ESP32C5.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +XIAO_ESP32C5.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) +XIAO_ESP32C5.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs +XIAO_ESP32C5.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 +XIAO_ESP32C5.menu.PartitionScheme.fatflash=16M Flash (2MB APP/12.5MB FATFS) +XIAO_ESP32C5.menu.PartitionScheme.fatflash.build.partitions=ffat +XIAO_ESP32C5.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 +XIAO_ESP32C5.menu.PartitionScheme.rainmaker=RainMaker 4MB +XIAO_ESP32C5.menu.PartitionScheme.rainmaker.build.partitions=rainmaker +XIAO_ESP32C5.menu.PartitionScheme.rainmaker.upload.maximum_size=1966080 +XIAO_ESP32C5.menu.PartitionScheme.rainmaker_4MB=RainMaker 4MB No OTA +XIAO_ESP32C5.menu.PartitionScheme.rainmaker_4MB.build.partitions=rainmaker_4MB_no_ota +XIAO_ESP32C5.menu.PartitionScheme.rainmaker_4MB.upload.maximum_size=4038656 +XIAO_ESP32C5.menu.PartitionScheme.rainmaker_8MB=RainMaker 8MB +XIAO_ESP32C5.menu.PartitionScheme.rainmaker_8MB.build.partitions=rainmaker_8MB +XIAO_ESP32C5.menu.PartitionScheme.rainmaker_8MB.upload.maximum_size=4116480 +XIAO_ESP32C5.menu.PartitionScheme.zigbee=Zigbee 4MB with spiffs +XIAO_ESP32C5.menu.PartitionScheme.zigbee.build.partitions=zigbee +XIAO_ESP32C5.menu.PartitionScheme.zigbee.upload.maximum_size=1310720 +XIAO_ESP32C5.menu.PartitionScheme.zigbee_8MB=Zigbee 8MB with spiffs +XIAO_ESP32C5.menu.PartitionScheme.zigbee_8MB.build.partitions=zigbee_8MB +XIAO_ESP32C5.menu.PartitionScheme.zigbee_8MB.upload.maximum_size=3407872 +XIAO_ESP32C5.menu.PartitionScheme.zigbee_zczr=Zigbee ZCZR 4MB with spiffs +XIAO_ESP32C5.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr +XIAO_ESP32C5.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 +XIAO_ESP32C5.menu.PartitionScheme.zigbee_zczr_8MB=Zigbee ZCZR 8MB with spiffs +XIAO_ESP32C5.menu.PartitionScheme.zigbee_zczr_8MB.build.partitions=zigbee_zczr_8MB +XIAO_ESP32C5.menu.PartitionScheme.zigbee_zczr_8MB.upload.maximum_size=3407872 + +XIAO_ESP32C5.menu.CPUFreq.240=240MHz (WiFi) +XIAO_ESP32C5.menu.CPUFreq.240.build.f_cpu=240000000L +XIAO_ESP32C5.menu.CPUFreq.160=160MHz (WiFi) +XIAO_ESP32C5.menu.CPUFreq.160.build.f_cpu=160000000L +XIAO_ESP32C5.menu.CPUFreq.80=80MHz (WiFi) +XIAO_ESP32C5.menu.CPUFreq.80.build.f_cpu=80000000L +XIAO_ESP32C5.menu.CPUFreq.40=40MHz +XIAO_ESP32C5.menu.CPUFreq.40.build.f_cpu=40000000L +XIAO_ESP32C5.menu.CPUFreq.20=20MHz +XIAO_ESP32C5.menu.CPUFreq.20.build.f_cpu=20000000L +XIAO_ESP32C5.menu.CPUFreq.10=10MHz +XIAO_ESP32C5.menu.CPUFreq.10.build.f_cpu=10000000L + +XIAO_ESP32C5.menu.FlashMode.qio=QIO +XIAO_ESP32C5.menu.FlashMode.qio.build.flash_mode=dio +XIAO_ESP32C5.menu.FlashMode.qio.build.boot=qio +XIAO_ESP32C5.menu.FlashMode.dio=DIO +XIAO_ESP32C5.menu.FlashMode.dio.build.flash_mode=dio +XIAO_ESP32C5.menu.FlashMode.dio.build.boot=dio + +XIAO_ESP32C5.menu.FlashFreq.80=80MHz +XIAO_ESP32C5.menu.FlashFreq.80.build.flash_freq=80m +XIAO_ESP32C5.menu.FlashFreq.40=40MHz +XIAO_ESP32C5.menu.FlashFreq.40.build.flash_freq=40m + +XIAO_ESP32C5.menu.FlashSize.8M=8MB (64Mb) +XIAO_ESP32C5.menu.FlashSize.8M.build.flash_size=8MB + +XIAO_ESP32C5.menu.UploadSpeed.921600=921600 +XIAO_ESP32C5.menu.UploadSpeed.921600.upload.speed=921600 +XIAO_ESP32C5.menu.UploadSpeed.115200=115200 +XIAO_ESP32C5.menu.UploadSpeed.115200.upload.speed=115200 +XIAO_ESP32C5.menu.UploadSpeed.256000.windows=256000 +XIAO_ESP32C5.menu.UploadSpeed.256000.upload.speed=256000 +XIAO_ESP32C5.menu.UploadSpeed.230400.windows.upload.speed=256000 +XIAO_ESP32C5.menu.UploadSpeed.230400=230400 +XIAO_ESP32C5.menu.UploadSpeed.230400.upload.speed=230400 +XIAO_ESP32C5.menu.UploadSpeed.460800.linux=460800 +XIAO_ESP32C5.menu.UploadSpeed.460800.macosx=460800 +XIAO_ESP32C5.menu.UploadSpeed.460800.upload.speed=460800 +XIAO_ESP32C5.menu.UploadSpeed.512000.windows=512000 +XIAO_ESP32C5.menu.UploadSpeed.512000.upload.speed=512000 + +XIAO_ESP32C5.menu.DebugLevel.none=None +XIAO_ESP32C5.menu.DebugLevel.none.build.code_debug=0 +XIAO_ESP32C5.menu.DebugLevel.error=Error +XIAO_ESP32C5.menu.DebugLevel.error.build.code_debug=1 +XIAO_ESP32C5.menu.DebugLevel.warn=Warn +XIAO_ESP32C5.menu.DebugLevel.warn.build.code_debug=2 +XIAO_ESP32C5.menu.DebugLevel.info=Info +XIAO_ESP32C5.menu.DebugLevel.info.build.code_debug=3 +XIAO_ESP32C5.menu.DebugLevel.debug=Debug +XIAO_ESP32C5.menu.DebugLevel.debug.build.code_debug=4 +XIAO_ESP32C5.menu.DebugLevel.verbose=Verbose +XIAO_ESP32C5.menu.DebugLevel.verbose.build.code_debug=5 + +XIAO_ESP32C5.menu.EraseFlash.none=Disabled +XIAO_ESP32C5.menu.EraseFlash.none.upload.erase_cmd= +XIAO_ESP32C5.menu.EraseFlash.all=Enabled +XIAO_ESP32C5.menu.EraseFlash.all.upload.erase_cmd=-e + +XIAO_ESP32C5.menu.ZigbeeMode.default=Disabled +XIAO_ESP32C5.menu.ZigbeeMode.default.build.zigbee_mode= +XIAO_ESP32C5.menu.ZigbeeMode.default.build.zigbee_libs= +XIAO_ESP32C5.menu.ZigbeeMode.ed=Zigbee ED (end device) +XIAO_ESP32C5.menu.ZigbeeMode.ed.build.zigbee_mode=-DZIGBEE_MODE_ED +XIAO_ESP32C5.menu.ZigbeeMode.ed.build.zigbee_libs=-lesp_zb_api.ed -lzboss_stack.ed -lzboss_port.native +XIAO_ESP32C5.menu.ZigbeeMode.zczr=Zigbee ZCZR (coordinator/router) +XIAO_ESP32C5.menu.ZigbeeMode.zczr.build.zigbee_mode=-DZIGBEE_MODE_ZCZR +XIAO_ESP32C5.menu.ZigbeeMode.zczr.build.zigbee_libs=-lesp_zb_api.zczr -lzboss_stack.zczr -lzboss_port.native +XIAO_ESP32C5.menu.ZigbeeMode.ed_debug=Zigbee ED (end device) - Debug +XIAO_ESP32C5.menu.ZigbeeMode.ed_debug.build.zigbee_mode=-DZIGBEE_MODE_ED +XIAO_ESP32C5.menu.ZigbeeMode.ed_debug.build.zigbee_libs=-lesp_zb_api.ed.debug -lzboss_stack.ed.debug -lzboss_port.native.debug +XIAO_ESP32C5.menu.ZigbeeMode.zczr_debug=Zigbee ZCZR (coordinator/router) - Debug +XIAO_ESP32C5.menu.ZigbeeMode.zczr_debug.build.zigbee_mode=-DZIGBEE_MODE_ZCZR +XIAO_ESP32C5.menu.ZigbeeMode.zczr_debug.build.zigbee_libs=-lesp_zb_api.zczr.debug -lzboss_stack.zczr.debug -lzboss_port.native.debug + +############################################################## + XIAO_ESP32C6.name=XIAO_ESP32C6 XIAO_ESP32C6.bootloader.tool=esptool_py @@ -41542,11 +41736,11 @@ sensebox_eye.upload.maximum_size=1310720 sensebox_eye.upload.maximum_data_size=327680 sensebox_eye.upload.flags= sensebox_eye.upload.extra_flags= -sensebox_eye.upload.use_1200bps_touch=true -sensebox_eye.upload.wait_for_upload_port=true +sensebox_eye.upload.use_1200bps_touch=false +sensebox_eye.upload.wait_for_upload_port=false -sensebox_eye.serial.disableDTR=true -sensebox_eye.serial.disableRTS=true +sensebox_eye.serial.disableDTR=false +sensebox_eye.serial.disableRTS=false sensebox_eye.build.tarch=xtensa sensebox_eye.build.bootloader_addr=0x0 @@ -41566,7 +41760,7 @@ sensebox_eye.build.flash_freq=80m sensebox_eye.build.flash_mode=dio sensebox_eye.build.boot=qio sensebox_eye.build.boot_freq=80m -sensebox_eye.build.partitions=default_16MB +sensebox_eye.build.partitions=tinyuf2 sensebox_eye.build.defines= sensebox_eye.build.loop_core= sensebox_eye.build.event_core= @@ -41585,12 +41779,12 @@ sensebox_eye.menu.JTAGAdapter.bridge=ESP USB Bridge sensebox_eye.menu.JTAGAdapter.bridge.build.openocdscript=esp32s3-bridge.cfg sensebox_eye.menu.JTAGAdapter.bridge.build.copy_jtag_files=1 -sensebox_eye.menu.PSRAM.disabled=Disabled -sensebox_eye.menu.PSRAM.disabled.build.defines= -sensebox_eye.menu.PSRAM.disabled.build.psram_type=qspi sensebox_eye.menu.PSRAM.opi=OPI PSRAM sensebox_eye.menu.PSRAM.opi.build.defines=-DBOARD_HAS_PSRAM sensebox_eye.menu.PSRAM.opi.build.psram_type=opi +sensebox_eye.menu.PSRAM.disabled=Disabled +sensebox_eye.menu.PSRAM.disabled.build.defines= +sensebox_eye.menu.PSRAM.disabled.build.psram_type=qspi sensebox_eye.menu.FlashMode.qio=QIO 80MHz sensebox_eye.menu.FlashMode.qio.build.flash_mode=dio @@ -41616,33 +41810,38 @@ sensebox_eye.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 sensebox_eye.menu.EventsCore.0=Core 0 sensebox_eye.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 -sensebox_eye.menu.USBMode.hwcdc=Hardware CDC and JTAG -sensebox_eye.menu.USBMode.hwcdc.build.usb_mode=1 sensebox_eye.menu.USBMode.default=USB-OTG (TinyUSB) sensebox_eye.menu.USBMode.default.build.usb_mode=0 +sensebox_eye.menu.USBMode.hwcdc=Hardware CDC and JTAG +sensebox_eye.menu.USBMode.hwcdc.build.usb_mode=1 sensebox_eye.menu.CDCOnBoot.default=Enabled sensebox_eye.menu.CDCOnBoot.default.build.cdc_on_boot=1 sensebox_eye.menu.CDCOnBoot.cdc=Disabled sensebox_eye.menu.CDCOnBoot.cdc.build.cdc_on_boot=0 -sensebox_eye.menu.MSCOnBoot.default=Disabled -sensebox_eye.menu.MSCOnBoot.default.build.msc_on_boot=0 -sensebox_eye.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) -sensebox_eye.menu.MSCOnBoot.msc.build.msc_on_boot=1 +sensebox_eye.menu.MSCOnBoot.default=Enabled (Requires USB-OTG Mode) +sensebox_eye.menu.MSCOnBoot.default.build.msc_on_boot=1 +sensebox_eye.menu.MSCOnBoot.msc=Disabled +sensebox_eye.menu.MSCOnBoot.msc.build.msc_on_boot=0 sensebox_eye.menu.DFUOnBoot.default=Disabled sensebox_eye.menu.DFUOnBoot.default.build.dfu_on_boot=0 sensebox_eye.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) sensebox_eye.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 -sensebox_eye.menu.UploadMode.default=UART0 / Hardware CDC -sensebox_eye.menu.UploadMode.default.upload.use_1200bps_touch=false -sensebox_eye.menu.UploadMode.default.upload.wait_for_upload_port=false sensebox_eye.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) sensebox_eye.menu.UploadMode.cdc.upload.use_1200bps_touch=true sensebox_eye.menu.UploadMode.cdc.upload.wait_for_upload_port=true +sensebox_eye.menu.UploadMode.default=UART0 / Hardware CDC +sensebox_eye.menu.UploadMode.default.upload.use_1200bps_touch=false +sensebox_eye.menu.UploadMode.default.upload.wait_for_upload_port=false +sensebox_eye.menu.PartitionScheme.tinyuf2=TinyUF2 Compatibility (2MB APP/12MB FFAT) +sensebox_eye.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader_tinyuf2 +sensebox_eye.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions-16MB-tinyuf2 +sensebox_eye.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152 +sensebox_eye.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" 0x210000 "{runtime.platform.path}/variants/{build.variant}/APOTA.bin" sensebox_eye.menu.PartitionScheme.default_16MB=Default (6.25MB APP/3.43MB SPIFFS) sensebox_eye.menu.PartitionScheme.default_16MB.build.partitions=default_16MB sensebox_eye.menu.PartitionScheme.default_16MB.upload.maximum_size=6553600 @@ -41655,11 +41854,6 @@ sensebox_eye.menu.PartitionScheme.app3M_fat9M_16MB.upload.maximum_size=3145728 sensebox_eye.menu.PartitionScheme.fatflash=Large FFAT (2MB APP/12.5MB FATFS) sensebox_eye.menu.PartitionScheme.fatflash.build.partitions=ffat sensebox_eye.menu.PartitionScheme.fatflash.upload.maximum_size=2097152 -sensebox_eye.menu.PartitionScheme.tinyuf2=TinyUF2 Compatibility (2MB APP/12MB FFAT) -sensebox_eye.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader_tinyuf2 -sensebox_eye.menu.PartitionScheme.tinyuf2.build.custom_partitions=partitions_tinyuf2 -sensebox_eye.menu.PartitionScheme.tinyuf2.upload.maximum_size=2097152 -sensebox_eye.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x410000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" sensebox_eye.menu.PartitionScheme.gen4esp32scheme4=Huge App (16MB APP) sensebox_eye.menu.PartitionScheme.gen4esp32scheme4.build.custom_partitions=gen4esp32_16MBapp sensebox_eye.menu.PartitionScheme.gen4esp32scheme4.upload.maximum_size=16646144 @@ -51573,3 +51767,218 @@ fed4.menu.ZigbeeMode.zczr.build.zigbee_mode=-DZIGBEE_MODE_ZCZR fed4.menu.ZigbeeMode.zczr.build.zigbee_libs=-lesp_zb_api.zczr -lzboss_stack.zczr -lzboss_port.remote ############################################################## + +# FoBE Quill ESP32S3 Mesh FH4R2 + +fobe_quill_esp32s3_mesh.name=FoBE Quill ESP32S3 Mesh +fobe_quill_esp32s3_mesh.vid.0=0x303a +fobe_quill_esp32s3_mesh.pid.0=0x82f4 +fobe_quill_esp32s3_mesh.vid.1=0x303a +fobe_quill_esp32s3_mesh.vid.1=0x82f5 +fobe_quill_esp32s3_mesh.vid.2=0x303a +fobe_quill_esp32s3_mesh.pid.2=0x82f6 + +fobe_quill_esp32s3_mesh.bootloader.tool=esptool_py +fobe_quill_esp32s3_mesh.bootloader.tool.default=esptool_py + +fobe_quill_esp32s3_mesh.upload.tool=esptool_py +fobe_quill_esp32s3_mesh.upload.tool.default=esptool_py +fobe_quill_esp32s3_mesh.upload.tool.network=esp_ota + +fobe_quill_esp32s3_mesh.upload.maximum_size=1310720 +fobe_quill_esp32s3_mesh.upload.maximum_data_size=327680 +fobe_quill_esp32s3_mesh.upload.flags= +fobe_quill_esp32s3_mesh.upload.extra_flags= +fobe_quill_esp32s3_mesh.upload.use_1200bps_touch=true +fobe_quill_esp32s3_mesh.upload.wait_for_upload_port=true + +fobe_quill_esp32s3_mesh.serial.disableDTR=false +fobe_quill_esp32s3_mesh.serial.disableRTS=false + +fobe_quill_esp32s3_mesh.build.tarch=xtensa +fobe_quill_esp32s3_mesh.build.bootloader_addr=0x0 +fobe_quill_esp32s3_mesh.build.target=esp32s3 +fobe_quill_esp32s3_mesh.build.mcu=esp32s3 +fobe_quill_esp32s3_mesh.build.core=esp32 +fobe_quill_esp32s3_mesh.build.variant=fobe_quill_esp32s3_mesh +fobe_quill_esp32s3_mesh.build.board=FOBE_QUILL_ESP32S3_MESH + +fobe_quill_esp32s3_mesh.build.usb_mode=0 +fobe_quill_esp32s3_mesh.build.cdc_on_boot=1 +fobe_quill_esp32s3_mesh.build.msc_on_boot=0 +fobe_quill_esp32s3_mesh.build.dfu_on_boot=0 +fobe_quill_esp32s3_mesh.build.f_cpu=240000000L +fobe_quill_esp32s3_mesh.build.flash_size=4MB +fobe_quill_esp32s3_mesh.build.flash_freq=80m +fobe_quill_esp32s3_mesh.build.flash_mode=qio +fobe_quill_esp32s3_mesh.build.boot=qio +fobe_quill_esp32s3_mesh.build.boot_freq=80m +fobe_quill_esp32s3_mesh.build.partitions=ffat +fobe_quill_esp32s3_mesh.build.defines= +fobe_quill_esp32s3_mesh.build.loop_core= +fobe_quill_esp32s3_mesh.build.event_core= +fobe_quill_esp32s3_mesh.build.psram_type=qspi +fobe_quill_esp32s3_mesh.build.memory_type={build.boot}_{build.psram_type} + +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.default=Disabled +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.default.build.copy_jtag_files=0 +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.builtin=Integrated USB JTAG +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.builtin.build.openocdscript=esp32s3-builtin.cfg +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.builtin.build.copy_jtag_files=1 +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.external=FTDI Adapter +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.external.build.openocdscript=esp32s3-ftdi.cfg +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.external.build.copy_jtag_files=1 +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.bridge=ESP USB Bridge +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.bridge.build.openocdscript=esp32s3-bridge.cfg +fobe_quill_esp32s3_mesh.menu.JTAGAdapter.bridge.build.copy_jtag_files=1 + +fobe_quill_esp32s3_mesh.menu.PSRAM.disabled=Disabled +fobe_quill_esp32s3_mesh.menu.PSRAM.disabled.build.defines= +fobe_quill_esp32s3_mesh.menu.PSRAM.disabled.build.psram_type=qspi +fobe_quill_esp32s3_mesh.menu.PSRAM.enabled=QSPI PSRAM +fobe_quill_esp32s3_mesh.menu.PSRAM.enabled.build.defines=-DBOARD_HAS_PSRAM +fobe_quill_esp32s3_mesh.menu.PSRAM.enabled.build.psram_type=qspi + +fobe_quill_esp32s3_mesh.menu.FlashMode.qio=QIO 80MHz +fobe_quill_esp32s3_mesh.menu.FlashMode.qio.build.flash_mode=dio +fobe_quill_esp32s3_mesh.menu.FlashMode.qio.build.boot=qio +fobe_quill_esp32s3_mesh.menu.FlashMode.qio.build.boot_freq=80m +fobe_quill_esp32s3_mesh.menu.FlashMode.qio.build.flash_freq=80m +fobe_quill_esp32s3_mesh.menu.FlashMode.dio=DIO 80MHz +fobe_quill_esp32s3_mesh.menu.FlashMode.dio.build.flash_mode=dio +fobe_quill_esp32s3_mesh.menu.FlashMode.dio.build.boot=dio +fobe_quill_esp32s3_mesh.menu.FlashMode.dio.build.boot_freq=80m +fobe_quill_esp32s3_mesh.menu.FlashMode.dio.build.flash_freq=80m + +fobe_quill_esp32s3_mesh.menu.FlashSize.4M=4MB (32Mb) +fobe_quill_esp32s3_mesh.menu.FlashSize.4M.build.flash_size=4MB + +fobe_quill_esp32s3_mesh.menu.LoopCore.1=Core 1 +fobe_quill_esp32s3_mesh.menu.LoopCore.1.build.loop_core=-DARDUINO_RUNNING_CORE=1 +fobe_quill_esp32s3_mesh.menu.LoopCore.0=Core 0 +fobe_quill_esp32s3_mesh.menu.LoopCore.0.build.loop_core=-DARDUINO_RUNNING_CORE=0 + +fobe_quill_esp32s3_mesh.menu.EventsCore.1=Core 1 +fobe_quill_esp32s3_mesh.menu.EventsCore.1.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=1 +fobe_quill_esp32s3_mesh.menu.EventsCore.0=Core 0 +fobe_quill_esp32s3_mesh.menu.EventsCore.0.build.event_core=-DARDUINO_EVENT_RUNNING_CORE=0 + +fobe_quill_esp32s3_mesh.menu.USBMode.hwcdc=Hardware CDC and JTAG +fobe_quill_esp32s3_mesh.menu.USBMode.hwcdc.build.usb_mode=1 +fobe_quill_esp32s3_mesh.menu.USBMode.default=USB-OTG (TinyUSB) +fobe_quill_esp32s3_mesh.menu.USBMode.default.build.usb_mode=0 + +fobe_quill_esp32s3_mesh.menu.CDCOnBoot.default=Enabled +fobe_quill_esp32s3_mesh.menu.CDCOnBoot.default.build.cdc_on_boot=1 +fobe_quill_esp32s3_mesh.menu.CDCOnBoot.cdc=Disabled +fobe_quill_esp32s3_mesh.menu.CDCOnBoot.cdc.build.cdc_on_boot=0 + +fobe_quill_esp32s3_mesh.menu.MSCOnBoot.default=Disabled +fobe_quill_esp32s3_mesh.menu.MSCOnBoot.default.build.msc_on_boot=0 +fobe_quill_esp32s3_mesh.menu.MSCOnBoot.msc=Enabled (Requires USB-OTG Mode) +fobe_quill_esp32s3_mesh.menu.MSCOnBoot.msc.build.msc_on_boot=1 + +fobe_quill_esp32s3_mesh.menu.DFUOnBoot.default=Disabled +fobe_quill_esp32s3_mesh.menu.DFUOnBoot.default.build.dfu_on_boot=0 +fobe_quill_esp32s3_mesh.menu.DFUOnBoot.dfu=Enabled (Requires USB-OTG Mode) +fobe_quill_esp32s3_mesh.menu.DFUOnBoot.dfu.build.dfu_on_boot=1 + +fobe_quill_esp32s3_mesh.menu.UploadMode.default=UART0 / Hardware CDC +fobe_quill_esp32s3_mesh.menu.UploadMode.default.upload.use_1200bps_touch=false +fobe_quill_esp32s3_mesh.menu.UploadMode.default.upload.wait_for_upload_port=false +fobe_quill_esp32s3_mesh.menu.UploadMode.cdc=USB-OTG CDC (TinyUSB) +fobe_quill_esp32s3_mesh.menu.UploadMode.cdc.upload.use_1200bps_touch=true +fobe_quill_esp32s3_mesh.menu.UploadMode.cdc.upload.wait_for_upload_port=true + +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2=TinyUF2 4MB (1.3MB APP/960KB FATFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2.build.custom_bootloader=bootloader-tinyuf2 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2.build.partitions=tinyuf2-partitions-4MB +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2.upload.maximum_size=1441792 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2_noota=TinyUF2 4MB No OTA (2.7MB APP/960KB FATFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2_noota.build.custom_bootloader=bootloader-tinyuf2 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2_noota.build.partitions=tinyuf2-partitions-4MB-noota +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2_noota.upload.maximum_size=2883584 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.tinyuf2_noota.upload.extra_flags=0x2d0000 "{runtime.platform.path}/variants/{build.variant}/tinyuf2.bin" +fobe_quill_esp32s3_mesh.menu.PartitionScheme.default=Default 4MB with spiffs (1.2MB APP/1.5MB SPIFFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.default.build.partitions=default +fobe_quill_esp32s3_mesh.menu.PartitionScheme.defaultffat=Default 4MB with ffat (1.2MB APP/1.5MB FATFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.defaultffat.build.partitions=default_ffat +fobe_quill_esp32s3_mesh.menu.PartitionScheme.minimal=Minimal (1.3MB APP/700KB SPIFFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.minimal.build.partitions=minimal +fobe_quill_esp32s3_mesh.menu.PartitionScheme.no_ota=No OTA (2MB APP/2MB SPIFFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.no_ota.build.partitions=no_ota +fobe_quill_esp32s3_mesh.menu.PartitionScheme.no_ota.upload.maximum_size=2097152 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_3g=No OTA (1MB APP/3MB SPIFFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_3g.build.partitions=noota_3g +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_3g.upload.maximum_size=1048576 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_ffat=No OTA (2MB APP/2MB FATFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_ffat.build.partitions=noota_ffat +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_ffat.upload.maximum_size=2097152 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_3gffat=No OTA (1MB APP/3MB FATFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_3gffat.build.partitions=noota_3gffat +fobe_quill_esp32s3_mesh.menu.PartitionScheme.noota_3gffat.upload.maximum_size=1048576 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.huge_app=Huge APP (3MB No OTA/1MB SPIFFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.huge_app.build.partitions=huge_app +fobe_quill_esp32s3_mesh.menu.PartitionScheme.huge_app.upload.maximum_size=3145728 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.min_spiffs=Minimal SPIFFS (1.9MB APP with OTA/190KB SPIFFS) +fobe_quill_esp32s3_mesh.menu.PartitionScheme.min_spiffs.build.partitions=min_spiffs +fobe_quill_esp32s3_mesh.menu.PartitionScheme.min_spiffs.upload.maximum_size=1966080 +fobe_quill_esp32s3_mesh.menu.PartitionScheme.zigbee_zczr=Zigbee ZCZR 4MB with spiffs +fobe_quill_esp32s3_mesh.menu.PartitionScheme.zigbee_zczr.build.partitions=zigbee_zczr +fobe_quill_esp32s3_mesh.menu.PartitionScheme.zigbee_zczr.upload.maximum_size=1310720 + +fobe_quill_esp32s3_mesh.menu.CPUFreq.240=240MHz (WiFi) +fobe_quill_esp32s3_mesh.menu.CPUFreq.240.build.f_cpu=240000000L +fobe_quill_esp32s3_mesh.menu.CPUFreq.160=160MHz (WiFi) +fobe_quill_esp32s3_mesh.menu.CPUFreq.160.build.f_cpu=160000000L +fobe_quill_esp32s3_mesh.menu.CPUFreq.80=80MHz (WiFi) +fobe_quill_esp32s3_mesh.menu.CPUFreq.80.build.f_cpu=80000000L +fobe_quill_esp32s3_mesh.menu.CPUFreq.40=40MHz +fobe_quill_esp32s3_mesh.menu.CPUFreq.40.build.f_cpu=40000000L +fobe_quill_esp32s3_mesh.menu.CPUFreq.20=20MHz +fobe_quill_esp32s3_mesh.menu.CPUFreq.20.build.f_cpu=20000000L +fobe_quill_esp32s3_mesh.menu.CPUFreq.10=10MHz +fobe_quill_esp32s3_mesh.menu.CPUFreq.10.build.f_cpu=10000000L + +fobe_quill_esp32s3_mesh.menu.UploadSpeed.921600=921600 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.921600.upload.speed=921600 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.115200=115200 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.115200.upload.speed=115200 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.256000.windows=256000 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.256000.upload.speed=256000 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.230400.windows.upload.speed=256000 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.230400=230400 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.230400.upload.speed=230400 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.460800.linux=460800 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.460800.macosx=460800 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.460800.upload.speed=460800 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.512000.windows=512000 +fobe_quill_esp32s3_mesh.menu.UploadSpeed.512000.upload.speed=512000 + +fobe_quill_esp32s3_mesh.menu.DebugLevel.none=None +fobe_quill_esp32s3_mesh.menu.DebugLevel.none.build.code_debug=0 +fobe_quill_esp32s3_mesh.menu.DebugLevel.error=Error +fobe_quill_esp32s3_mesh.menu.DebugLevel.error.build.code_debug=1 +fobe_quill_esp32s3_mesh.menu.DebugLevel.warn=Warn +fobe_quill_esp32s3_mesh.menu.DebugLevel.warn.build.code_debug=2 +fobe_quill_esp32s3_mesh.menu.DebugLevel.info=Info +fobe_quill_esp32s3_mesh.menu.DebugLevel.info.build.code_debug=3 +fobe_quill_esp32s3_mesh.menu.DebugLevel.debug=Debug +fobe_quill_esp32s3_mesh.menu.DebugLevel.debug.build.code_debug=4 +fobe_quill_esp32s3_mesh.menu.DebugLevel.verbose=Verbose +fobe_quill_esp32s3_mesh.menu.DebugLevel.verbose.build.code_debug=5 + +fobe_quill_esp32s3_mesh.menu.EraseFlash.none=Disabled +fobe_quill_esp32s3_mesh.menu.EraseFlash.none.upload.erase_cmd= +fobe_quill_esp32s3_mesh.menu.EraseFlash.all=Enabled +fobe_quill_esp32s3_mesh.menu.EraseFlash.all.upload.erase_cmd=-e + +fobe_quill_esp32s3_mesh.menu.ZigbeeMode.default=Disabled +fobe_quill_esp32s3_mesh.menu.ZigbeeMode.default.build.zigbee_mode= +fobe_quill_esp32s3_mesh.menu.ZigbeeMode.default.build.zigbee_libs= +fobe_quill_esp32s3_mesh.menu.ZigbeeMode.zczr=Zigbee ZCZR (coordinator/router) +fobe_quill_esp32s3_mesh.menu.ZigbeeMode.zczr.build.zigbee_mode=-DZIGBEE_MODE_ZCZR +fobe_quill_esp32s3_mesh.menu.ZigbeeMode.zczr.build.zigbee_libs=-lesp_zb_api.zczr -lzboss_stack.zczr -lzboss_port.remote + +############################################################## diff --git a/docs/en/api/adc.rst b/docs/en/api/adc.rst index 434384f8d9b..f2245cc1e5d 100644 --- a/docs/en/api/adc.rst +++ b/docs/en/api/adc.rst @@ -52,10 +52,12 @@ This function will return analog value in millivolts (calibrated). analogReadResolution ^^^^^^^^^^^^^^^^^^^^ -This function is used to set the resolution of ``analogRead`` return value. Default is 12 bits (range from 0 to 4095) -for all chips except ESP32-S3 where default is 13 bits (range from 0 to 8191). +This function is used to set the resolution of ``analogRead`` return value. Default is 12 bits (range from 0 to 4095) for all chips. When different resolution is set, the values read will be shifted to match the given resolution. +.. note:: + For **ESP32-S2 chip revision v0.0**, the default ADC resolution is 13 bits (0-8191) due to the `ADC-112 errata `_. This is fixed in later revisions (v1.0+), which use the standard 12-bit resolution. + Range is 1 - 16 .The default value will be used, if this function is not used. .. note:: For the ESP32, the resolution is between 9 to12 and it will change the ADC hardware resolution. Else value will be shifted. diff --git a/docs/en/api/ledc.rst b/docs/en/api/ledc.rst index 6ea3437bbf5..d3d6da1e0f6 100644 --- a/docs/en/api/ledc.rst +++ b/docs/en/api/ledc.rst @@ -296,6 +296,7 @@ It is compatible with Arduinos analogWrite function. * ``pin`` select the GPIO pin. * ``value`` select the duty cycle of pwm. + * range is from 0 (always off) to 255 (always on). analogWriteResolution diff --git a/libraries/ESP_I2S/library.properties b/libraries/ESP_I2S/library.properties index b2763f4e7e8..18c48c095a8 100644 --- a/libraries/ESP_I2S/library.properties +++ b/libraries/ESP_I2S/library.properties @@ -4,6 +4,6 @@ author=me-no-dev maintainer=me-no-dev sentence=Library for ESP I2S communication paragraph=Supports ESP32 Arduino platforms. -category=Sound +category=Signal Input/Output url=https://github.com/espressif/arduino-esp32/ architectures=esp32 diff --git a/libraries/ESP_NOW/library.properties b/libraries/ESP_NOW/library.properties index f8e627dbc03..dd61bf0d4c2 100644 --- a/libraries/ESP_NOW/library.properties +++ b/libraries/ESP_NOW/library.properties @@ -4,6 +4,6 @@ author=me-no-dev maintainer=P-R-O-C-H-Y sentence=Library for ESP_NOW paragraph=Supports ESP32 Arduino platforms. -category=Sensor +category=Communication url=https://github.com/espressif/arduino-esp32/ architectures=esp32 diff --git a/package/package_esp32_index.template.json b/package/package_esp32_index.template.json index 3909c833c56..1b4b005dd34 100644 --- a/package/package_esp32_index.template.json +++ b/package/package_esp32_index.template.json @@ -81,7 +81,7 @@ { "packager": "esp32", "name": "esptool_py", - "version": "5.0.0" + "version": "5.0.2" }, { "packager": "esp32", @@ -469,56 +469,56 @@ }, { "name": "esptool_py", - "version": "5.0.0", + "version": "5.0.2", "systems": [ { "host": "aarch64-linux-gnu", - "url": "https://github.com/espressif/esptool/releases/download/v5.0.0/esptool-v5.0.0-linux-aarch64.tar.gz", - "archiveFileName": "esptool-v5.0.0-linux-aarch64.tar.gz", - "checksum": "SHA-256:2bf239f3ed76141a957cadb205b94414ec6da9ace4e85f285e247d20a92b83e3", - "size": "58231895" + "url": "https://github.com/espressif/esptool/releases/download/v5.0.2/esptool-v5.0.2-linux-aarch64.tar.gz", + "archiveFileName": "esptool-v5.0.2-linux-aarch64.tar.gz", + "checksum": "SHA-256:0c1fa4f5e96f715133fa65572063fa65bd120cd941b667cecd3360436a62b97b", + "size": "57815944" }, { "host": "x86_64-pc-linux-gnu", - "url": "https://github.com/espressif/esptool/releases/download/v5.0.0/esptool-v5.0.0-linux-amd64.tar.gz", - "archiveFileName": "esptool-v5.0.0-linux-amd64.tar.gz", - "checksum": "SHA-256:3b3835d266ac61f3242758f2fe34e3b33dbe6ee4b5acde005da793356f9f7043", - "size": "100783748" + "url": "https://github.com/espressif/esptool/releases/download/v5.0.2/esptool-v5.0.2-linux-amd64.tar.gz", + "archiveFileName": "esptool-v5.0.2-linux-amd64.tar.gz", + "checksum": "SHA-256:519e0015872d527bdca850b18575d4f635fa88ccdffe47a14c99a80a90b780c5", + "size": "100787554" }, { "host": "arm-linux-gnueabihf", - "url": "https://github.com/espressif/esptool/releases/download/v5.0.0/esptool-v5.0.0-linux-armv7.tar.gz", - "archiveFileName": "esptool-v5.0.0-linux-armv7.tar.gz", - "checksum": "SHA-256:e55cd321abecfcf27f72a2bff5d5e19a5365fd400de66d71c5e7218e77556315", - "size": "53461760" + "url": "https://github.com/espressif/esptool/releases/download/v5.0.2/esptool-v5.0.2-linux-armv7.tar.gz", + "archiveFileName": "esptool-v5.0.2-linux-armv7.tar.gz", + "checksum": "SHA-256:8df698d46a64b0b4a36d2a5bbd6bae58f81ca0a5e6451cd3f2d69a33340cc0f1", + "size": "53046401" }, { "host": "x86_64-apple-darwin", - "url": "https://github.com/espressif/esptool/releases/download/v5.0.0/esptool-v5.0.0-macos-amd64.tar.gz", - "archiveFileName": "esptool-v5.0.0-macos-amd64.tar.gz", - "checksum": "SHA-256:424da2bdf0435257ad81bcb7eae6fd8dd7f675ce5b2ee60032f4ecec4d6a5d45", - "size": "59629533" + "url": "https://github.com/espressif/esptool/releases/download/v5.0.2/esptool-v5.0.2-macos-amd64.tar.gz", + "archiveFileName": "esptool-v5.0.2-macos-amd64.tar.gz", + "checksum": "SHA-256:5c27295975515b97a9280f46845bd3acd5fc9e6a0583cfe03efa66cc50195ab0", + "size": "59619952" }, { "host": "arm64-apple-darwin", - "url": "https://github.com/espressif/esptool/releases/download/v5.0.0/esptool-v5.0.0-macos-arm64.tar.gz", - "archiveFileName": "esptool-v5.0.0-macos-arm64.tar.gz", - "checksum": "SHA-256:b91dfe1da7b0041376683dec10a91dfb266fbda2fb86ed87c4a034ff7182ee56", - "size": "56343104" + "url": "https://github.com/espressif/esptool/releases/download/v5.0.2/esptool-v5.0.2-macos-arm64.tar.gz", + "archiveFileName": "esptool-v5.0.2-macos-arm64.tar.gz", + "checksum": "SHA-256:93f0d9ef169f9bc6e32ed6f381977f63a5df7483b8002a5676dddf055bdbf775", + "size": "56344929" }, { "host": "x86_64-mingw32", - "url": "https://github.com/espressif/esptool/releases/download/v5.0.0/esptool-v5.0.0-windows-amd64.zip", - "archiveFileName": "esptool-v5.0.0-windows-amd64.zip", - "checksum": "SHA-256:2294107f66db6f09b886b337728a981173c9e7eab45a030928a8a5a1370611ca", - "size": "59105322" + "url": "https://github.com/espressif/esptool/releases/download/v5.0.2/esptool-v5.0.2-windows-amd64.zip", + "archiveFileName": "esptool-v5.0.2-windows-amd64.zip", + "checksum": "SHA-256:1caef993a16c5915714a0da772d93f2e3239f316c06223981b262b838287268c", + "size": "59097582" }, { "host": "i686-mingw32", - "url": "https://github.com/espressif/esptool/releases/download/v5.0.0/esptool-v5.0.0-windows-amd64.zip", - "archiveFileName": "esptool-v5.0.0-windows-amd64.zip", - "checksum": "SHA-256:2294107f66db6f09b886b337728a981173c9e7eab45a030928a8a5a1370611ca", - "size": "59105322" + "url": "https://github.com/espressif/esptool/releases/download/v5.0.2/esptool-v5.0.2-windows-amd64.zip", + "archiveFileName": "esptool-v5.0.2-windows-amd64.zip", + "checksum": "SHA-256:1caef993a16c5915714a0da772d93f2e3239f316c06223981b262b838287268c", + "size": "59097582" } ] }, diff --git a/variants/XIAO_ESP32C5/pins_arduino.h b/variants/XIAO_ESP32C5/pins_arduino.h new file mode 100644 index 00000000000..eaf6ba07b88 --- /dev/null +++ b/variants/XIAO_ESP32C5/pins_arduino.h @@ -0,0 +1,42 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include + +#define USB_VID 0x2886 +#define USB_PID 0x0067 + +static const uint8_t LED_BUILTIN = 27; +#define BUILTIN_LED LED_BUILTIN // backward compatibility +#define LED_BUILTIN LED_BUILTIN // allow testing #ifdef LED_BUILTIN + +static const uint8_t TX = 11; +static const uint8_t RX = 12; + +static const uint8_t SDA = 23; +static const uint8_t SCL = 24; + +static const uint8_t SS = 7; +static const uint8_t MOSI = 10; +static const uint8_t MISO = 9; +static const uint8_t SCK = 8; + +static const uint8_t A0 = 1; +static const uint8_t A1 = 2; +static const uint8_t A2 = 3; +static const uint8_t A3 = 4; +static const uint8_t A4 = 5; + +static const uint8_t D0 = 1; +static const uint8_t D1 = 0; +static const uint8_t D2 = 25; +static const uint8_t D3 = 7; +static const uint8_t D4 = 23; +static const uint8_t D5 = 24; +static const uint8_t D6 = 11; +static const uint8_t D7 = 12; +static const uint8_t D8 = 8; +static const uint8_t D9 = 9; +static const uint8_t D10 = 10; + +#endif /* Pins_Arduino_h */ diff --git a/variants/fobe_quill_esp32s3_mesh/bootloader-tinyuf2.bin b/variants/fobe_quill_esp32s3_mesh/bootloader-tinyuf2.bin new file mode 100644 index 00000000000..b83265965f4 Binary files /dev/null and b/variants/fobe_quill_esp32s3_mesh/bootloader-tinyuf2.bin differ diff --git a/variants/fobe_quill_esp32s3_mesh/pins_arduino.h b/variants/fobe_quill_esp32s3_mesh/pins_arduino.h new file mode 100644 index 00000000000..491d75333a7 --- /dev/null +++ b/variants/fobe_quill_esp32s3_mesh/pins_arduino.h @@ -0,0 +1,107 @@ +#ifndef Pins_Arduino_h +#define Pins_Arduino_h + +#include +#include "soc/soc_caps.h" + +#define USB_VID 0x303A +#define USB_PID 0x82F4 +#define USB_MANUFACTURER "FoBE Studio" +#define USB_PRODUCT "FoBE Quill ESP32S3 Mesh" +#define USB_SERIAL "" // Empty string for MAC address + +// User LED +#define LED_BUILTIN 11 +#define BUILTIN_LED LED_BUILTIN // backward compatibility + +/* + * Battery + */ +#define PIN_VBAT (10) + +/* + * Buttons + */ +#define PIN_BUTTON1 (0) + +/* + * Serial interfaces + */ +static const uint8_t TX = 9; +static const uint8_t RX = 8; + +/* + * Wire Interfaces + */ +static const uint8_t SDA = 14; +static const uint8_t SCL = 13; + +/* + * SPI interfaces + */ +static const uint8_t SS = 45; +static const uint8_t MOSI = 39; +static const uint8_t SCK = 40; +static const uint8_t MISO = 41; + +/* + * Screen + */ +#define PIN_OLED_SDA (14) +#define PIN_OLED_SCL (13) +#define PIN_OLED_EN (12) + +/* + * LoRa + */ +#define PIN_SX126X_NSS (45) +#define PIN_SX126X_DIO1 (42) +#define PIN_SX126X_BUSY (43) +#define PIN_SX126X_RESET (44) +#define PIN_SX126X_TXEN (-1) +#define PIN_SX126X_RXEN (46) +#define SX126X_DIO2_AS_RF_SWITCH +#define SX126X_DIO3_TCXO_VOLTAGE 1.8 + +/* + * MFP + */ +#define PIN_MFP1 (38) +#define PIN_MFP2 (37) +#define PIN_MFP3 (36) +#define PIN_MFP4 (35) + +/* + * Power + */ +#define PIN_PERI_EN (1) + +/* + * PINs + */ +static const uint8_t A0 = 2; +static const uint8_t A1 = 3; +static const uint8_t A2 = 4; +static const uint8_t A3 = 5; +static const uint8_t A4 = 6; +static const uint8_t A5 = 7; +static const uint8_t D0 = 8; +static const uint8_t D1 = 9; +static const uint8_t D2 = 11; +static const uint8_t D3 = 38; +static const uint8_t D4 = 37; +static const uint8_t D5 = 36; +static const uint8_t D6 = 35; +static const uint8_t D7 = 34; +static const uint8_t D8 = 33; +static const uint8_t D9 = 47; +static const uint8_t D10 = 48; +static const uint8_t D11 = 21; +static const uint8_t D12 = 18; +static const uint8_t D13 = 17; +static const uint8_t MTCK = 39; +static const uint8_t MTDO = 40; +static const uint8_t MTDI = 41; +static const uint8_t MTMS = 42; + +#endif /* Pins_Arduino_h */ diff --git a/variants/fobe_quill_esp32s3_mesh/tinyuf2.bin b/variants/fobe_quill_esp32s3_mesh/tinyuf2.bin new file mode 100644 index 00000000000..b854b19518f Binary files /dev/null and b/variants/fobe_quill_esp32s3_mesh/tinyuf2.bin differ diff --git a/variants/fobe_quill_esp32s3_mesh/variant.cpp b/variants/fobe_quill_esp32s3_mesh/variant.cpp new file mode 100644 index 00000000000..32ef46f053b --- /dev/null +++ b/variants/fobe_quill_esp32s3_mesh/variant.cpp @@ -0,0 +1,15 @@ +#include "esp32-hal-gpio.h" +#include "pins_arduino.h" + +extern "C" { + +void initVariant(void) { + // Turn on the peripheral power + pinMode(PIN_PERI_EN, OUTPUT); + digitalWrite(PIN_PERI_EN, HIGH); + + // Turn on the OLED power + pinMode(PIN_OLED_EN, OUTPUT); + digitalWrite(PIN_OLED_EN, LOW); +} +} diff --git a/variants/lilygo_t3_s3_sx127x/pins_arduino.h b/variants/lilygo_t3_s3_sx127x/pins_arduino.h index 1b3e0a99239..8caf05582c9 100644 --- a/variants/lilygo_t3_s3_sx127x/pins_arduino.h +++ b/variants/lilygo_t3_s3_sx127x/pins_arduino.h @@ -35,7 +35,6 @@ static const uint8_t SCK = 14; #define LORA_CS 7 // SX1276/SX1278 CS #define LORA_RST 8 // SX1276/SX1278 RST -#define LORA_BUSY 33 #define LORA_DIO0 9 //IRQ #define LORA_DIO1 33 #define LORA_DIO2 34 diff --git a/variants/m5stack_atoms3/pins_arduino.h b/variants/m5stack_atoms3/pins_arduino.h index 9d2389cc98c..739cddf3acd 100644 --- a/variants/m5stack_atoms3/pins_arduino.h +++ b/variants/m5stack_atoms3/pins_arduino.h @@ -7,10 +7,10 @@ #define USB_VID 0x303a #define USB_PID 0x1001 -// Some boards have too low voltage on this pin (board design bug) -// Use different pin with 3V and connect with 48 -// and change this setup for the chosen pin (for example 38) -static const uint8_t LED_BUILTIN = SOC_GPIO_PIN_COUNT + 48; +// The board RGB led is connected to GPIO #35 +#define PIN_RGB_LED 35 +// BUILTIN_LED can be used in new Arduino API digitalWrite() like in Blink.ino +static const uint8_t LED_BUILTIN = SOC_GPIO_PIN_COUNT + PIN_RGB_LED; #define BUILTIN_LED LED_BUILTIN // backward compatibility #define LED_BUILTIN LED_BUILTIN #define RGB_BUILTIN LED_BUILTIN diff --git a/variants/sensebox_eye/APOTA.bin b/variants/sensebox_eye/APOTA.bin new file mode 100644 index 00000000000..18547ceb255 Binary files /dev/null and b/variants/sensebox_eye/APOTA.bin differ diff --git a/variants/sensebox_eye/APOTA.ino b/variants/sensebox_eye/APOTA.ino new file mode 100644 index 00000000000..58c1116cc70 --- /dev/null +++ b/variants/sensebox_eye/APOTA.ino @@ -0,0 +1,301 @@ +// APOTA is an Arduino fallback sketch that is written to OTA1_Partition. +// APOTA opens an access point which waits to receive a .bin file on /sketch. +// After successful upload, the file is written to OTA0_Partition, and the microcontroller reboots to the newly uploaded sketch. + +#define DISPLAY_ENABLED + +#include +#include +#include +#include +#include +#include +#ifdef DISPLAY_ENABLED +#define SCREEN_WIDTH 128 +#define SCREEN_HEIGHT 64 +#define OLED_RESET -1 +#include +#include +Adafruit_SSD1306 display(SCREEN_WIDTH, SCREEN_HEIGHT, &Wire, OLED_RESET); +#include +Adafruit_NeoPixel rgb_led = Adafruit_NeoPixel(1, PIN_LED, NEO_GRB + NEO_KHZ800); + +#endif +#include "esp_partition.h" +#include "esp_ota_ops.h" +#include "esp_system.h" + +String ssid; +uint8_t mac[6]; + +// Create an instance of the server +WebServer server(80); +bool displayEnabled; + +const int BUTTON_PIN = 0; // GPIO for the button +volatile unsigned long lastPressTime = 0; // Time of last button press +volatile bool doublePressDetected = false; // Flag for double press +const unsigned long doublePressInterval = 500; // Max. time (in ms) between two presses for double press +volatile int pressCount = 0; // Counts the button presses + +const unsigned char epd_bitmap_wifi[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x01, 0xff, 0xf0, 0x00, 0x00, 0x00, 0x07, 0xff, 0xfc, 0x00, 0x00, 0x00, 0x1f, 0xe0, 0xff, 0x00, 0x00, + 0x00, 0x3f, 0x00, 0x0f, 0x80, 0x00, 0x00, 0x7c, 0x00, 0x03, 0xe0, 0x00, 0x00, 0xf0, 0x00, 0x01, 0xf0, 0x00, 0x01, 0xe0, 0x00, 0x00, 0x78, 0x00, + 0x03, 0xc0, 0x00, 0x00, 0x38, 0x00, 0x07, 0x80, 0x00, 0x00, 0x1c, 0x00, 0x0f, 0x00, 0x06, 0x00, 0x0e, 0x00, 0x0e, 0x00, 0x7f, 0xe0, 0x0e, 0x00, + 0x0c, 0x01, 0xff, 0xf0, 0x06, 0x00, 0x00, 0x07, 0xff, 0xfc, 0x02, 0x00, 0x00, 0x0f, 0x80, 0x3e, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x1c, 0x00, 0x07, 0x80, 0x00, 0x00, 0x38, 0x00, 0x03, 0xc0, 0x00, 0x00, 0x70, 0x00, 0x01, 0xc0, 0x00, 0x00, 0x70, 0x00, 0x00, 0xc0, 0x00, + 0x00, 0x20, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x1f, 0x80, 0x00, 0x00, 0x00, 0x00, 0x7f, 0xc0, 0x00, 0x00, 0x00, 0x00, 0xff, 0xe0, 0x00, 0x00, + 0x00, 0x01, 0xe0, 0xf0, 0x00, 0x00, 0x00, 0x01, 0xc0, 0x78, 0x00, 0x00, 0x00, 0x03, 0x80, 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +// 'checkmark', 44x44px +const unsigned char epd_bitmap_checkmark[] PROGMEM = { + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x01, 0x80, 0x00, 0x00, 0x00, 0x00, 0x03, 0x80, 0x00, 0x00, 0x00, 0x00, 0x07, 0x80, 0x00, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x0e, 0x00, 0xf0, 0x00, 0x00, + 0x00, 0x0f, 0x01, 0xe0, 0x00, 0x00, 0x00, 0x0f, 0x83, 0xc0, 0x00, 0x00, 0x00, 0x07, 0xc7, 0x80, 0x00, 0x00, 0x00, 0x03, 0xef, 0x00, 0x00, 0x00, + 0x00, 0x01, 0xfe, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfc, 0x00, 0x00, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 +}; + +void IRAM_ATTR handleButtonPress() { + unsigned long currentTime = millis(); // Get current time + + // Debounce: If the current press is too close to the last one, ignore it + if (currentTime - lastPressTime > 50) { + pressCount++; // Count the button press + + // Check if this is the second press within the double-press interval + if (pressCount == 2 && (currentTime - lastPressTime <= doublePressInterval)) { + doublePressDetected = true; // Double press detected + pressCount = 0; // Reset counter + } + + lastPressTime = currentTime; // Update the time of the last press + } +} + +// Function to switch the boot partition to OTA0 +void setBootPartitionToOTA0() { + const esp_partition_t *ota0_partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_0, NULL); + + if (ota0_partition) { + // Set OTA0 as new boot partition + esp_ota_set_boot_partition(ota0_partition); + Serial.println("Boot partition changed to OTA0. Restarting..."); + + // Restart to boot from the new partition + esp_restart(); + } else { + Serial.println("OTA0 partition not found!"); + } +} + +void setupDisplay() { + Wire.begin(PIN_QWIIC_SDA, PIN_QWIIC_SCL); + displayEnabled = Wire.requestFrom(0x3D, 1); // Check if the display is connected + if (displayEnabled) { + display.begin(SSD1306_SWITCHCAPVCC, 0x3D); + display.display(); + delay(100); + display.clearDisplay(); + } +} + +void displayStatusBar(int progress) { + display.clearDisplay(); + display.setCursor(16, 8); + display.println("Sketch is being"); + display.setCursor(32, 22); + display.println("uploaded!"); + + display.fillRect(0, SCREEN_HEIGHT - 24, SCREEN_WIDTH - 4, 8, BLACK); // Clear status bar area + display.drawRect(0, SCREEN_HEIGHT - 24, SCREEN_WIDTH - 4, 8, WHITE); // Draw border + int filledWidth = (progress * SCREEN_WIDTH - 4) / 100; // Calculate progress width + display.fillRect(1, SCREEN_HEIGHT - 23, filledWidth - 4, 6, WHITE); // Fill progress bar + + display.setCursor((SCREEN_WIDTH / 2) - 12, SCREEN_HEIGHT - 10); + display.setTextSize(1); + display.setTextColor(WHITE, BLACK); + display.print(progress); + display.println(" %"); + display.display(); +} + +void displayWelcomeScreen() { + display.clearDisplay(); + + // Draw WiFi symbol + display.drawBitmap(0, 12, epd_bitmap_wifi, 44, 44, WHITE); + + // Display SSID text + display.setCursor(52, 13); + display.setTextSize(1); + display.setTextColor(WHITE, BLACK); + display.println("Connect"); + display.setCursor(60, 27); + display.println("with:"); + + // Display SSID + display.setCursor(40, 43); + display.setTextSize(1); // Larger text for SSID + display.print(ssid); + + display.display(); +} + +void displaySuccessScreen() { + display.clearDisplay(); + + // Draw WiFi symbol + display.drawBitmap(0, 12, epd_bitmap_checkmark, 44, 44, WHITE); + + // Display SSID text + display.setCursor(48, 22); + display.setTextSize(1); + display.setTextColor(WHITE, BLACK); + display.println("Successfully"); + display.setCursor(48, 36); + display.println("uploaded!"); + + display.display(); +} + +void wipeDisplay() { + display.clearDisplay(); + display.println(""); + display.display(); +} + +void setupWiFi() { + WiFi.macAddress(mac); + char macLastFour[5]; + snprintf(macLastFour, sizeof(macLastFour), "%02X%02X", mac[4], mac[5]); + ssid = "senseBox:" + String(macLastFour); + + // Define the IP address, gateway, and subnet mask + IPAddress local_IP(192, 168, 1, 1); // The new IP address + IPAddress gateway(192, 168, 1, 1); // Gateway address (can be the same as the AP's IP) + IPAddress subnet(255, 255, 255, 0); // Subnet mask + + // Set the IP address, gateway, and subnet mask of the access point + WiFi.softAPConfig(local_IP, gateway, subnet); + + // Start the access point + WiFi.softAP(ssid.c_str()); +} + +void setupOTA() { + // Handle updating process + server.on( + "/sketch", HTTP_POST, + []() { + server.sendHeader("Connection", "close"); + server.send(200, "text/plain", (Update.hasError()) ? "FAIL" : "OK"); + ESP.restart(); + }, + []() { + HTTPUpload &upload = server.upload(); + + if (upload.status == UPLOAD_FILE_START) { + Serial.setDebugOutput(true); + size_t fsize = UPDATE_SIZE_UNKNOWN; + if (server.clientContentLength() > 0) { + fsize = server.clientContentLength(); + } + Serial.printf("Receiving Update: %s, Size: %d\n", upload.filename.c_str(), fsize); + + Serial.printf("Update: %s\n", upload.filename.c_str()); + if (!Update.begin(fsize)) { //start with max available size + Update.printError(Serial); + } + } else if (upload.status == UPLOAD_FILE_WRITE) { + /* flashing firmware to ESP*/ + if (Update.write(upload.buf, upload.currentSize) != upload.currentSize) { + Update.printError(Serial); + } else { + int progress = (Update.progress() * 100) / Update.size(); + if (displayEnabled) { + displayStatusBar(progress); // Update progress on display + } + rgb_led.setPixelColor(0, rgb_led.Color(255, 255, 51)); + rgb_led.show(); + } + } else if (upload.status == UPLOAD_FILE_END) { + if (Update.end(true)) { //true to set the size to the current progress + if (displayEnabled) { + displaySuccessScreen(); + delay(3000); + wipeDisplay(); + } + rgb_led.setPixelColor(0, rgb_led.Color(51, 51, 255)); + rgb_led.show(); + } else { + Update.printError(Serial); + } + Serial.setDebugOutput(false); + } + yield(); + } + ); +} + +void setup() { + // Start Serial communication + Serial.begin(115200); + rgb_led.begin(); + rgb_led.setBrightness(15); + rgb_led.setPixelColor(0, rgb_led.Color(51, 51, 255)); + rgb_led.show(); + + // Configure button pin as input + pinMode(BUTTON_PIN, INPUT_PULLUP); + + // Interrupt for the button + attachInterrupt(digitalPinToInterrupt(BUTTON_PIN), handleButtonPress, FALLING); + +#ifdef DISPLAY_ENABLED + setupDisplay(); +#endif + setupWiFi(); + // Set the ESP32 as an access point + setupOTA(); + server.begin(); +} + +void loop() { + // Handle client requests + server.handleClient(); + +#ifdef DISPLAY_ENABLED + if (displayEnabled) { + displayWelcomeScreen(); + } +#endif + + if (doublePressDetected) { + Serial.println("Double press detected!"); + setBootPartitionToOTA0(); +#ifdef DISPLAY_ENABLED + if (displayEnabled) { + display.setCursor(0, 0); + display.setTextSize(1); + display.setTextColor(WHITE, BLACK); + display.println(""); + display.display(); + delay(50); + } +#endif + // Restart to boot from the new partition + esp_restart(); + } +} diff --git a/variants/sensebox_eye/variant.cpp b/variants/sensebox_eye/variant.cpp index 4d6e38e73e0..cd86cdec84c 100644 --- a/variants/sensebox_eye/variant.cpp +++ b/variants/sensebox_eye/variant.cpp @@ -1,12 +1,39 @@ #include "esp32-hal-gpio.h" #include "pins_arduino.h" +#include "esp_log.h" +#include "esp_partition.h" +#include "esp_system.h" +#include "esp_ota_ops.h" extern "C" { -void initVariant(void) { - // blink the RGB LED - rgbLedWrite(PIN_LED, 0x00, 0x10, 0x00); // green +void blinkLED(uint8_t r, uint8_t g, uint8_t b) { + rgbLedWrite(PIN_LED, r, g, b); delay(20); rgbLedWrite(PIN_LED, 0x00, 0x00, 0x00); // off } + +void initVariant(void) { + // define button pin + pinMode(47, INPUT_PULLUP); + + // Check if button is pressed + if (digitalRead(47) == LOW) { + // When the button is pressed and then released, boot into the OTA1 partition + const esp_partition_t *ota1_partition = esp_partition_find_first(ESP_PARTITION_TYPE_APP, ESP_PARTITION_SUBTYPE_APP_OTA_1, NULL); + + if (ota1_partition) { + esp_err_t err = esp_ota_set_boot_partition(ota1_partition); + if (err == ESP_OK) { + blinkLED(0x00, 0x00, 0x10); // blue + esp_restart(); // restart, to boot OTA1 partition + } else { + blinkLED(0x10, 0x00, 0x00); // red + ESP_LOGE("OTA", "Error setting OTA1 partition: %s", esp_err_to_name(err)); + } + } + } else { + blinkLED(0x00, 0x10, 0x00); // green + } +} } diff --git a/variants/sensebox_mcu_esp32s2/APOTA.bin b/variants/sensebox_mcu_esp32s2/APOTA.bin index 0ea39335dce..ebe676c1733 100644 Binary files a/variants/sensebox_mcu_esp32s2/APOTA.bin and b/variants/sensebox_mcu_esp32s2/APOTA.bin differ diff --git a/variants/sensebox_mcu_esp32s2/APOTA.ino b/variants/sensebox_mcu_esp32s2/APOTA.ino index 67348d0b20f..ef0fa7d9063 100644 --- a/variants/sensebox_mcu_esp32s2/APOTA.ino +++ b/variants/sensebox_mcu_esp32s2/APOTA.ino @@ -111,10 +111,10 @@ void setupDisplay() { void displayStatusBar(int progress) { display.clearDisplay(); - display.setCursor(24, 8); - display.println("Sketch wird"); - display.setCursor(22, 22); - display.println("hochgeladen!"); + display.setCursor(16, 8); + display.println("Sketch is being"); + display.setCursor(32, 22); + display.println("uploaded!"); display.fillRect(0, SCREEN_HEIGHT - 24, SCREEN_WIDTH - 4, 8, BLACK); // Clear status bar area display.drawRect(0, SCREEN_HEIGHT - 24, SCREEN_WIDTH - 4, 8, WHITE); // Draw border @@ -136,12 +136,12 @@ void displayWelcomeScreen() { display.drawBitmap(0, 12, epd_bitmap_wifi, 44, 44, WHITE); // Display SSID text - display.setCursor(40, 13); + display.setCursor(52, 13); display.setTextSize(1); display.setTextColor(WHITE, BLACK); - display.println("Verbinde dich"); // "Connect" + display.println("Connect"); display.setCursor(60, 27); - display.println("mit:"); // "with" + display.println("with:"); // Display SSID display.setCursor(40, 43); @@ -161,9 +161,9 @@ void displaySuccessScreen() { display.setCursor(48, 22); display.setTextSize(1); display.setTextColor(WHITE, BLACK); - display.println("Erfolgreich"); // "Successfully" + display.println("Successfully"); display.setCursor(48, 36); - display.println("hochgeladen!"); // "uploaded!" + display.println("uploaded!"); display.display(); } @@ -271,7 +271,7 @@ void loop() { #endif if (doublePressDetected) { - Serial.println("Doppeldruck erkannt!"); // "Double press detected!" + Serial.println("Double press detected!"); setBootPartitionToOTA0(); #ifdef DISPLAY_ENABLED display.setCursor(0, 0);