#!/bin/sh

. /etc/profile
. /etc/init.d/functions
. /etc/init.d/globals

SHOWINFO "start"

mount -t proc proc /proc

# update
if [ -x /etc/init.d/stb_update.sh ]; then
	/etc/init.d/stb_update.sh
fi

# init system
SHOWINFO "creating and mounting system directories..."
mount -t sysfs sys /sys
mount -t tmpfs tmp /tmp
mount -t tmpfs media /media
mount -t tmpfs mnt /mnt
for dir in epg movies music pictures streaming autofs plugins; do
	mkdir -p /mnt/${dir}
done
mount -t tmpfs srv /srv
mkdir -p /dev/pts
mount -t devpts devpts /dev/pts
mkdir -p /dev/shm/usb

SHOWINFO "begin mount var-part"
# mount var-partition
/etc/init.d/var_mount.sh
SHOWINFO "end mount var-part"

SHOWINFO "begin nfs"
# for nfsd
mkdir -p /var/lib/nfs
mount -t tmpfs nfs /var/lib/nfs
SHOWINFO "end nfs"

SHOWINFO "begin samba"
# for samba
mkdir -p /var/samba
mount -t tmpfs samba /var/samba
SHOWINFO "end samba"

SHOWINFO "begin wget"
# for wget
mkdir -p /tmp/wget
SHOWINFO "end wget"

SHOWINFO "begin dmesg"
dmesg -n 1
SHOWINFO "end dmesg"

SHOWINFO "begin set time"
# set dummy time
date -s "2017-01-01 00:00"
SHOWINFO "end set time"

SHOWINFO "begin wpa"
# directory for wireless drivers
mkdir -p /var/run/wpa_supplicant
SHOWINFO "end wpa"

SHOWINFO "begin restore"
# automatic restore
if [ -e /var/backup_flash.tar.gz ]; then
	/bin/restore_flash.sh
fi
SHOWINFO "end restore"

SHOWINFO "begin update sys"
# update system
if [ -x /etc/init.d/sys_update.sh ]; then
	/etc/init.d/sys_update.sh
fi
SHOWINFO "end update sys"

SHOWINFO "begin update var-part"
# update var-partition
if [ -x /etc/init.d/var_update.sh ]; then
	/etc/init.d/var_update.sh
fi
SHOWINFO "end update var-part"

SHOWINFO "begin hostname"
service hostname start
SHOWINFO "end hostname"

SHOWINFO "begin syslog"
# logging as much as possible
service syslogd start
SHOWINFO "end syslog"

SHOWINFO "begin mdev cold"
## mdev coldplug for node permissions
LOGINFO "mdev coldplug ..."
echo >/dev/mdev.seq
echo $(which mdev) > /proc/sys/kernel/hotplug
mdev -s
SHOWINFO "end mdev cold"

SHOWINFO "begin mdev usb"
# mdev -s does not poke usb devices, so we need to do it here.
LOGINFO "scanning /sys/bus/usb/devices/ to help mdev with usb-coldplug"
for i in /sys/bus/usb/devices/*; do
	case "${i##*/}" in
		*-*:1.0)
			LOGINFO "usb device $i found"
			echo add >$i/uevent
		;;
	esac
done
SHOWINFO "end mdev usb"

SHOWINFO "begin load modules"
# load modules / create nodes
load_module extra/lnxplatnativeDrv.ko
load_module extra/lnxKKALDrv.ko
load_module extra/lnxnotifyqDrv.ko
load_module extra/lnxplatDrv.ko
load_module extra/lnxplatSAR.ko
load_module extra/lnxscsDrv.ko
load_module extra/lnxfssDrv.ko
load_module extra/lnxcssDrv.ko
load_module extra/lnxtmasDrv.ko
load_module extra/lnxtmvssDrvGPL.ko
load_module extra/lnxtmvssDrv.ko
load_module extra/lnxpvrDrv.ko
load_module extra/lnxdvbciDrv.ko
load_module extra/lnxIPfeDrv.ko
if [ -e /var/etc/.allow_fullhd ]; then
	load_module extra/framebuffer.ko cnxtfb_standalone=1 cnxtfb_hdwidth=1920 cnxtfb_hdheight=1080 cnxtfb_hdmaxwidth=1920 cnxtfb_hdmaxheight=1080 cnxtfb_autoscale_sd=2
else
	load_module extra/framebuffer.ko cnxtfb_standalone=1 cnxtfb_hdwidth=1280 cnxtfb_hdheight=720  cnxtfb_hdmaxwidth=1280 cnxtfb_hdmaxheight=720  cnxtfb_autoscale_sd=2
fi

load_module extra/control.ko
load_module extra/frontpanel.ko

create_node "cs_display"
ln -sf /dev/cs_display /dev/display
dt -t"LOAD DRIVERS"

load_module kernel/drivers/media/dvb-core/dvb-core.ko
load_module extra/typhoon.ko
load_module extra/blazer.ko
load_module extra/tavor.ko
load_module extra/a8296.ko
load_module extra/av201x.ko
load_module extra/sharp780x.ko
load_module extra/dvb_api_prop.ko
load_module extra/avl6761.ko
load_module extra/mxl603.ko
load_module extra/avl6211.ko
load_module extra/dvb_api.ko
load_module kernel/fs/cifs/cifs.ko

SHOWINFO "create nodes"
create_node "KAL"
create_node "notifyq"
create_node "platform"
create_node "content"
create_node "standby"
create_node "video"
create_node "audio"
create_node "pvr"
create_node "ci"
create_node "cs_control"
create_node "cs_ir"
create_node_dir "fb"
create_node "FrontEnd"
create_node "ipfe"
create_node "pvrsrvkm"
create_node "vss_bc"
SHOWINFO "end modules/nodes"

SHOWINFO "begin ir"
mkdir -p /dev/input
ln -sf /dev/cs_ir /dev/input/nevis_ir
ln -sf /dev/cs_ir /dev/input/input0
SHOWINFO "end ir"

SHOWINFO "begin network"
service networking start
SHOWINFO "end network"
SHOWINFO "begin ntpdate"
service ntpdate start
SHOWINFO "end ntpdate"

SHOWINFO "begin display"
# say hi to everyone
dt -ls01
dt -ls02
dt -c
dt -t"BOOT NI-IMAGE"
SHOWINFO "end display"

SHOWINFO "begin run_initscripts"
# starting services and daemons in order of the symlink names
LOGINFO "run initscripts start ..."
run_initscripts start
SHOWINFO "end run_initscripts"

service coredump start

SHOWINFO "done"
