#!/bin/sh

MODDIR=/lib/modules
boxtype=`cat /etc/boxtype`
tuner=`cat /etc/dvbt`

if [ $boxtype == 'bska' ] && [ -e /var/etc/bska_lfd ]; then
  echo "Init VFD bialy"
  insmod $MODDIR/vfd.ko rec=0
else
  echo "Init VFD czarny"
  insmod $MODDIR/vfd.ko rec=1
fi

loadMME() {
   # mme bug workaround
   /bin/dd if=/dev/zero of=/dev/st231-0 bs=1024 count=4096
   /bin/dd if=/dev/zero of=/dev/st231-1 bs=1024 count=4096
   # end mme bug wa
   echo "load a firmware"
   #/bin/stslave -t stb7100.1 -R /boot/audio.elf
   if [ -e /boot/audio_dts.elf ]; then
       /bin/stslave -t stb7100.1 -R /boot/audio_dts.elf
   else
       /bin/stslave -t stb7100.1 -R /boot/audio.elf
   fi
   echo "load v firmware"
   /bin/stslave -t stb7100.0 -R /boot/video.elf
}

if [ -e /var/etc/.firstboot ]; then
   echo "WAIT 1st start" >/dev/vfd
   echo "WAIT 1st start"
   rm /var/etc/.firstboot
   sleep 1
   touch /dev/.devfsd
fi

/etc/init.d/mountvirtfs start
/etc/init.d/portmap start

# start automounter with umount timeout of 5 seconds
if [ -e $MODDIR/autofs4.ko ]; then
	insmod $MODDIR/autofs4.ko
	/usr/sbin/automount --timeout=5 /autofs file /etc/auto.usb
fi

if [ ! -e /var/etc/.firstboot ]; then

    insmod $MODDIR/boxtype.ko
    boxtype=`cat /proc/boxtype`
    echo "boxtype $boxtype"
    echo "$boxtype" > /etc/boxtype
   
   insmod $MODDIR/e2_proc.ko

   loadMME

   echo "Starting DEBUG Interface"
   /etc/init.d/mountall start
   /etc/init.d/hostname start

   echo "starting telnetd"
   /usr/sbin/telnetd -l /bin/login

   echo "init stmfb"
   insmod $MODDIR/stmcore-display-stx7100.ko
  if  grep -q "config.av.videoport=Scart" /etc/enigma2/settings; then
        insmod $MODDIR/stmfb.ko display0=720x576-32@50i:12m:pal:yuv:rgb;
        echo "VIDEO:scart"
        VIDEO=scart
   else
        insmod $MODDIR/stmfb.ko display0=1280x720-32@50:12m:pal:yuv:yuv;
        echo "VIDEO:hdmi_component"
        VIDEO=hdmi_component
    fi

   echo "LOADING MODULES"   
   echo "LOADING MODULES" >/dev/vfd

   echo "init embx"
   insmod $MODDIR/embxshell.ko
   insmod $MODDIR/embxmailbox.ko mailbox0=0xb9211000:136:set2 mailbox1=0xb9212000:0 ;
   insmod $MODDIR/embxshm.ko mailbox0=shm:0:7:0x60000000:0:16:16:0:1024:0xa4000000:0x10000000 ;
   insmod $MODDIR/mme_host.ko transport0=shm

   echo "MME LOADED"

   if [ $boxtype == 'bsla' ] || [ $boxtype == 'bzzb' ] || [ -e /var/etc/bska_fan ]; then
    echo "init Cooler"
    insmod $MODDIR/cooler.ko
   fi

   echo "init AVS"
   if [ $boxtype == 'bxzb' ]; then
      insmod $MODDIR/avs.ko type=fake_avs
   else
      insmod $MODDIR/avs.ko type=stv6412
   fi

   echo "init player"
   player=`cat /proc/stb/player/version`
   player=`cat /proc/stb/player/version | awk '{ print substr( $0, length($0) - 2, length($0) ) }'`

   echo "init player $player"
   insmod $MODDIR/mmelog.ko
   insmod $MODDIR/mpeg2hw.ko mmeName=MPEG2_TRANSFORMER0;
   insmod $MODDIR/ksound.ko
   insmod $MODDIR/p2div64.ko
   insmod $MODDIR/stm_v4l2.ko
   insmod $MODDIR/pseudocard.ko

   if [ $boxtype == 'bska' ] || [ $boxtype == 'bxzb' ]; then
	echo "init frontends bialy"
	insmod $MODDIR/fe-core.ko
   elif [ $boxtype == 'bsla' ]; then
	echo "init frontends czarny"
	insmod $MODDIR/fe-core-twin1.ko
   else
	insmod $MODDIR/fe-core-twin2.ko
   fi
    
   echo "init drivers"
   if [ $player -gt 131 ]; then
	insmod $MODDIR/pti.ko
	insmod $MODDIR/stm_monitor.ko
	insmod $MODDIR/stmsysfs.ko
	if [ $boxtype == 'bzzb' ]; then
	  insmod $MODDIR/stmdvb.ko TSIS_mode=serial NIMS=twin ;
	elif [ $boxtype == 'bsla' ]; then
	  insmod $MODDIR/stmdvb.ko TSIS_mode=parallel NIMS=twin ;
	else
	  insmod $MODDIR/stmdvb.ko TSIS_mode=parallel NIMS=single ;
	fi
    else
	insmod $MODDIR/pti.ko
	insmod $MODDIR/stmdvb.ko
	insmod $MODDIR/stm_monitor.ko
   fi	
   #player2 parametry: noaudiosync=1, discardlateframe=0, useoldaudiofw=1
   if [ -e /boot/audio_dts.elf ]; then
       insmod $MODDIR/player2.ko discardlateframe=0 useoldaudiofw=1
   else
       insmod $MODDIR/player2.ko discardlateframe=0
   fi
   insmod $MODDIR/sth264pp.ko
   insmod $MODDIR/stmalloc.ko
   insmod $MODDIR/platform.ko

   if [ -e $MODDIR/bpamem.ko ]; then
        insmod $MODDIR/bpamem.ko
        mknod /dev/bpamem0 c 153 0
   fi

      echo "DVB-T Status = "$tuner
   if [ $tuner == 'dvbt=on' ]; then
      echo "init dvb-t as102"
       /var/config/dvbt &
     insmod $MODDIR/dvb-as102.ko
   fi

  if [ $boxtype == 'bxzb' ]; then
      echo "bxzb" > /proc/stb/video/switch_type
  else
      echo "bska" > /proc/stb/video/switch_type
  fi

  if [ "$VIDEO" = "scart" ]; then
      echo "VIDEO:scart"
      echo "scart" > /proc/stb/video/switch
  else
      echo "VIDEO:hdmi_component"
      echo "component720p" > /proc/stb/video/switch
  fi

   showiframe -p /boot/bootlogo.mvi &
   stfbcontrol a 0

   echo "init frontpanel"
   insmod $MODDIR/simu_button.ko

   echo "init lircd"
      /usr/bin/lircd

   mknod /dev/rc c 147 1

      /bin/evremote2 &

   echo "starting vsftpd"
   /etc/init.d/vsftpd start
   /usr/sbin/inetd

   NFS=$(grep -c 'nfs' /proc/cmdline)
   if [ "$NFS" -eq "1" ]; then 
      echo "Booting from nfs, don't set network" 
   else 
   #Network & restore backup management
    if [ -e /var/etc/1stboot ]; then
	echo "detected 1stboot - no network configured"
	BACKUP=`findfs LABEL=RECOVERY`
	if [ -n "$BACKUP" ]; then
		mount $BACKUP /hdd
		if [ -e /hdd/backup/autorestore.sh ]; then
			echo "Autorestore" > /dev/vfd
			echo "Autorestore"
			/hdd/backup/autorestore.sh
		fi
		umount /hdd
	fi  
    else
       if [ -e /etc/network/interfaces ]; then
        . /var/config/wlan.conf
        if [ $wlan == off ]; then
            /etc/init.d/networking start &
        else
            insmod /lib/modules/$wlan''.ko
            echo "$wlan driver loaded"
            /etc/init.d/networking restart &
        fi
       fi
    fi
   fi

   #timefix e2 in format MMDDhhmmYYYYY.ss
   date -s "121220001970"

   stfbcontrol a 255

   #init rc.modules
   /var/config/rc.modules &

   #init rc.local
   /var/config/rc.local &

   until false
   do
      echo "starting e2->"
      if [ $boxtype == 'bska' ] && [ -e /var/etc/bska_lfd ]; then
	python /usr/lib/enigma2/python/Plugins/Extensions/PKT/progress 70 LED &
      else
	python /usr/lib/enigma2/python/Plugins/Extensions/PKT/progress 70 VFD &
      fi
    /usr/local/bin/enigma2.sh
      rtv=$?
      cp /tmp/reference.dat /var/bin
      echo "e2 ended <- RTV: " $rtv
      case "$rtv" in
		0) echo "0"
		   echo "E2 ERROR" > /dev/vfd
		   sync
		   init 6;;
		1) echo "1"
		   echo "SHUTDOWN" > /dev/vfd
		   sync
		   init 0
		   umount -a;;
		2) echo "2"
		   echo "REBOOT" > /dev/vfd
		   sync
		   init 6;;
		3) echo "3"
		   echo "E2 RESTART" > /dev/vfd
		   echo "0" > /proc/progress
		   showiframe -p /boot/bootlogo.mvi &;;
		*) echo "*"
		   echo "ERROR" > /dev/vfd
		   sync
		   echo "0" > /proc/progress
		   showiframe -p /boot/bootlogo.mvi &;;
      esac
   done
  fi
 fi
fi

#never reached
echo "REBOOT" > /dev/vfd
echo "REBOOT"
sync
reboot
