Skip to content

feat(rmt): adds new function to send specific number of loops #243

feat(rmt): adds new function to send specific number of loops

feat(rmt): adds new function to send specific number of loops #243

Workflow file for this run

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: false
push:
branches:
- master
- release/*
pull_request:
paths:
- "cores/**"
- "libraries/**/*.cpp"
- "libraries/**/*.c"
- "libraries/**/*.h"
- "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"
- ".github/scripts/get_affected.py"
- "variants/esp32/**"
- "variants/esp32c2/**"
- "variants/esp32c3/**"
- "variants/esp32c5/**"
- "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:
matrix: ${{ steps.set-matrix.outputs.matrix }}
should_build: ${{ steps.affected-examples.outputs.should_build }}
steps:
- name: Install universal-ctags
uses: awalsh128/cache-apt-pkgs-action@2c09a5e66da6c8016428a2172bd76e5e4f14bb17 # v1.5.3
with:
packages: libicu74 libjansson4 libxml2 libyaml-0-2 universal-ctags
version: 1
execute_install_scripts: true
- name: Checkout repository
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2
with:
fetch-depth: 2
- name: Get changed files
id: changed-files
uses: tj-actions/changed-files@2f7c5bfce28377bc069a65ba478de0a74aa0ca32 # v46.0.1
- name: Get affected examples
id: affected-examples
env:
IS_PR: ${{ github.event_name == 'pull_request' }}
run: |
(which ctags-universal || which ctags) || (echo "Error: Neither ctags-universal nor ctags found in PATH" && exit 1)
python3 ./.github/scripts/get_affected.py --debug --component ${{ steps.changed-files.outputs.all_changed_files }} > affected_examples.txt
- name: Upload affected examples
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: affected_examples
path: affected_examples.txt
if-no-files-found: error
- name: Upload debug artifacts
uses: actions/upload-artifact@ea165f8d65b6e75b540449e92b4886f43607fa02 # v4.6.2
with:
name: get_affected_debug
path: |
ctags_defs_by_qname.json
ctags_header_to_qnames.json
ctags_tags.jsonl
dependencies.json
dependencies_reverse.json
if-no-files-found: warn
- name: Get Matrix Combinations
id: set-matrix
run: |
# Define version-specific target configurations
get_targets_for_version() {
case "$1" in
"release-v5.3")
echo "esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c6,esp32h2,esp32p4"
;;
"release-v5.4")
echo "esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c6,esp32h2,esp32p4"
;;
"release-v5.5")
echo "esp32,esp32s2,esp32s3,esp32c2,esp32c3,esp32c5,esp32c6,esp32h2,esp32p4"
;;
*)
echo ""
;;
esac
}
# Default versions if not provided via inputs
DEFAULT_VERSIONS="release-v5.3,release-v5.4,release-v5.5"
# Use inputs if provided, otherwise use defaults
if [[ -n "${{ inputs.idf_ver }}" ]]; then
VERSIONS="${{ inputs.idf_ver }}"
else
VERSIONS="$DEFAULT_VERSIONS"
fi
# Generate matrix combinations
echo '{"include": [' > matrix.json
first=true
IFS=',' read -ra VERSION_ARRAY <<< "$VERSIONS"
for version in "${VERSION_ARRAY[@]}"; do
# Trim whitespace
version=$(echo "$version" | xargs)
# Get targets for this version
if [[ -n "${{ inputs.idf_targets }}" ]]; then
# Use provided targets for all versions
targets="${{ inputs.idf_targets }}"
else
# Use version-specific targets
targets=$(get_targets_for_version "$version")
fi
if [[ -n "$targets" ]]; then
IFS=',' read -ra TARGET_ARRAY <<< "$targets"
for target in "${TARGET_ARRAY[@]}"; do
# Trim whitespace
target=$(echo "$target" | xargs)
if [ "$first" = true ]; then
first=false
else
echo ',' >> matrix.json
fi
echo "{\"idf_ver\": \"$version\", \"idf_target\": \"$target\"}" >> matrix.json
done
fi
done
echo ']}' >> matrix.json
# Debug: Print the matrix for verification
echo "Debug - Generated matrix:"
cat matrix.json | jq .
# Set output
printf "matrix=%s\n" "$(cat matrix.json | jq -c .)" >> $GITHUB_OUTPUT
build-esp-idf-component:
name: Build IDF ${{ matrix.idf_ver }} for ${{ matrix.idf_target }}
runs-on: ubuntu-latest
needs: set-matrix
if: ${{ needs.set-matrix.outputs.should_build == '1' }}
strategy:
fail-fast: false
matrix: ${{ fromJson(needs.set-matrix.outputs.matrix) }}
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: Download affected examples
uses: actions/download-artifact@95815c38cf2ff2164869cbab79da8d1f422bc89e # v4.2.1
with:
name: affected_examples
- 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 affected_examples.txt
- 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