blob: bddf3b66f193ab171172321b3305a00c3e152897 [file] [log] [blame]
#!/bin/sh
cd /app/client
update_config()
{
if [ -e /tmp/config ] ; then
. /tmp/config
mv /tmp/config /tmp/configold
fi
export VIDEO_OUTPUT
export VIDEO_RESOLUTION
export AUDIO_OUTPUT
export VIDEO_SUPPORTED_MODES
export CACHED_AUTH
export SERVER_NAME
}
export LD_LIBRARY_PATH=/app/client:/usr/local/lib:$LD_LIBRARY_PATH
export SERIALNUMBER=$(hnvram -qr 1ST_SERIAL_NUMBER)
[ -z "$SERIALNUMBER" ] && SERIALNUMBER=$(hnvram -qr SERIAL_NO)
ulimit -c 49152
SERVER_MAC=
opts=
if is-tv-box; then
# TV box starts in powered-off mode
mode=waitpower
if [ -e /tmp/runapp ] ; then
mode=app
read appname opts </tmp/runapp
# For now don't let opts through
opts=
if [ "$appname" = "miniclient" ]; then
mode=miniclient
mv /tmp/runapp /tmp/runappold
fi
fi
else
opts="$opts --encodemode"
mode=miniclient
fi
SERVER=127.0.0.1
SERVER_MAC=
while :; do
update_config # may change $SERVER or other things
echo "$0: mode: '$mode'"
case "$mode" in
miniclient)
rm -f /tmp/gpio/ledcontrol/waitpower
[ -n "$SERVER_MAC" ] && [ ! -e /tmp/goalone ] && ether-wake $SERVER_MAC
./miniclient $opts "$SERVER"
mcstate=$?
SERVER=127.0.0.1
if [ "$mcstate" != "0" ]; then
echo "Unexpected exit, miniclient restarting after a delay"
sleep 10 # prevent high-speed spinning in a loop
elif [ -e /tmp/runapp ] ; then
mode=app
else
mode=waitpower
fi
;;
app)
mv /tmp/runapp /tmp/runappold
rm -f /tmp/gpio/ledcontrol/waitpower
./run-app
if [ -e /tmp/poweroff ] ; then
mode=waitpower
rm -f /tmp/poweroff
else
mode=miniclient
fi
;;
waitpower)
echo > /tmp/gpio/ledcontrol/waitpower
./waitpower 2>&1 | logos waitpower
mode=miniclient
;;
esac
done