diff --git a/.github/workflows/BLE_Examples_Test.yml b/.github/workflows/BLE_Examples_Test.yml new file mode 100644 index 0000000..06bba25 --- /dev/null +++ b/.github/workflows/BLE_Examples_Test.yml @@ -0,0 +1,956 @@ +############################################################################### +# +# Copyright (C) 2022-2023 Maxim Integrated Products, Inc. (now owned by +# Analog Devices, Inc.), +# Copyright (C) 2023-2024 Analog Devices, Inc. +# +# Licensed under the Apache License, Version 2.0 (the "License"); +# you may not use this file except in compliance with the License. +# You may obtain a copy of the License at +# +# http://www.apache.org/licenses/LICENSE-2.0 +# +# Unless required by applicable law or agreed to in writing, software +# distributed under the License is distributed on an "AS IS" BASIS, +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +# See the License for the specific language governing permissions and +# limitations under the License. +# +############################################################################## + +name: BLE Examples Test + +# Cancels workflows in progress that are in the same PR +concurrency: + group: ${{ github.workflow }}-${{ github.ref }} + cancel-in-progress: true + +# Controls when the workflow will run +on: + # Triggers the workflow on push or pull request events but only for the "main" branch + #push: + # branches: [ "main" ] + pull_request: + branches: ["main"] + types: [opened, reopened, synchronize, ready_for_review] # When to run the workflow on PR + + paths-ignore: + # Any files in a docs directory anywhere in the repository. + - "**/docs/**" + - "**/Documentation/**" + # Any README.md file anywhere in the repository. + - "**/README.md" + # Any .pdf file anywhere in the repository. + - "**/*.pdf" + # Any .yml file anywhere in the repository. + # can comment this out when testing changes to THIS yml file + - "**/*.yml" + + # Allows you to run this workflow manually from the Actions tab + workflow_dispatch: +env: + LOCK_MAX32655_B2: false + LOCK_MAX32655_B1: false + LOCK_MAX32665_B1: false + + +# defaults: +# run: +# shell: bash -leo pipefail {0} +#---------------------------------------------------------------------------------------------- +# A workflow run is made up of one or more jobs that can run sequentially or in parallel +jobs: + BLE_Tests: + # The type of runner that the job will run on + runs-on: [self-hosted] + if: github.event.pull_request.draft == false + + + #---------------------------------------------------------------------------------------------- + # De inits submodules and cleans repo + steps: + - name: Test1 + run: | + echo $CI_BOARD_CONFIG + + printenv + + # # Clean and remove any local modifications + # - name: Clean + # continue-on-error: true + # run: | + + # # Remove local modifications + # set +e + + # # Attempt to clean the repo + # git scorch + # git clean -ffdx + # git reset --hard + # retval=$? + + # # Remove everything if this fails + # if [[ $retval -ne 0 ]] + # then + # rm -rf * + # fi + + # set -e + # # give launcher script permission to execute + # cd .github/workflows/scripts + # chmod +x test_launcher.sh + # chmod +x mass_erase_board.sh + # #---------------------------------------------------------------------------------------------- + # # Checks-out your repository under $GITHUB_WORKSPACE, so your job can access it + # - uses: actions/checkout@v4 + # with: + # submodules: false + # fetch-depth: 0 + + # #---------------------------------------------------------------------------------------------- + # #------------------------------| MAX32655 |---------------------------------------------------- + # #---------------------------------------------------------------------------------------------- + # - name: Check MAX32655 + # id: MAX32655 + # env: + # MAX32655_BLE_FILES_CHANGED: false + # MAX32655_EXAMPLES_TO_TEST: () + # MAX32655_RUN_ALL_TEST: false + # MAX32655_DATS_CONNECTED_TEST: false + # MAX32655_OTAS_CONNECTED_TEST: false + + # run: | + + # # BLE examples to watch + # declare -a watched_examples=( + # # underscore in filter to ignore the BLE5_ctr examples + # Examples/MAX32655/Bluetooth/BLE_* + # Examples/MAX32655/Bluetooth/Bootloader + # ) + + # # Other directories to watch + # declare -a watched_other=( + # #To test changes this workflow push a commit with this uncommented + # #.github/workflows/ + # .github/workflows/ci-tests/Examples_tests + # Libraries/libs.mk + # # Bluetooth + # Libraries/BlePhy/MAX32655 + # Libraries/Cordio + # # Board specific + # Libraries/Boards/MAX32655 + # # Libraries + # Libraries/CMSIS/Device/Maxim/MAX32655 + # Libraries/PeriphDrivers/libPeriphDriver.mk + # Libraries/PeriphDrivers/periphdriver.mk + # Libraries/PeriphDrivers/max32655_files.mk + # # AES + # Libraries/PeriphDrivers/Source/AES/aes_me17.c + # Libraries/PeriphDrivers/Source/AES/aes_revb_regs.h + # Libraries/PeriphDrivers/Source/AES/aes_revb.c + # Libraries/PeriphDrivers/Source/AES/aes_revb.h + # Libraries/PeriphDrivers/Source/AES/aeskeys_revb_regs.h + # # Flash controller + # Libraries/PeriphDrivers/Source/FLC/flc_common.c + # Libraries/PeriphDrivers/Source/FLC/flc_common.h + # Libraries/PeriphDrivers/Source/FLC/flc_me17.c + # Libraries/PeriphDrivers/Source/FLC/flc_reva.c + # Libraries/PeriphDrivers/Source/FLC/flc_reva.h + # # GPIO + # Libraries/PeriphDrivers/Source/GPIO/gpio_common.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_common.h + # Libraries/PeriphDrivers/Source/GPIO/gpio_me17.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_reva.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_reva.h + # # LowPower + # Libraries/PeriphDrivers/Source/LP/lp_me17.c + # # Simo + # Libraries/PeriphDrivers/Source/SIMO/simo_me17.c + # Libraries/PeriphDrivers/Source/SIMO/simo_reva_regs.h + # Libraries/PeriphDrivers/Source/SIMO/simo_.c + # Libraries/PeriphDrivers/Source/SIMO/simo_.h + # # System + # Libraries/PeriphDrivers/Source/SYS/mxc_assert.c + # Libraries/PeriphDrivers/Source/SYS/mxc_delay.c + # Libraries/PeriphDrivers/Source/SYS/mxc_lock.c + # Libraries/PeriphDrivers/Source/SYS/mxc_table.c + # Libraries/PeriphDrivers/Source/SYS/pins_me17.c + # Libraries/PeriphDrivers/Source/SYS/sys_me17.c + # # Timer + # Libraries/PeriphDrivers/Source/TMR/tmr_common.c + # Libraries/PeriphDrivers/Source/TMR/tmr_common.h + # Libraries/PeriphDrivers/Source/TMR/tmr_me17.c + # Libraries/PeriphDrivers/Source/TMR/tmr_revb_regs.h + # Libraries/PeriphDrivers/Source/TMR/tmr_revb.c + # Libraries/PeriphDrivers/Source/TMR/tmr_revb.h + # # True Random Number Generator + # Libraries/PeriphDrivers/Source/TRNG/trng_me17.c + # Libraries/PeriphDrivers/Source/TRNG/trng_revb_regs.h + # Libraries/PeriphDrivers/Source/TRNG/trng_revb.c + # Libraries/PeriphDrivers/Source/TRNG/trng_revb.h + # # UART + # Libraries/PeriphDrivers/Source/UART/uart_common.c + # Libraries/PeriphDrivers/Source/UART/uart_common.h + # Libraries/PeriphDrivers/Source/UART/uart_me17.c + # Libraries/PeriphDrivers/Source/UART/uart_revb_regs.h + # Libraries/PeriphDrivers/Source/UART/uart_revb.c + # Libraries/PeriphDrivers/Source/UART/uart_revb.h + # # WakeUp Timer + # Libraries/PeriphDrivers/Source/WUT/wut_me17.c + # Libraries/PeriphDrivers/Source/WUT/wut_reva_regs.h + # Libraries/PeriphDrivers/Source/WUT/wut_reva.c + # Libraries/PeriphDrivers/Source/WUT/wut_reva_regs.h ) + # # Directories to ignore + # declare -a ignored=( + # Libraries/Cordio/docs + # Documentation + + # ) + + # # Create an associative array for ignored() + # declare -A aignored=() + # for ignore in "${ignored[@]}"; do aignored["${ignore%/}"]=1; done + + # # Copy the working directory list, skipping entries in ignored() + # declare -a results_other=() + # for watch in "${watched_other[@]}"; do test -v aignored["${watch%/}"] || results_other+=("${watch%/}"); done + + # # Copy the working directory list, skipping entries in ignored() + # declare -a results_examples=() + # for watch in "${watched_examples[@]}"; do test -v aignored["${watch%/}"] || results_examples+=("${watch%/}"); done + + # # Print the resulting array, separated by newlines, in sorted order + # printf "\r\n-------- Watched Examples ------------\r\n\r\n" + # printf '%s\n' "${results_examples[@]}" | sort + # printf "\r\n-----------------------------------\r\n" + + # # Print the resulting array, separated by newlines, in sorted order + # printf "\r\n-------- Watched Other ------------\r\n\r\n" + # printf '%s\n' "${results_other[@]}" | sort + # printf "\r\n-----------------------------------\r\n" + + # #Get the diff from main + # CHANGE_FILES=$(git diff --ignore-submodules --name-only remotes/origin/main) + # # Assume we want to actually run the workflow if no files changed + # if [[ "$CHANGE_FILES" != "" ]]; then + # # Check if ALL test are required due to 'OTHER' non BLE example directory modified + # for watch_file in "${results_other[@]}"; do + # if [[ "$CHANGE_FILES" == *"$watch_file"* ]]; then + # MAX32655_RUN_ALL_TEST=true + # echo "MAX32655_RUN_ALL_TEST=true" >> $GITHUB_ENV + # echo "Enabled all tests to run because $watch_file was modified" + + # fi + # done + # # Check to see which examples have been modified to only test those + # for watch_file in "${results_examples[@]}"; do + # if [[ "$CHANGE_FILES" == *"$watch_file"* ]]; then + # MAX32655_BLE_FILES_CHANGED=true + # echo "MAX32655_BLE_FILES_CHANGED=true" >> $GITHUB_ENV + + # example_to_test=$(basename "$watch_file") + # # Store list of examples that need to be tested + # examples_list+=($example_to_test) + # echo "Enabled example tests to run because $watch_file was modified" + + # # If dats/c or OTAC/s were modified we should also test the connected functionality + # if [[ $example_to_test == "BLE_dats" ]] || [[ $example_to_test == "BLE_datc" ]]; then + # MAX32655_DATS_CONNECTED_TEST=true + # echo "MAX32655_DATS_CONNECTED_TEST=true" >> $GITHUB_ENV + # echo "Enabled Datsc connected test" + # fi + # if [[ $example_to_test == "BLE_otas" ]] || [[ $example_to_test == "BLE_otac" ]]; then + # MAX32655_OTAS_CONNECTED_TEST=true + # echo "MAX32655_OTAS_CONNECTED_TEST=true" >> $GITHUB_ENV + # echo "Enabled OTA connected test" + # fi + + # fi + # done + # # Save examples list to env varaible available across steps + # echo "MAX32655_EXAMPLES_TO_TEST=${examples_list[@]}" >> $GITHUB_ENV + # else + # # Assume we want to actually run the workflow if no files changed + # MAX32655_RUN_ALL_TEST=true + # echo "MAX32655_RUN_ALL_TEST=true" >> $GITHUB_ENV + # echo "Assuming you want all tests to run" + # fi + # # Lock main board and DUT if any connected test is required otherwise just lock DUT + # if [[ $MAX32655_OTAS_CONNECTED_TEST == 'true' ]] || [[ $MAX32655_DATS_CONNECTED_TEST == 'true' ]] || [[ $MAX32655_RUN_ALL_TEST == 'true' ]]; then + # echo "LOCK_MAX32655_B1=true" >> $GITHUB_ENV + # echo "LOCK_MAX32655_B2=true" >> $GITHUB_ENV + # elif [[ $MAX32655_BLE_FILES_CHANGED == 'true' ]]; then + # echo "LOCK_MAX32655_B2=true" >> $GITHUB_ENV + # else + # echo "no tests enabled, NOT locking anything at this step" + # fi + + # #---------------------------------------------------------------------------------------------- + # #------------------------------| MAX32665 |---------------------------------------------------- + # #---------------------------------------------------------------------------------------------- + + # # Checks if changes have been made to require a test on ME14 + # - name: Check MAX32665 + # id: MAX32665 + # env: + # MAX32665_BLE_FILES_CHANGED: false + # MAX32665_EXAMPLES_TO_TEST: () + # MAX32665_RUN_ALL_TEST: false + # MAX32665_DATS_CONNECTED_TEST: false + # MAX32665_OTAS_CONNECTED_TEST: false + + # run: | + + # # BLE examples to watch + # declare -a watched_examples=( + # # underscore in filter to ignore the BLE5_ctr examples + # Examples/MAX32665/Bluetooth/BLE_* + # Examples/MAX32665/Bluetooth/Bootloader + # ) + + # # Other directories to watch + # declare -a watched_other=( + # #To test changes this workflow push a commit with this uncommented + # #.github/workflows/ + # .github/workflows/ci-tests/Examples_tests + # Libraries/libs.mk + # # Bluetooth + # Libraries/BlePhy/MAX32665 + # Libraries/Cordio + # # Board specific + # Libraries/Boards/MAX32665 + # # Libraries + # Libraries/CMSIS/Device/Maxim/MAX32665 + # Libraries/PeriphDrivers/libPeriphDriver.mk + # Libraries/PeriphDrivers/periphdriver.mk + # Libraries/PeriphDrivers/max32665_files.mk + # # Flash controller + # Libraries/PeriphDrivers/Source/FLC/flc_common.c + # Libraries/PeriphDrivers/Source/FLC/flc_common.h + # Libraries/PeriphDrivers/Source/FLC/flc_me14.c + # Libraries/PeriphDrivers/Source/FLC/flc_reva.c + # Libraries/PeriphDrivers/Source/FLC/flc_reva.h + # # GPIO + # Libraries/PeriphDrivers/Source/GPIO/gpio_common.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_common.h + # Libraries/PeriphDrivers/Source/GPIO/gpio_me14.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_reva.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_reva.h + # # LowPower + # Libraries/PeriphDrivers/Source/LP/lp_me14.c + # # Simo + # Libraries/PeriphDrivers/Source/SIMO/simo_me14.c + # Libraries/PeriphDrivers/Source/SIMO/simo_reva_regs.h + # Libraries/PeriphDrivers/Source/SIMO/simo_.c + # Libraries/PeriphDrivers/Source/SIMO/simo_.h + # # System + # Libraries/PeriphDrivers/Source/SYS/mxc_assert.c + # Libraries/PeriphDrivers/Source/SYS/mxc_delay.c + # Libraries/PeriphDrivers/Source/SYS/mxc_lock.c + # Libraries/PeriphDrivers/Source/SYS/mxc_table.c + # Libraries/PeriphDrivers/Source/SYS/pins_me14.c + # Libraries/PeriphDrivers/Source/SYS/sys_me14.c + # # Timer + # Libraries/PeriphDrivers/Source/TMR/tmr_common.c + # Libraries/PeriphDrivers/Source/TMR/tmr_common.h + # Libraries/PeriphDrivers/Source/TMR/tmr_me14.c + # Libraries/PeriphDrivers/Source/TMR/tmr_reva_regs.h + # Libraries/PeriphDrivers/Source/TMR/tmr_reva.c + # Libraries/PeriphDrivers/Source/TMR/tmr_reva.h + # # TPU + # Libraries/PeriphDrivers/Source/TPU/tpu_me14.c + # Libraries/PeriphDrivers/Source/TPU/tpu_reva_regs.h + # Libraries/PeriphDrivers/Source/TPU/tpu_reva.c + # Libraries/PeriphDrivers/Source/TPU/tpu_reva.h + # # True Random Number Generator + # Libraries/PeriphDrivers/Source/TRNG/trng_me14.c + # Libraries/PeriphDrivers/Source/TRNG/trng_revb_regs.h + # Libraries/PeriphDrivers/Source/TRNG/trng_revb.c + # Libraries/PeriphDrivers/Source/TRNG/trng_revb.h + # # UART + # Libraries/PeriphDrivers/Source/UART/uart_common.c + # Libraries/PeriphDrivers/Source/UART/uart_common.h + # Libraries/PeriphDrivers/Source/UART/uart_me14.c + # Libraries/PeriphDrivers/Source/UART/uart_reva_regs.h + # Libraries/PeriphDrivers/Source/UART/uart_reva.c + # Libraries/PeriphDrivers/Source/UART/uart_reva.h + # # WakeUp Timer + # Libraries/PeriphDrivers/Source/WUT/wut_me14.c + # Libraries/PeriphDrivers/Source/WUT/wut_reva_regs.h + # Libraries/PeriphDrivers/Source/WUT/wut_reva.c + # Libraries/PeriphDrivers/Source/WUT/wut_reva_regs.h ) + + # # Directories to ignore + # declare -a ignored=( + # Libraries/Cordio/docs + # Documentation + + # ) + + # # Create an associative array for ignored() + # declare -A aignored=() + # for ignore in "${ignored[@]}"; do aignored["${ignore%/}"]=1; done + + # # Copy the working directory list, skipping entries in ignored() + # declare -a results_other=() + # for watch in "${watched_other[@]}"; do test -v aignored["${watch%/}"] || results_other+=("${watch%/}"); done + + # # Copy the working directory list, skipping entries in ignored() + # declare -a results_examples=() + # for watch in "${watched_examples[@]}"; do test -v aignored["${watch%/}"] || results_examples+=("${watch%/}"); done + + # # Print the resulting array, separated by newlines, in sorted order + # printf "\r\n-------- Watched Examples ------------\r\n\r\n" + # printf '%s\n' "${results_examples[@]}" | sort + # printf "\r\n-----------------------------------\r\n" + + # # Print the resulting array, separated by newlines, in sorted order + # printf "\r\n-------- Watched Other ------------\r\n\r\n" + # printf '%s\n' "${results_other[@]}" | sort + # printf "\r\n-----------------------------------\r\n" + + # #Get the diff from main + # CHANGE_FILES=$(git diff --ignore-submodules --name-only remotes/origin/main) + # # Assume we want to actually run the workflow if no files changed + # if [[ "$CHANGE_FILES" != "" ]]; then + # # Check if ALL test are required due to 'OTHER' non BLE example directory modified + # for watch_file in "${results_other[@]}"; do + # if [[ "$CHANGE_FILES" == *"$watch_file"* ]]; then + # MAX32665_RUN_ALL_TEST=true + # echo "MAX32665_RUN_ALL_TEST=true" >> $GITHUB_ENV + # echo "Enabled all tests to run because $watch_file was modified" + + # fi + # done + # # Check to see which examples have been modified to only test those + # for watch_file in "${results_examples[@]}"; do + # if [[ "$CHANGE_FILES" == *"$watch_file"* ]]; then + # MAX32665_BLE_FILES_CHANGED=true + # echo "MAX32665_BLE_FILES_CHANGED=true" >> $GITHUB_ENV + + # example_to_test=$(basename "$watch_file") + # # Store list of examples that need to be tested + # examples_list+=($example_to_test) + # echo "Enabled example tests to run because $watch_file was modified" + + # # If dats/c or OTAC/s were modified we should also test the connected functionality + # if [[ $example_to_test == "BLE_dats" ]] || [[ $example_to_test == "BLE_datc" ]]; then + # MAX32665_DATS_CONNECTED_TEST=true + # echo "MAX32665_DATS_CONNECTED_TEST=true" >> $GITHUB_ENV + # echo "Enabled Datsc connected test" + # fi + # if [[ $example_to_test == "BLE_otas" ]] || [[ $example_to_test == "BLE_otac" ]]; then + # MAX32665_OTAS_CONNECTED_TEST=true + # echo "MAX32665_OTAS_CONNECTED_TEST=true" >> $GITHUB_ENV + # echo "Enabled OTA connected test" + # fi + + # fi + # done + # # Save examples list to env varaible available across steps + # echo "MAX32665_EXAMPLES_TO_TEST=${examples_list[@]}" >> $GITHUB_ENV + # else + # # Assume we want to actually run the workflow if no files changed + # MAX32665_RUN_ALL_TEST=true + # echo "MAX32665_RUN_ALL_TEST=true" >> $GITHUB_ENV + # fi + # # Lock main board and DUT if any connected test is required otherwise just lock DUT + # if [[ $MAX32665_OTAS_CONNECTED_TEST == 'true' ]] || [[ $MAX32665_DATS_CONNECTED_TEST == 'true' ]] || [[ $MAX32665_RUN_ALL_TEST == 'true' ]]; then + # echo "LOCK_MAX32655_B1=true" >> $GITHUB_ENV + # echo "LOCK_MAX32665_B1=true" >> $GITHUB_ENV + # elif [[ $MAX32665_BLE_FILES_CHANGED == 'true' ]]; then + # echo "LOCK_MAX32665_B1=true" >> $GITHUB_ENV + # else + # echo "no tests enabled, NOT locking anything at this step" + # fi + + # #---------------------------------------------------------------------------------------------- + # #------------------------------| MAX32690 |---------------------------------------------------- + # #---------------------------------------------------------------------------------------------- + + # # Checks if changes have been made to require a test on ME14 + # - name: Check MAX32690 + # id: MAX32690 + # env: + # MAX32690_BLE_FILES_CHANGED: false + # MAX32690_EXAMPLES_TO_TEST: () + # MAX32690_RUN_ALL_TEST: false + # MAX32690_DATS_CONNECTED_TEST: false + # MAX32690_OTAS_CONNECTED_TEST: false + + # run: | + + # # BLE examples to watch + # declare -a watched_examples=( + # # underscore in filter to ignore the BLE5_ctr examples + # Examples/MAX32690/Bluetooth/BLE_* + # Examples/MAX32690/Bluetooth/Bootloader + # ) + + # # Other directories to watch + # declare -a watched_other=( + # #To test changes this workflow push a commit with this uncommented + # #.github/workflows/ + # .github/workflows/ci-tests/Examples_tests + # Libraries/libs.mk + # # Bluetooth + # Libraries/BlePhy/MAX32690 + # Libraries/Cordio + # # Board specific + # Libraries/Boards/MAX32690 + # # Libraries + # Libraries/CMSIS/Device/Maxim/MAX32690 + # Libraries/PeriphDrivers/libPeriphDriver.mk + # Libraries/PeriphDrivers/periphdriver.mk + # Libraries/PeriphDrivers/max32690_files.mk + # # AES + # Libraries/PeriphDrivers/Source/AES/aes_me18.c + # Libraries/PeriphDrivers/Source/AES/aes_revb_regs.h + # Libraries/PeriphDrivers/Source/AES/aes_revb.c + # Libraries/PeriphDrivers/Source/AES/aes_revb.h + # Libraries/PeriphDrivers/Source/AES/aeskeys_revb_regs.h + # # Flash controller + # Libraries/PeriphDrivers/Source/FLC/flc_common.c + # Libraries/PeriphDrivers/Source/FLC/flc_common.h + # Libraries/PeriphDrivers/Source/FLC/flc_me18.c + # Libraries/PeriphDrivers/Source/FLC/flc_reva.c + # Libraries/PeriphDrivers/Source/FLC/flc_reva.h + # # GPIO + # Libraries/PeriphDrivers/Source/GPIO/gpio_common.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_common.h + # Libraries/PeriphDrivers/Source/GPIO/gpio_me18.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_reva.c + # Libraries/PeriphDrivers/Source/GPIO/gpio_reva.h + # # LowPower + # Libraries/PeriphDrivers/Source/LP/lp_me18.c + # # System + # Libraries/PeriphDrivers/Source/SYS/mxc_assert.c + # Libraries/PeriphDrivers/Source/SYS/mxc_delay.c + # Libraries/PeriphDrivers/Source/SYS/mxc_lock.c + # Libraries/PeriphDrivers/Source/SYS/mxc_table.c + # Libraries/PeriphDrivers/Source/SYS/pins_me18.c + # Libraries/PeriphDrivers/Source/SYS/sys_me18.c + # # Timer + # Libraries/PeriphDrivers/Source/TMR/tmr_common.c + # Libraries/PeriphDrivers/Source/TMR/tmr_common.h + # Libraries/PeriphDrivers/Source/TMR/tmr_me18.c + # Libraries/PeriphDrivers/Source/TMR/tmr_revb_regs.h + # Libraries/PeriphDrivers/Source/TMR/tmr_revb.c + # Libraries/PeriphDrivers/Source/TMR/tmr_revb.h + # # True Random Number Generator + # Libraries/PeriphDrivers/Source/CTB/ctb_common.c + # Libraries/PeriphDrivers/Source/CTB/ctb_common.h + # Libraries/PeriphDrivers/Source/CTB/ctb_me18.c + # Libraries/PeriphDrivers/Source/CTB/ctb_reva_regs.h + # Libraries/PeriphDrivers/Source/CTB/ctb_reva.c + # Libraries/PeriphDrivers/Source/CTB/ctb_reva.h + # Libraries/PeriphDrivers/Source/CTB/trng_reva_regs.h + # # UART + # Libraries/PeriphDrivers/Source/UART/uart_common.c + # Libraries/PeriphDrivers/Source/UART/uart_common.h + # Libraries/PeriphDrivers/Source/UART/uart_me18.c + # Libraries/PeriphDrivers/Source/UART/uart_revb_regs.h + # Libraries/PeriphDrivers/Source/UART/uart_revb.c + # Libraries/PeriphDrivers/Source/UART/uart_revb.h + # # WakeUp Timer + # Libraries/PeriphDrivers/Source/WUT/wut_me18.c + # Libraries/PeriphDrivers/Source/WUT/wut_reva_regs.h + # Libraries/PeriphDrivers/Source/WUT/wut_reva.c + # Libraries/PeriphDrivers/Source/WUT/wut_reva_regs.h ) + + # # Directories to ignore + # declare -a ignored=( + # Libraries/Cordio/docs + # Documentation + + # ) + + # # Create an associative array for ignored() + # declare -A aignored=() + # for ignore in "${ignored[@]}"; do aignored["${ignore%/}"]=1; done + + # # Copy the working directory list, skipping entries in ignored() + # declare -a results_other=() + # for watch in "${watched_other[@]}"; do test -v aignored["${watch%/}"] || results_other+=("${watch%/}"); done + + # # Copy the working directory list, skipping entries in ignored() + # declare -a results_examples=() + # for watch in "${watched_examples[@]}"; do test -v aignored["${watch%/}"] || results_examples+=("${watch%/}"); done + + # # Print the resulting array, separated by newlines, in sorted order + # printf "\r\n-------- Watched Examples ------------\r\n\r\n" + # printf '%s\n' "${results_examples[@]}" | sort + # printf "\r\n-----------------------------------\r\n" + + # # Print the resulting array, separated by newlines, in sorted order + # printf "\r\n-------- Watched Other ------------\r\n\r\n" + # printf '%s\n' "${results_other[@]}" | sort + # printf "\r\n-----------------------------------\r\n" + + # #Get the diff from main + # CHANGE_FILES=$(git diff --ignore-submodules --name-only remotes/origin/main) + # # Assume we want to actually run the workflow if no files changed + # if [[ "$CHANGE_FILES" != "" ]]; then + # # Check if ALL test are required due to 'OTHER' non BLE example directory modified + # for watch_file in "${results_other[@]}"; do + # if [[ "$CHANGE_FILES" == *"$watch_file"* ]]; then + # MAX32690_RUN_ALL_TEST=true + # echo "MAX32690_RUN_ALL_TEST=true" >> $GITHUB_ENV + # echo "Enabled all tests to run because $watch_file was modified" + + # fi + # done + # # Check to see which examples have been modified to only test those + # for watch_file in "${results_examples[@]}"; do + # if [[ "$CHANGE_FILES" == *"$watch_file"* ]]; then + # MAX32690_BLE_FILES_CHANGED=true + # echo "MAX32690_BLE_FILES_CHANGED=true" >> $GITHUB_ENV + + # example_to_test=$(basename "$watch_file") + # # Store list of examples that need to be tested + # examples_list+=($example_to_test) + # echo "Enabled example tests to run because $watch_file was modified" + + # # If dats/c or OTAC/s were modified we should also test the connected functionality + # if [[ $example_to_test == "BLE_dats" ]] || [[ $example_to_test == "BLE_datc" ]]; then + # MAX32690_DATS_CONNECTED_TEST=true + # echo "MAX32690_DATS_CONNECTED_TEST=true" >> $GITHUB_ENV + # echo "Enabled Datsc connected test" + # fi + # if [[ $example_to_test == "BLE_otas" ]] || [[ $example_to_test == "BLE_otac" ]]; then + # MAX32690_OTAS_CONNECTED_TEST=true + # echo "MAX32690_OTAS_CONNECTED_TEST=true" >> $GITHUB_ENV + # echo "Enabled OTA connected test" + # fi + + # fi + # done + # # Save examples list to env varaible available across steps + # echo "MAX32690_EXAMPLES_TO_TEST=${examples_list[@]}" >> $GITHUB_ENV + # else + # # Assume we want to actually run the workflow if no files changed + # MAX32690_RUN_ALL_TEST=true + # echo "MAX32690_RUN_ALL_TEST=true" >> $GITHUB_ENV + # fi + # # Lock main board and DUT if any connected test is required otherwise just lock DUT + # if [[ $MAX32690_OTAS_CONNECTED_TEST == 'true' ]] || [[ $MAX32690_DATS_CONNECTED_TEST == 'true' ]] || [[ $MAX32690_RUN_ALL_TEST == 'true' ]]; then + # echo "LOCK_MAX32655_B1=true" >> $GITHUB_ENV + # echo "LOCK_MAX32690_B1=true" >> $GITHUB_ENV + # elif [[ $MAX32690_BLE_FILES_CHANGED == 'true' ]]; then + # echo "LOCK_MAX32690_B1=true" >> $GITHUB_ENV + # else + # echo "no tests enabled, NOT locking anything at this step" + # fi + + # #---------------------------------------------------------------------------------------------- + # #------------------------------| Lock all required boards at once |----------------------------- + # #---------------------------------------------------------------------------------------------- + # - name: Lock Boards + # if: env.LOCK_MAX32655_B1 == 'true' || env.LOCK_MAX32655_B2 == 'true' || env.LOCK_MAX32665_B1 == 'true' || env.LOCK_MAX32690_B1 == 'true' + # id: lock_boards + # run: | + # printenv + + # resource_manager.py -l max32655_board1 max32655_board2 max32665_board1 max32690_board_w1 -t 3600 + + + # #---------------------------------------------------------------------------------------------- + # #------------------------------| Erase all required boards at once |----------------------------- + # #---------------------------------------------------------------------------------------------- + # - name: Erase Boards + # if: steps.lock_boards.outcome == 'success' + # id: erase_boards + # run: | + # echo $OPENOCD_PATH + # ocderase max32655_board1 + # ocderase max32655_board2 + # ocderase max32665_board1 + # ocderase max32690_board_w1 + + # #---------------------------------------------------------------------------------------------- + + # #---------------------------------------------------------------------------------------------- + # #---------------------------------------------------------------------------------------------- + # #------------------------------| Test all required boards at once |----------------------------- + # #---------------------------------------------------------------------------------------------- + # - name: Test OTAS MAX32655 + # # if: env.MAX32655_OTAS_CONNECTED_TEST = 'true' + # uses: Analog-Devices-MSDK/btm-ci-scripts/actions/otas-test@main + # with: + # board_client: 'max32655_board1' + # board_server: 'max32655_board2' + + # - name: Test OTAS MAX32665 + # # if: env.MAX32655_OTAS_CONNECTED_TEST = 'true' + # uses: Analog-Devices-MSDK/btm-ci-scripts/actions/otas-test@main + # with: + # board_client: 'max32665_board1' + # board_server: 'max32655_board2' + + # - name: Test OTAS MAX32690 + # # if: env.MAX32655_OTAS_CONNECTED_TEST = 'true' + # uses: Analog-Devices-MSDK/btm-ci-scripts/actions/otas-test@main + # with: + # board_client: 'max32690_board_w1' + # board_server: 'max32655_board2' + + # # - name: Test MAX32655 #name used for display purposes on github webpage + # # if: steps.lock_boards.outcome == 'success' && env.LOCK_MAX32655_B2 == 'true' + # # id: Test_MAX32655 #id used to reference this step in other parts of the yml + # # run: | + + + + # # echo + # # echo + # # echo "Examples to be tested : ${examples_to_test[@]}" + # # echo "MAX32655_RUN_ALL_TEST : $MAX32655_RUN_ALL_TEST" + # # echo "MAX32655_DATS_CONNECTED_TEST : $MAX32655_DATS_CONNECTED_TEST " + # # echo "MAX32655_OTAS_CONNECTED_TEST : $MAX32655_OTAS_CONNECTED_TEST" + # # echo "MAX32655_BLE_FILES_CHANGED : $MAX32655_BLE_FILES_CHANGED " + # # echo "LOCK_MAX32655_B2 : $LOCK_MAX32655_B2 " + + # # BOARD_SERVER="max32690_board_w1" + # # BOARD_CLIENT="max32690_b1" + # # DATC_DIR=Examples/MAX32690/Bluetooth/BLE_datc + # # DATS_DIR=Examples/MAX32690/Bluetooth/BLE_dats + # # OTAS_DIR=Examples/MAX32690/Bluetooth/BLE_otas + # # OTAC_DIR=Examples/MAX32690/Bluetooth/BLE_otac + # # make -C $DATC_DIR + # # make -C $DATS_DIR + # # make -C $OTAS_DIR + # # make -C $OTAC_DIR + + # # DATS_FILE=$DATS_DIR/build/max32690.elf + # # DATC_FILE=$DATC_DIR/build/max32690.elf + # # OTAS_FILE=$OTAS_DIR/build/max32690.elf + # # OTAC_FILE=$OTAC_DIR/build/max32690.elf + + # # echo "Testing all examples" + # # set +e + + # # connectedTests=$(datsc_connected.py $BOARD_SERVER $BOARD_CLIENT $DATS_DIR $DATC_DIR) + # # let "testResult=$?" + # # if [ "$testResult" -ne "0" ]; then + # # # update failed test count + # # let "numOfFailedTests+=$testResult" + # # fi + + # # otasTest=$(otas_connected.py $BOARD_SERVER $BOARD_CLIENT $OTAS_DIR $OTAC_DIR) + + # # let "testResult=$?" + # # if [ "$testResult" -ne "0" ]; then + # # # update failed test count + # # let "numOfFailedTests+=$testResult" + # # fi + # # set -e + + + + # # echo "==============================================================================" + # # echo "==============================================================================" + + # # if [[ $numOfFailedTests -ne 0 ]]; then + # # printf "Test completed with $numOfFailedTests failed tests located in: \r\n $failedTestList" + # # else + # # echo "Relax! ALL TESTS PASSED" + # # fi + # # echo + # # echo "==============================================================================" + # # echo "==============================================================================" + # # echo + + + # # exit $numOfFailedTests + # #---------------------------------------------------------------------------------------------- + # # - name: Test MAX32665 #name used for display purposes on github webpage + # # if: steps.lock_boards.outcome == 'success' && env.LOCK_MAX32665_B1 == 'true' + # # id: Test_MAX32665 #id used to reference this step in other parts of the yml + # # run: | + # # FILE=/home/$USER/Workspace/Resource_Share/boards_config.json + # # dut_uart=$(/usr/bin/python3 -c "import sys, json; print(json.load(open('$FILE'))['max32665_board1']['uart1'])") + # # dut_serial=$(/usr/bin/python3 -c "import sys, json; print(json.load(open('$FILE'))['max32665_board1']['daplink'])") + # # examples_to_test=(${MAX32665_EXAMPLES_TO_TEST[@]}) + # # echo + # # echo + # # echo "Examples to be tested : ${examples_to_test[@]}" + # # echo "MAX32665_RUN_ALL_TEST : $MAX32665_RUN_ALL_TEST" + # # echo "MAX32665_DATS_CONNECTED_TEST : $MAX32665_DATS_CONNECTED_TEST " + # # echo "MAX32665_OTAS_CONNECTED_TEST : $MAX32665_OTAS_CONNECTED_TEST" + # # echo "MAX32665_BLE_FILES_CHANGED : $MAX32665_BLE_FILES_CHANGED " + # # echo "LOCK_MAX32665_B1 : $LOCK_MAX32665_B1 " + + # # cd .github/workflows/scripts + + # # if [[ $MAX32665_RUN_ALL_TEST == 'true' ]]; then + # # echo "Testing all examples" + # # set +e + # # ./test_launcher.sh max32665 $dut_uart $dut_serial "all" + # # let "testResult=$?" + # # if [ "$testResult" -ne "0" ]; then + # # # update failed test count + # # let "numOfFailedTests+=$testResult" + # # fi + # # set -e + # # else + # # if [[ $MAX32665_BLE_FILES_CHANGED == 'true' ]]; then + # # #------non connected tests--------- + # # for example in "${examples_to_test[@]}"; do + # # # launch single tests + # # echo "Running $example test on MAX32665" + # # set +e + # # ./test_launcher.sh max32665 $dut_uart $dut_serial $example + # # let "testResult=$?" + # # if [ "$testResult" -ne "0" ]; then + # # # update failed test count + # # let "numOfFailedTests+=$testResult" + # # failedTestList+="| $example" + # # fi + # # set -e + # # done + + # # #------connected tests--------- + # # if [[ $MAX32665_DATS_CONNECTED_TEST == 'true' ]]; then + # # #conencted test launcher + # # echo "Testing MAX32665_DATS_CONNECTED_TEST" + # # set +e + # # ./test_launcher.sh max32665 $dut_uart $dut_serial "dats" + # # let "testResult=$?" + # # if [ "$testResult" -ne "0" ]; then + # # # update failed_test count + # # let "numOfFailedTests+=$testResult" + # # failedTestList+="| MAX32665 Dats/c" + # # fi + # # set -e + + # # fi + # # #------connected tests--------- + # # if [[ $MAX32665_OTAS_CONNECTED_TEST == 'true' ]]; then + # # #conencted test launcher + # # echo "Testing MAX32665_OTAS_CONNECTED_TEST" + # # set +e + # # #call test here + # # #***************** uncomment actual test here ************* + # # ./test_launcher.sh max32665 $dut_uart $dut_serial "ota" + # # let "testResult=$?" + # # if [ "$testResult" -ne "0" ]; then + # # # update failed test count + # # let "numOfFailedTests+=$testResult" + # # failedTestList+="| MAX32665 OTAS/C" + # # fi + # # set -e + # # fi + # # else + # # echo "Skipping all tests" + # # fi + # # echo "==============================================================================" + # # echo "==============================================================================" + + # # if [[ $numOfFailedTests -ne 0 ]]; then + # # printf "Test completed with $numOfFailedTests failed tests located in: \r\n $failedTestList" + # # else + # # echo "Relax! ALL TESTS PASSED" + # # fi + # # echo + # # echo "==============================================================================" + # # echo "==============================================================================" + # # echo + # # fi + # # exit $numOfFailedTests + # #---------------------------------------------------------------------------------------------- + # # - name: Test MAX32690 #name used for display purposes on github webpage + # # if: steps.lock_boards.outcome == 'success' && env.LOCK_MAX32690_B1 == 'true' + # # id: Test_MAX32690 #id used to reference this step in other parts of the yml + # # run: | + + + # # echo "Examples to be tested : ${examples_to_test[@]}" + # # echo "MAX32690_RUN_ALL_TEST : $MAX32690_RUN_ALL_TEST" + # # echo "MAX32690_DATS_CONNECTED_TEST : $MAX32690_DATS_CONNECTED_TEST " + # # echo "MAX32690_OTAS_CONNECTED_TEST : $MAX32690_OTAS_CONNECTED_TEST" + # # echo "MAX32690_BLE_FILES_CHANGED : $MAX32690_BLE_FILES_CHANGED " + # # echo "LOCK_MAX32690_B1 : $LOCK_MAX32690_B1 " + + + # # BOARD_SERVER="max32690_board_w1" + # # BOARD_CLIENT="max32690_b1" + # # DATC_DIR=Examples/MAX32690/Bluetooth/BLE_datc + # # DATS_DIR=Examples/MAX32690/Bluetooth/BLE_dats + # # OTAS_DIR=Examples/MAX32690/Bluetooth/BLE_otas + # # OTAC_DIR=Examples/MAX32690/Bluetooth/BLE_otac + # # make -C $DATC_DIR + # # make -C $DATS_DIR + # # make -C $OTAS_DIR + # # make -C $OTAC_DIR + + # # DATS_FILE=$DATS_DIR/build/max32690.elf + # # DATC_FILE=$DATC_DIR/build/max32690.elf + # # OTAS_FILE=$OTAS_DIR/build/max32690.elf + # # OTAC_FILE=$OTAC_DIR/build/max32690.elf + + # # echo "Testing all examples" + # # set +e + + # # connectedTests=$(datsc_connected.py $BOARD_SERVER $BOARD_CLIENT $DATS_DIR $DATC_DIR) + # # let "testResult=$?" + # # if [ "$testResult" -ne "0" ]; then + # # # update failed test count + # # let "numOfFailedTests+=$testResult" + # # fi + + # # otasTest=$(otas_connected.py $BOARD_SERVER $BOARD_CLIENT $OTAS_DIR $OTAC_DIR) + + # # let "testResult=$?" + # # if [ "$testResult" -ne "0" ]; then + # # # update failed test count + # # let "numOfFailedTests+=$testResult" + # # fi + # # set -e + + # # echo "==============================================================================" + # # echo "==============================================================================" + + # # if [[ $numOfFailedTests -ne 0 ]]; then + # # printf "Test completed with $numOfFailedTests failed tests located in: \r\n $failedTestList" + # # else + # # echo "Relax! ALL TESTS PASSED" + # # fi + # # echo + # # echo "==============================================================================" + # # echo "==============================================================================" + # # echo + # # fi + + # # exit $numOfFailedTests + # #---------------------------------------------------------------------------------------------- + # #---------------------------------------------------------------------------------------------- + # #------------------------------| Erase & Unlock all required boards at once |----------------------------- + # #---------------------------------------------------------------------------------------------- + # - name: Clean up + # if: ${{ always() && steps.lock_boards.outcome == 'success'}} + # run: | + + + # git clean -ffdx + # git reset --hard + # ocderase max32655_board1 + # ocderase max32655_board2 + # ocderase max32665_board1 + # ocderase max32690_board_w1 + + + # - name: Unlock Boards + # if: ${{ always() && steps.lock_boards.outcome == 'success'}} + # run: | + + # echo $SHELL + # ls /usr/bin | grep resource + # which resource_manager.py + # resource_manager.py -u max32655_board1 max32655_board2 max32665_board1 max32690_board_w1 + # #---------------------------------------------------------------------------------------------- + # # Save test reports + # - uses: actions/upload-artifact@v3 + # if: failure() + # with: + # name: failure-report + # path: .github/workflows/ci-tests/Examples_tests/results/