#!/bin/sh
#
# Action script to handle VDR
#

PATH=/bin:/sbin:/usr/bin:/usr/sbin
DEFAULT=/etc/default/vdr
IR=/dev/input/ir
AV7110IR=/proc/av7110_ir
SERVICES=""
MODULES=""

# Wait max. 10 seconds
wait_for() {
    COUNT=100
    while [ "$COUNT" != "0" ]; do
        [ -e "$1" ] && return 0
        sleep 0.1s
        COUNT=$((COUNT - 1))
    done
    return 1
}

[ ! -r "$DEFAULT" ] || . $DEFAULT

case "$1" in
    thaw|resume)
	setserial /dev/ttyS0 uart none
	for MODULE in $MODULES; do  modprobe $MODULE >/dev/null 2>&1 || logger -t vdr "module load failed: $MODULE"; done

	wait_for $IR  || exit 0
	chmod 600 $IR
	chown vdr $IR

	wait_for $AV7110IR || exit 0
	chmod 600 $AV7110IR
	chown vdr $AV7110IR

	for SERVICE in $SERVICES; do  systemctl start $SERVICE.service >/dev/null 2>&1 || logger -t vdr "$SERVICE.service start failed: $SERVICE"; done
    ;;

    hibernate|suspend)
	for SERVICE in $SERVICES; do  SERVICES_REVERSE="$SERVICE $SERVICES_REVERSE"; done
	for SERVICE in $SERVICES_REVERSE; do  systemctl stop $SERVICE.service >/dev/null 2>&1 || logger -t vdr "$SEVICE.service stop failed: $SERVICE"; done

	for MODULE in $MODULES; do  MODULES_REVERSE="$MODULE $MODULES_REVERSE"; done
	for MODULE in $MODULES_REVERSE; do  rmmod $MODULE >/dev/null 2>&1 || logger -t vdr "module unload failed: $MODULE"; done

	killall tvtime-vdr >/dev/null 2>&1
	killall tvtime >/dev/null 2>&1
	rm -f /home/*/.tvtime/tvtimefifo* /home/*/.tvtime/tvtime-vdr-*.fifo
    ;;
esac
