#!/bin/sh
# Короткий отчёт о состоянии экрана — в консоль.
#
# Смысл в том, что UART бывает односторонним: провод на приём припаян, на
# передачу нет, и залогиниться некуда. Тогда единственный способ узнать, что
# происходит, — чтобы плата рассказала сама, без вопросов.
#
# Ставится только в отладочный образ.
set -u

line() { echo "-------- $* --------"; }

echo
line "DashDash, аптайм $(cut -d. -f1 /proc/uptime)с"

for unit in dashdash-agent dashdash-kiosk; do
	printf '%-16s %s\n' "$unit" "$(systemctl is-active "$unit" 2>/dev/null)"
done

line "экраны"
found=0
for status in /sys/class/drm/card*-*/status; do
	[ -f "$status" ] || continue
	found=1
	printf '  %-22s %s\n' "$(basename "$(dirname "$status")")" "$(cat "$status")"
done
[ "$found" = 1 ] || echo "  разъёмов DRM не видно вовсе"

line "cog"
if command -v cog >/dev/null 2>&1; then
	cog --version 2>&1 | head -1 | sed 's/^/  /'
	# Платформа DRM — отдельный модуль; если его нет, --platform=drm не заработает.
	for dir in /usr/lib/*/cog/modules /usr/lib/cog/modules; do
		[ -d "$dir" ] || continue
		echo "  модули: $(ls "$dir" 2>/dev/null | tr '\n' ' ')"
	done
else
	echo "  не установлен"
fi

line "сеть"
# Проверять командой, а не кодом возврата конвейера: у конвейера он от head,
# то есть всегда 0, и ветка «не ответил» никогда бы не сработала.
if command -v nmcli >/dev/null 2>&1; then
	nmcli -t -f DEVICE,TYPE,STATE device status 2>/dev/null | head -5 | sed 's/^/  /'
else
	echo "  nmcli не установлен"
fi

line "последнее от киоска"
journalctl -u dashdash-kiosk -b --no-pager -n 12 -o cat 2>/dev/null | sed 's/^/  /'

line "конец отчёта"
echo
