#!/bin/sh
#############################################################
path="${0%/*}"
. "$path/inc/gwhw.inc"
. "$path/inc/wd.inc"

needRoot

usage() {
	die 'gwhw wd daemon'
}

#############################################################
TELEMWD="/tmp/.telem_watchdog"
TELEMWDLOG="/var/local/telem/stats/watchdog-boot-message"
EXTRADOG="/tmp/.extradog"
GW_NINIT_PATH="/var/local/telem/errors/gateway_not_initialized"
#############################################################

run() {
	S0="$(wdReadWord 0x00)"
	#KM="$(wdReadWord 0x24)"
	#KM="$(( 3 & ${KM:-0} ))"

	if [ "$((S0))" -gt 0 ]; then
		statusMSG="$(wdStatusStr "${S0}")"
		echo "$(date) Extradog: ${S0} ${statusMSG:-?}" >> "${TELEMWDLOG}"
		sync
	fi

	#wdKick
	while :; do
		if [ "$(find "${TELEMWD}" -mmin -0.3 -mmin +0 2>/dev/null)" == "${TELEMWD}" ]; then
			# File is at most 18 seconds old
			if [ -e "${GW_NINIT_PATH}" ]; then
				# Kick watchdog
				wdKick
			else
				# Kick watchdog and IFR
				wdKick all
			fi
			sleep 14
		fi
		sleep 3
	done
}

#############################################################
[ -e "${EXTRADOG}" ] && exit 1
touch "${EXTRADOG}"

run &>/dev/null

