7e1a4940ac
Can start heater if high humidity Altitude reported to heater per BMP180 in OEM controllers. lowered min Hz limit to 500
133 lines
3.6 KiB
Bash
133 lines
3.6 KiB
Bash
#!/bin/bash
|
|
|
|
echo "Installing Python Wheel ..."
|
|
pip install wheel > /dev/null 2>&1
|
|
|
|
echo "Installing PlatformIO ..."
|
|
pip install -U platformio > /dev/null 2>&1
|
|
|
|
echo "PlatformIO has been installed"
|
|
echo ""
|
|
|
|
|
|
function build_pio_sketch(){ # build_pio_sketch <board> <path-to-ino>
|
|
if [ "$#" -lt 2 ]; then
|
|
echo "ERROR: Illegal number of parameters"
|
|
echo "USAGE: build_pio_sketch <board> <path-to-ino>"
|
|
return 1
|
|
fi
|
|
|
|
local board="$1"
|
|
local sketch="$2"
|
|
local sketch_dir=$(dirname "$sketch")
|
|
echo ""
|
|
echo "Compiling '"$(basename "$sketch")"' ..."
|
|
python -m platformio ci -l '.' --board "$board" "$sketch_dir" --project-option="board_build.partitions = huge_app.csv"
|
|
}
|
|
|
|
function count_sketches() # count_sketches <examples-path>
|
|
{
|
|
local examples="$1"
|
|
rm -rf sketches.txt
|
|
if [ ! -d "$examples" ]; then
|
|
touch sketches.txt
|
|
return 0
|
|
fi
|
|
local sketches=$(find $examples -name *.ino)
|
|
local sketchnum=0
|
|
for sketch in $sketches; do
|
|
local sketchdir=$(dirname $sketch)
|
|
local sketchdirname=$(basename $sketchdir)
|
|
local sketchname=$(basename $sketch)
|
|
if [[ "${sketchdirname}.ino" != "$sketchname" ]]; then
|
|
continue
|
|
fi;
|
|
if [[ -f "$sketchdir/.test.skip" ]]; then
|
|
continue
|
|
fi
|
|
echo $sketch >> sketches.txt
|
|
sketchnum=$(($sketchnum + 1))
|
|
done
|
|
return $sketchnum
|
|
}
|
|
|
|
function build_pio_sketches() # build_pio_sketches <board> <examples-path> <chunk> <total-chunks>
|
|
{
|
|
if [ "$#" -lt 2 ]; then
|
|
echo "ERROR: Illegal number of parameters"
|
|
echo "USAGE: build_pio_sketches <board> <examples-path> [<chunk> <total-chunks>]"
|
|
return 1
|
|
fi
|
|
|
|
local board=$1
|
|
local examples=$2
|
|
local chunk_idex=$3
|
|
local chunks_num=$4
|
|
|
|
if [ "$#" -lt 4 ]; then
|
|
chunk_idex="0"
|
|
chunks_num="1"
|
|
fi
|
|
|
|
if [ "$chunks_num" -le 0 ]; then
|
|
echo "ERROR: Chunks count must be positive number"
|
|
return 1
|
|
fi
|
|
if [ "$chunk_idex" -ge "$chunks_num" ]; then
|
|
echo "ERROR: Chunk index must be less than chunks count"
|
|
return 1
|
|
fi
|
|
|
|
set +e
|
|
count_sketches "$examples"
|
|
local sketchcount=$?
|
|
set -e
|
|
local sketches=$(cat sketches.txt)
|
|
rm -rf sketches.txt
|
|
|
|
local chunk_size=$(( $sketchcount / $chunks_num ))
|
|
local all_chunks=$(( $chunks_num * $chunk_size ))
|
|
if [ "$all_chunks" -lt "$sketchcount" ]; then
|
|
chunk_size=$(( $chunk_size + 1 ))
|
|
fi
|
|
|
|
local start_index=$(( $chunk_idex * $chunk_size ))
|
|
if [ "$sketchcount" -le "$start_index" ]; then
|
|
echo "Skipping job"
|
|
return 0
|
|
fi
|
|
|
|
local end_index=$(( $(( $chunk_idex + 1 )) * $chunk_size ))
|
|
if [ "$end_index" -gt "$sketchcount" ]; then
|
|
end_index=$sketchcount
|
|
fi
|
|
|
|
local start_num=$(( $start_index + 1 ))
|
|
echo "Found $sketchcount Sketches";
|
|
echo "Chunk Count : $chunks_num"
|
|
echo "Chunk Size : $chunk_size"
|
|
echo "Start Sketch: $start_num"
|
|
echo "End Sketch : $end_index"
|
|
|
|
local sketchnum=0
|
|
for sketch in $sketches; do
|
|
local sketchdir=$(dirname $sketch)
|
|
local sketchdirname=$(basename $sketchdir)
|
|
local sketchname=$(basename $sketch)
|
|
if [ "${sketchdirname}.ino" != "$sketchname" ] \
|
|
|| [ -f "$sketchdir/.test.skip" ]; then
|
|
continue
|
|
fi
|
|
sketchnum=$(($sketchnum + 1))
|
|
if [ "$sketchnum" -le "$start_index" ] \
|
|
|| [ "$sketchnum" -gt "$end_index" ]; then
|
|
continue
|
|
fi
|
|
build_pio_sketch "$board" "$sketch"
|
|
local result=$?
|
|
if [ $result -ne 0 ]; then
|
|
return $result
|
|
fi
|
|
done
|
|
return 0
|
|
}
|