#!/usr/bin/env bash getMultiVersion() { MAJOR_VERSION=$(grep "VERSION_MAJOR" "Multiprotocol/Multiprotocol.h" | awk -v N=3 '{gsub(/\r/,""); print $N}') MINOR_VERSION=$(grep "VERSION_MINOR" "Multiprotocol/Multiprotocol.h" | awk -v N=3 '{gsub(/\r/,""); print $N}') REVISION_VERSION=$(grep "VERSION_REVISION" "Multiprotocol//Multiprotocol.h" | awk -v N=3 '{gsub(/\r/,""); print $N}') PATCH_VERSION=$(grep "VERSION_PATCH" "Multiprotocol//Multiprotocol.h" | awk -v N=3 '{gsub(/\r/,""); print $N}') MULTI_VERSION=$MAJOR_VERSION.$MINOR_VERSION.$REVISION_VERSION.$PATCH_VERSION } getAllRFModules() { if [[ "$BOARD" =~ ":avr:multixmega32d4" ]]; then ALL_RFMODULES=$(echo CYRF6936_INSTALLED); elif [[ "$BOARD" =~ ":avr:multiatmega328p:" ]]; then ALL_RFMODULES=$(echo A7105_INSTALLED CYRF6936_INSTALLED CC2500_INSTALLED NRF24L01_INSTALLED); elif [[ "$BOARD" =~ ":STM32F1:" ]]; then ALL_RFMODULES=$(echo A7105_INSTALLED CYRF6936_INSTALLED CC2500_INSTALLED NRF24L01_INSTALLED SX1276_INSTALLED); fi } getAllProtocols() { A7105_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_A7105_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) CC2500_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_CC2500_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) CYRF6936_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_CYRF6936_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) NRF24L01_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_NRF24L01_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) CCNRF_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_CCNRF_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) SX1276_PROTOCOLS=$(sed -n 's/[\/\/]*[[:blank:]]*#define[[:blank:]]*\([[:alnum:]_]*_SX1276_INO\)\(.*\)/\1/p' Multiprotocol/_Config.h) if [[ "$BOARD" =~ ":avr:multixmega32d4" ]]; then ALL_PROTOCOLS=$(echo $CYRF6936_PROTOCOLS); elif [[ "$BOARD" =~ ":avr:multiatmega328p:" ]]; then ALL_PROTOCOLS=$(echo $A7105_PROTOCOLS $CC2500_PROTOCOLS $CYRF6936_PROTOCOLS $NRF24L01_PROTOCOLS $CCNRF_PROTOCOLS); elif [[ "$BOARD" =~ ":STM32F1:" ]]; then ALL_PROTOCOLS=$(echo $A7105_PROTOCOLS $CC2500_PROTOCOLS $CYRF6936_PROTOCOLS $NRF24L01_PROTOCOLS $CCNRF_PROTOCOLS $SX1276_PROTOCOLS); fi } buildMulti() { echo ::group::_Config.h git diff Multiprotocol/_Config.h echo ::endgroup:: BUILDCMD="arduino-cli compile -b $BOARD ${GITHUB_WORKSPACE}/Multiprotocol/Multiprotocol.ino --build-path ${GITHUB_WORKSPACE}/build/"; echo $BUILDCMD; $BUILDCMD return $? } buildProtocol() { exitcode=0; opt_disable $ALL_PROTOCOLS; opt_enable $1; buildMulti; if [ $? -ne 0 ]; then exitcode=1; fi; return $exitcode; } buildEachProtocol() { exitcodesum=0; for PROTOCOL in $ALL_PROTOCOLS ; do printf "\e[33;1mBuilding $PROTOCOL\e[0m\n"; buildProtocol $PROTOCOL; if [ $? -ne 0 ]; then exitcodesum=$((exitcodesum + 1)); fi; done; return $exitcodesum; } buildRFModule() { exitcode=0; opt_disable $ALL_RFMODULES; opt_enable $1; buildMulti; if [ $? -ne 0 ]; then exitcode=1; fi; return $exitcode; } buildEachRFModule() { exitcodesum=0; for RFMODULE in $ALL_RFMODULES; do printf "\e[33;1mBuilding $RFMODULE\e[0m\n"; buildRFModule $RFMODULE; if [ $? -ne 0 ]; then exitcodesum=$((exitcodesum + 1)); fi; done; return $exitcodesum; } buildReleaseFiles(){ if [[ "$BOARD" =~ ":avr:multixmega32d4" ]]; then build_release_orx; build_release_extras; elif [[ "$BOARD" =~ ":avr:multiatmega328p:bootloader=none" ]]; then build_release_avr_noboot; elif [[ "$BOARD" =~ ":avr:multiatmega328p:bootloader=optiboot" ]]; then build_release_avr_optiboot; elif [[ "$BOARD" =~ ":STM32F1:multistm32f103cb:debug_option=none" ]]; then build_release_stm32f1_no_debug; elif [[ "$BOARD" =~ ":STM32F1:multistm32f103cb:debug_option=native" ]]; then build_release_stm32f1_native_debug; elif [[ "$BOARD" =~ ":STM32F1:multistm32f103cb:debug_option=ftdi" ]]; then build_release_stm32f1_serial_debug; elif [[ "$BOARD" =~ ":STM32F1:multi5in1t18int" ]]; then build_release_stm32f1_t18int; elif [[ "$BOARD" =~ ":STM32F1:multistm32f103c8:debug_option=none" ]]; then build_release_stm32f1_64k; else printf "No release files for this board."; fi }