#!/bin/sh

# Created by jiaqiang.ye@lnxall.com
# New diag.sh for Non-openwrt systems
# 2023/12/08

DIAG_BIN=''
export PATH=/opt/lnxall_app/bin:/usr/bin:/usr/sbin:/bin:/sbin

check_diag() {
	local bpath="/tmp/sysinfo/board_name"
	if [ ! -f "${bpath}" ] ; then
		echo "Error, file not found: '${bpath}'" 1>&2
		return 1
	fi
	local bname="$(cat ${bpath})"
	if [ -z "${bname}" ] ; then
		echo "Error, cannot find value board_name." 1>&2
		return 2
	fi

	local DIAGBIN="/opt/lnxall_app/platspec/diag_${bname}.lua"
	if [ ! -f "${DIAGBIN}" ] ; then
		echo "Error, no diag script found for '${bname}'" 1>&2
		return 3
	fi

	DIAG_BIN="${DIAGBIN}"
	return 0
}

stop_services() {
	systemctl stop emsd >/dev/null 2>/dev/null
	systemctl stop emsu >/dev/null 2>/dev/null
	systemctl stop linit.service >/dev/null 2>/dev/null
	systemctl stop proto_forward >/dev/null 2>/dev/null

	local PID="$(ps aux | grep -e sysmonitor | grep -v -e grep)"
	[ -z "${PID}" ] && nothup /opt/lnxall_app/bin/lua /opt/lnxall_app/bin/sysmonitor.lua

	PID="$(ps aux | grep -e deb4gnet | grep -v -e grep)"
	[ -z "${PID}" ] && nothup /opt/lnxall_app/bin/lua /opt/lnxall_app/bin/deb4gnet.lua
}

FLAG="$1"
if [ -z "$FLAG" ] ; then
	FLAG="0"
fi

check_diag
[ -z "${DIAG_BIN}" ] && exit 1
stop_services
exec lua "${DIAG_BIN}" "${FLAG}"
exit 2
