#!/bin/sh
#===============================================================================
#
#  Copyright (C) 2022 by Digi International Inc.
#  All rights reserved.
#
#  This program is free software; you can redistribute it and/or modify it
#  under the terms of the GNU General Public License version 2 as published by
#  the Free Software Foundation.
#
#
#  !Description: Initialize the ConnectCore demo example
#
#===============================================================================

# Source function library
. /etc/init.d/functions

readonly COG_BINARY="/usr/bin/cog"
readonly DEMOSERVER_BINARY="/srv/www/demoserver.py"
readonly STOP_TIMEOUT="5"

stop_process() {
	# try to stop gracefully
	killproc "${1}" >/dev/null 2>&1
	for i in $(seq ${STOP_TIMEOUT}); do
		pid=$(pidofproc "${1}") || break
		if [ "${i}" -eq ${STOP_TIMEOUT} ]; then
			kill -KILL "${pid}" >/dev/null 2>&1
		fi
		sleep 1
	done
}

export_environment_variables() {
	export DISPLAY=:0.0
	export XDG_RUNTIME_DIR=/run/user/0
	export WAYLAND_DISPLAY=wayland-0
	export COG_PLATFORM_WL_VIEW_FULLSCREEN=1
	# FULLSCREEN variable will have preference over other geometry variables.
	if [ -f "/sys/class/graphics/fb0/virtual_size" ]; then
		COG_PLATFORM_WL_VIEW_WIDTH="$(cut -d',' -f1 /sys/class/graphics/fb0/virtual_size)"
		COG_PLATFORM_WL_VIEW_HEIGHT="$(cut -d',' -f2 /sys/class/graphics/fb0/virtual_size)"
		[ -n "${COG_PLATFORM_WL_VIEW_WIDTH}" ] && export COG_PLATFORM_WL_VIEW_WIDTH
		[ -n "${COG_PLATFORM_WL_VIEW_HEIGHT}" ] && export COG_PLATFORM_WL_VIEW_HEIGHT
	fi
}

case "$1" in
	start)
		${DEMOSERVER_BINARY} > /dev/null 2>&1 &
		export_environment_variables
		${COG_BINARY} \
			--allow-file-access-from-file-urls=true \
			--allow-universal-access-from-file-urls=false \
			--enable-offline-web-application-cache=false \
			--enable-page-cache=false \
			--allow-modal-dialogs=true \
			/srv/www/index.html > /dev/null 2>&1 &
		;;
	stop)
		stop_process "${COG_BINARY}"
		stop_process "${DEMOSERVER_BINARY}"
		;;
	restart)
		$0 stop
		sleep 1
		$0 start
		;;
	*)
		echo "Usage: $0 {start|stop|restart}"
		exit 1
		;;
esac
