#!/bin/bash
XBMC_SEND=/usr/local/bin/xbmc-send
STATUS=`tail /var/log/syslog -n 1000 |grep "LCDd: sock_send: socket write error" |awk '{print $2$3}' | cut -d: -f 1,2,3 --output-delimiter=""| tail -1`
DEBUG=0
WORKDIR=/tmp/watchdog
PREVIOUS_STATUS=0

general_checks() {
if [ ! -r $WORKDIR/LCD ]
then
	if [ $DEBUG -eq 1 ]; then echo Primera ejecución. Creando directorio de trabajo.; fi
	if [ ! -d $WORKDIR ]; then	mkdir $WORKDIR; fi
	echo 0 > $WORKDIR/LCD
else
	PREVIOUS_STATUS=`cat $WORKDIR/LCD`
	if [ ! $PREVIOUS_STATUS ]
	then
		if [ $DEBUG -eq 1 ]; then echo Variable PREVIOUS_STATUS vacía. Estableciéndola a 0.; fi
		PREVIOUS_STATUS=0
	fi
fi
}


check_lcd_status() {

if [ ! $STATUS ] # Si no se detectan errores...
then
	if [ $DEBUG -eq 1 ]; then echo No se han detectado errores. Saliendo...; fi
	exit 0
else	# Si por el contrario hay errores...
	if [ $DEBUG -eq 1 ]; then echo Error detectado en $STATUS.; fi
	if [ $DEBUG -eq 1 ]; then echo Timestamp del error actual: $STATUS. Timestamp anterior: $PREVIOUS_STATUS; fi
	if [ $PREVIOUS_STATUS -eq $STATUS ] # Si el error es el mismo que el comprobado en la anterior ejecución...
	then
		if [ $DEBUG -eq 1 ]; then echo Mismo timestamp que en ejecución anterior. Saliendo...; fi
		exit 0
	else
		echo $STATUS > $WORKDIR/LCD
		resume_lcd
	fi
fi
}

resume_lcd()
{
	if [ $DEBUG -eq 1 ]; then echo Resumiendo demonio LCDd; fi
	$XBMC_SEND --host=localhost --action="LCD.Resume" > /dev/null
}
general_checks
check_lcd_status
