|
@@ -0,0 +1,120 @@
|
|
|
+#!/bin/bash
|
|
|
+
|
|
|
+# ================================================================================
|
|
|
+# Script for use on build server for generating scripts and documentation that can be distributed with
|
|
|
+# the release bundle
|
|
|
+# ================================================================================
|
|
|
+
|
|
|
+# Location of partitions.csv relative to this script
|
|
|
+partitionsCsv="./partitions.csv"
|
|
|
+
|
|
|
+mkdir -p ./build
|
|
|
+
|
|
|
+# File to output readme instructions to
|
|
|
+outputReadme="./build/README.txt"
|
|
|
+
|
|
|
+# File to output bash script to
|
|
|
+outputBashScript="./build/writeSequeezeEsp.sh"
|
|
|
+
|
|
|
+# File to output bat script to
|
|
|
+outputBatScript="./build/writeSequeezeEsp.bat"
|
|
|
+
|
|
|
+# The name of partitions to ignore from partitions.csv
|
|
|
+paritionsToIgnore=(
|
|
|
+ "nvs"
|
|
|
+ "phy_init"
|
|
|
+)
|
|
|
+
|
|
|
+# Function that maps partition name to actual bin file
|
|
|
+# defaults to "[PARTION_NAME_FROM_CSV].bin"
|
|
|
+function partitionNameToBinFile {
|
|
|
+ if [[ "$1" == "otadata" ]]; then
|
|
|
+ echo "ota_data_initial.bin"
|
|
|
+ elif [[ "$1" == "ota_0" ]]; then
|
|
|
+ echo "squeezelite.bin"
|
|
|
+ else
|
|
|
+ echo $1.bin
|
|
|
+ fi
|
|
|
+}
|
|
|
+
|
|
|
+# write parameters for esptool.py
|
|
|
+writeParameters="$writeParameters write_flash"
|
|
|
+writeParameters="$writeParameters --flash_mode dio --flash_freq 80m --flash_size detect"
|
|
|
+
|
|
|
+# bootloader.bin and partitions.bin not in partitions.csv so manually add here
|
|
|
+partitionsParameters=" 0x1000 bootloader/bootloader.bin"
|
|
|
+partitionsParameters="$partitionsParameters 0x8000 partitions.bin"
|
|
|
+
|
|
|
+# ==============================================================================
|
|
|
+
|
|
|
+# Loop over partitions.csv and add partition bins and offsets to partitionsParameters
|
|
|
+{
|
|
|
+ read;
|
|
|
+ read;
|
|
|
+ while read -r line
|
|
|
+ do
|
|
|
+ partitionName=$(echo $line | awk -F', ' '{printf "%s", $1}' | tr -d '"')
|
|
|
+ partitionOffset=$(echo $line | awk -F', ' '{printf "%s", $4}' | tr -d '"')
|
|
|
+ partitionFile=$(partitionNameToBinFile $partitionName)
|
|
|
+
|
|
|
+ if [[ " ${paritionsToIgnore[@]} " =~ " ${partitionName} " ]]; then
|
|
|
+ continue
|
|
|
+ fi
|
|
|
+
|
|
|
+ partitionsParameters="$partitionsParameters $partitionOffset $partitionFile"
|
|
|
+ done
|
|
|
+} < $partitionsCsv
|
|
|
+
|
|
|
+# Write README Instructions
|
|
|
+if [ ! -f "$outputReadme" ]; then
|
|
|
+ touch $outputReadme
|
|
|
+fi
|
|
|
+
|
|
|
+echo "" >> $outputReadme
|
|
|
+echo "Below you'll find details on how to flash squeezelite-esp on different platforms" >> $outputReadme
|
|
|
+echo "In all cases your squeezelite-esp will start in recovery mode. Setup Wifi and" >> $outputReadme
|
|
|
+echo "then click on reboot within the system tab. And the squeezelite-esp should boot" >> $outputReadme
|
|
|
+echo "into full mode" >> $outputReadme
|
|
|
+echo "" >> $outputReadme
|
|
|
+echo "====LINUX====" >> $outputReadme
|
|
|
+echo "To flash sequeezelite run the following script:" >> $outputReadme
|
|
|
+echo "$outputBashScript [PORT_HERE] [BAUD_RATE]" >> $outputReadme
|
|
|
+echo "e.g. $outputBashScript /dev/ttyUSB0 115200" >> $outputReadme
|
|
|
+echo "" >> $outputReadme
|
|
|
+echo "====WINDOWS====" >> $outputReadme
|
|
|
+echo "To flash sequeezelite run the following script:" >> $outputReadme
|
|
|
+echo "$outputBatScript [PORT_HERE] [BAUD_RATE]" >> $outputReadme
|
|
|
+echo "e.g. $outputBatScript COM11 115200" >> $outputReadme
|
|
|
+echo "" >> $outputReadme
|
|
|
+echo "If you don't know how to run the BAT file with arguments then you can" >> $outputReadme
|
|
|
+echo "edit the bat file in Notepad. Open the file up and edit the following:" >> $outputReadme
|
|
|
+echo "Change 'set port=%1' to 'set port=[PORT_HERE]'. E.g. 'set port=COM11'" >> $outputReadme
|
|
|
+echo "Change 'set baud=%2' to 'set baud=[BAUD_RATE]'. E.g. 'set baud=115200'" >> $outputReadme
|
|
|
+echo "" >> $outputReadme
|
|
|
+echo "====MANUAL====" >> $outputReadme
|
|
|
+echo "Python esptool.py --port [PORT_HERE] --baud [BAUD_RATE] $writeParameters $partitionsParameters" >> $outputReadme
|
|
|
+
|
|
|
+
|
|
|
+# Write Linux BASH File
|
|
|
+if [ ! -f "$outputBashScript" ]; then
|
|
|
+ touch $outputBashScript
|
|
|
+fi
|
|
|
+
|
|
|
+echo "#!/bin/bash" >> $outputBashScript
|
|
|
+echo >> $outputBashScript
|
|
|
+echo "port=\$1" >> $outputBashScript
|
|
|
+echo "baud=\$2" >> $outputBashScript
|
|
|
+linuxFlashCommand="Python esptool.py --port \$port --baud \$baud"
|
|
|
+echo "$linuxFlashCommand $writeParameters $partitionsParameters" >> $outputBashScript
|
|
|
+
|
|
|
+# Write Windows BAT File
|
|
|
+if [ ! -f "$outputBatScript" ]; then
|
|
|
+ touch $outputBatScript
|
|
|
+fi
|
|
|
+
|
|
|
+echo "echo off" >> $outputBatScript
|
|
|
+echo "" >> $outputBatScript
|
|
|
+echo "set port=%1" >> $outputBatScript
|
|
|
+echo "set baud=%2" >> $outputBatScript
|
|
|
+windowsFlashCommand="Python esptool.py --port %port% --baud %baud%"
|
|
|
+echo "$windowsFlashCommand $writeParameters $partitionsParameters" >> $outputBatScript
|