#!/usr/bin/env bash set -e wai=$(dirname $(readlink -f "$0")) scenarios="${wai}/../scenarios" inputs="${wai}/../inputs.json" simulator="make -C ${wai}/../ run" parser="${wai}/../parser.awk" results="${wai}/results.csv" aheaders="simkey,wireless,wakeupfor" avalues="none,none,none" run-simulation () { # Generate inputs $scenarios $seed $simtime $wakeupevery $wakeupfor $n_nodes $extended $hint $poff $pon $prx $ptx $datasize $bitrate > "$inputs" # Run simulations if [ -e "$results" ] then $simulator 2>&1 | $parser | sed 1d | sed "s/$/,${avalues}/" >> "$results" else $simulator 2>&1 | $parser | sed "1 s/$/,${aheaders}/g" | sed "2,\$s/$/,${avalues}/" > "$results" fi } # Default Parameters seed=0 simtime=86400 # One day wakeupevery=3600 wakeupfor=180 n_nodes=12 extended="false" hint="false" poff=0 pon=0.4 prx=0.16 ptx=0.16 datasize=1000000 # MB bitrate="100kbps" run-scenarios() { # Configure number of seed per scenarios nseed=100 # Baseline echo "Baseline..." avalues="baseline,$wireless,$wakeupfor" for seed in $(seq 1 $nseed) do run-simulation done # Hint echo "Hint..." hint="true" avalues="hint,$wireless,$wakeupfor" for seed in $(seq 1 $nseed) do run-simulation done hint="false" # Extended echo "Extended..." extended="true" avalues="extended,$wireless,$wakeupfor" for seed in $(seq 1 $nseed) do run-simulation done extended="false" # Hint+Extended echo "Hint + Extended..." extended="true" hint="true" avalues="hintandextended,$wireless,$wakeupfor" for seed in $(seq 1 $nseed) do run-simulation done extended="false" hint="false" } # Clean previous runs [ -e "${results}" ] && rm "${results}" for wakeupfor in 60 180 do # Lora echo "----- Run Lora ($wakeupfor) -----" wireless="lora" bitrate="50kbps" pon=0.4 prx=0.16 ptx=0.16 run-scenarios # NbIot echo "----- Run NbIoT ($wakeupfor) -----" wireless="nbiot" bitrate="200kbps" pon=0.4 prx=0.65 ptx=0.65 run-scenarios done