#!/bin/sh

NAME="aiot-alarm-poweroff"

put_log () {
	echo "$NAME: $1"
	logger -t "$NAME" "$1"
}

alarm_timer () {
	put_log "alarm_timer $1 second"
	if ! echo "$1" > /sys/class/rtc/rtc0/wakealarm; then
		put_log "failed to set RTC alarm time"
		power-utils leave_sleep
		exit 1
	fi
}

usage() {
	put_log "Argument error"
	echo "    $NAME [rtc alarm time]"
	echo "      [rtc alarm time]     +second  (ex: +600)"
	echo "                     must be at least 180 sec."
	exit 1
}

if [ $# -lt 1 ]; then
	usage
fi

if [ $$ -ne "$(pgrep -fo "$0")" ]; then
	put_log "Already running"
	exit 1
fi

SIGN=$(echo "$1" | cut -c 1-1)
VAL=$(echo "$1" | cut -c 2-)
if [ "$SIGN" != "+" ]; then
	usage
fi

SEC=$VAL
if [ "$SEC" -lt 180 ]; then
	usage
fi

if [ ! -e /var/run/power-utils.pid ]; then
    echo "WARNING; atmark-power-utils service seems not running."
else
    if ! power-utils enter_sleep; then
        exit 1  # may be sleep is disabled
    fi
fi

echo 0 > /sys/class/rtc/rtc0/wakealarm
alarm_timer "$1"
touch /var/run/rtc_wake
poweroff
