Skip to content

BLE Examples Test

BLE Examples Test #1

###############################################################################
#
# 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/