83 lines
2 KiB
Bash
83 lines
2 KiB
Bash
#!/bin/sh
|
|
|
|
# in seconds
|
|
PERIOD=600
|
|
RESETGUARD=60
|
|
SINK=157
|
|
LOCATION="lille"
|
|
PLATFORM="iotlab-m3"
|
|
ARCH="m3"
|
|
RESET=200
|
|
|
|
_resources() {
|
|
experiment-cli get -r
|
|
}
|
|
|
|
_reset_node() { # 1: node
|
|
# pick random point in time between guard times
|
|
SELECTED=$(shuf -i ${RESETGUARD}-$((${PERIOD}-${RESETGUARD})) -n 1)
|
|
sleep ${SELECTED}
|
|
iotlab-node -sto -l "${LOCATION},${ARCH},${1}"
|
|
iotlab-node -sta -l "${LOCATION},${ARCH},${1}"
|
|
}
|
|
|
|
# for some reason, no DAG is built if all nodes start up simultaneously
|
|
_phased_start() {
|
|
iotlab-node -sto
|
|
iotlab-node -sta -l lille,m3,47+49+51+53+${SINK}
|
|
sleep 5
|
|
iotlab-node -sta
|
|
}
|
|
|
|
_run_firmware() {
|
|
echo "Flashing ${1} and ${2}"
|
|
iotlab-node -up ${1} -e "${LOCATION},${ARCH},${SINK}"
|
|
iotlab-node -up ${2} -l "${LOCATION},${ARCH},${SINK}"
|
|
|
|
sleep ${PERIOD}
|
|
|
|
iotlab-node -sto
|
|
iotlab-node -sta
|
|
|
|
_reset_node ${RESET} &
|
|
sleep ${PERIOD}
|
|
}
|
|
|
|
_recompile_firmware() { # 1: BUILDDIR, 2: EXPDIR, 3: MODE, 4: OPTS
|
|
|
|
echo Recompiling firmware ${3}
|
|
|
|
rm ${1}/rpl-eval-sink.${PLATFORM}
|
|
make -C ${1} TARGET=${PLATFORM} clean
|
|
make -C ${1} -j4 TARGET=${PLATFORM} WITH_RPL_RESTORE_NO_INVOKE=1 $4
|
|
install ${1}/rpl-eval-sink.${PLATFORM} ${2}/${3}-sink
|
|
|
|
rm ${1}/rpl-eval-source.${PLATFORM}
|
|
make -C ${1} TARGET=${PLATFORM} clean
|
|
make -C ${1} -j4 TARGET=${PLATFORM} $4
|
|
install ${1}/rpl-eval-source.${PLATFORM} ${2}/${3}-source
|
|
}
|
|
|
|
pre() { # 1: expdir
|
|
|
|
if [ -z ${BUILDDIR+x} ]; then
|
|
echo "BUILDDIR not defined..."
|
|
BUILDDIR="/home/tim/src/contiki-inga/examples/ipv6/rpl-print-topo"
|
|
fi
|
|
|
|
if [ ! -z ${WITH_RECOMPILE+x} ]; then
|
|
_recompile_firmware ${BUILDDIR} ${1} "n" ""
|
|
_recompile_firmware ${BUILDDIR} ${1} "h" "RPL_RESTORE=1"
|
|
_recompile_firmware ${BUILDDIR} ${1} "hs" "RPL_RESTORE=1 RPL_RESTORE_USE_UIDS=1"
|
|
fi
|
|
}
|
|
|
|
during() { # 1: expdir
|
|
_run_firmware ${1}/n-source ${1}/n-sink
|
|
_run_firmware ${1}/h-source ${1}/h-sink
|
|
_run_firmware ${1}/hs-source ${1}/hs-sink
|
|
}
|
|
|
|
post() {
|
|
echo Finishing experiment $1
|
|
}
|