#!/usr/bin/env bash
# tv-power.sh – Ein, Aus, Zustand, Schlaf-Timer, Neustart
#
#   ./tv-power.sh on            # aufwecken (KEYCODE_WAKEUP – tut nichts, wenn schon wach)
#   ./tv-power.sh off           # schlafen legen (KEYCODE_SLEEP – tut nichts, wenn schon aus)
#   ./tv-power.sh toggle        # wie die Ein/Aus-Taste (KEYCODE_POWER)
#   ./tv-power.sh status        # Awake / Asleep / Dreaming
#   ./tv-power.sh timer 30      # in 30 Minuten schlafen legen (Skript läuft so lange weiter)
#   ./tv-power.sh reboot        # Neustart
#
# Hinweis: „on“ klappt über das Netzwerk nur, solange der Fernseher im Standby noch per ADB
# erreichbar ist – das hängt vom Gerät und seinen Energiespareinstellungen ab.
set -euo pipefail
SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
# shellcheck source=tv-lib.sh
. "$SCRIPT_DIR/tv-lib.sh"

usage() { sed -n '2,12p' "$0" | sed 's/^# \{0,1\}//'; exit "${1:-0}"; }

case "${1:-}" in
  on)     tv_connect; tv_shell input keyevent KEYCODE_WAKEUP ;;
  off)    tv_connect; tv_shell input keyevent KEYCODE_SLEEP ;;
  toggle) tv_connect; tv_shell input keyevent KEYCODE_POWER ;;
  status)
    tv_connect
    tv_out dumpsys power | grep -E 'mWakefulness=' | head -n 1 | sed 's/^[[:space:]]*mWakefulness=//' || true
    ;;
  timer)
    mins="${2:-}"
    case "$mins" in ""|*[!0-9]*) usage 1 ;; esac
    tv_connect
    tv_info "Schlafe $TV_HOST in $mins Minute(n) …"
    sleep $((mins * 60))
    tv_connect
    tv_shell input keyevent KEYCODE_SLEEP
    ;;
  reboot) tv_connect; tv_adb reboot ;;
  -h|--help|help) usage 0 ;;
  *) usage 1 ;;
esac
