#!/bin/sh

# Created by jiaqiang.ye@lnxall.com
# Lnxall initialization for System
# 2023/03/07

# IMPORTANT: DO NOT CREATE RUNNING PROCESSES WHICH
# CONTINUES TO RUN AFTER THE SCRIPT'S TERMINATION.
# PLEASE DO EXIT SCRIPT WITH ZERO STATUS

create_sysinfo() {
	local retv=0
	local sysdir='/tmp/sysinfo'

	# create /tmp/sysinfo directory
	mkdir -p -m 0755 ${sysdir} ; retv=$?
	[ $retv -ne 0 ] && return 1

	# write board_name file
	if [ ! -f "${sysdir}/board_name" ] ; then
		echo 'WLOSANY_BOARD' > "${sysdir}/board_name"
		retv=$?
		chmod 644 "${sysdir}/board_name"
		[ $retv -ne 0 ] && return 2
	fi

	# write model file
	if [ ! -f "${sysdir}/model" ] ; then
		echo 'WLOSANY_MODEL' > "${sysdir}/model"
		retv=$?
		chmod 644 "${sysdir}/model"
	fi
	return $retv
}

create_dir() {
	local dirp="$1"
	if [ -d "${dirp}" ] ; then
		# already created, just return
		return 0
	fi

	[ -e "${dirp}" ] && rm -rf "${dirp}"
	mkdir -p "${dirp}"
	return $?
}

# TODO: to be removed platform dependent function.
# setup tty serial device for Ubuntu 20.04
setup_ttyserial() {
	if [ ! -c '/dev/ttylnx1' ] ; then
		chmod 777 /dev/ttyUSB1
		ln -sv /dev/ttyUSB1 /dev/ttylnx1
		return $?
	fi
	return 0
}

# modify GW_SN in /app/config/fac.ini
modify_gwsn() {
	local facini='/app/config/fac.ini'
	if [ ! -f "${facini}" ] ; then
		echo "Warning, file not found: '${facini}'" 1>&2
		return 0
	fi
	sed -e 's/21012C00FFFF/202303080917/g' -i "${facini}"
	return 0
}

mainfunc() {
	local rval=0

	create_dir '/var/run/lnxall' ; rval=$?
	if [ ${rval} -ne 0 ] ; then
		echo "Error, failed to create /var/run/lnxall directory!" 1>&2
		return 1
	fi

	create_sysinfo ; rval=$?
	if [ ${rval} -ne 0 ] ; then
		echo "Error, function has failed: create_info: ${rval}" 1>&2
		return 2
	fi

	setup_ttyserial ; retv=$?
	modify_gwsn
	return $retv
}

mainfunc ; exit $?
