#!/bin/bash

# Copyright (C) 2009  Ericsson AB
#	Author: Bjorn Runaker <bjorn.runaker@ericsson.com>

test -f /etc/f3507g.conf || exit 1
. /etc/f3507g.conf
EMPTY_TTY=/usr/bin/empty_tty
F3507G_AUTOSUSPEND=/usr/bin/f3507g_autosuspend

if [ "$CONTROL_DEV" ]
then
case $1 in
    hibernate)
	killall -USR1 mbm_gpsd
        $F3507G_AUTOSUSPEND off
	change_powerstate 0
	sleep 5
	if [ $? -eq 1 ]; then
        if [ "$HIBERNATE_IFDOWN" ]; then
            $HIBERNATE_IFDOWN
        fi
        if [ "$HIBERNATE1_CMD" ] 
	    then
	        $EMPTY_TTY -s -o $CONTROL_DEV -i $CONTROL_DEV "$HIBERNATE1_CMD\r"
            if [ "$HIBERNATE1_WAIT" ]
            then
                $EMPTY_TTY -w -t $TIMEOUT -i $CONTROL_DEV -o $CONTROL_DEV $HIBERNATE1_WAIT
            fi
	    fi
	    if [ "$HIBERNATE2_CMD" ] 
	    then
	        $EMPTY_TTY -s -o $CONTROL_DEV -i $CONTROL_DEV "$HIBERNATE2_CMD\r"
            if [ "$HIBERNATE2_WAIT" ]
            then
                $EMPTY_TTY -w -t $TIMEOUT -i $CONTROL_DEV -o $CONTROL_DEV $HIBERNATE2_WAIT
            fi
	    fi
	fi
        ;;
    suspend)
	killall -USR1 mbm_gpsd
        $F3507G_AUTOSUSPEND off
	change_powerstate 0
	sleep 5
	if [ $? -eq 1 ]; then
        if [ "$SUSPEND_IFDOWN" ]; then
            $SUSPEND_IFDOWN
        fi
        if [ "$SUSPEND1_CMD" ] 
        then
            $EMPTY_TTY -s -o $CONTROL_DEV -i $CONTROL_DEV "$SUSPEND1_CMD\r"
            if [ "$SUSPEND1_WAIT" ]
            then
                $EMPTY_TTY -w -t $TIMEOUT -i $CONTROL_DEV -o $CONTROL_DEV $SUSPEND1_WAIT
            fi
        fi
        if [ "$SUSPEND2_CMD" ] 
        then
            $EMPTY_TTY -s -o $CONTROL_DEV -i $CONTROL_DEV "$SUSPEND2_CMD\r"
            if [ "$SUSPEND2_WAIT" ]
            then
                $EMPTY_TTY -w -t $TIMEOUT -i $CONTROL_DEV -o $CONTROL_DEV $SUSPEND2_WAIT
            fi
        fi
	fi
       ;;
    thaw)
	# resume from hibernate
	change_powerstate 1
	if [ $? -eq 1 ]; then	
    if [ "$THAW1_CMD" ] 
    then
        $EMPTY_TTY -s -o $CONTROL_DEV -i $CONTROL_DEV "$THAW1_CMD\r"
        if [ "$THAW1_WAIT" ]
        then
            $EMPTY_TTY -w -t $TIMEOUT -i $CONTROL_DEV -o $CONTROL_DEV $THAW1_WAIT
        fi
    fi
    if [ "$THAW2_CMD" ] 
    then
        $EMPTY_TTY -s -o $CONTROL_DEV -i $CONTROL_DEV "$THAW2_CMD\r"
        if [ "$THAW2_WAIT" ]
        then
            $EMPTY_TTY -w -t $TIMEOUT -i $CONTROL_DEV -o $CONTROL_DEV $THAW2_WAIT
        fi
    fi
	fi
    if [ "$USE_AUTOSUSPEND" = "1" ]
    then
        $F3507G_AUTOSUSPEND on
    fi
	killall -USR2 mbm_gpsd
        ;;    
    resume)
	# resume from suspend from RAM
	change_powerstate 1
	if [ $? -eq 1 ]; then
    if [ "$RESUME1_CMD" ] 
    then
        $EMPTY_TTY -s -o $CONTROL_DEV -i $CONTROL_DEV "$RESUME1_CMD\r"
        if [ "$RESUME1_WAIT"]
        then
            $EMPTY_TTY -w -t $TIMEOUT -i $CONTROL_DEV -o $CONTROL_DEV $RESUME1_WAIT
        fi
    fi
    if [ "$RESUME2_CMD" ] 
    then
        $EMPTY_TTY -s -o $CONTROL_DEV -i $CONTROL_DEV "$RESUME2_CMD\r"
        if [ "$RESUME2_WAIT"]
        then
            $EMPTY_TTY -w -t $TIMEOUT -i $CONTROL_DEV -o $CONTROL_DEV $RESUME2_WAIT
        fi
    fi
	fi
    if [ "$USE_AUTOSUSPEND" = "1" ]
    then
        $F3507G_AUTOSUSPEND on
    fi
	killall -USR2 mbm_gpsd
        ;;
    *)  echo $1 
        ;;
esac
fi
