#!/bin/sh

# install SERIAL ko, should be closed in release version
#insmod /usr/lib/modules/3.10.0+/kernel/drivers/tty/serial/msm_serial_hs_lite.ko
amix 'SEC_MI2S_RX Audio Mixer MultiMedia1' 1
amix 'MultiMedia1 Mixer SEC_MI2S_TX' 1
# start bluetooth and pulseaudio
sh /etc/init.d/bluetooth-5 start
pulseaudio &

# save the dumplog to flash
#insmod /usr/lib/modules/3.10.0+/kernel/drivers/mtd/mtdoops.ko mtddev=misc record_size=131072

start-stop-daemon -S -b -a /sbin/adbd &

sh /usr/ui/startanimation.sh &
#reboot instead of turn to download mode when kernel panic
if [ x`cat /sys/class/android_usb/android0/download` = x"NORMAL" ]; then
    echo "default process for crash: reboot"
    echo 1 > /proc/sys/kernel/panic
    echo 0 > /sys/module/msm_poweroff/parameters/download_mode
else
    echo "default process for crash: download"
fi

date -s "2014-06-01 00:00:00"
#zte_fota

#################### Factory Restore Function Begin ######################
factory_restore()
{
	echo "start restore configs." >> /tmp/restore.log
	#restore nvconfig
	#rm /usr/zte/zte_conf/config/userseting_nvconfig.txt || echo "can not remove userseting_nvconfig.txt" >> /tmp/restore.log
	#restore dnsmasq
	rm /usr/zte/zte_conf/config/dnsmasq.conf || echo "can not remove /usr/zte/zte_conf/config/dnsmasq.conf" >> /tmp/restore.log
	cp /usr/zte_web/web/copy/etc/dnsmasq.conf /usr/zte/zte_conf/config/dnsmasq.conf || echo "can not copy /usr/zte_web/web/copy/etc/dnsmasq.conf" >> /tmp/restore.log
	#restore xxx
	rm /etc/factory_restore || echo "fatal error: can not remove flag /etc/factory_restore" >> /tmp/restore.log
	rm /etc_rw/ztembb/ztemc/factory_restore || echo "fatal error: can not remove flag /etc_rw/ztembb/ztemc/factory_restore" >> /tmp/restore.log
	echo "restore configs finished." >> /tmp/restore.log
	#restore pma
	rm /usr/pma/pmaconfig.ini
}

factory_restore_probe()
{
	if [ -f /etc/factory_restore ] || [ -f /etc_rw/ztembb/ztemc/factory_restore ]; then
		echo "need restore configs..." >> /tmp/restore.log
		factory_restore
	else
	    echo "no need restore configs." >> /tmp/restore.log
	fi
}

userdata_restore_probe()
{
	#check if restore ztedata
	if [ -f /etc/userdata_restore_flag ] || [ -f /etc_rw/ztembb/ztemc/userdata_restore_flag ]; then
		rm /etc/userdata_restore_flag || echo "fatal error: can not remove /etc/userdata_restore_flag" >> /tmp/restore.log
		rm /etc_rw/ztembb/ztemc/userdata_restore_flag || echo "fatal error: can not remove /etc_rw/ztembb/ztemc/userdata_restore_flag" >> /tmp/restore.log
		echo "need restore userdata..." >> /tmp/restore.log
		######## restore sms and phonebook here ########
		rm /usr/zte/web/sms_db/sms.db || echo "can not remove /usr/zte/web/sms_db/sms.db" >> /tmp/restore.log
		rm /usr/zte/web/pbm_db/pbm.db || echo "can not remove /usr/zte/web/pbm_db/pbm.db" >> /tmp/restore.log
		######## restore userdata here ########
		echo "restore userdata finished." >> /tmp/restore.log
	else
		echo "no need restore userdata." >> /tmp/restore.log
	fi
}

special_nv_restore()
{
	#check if restore special_nv
	if [ -f /etc/ignore_special_nv_flag ] || [ -f /etc_rw/ztembb/ztemc/ignore_special_nv_flag ]; then
		echo "need restore special_nv..." >> /tmp/restore.log
		######## start restore special_nv here ########
		sh /usr/zte/zte_conf/scripts/para_backup.sh mc_merge
		######## end restore special_nv here ########
		rm /etc/ignore_special_nv_flag || echo "fatal error: can not remove /etc/ignore_special_nv_flag" >> /tmp/restore.log
		rm /etc_rw/ztembb/ztemc/ignore_special_nv_flag || echo "fatal error: can not remove /etc_rw/ztembb/ztemc/ignore_special_nv_flag" >> /tmp/restore.log
		echo "restore special_nv finished." >> /tmp/restore.log
	else
		echo "no need special_nv userdata." >> /tmp/restore.log
	fi
}
### this must be the first to run ###
echo "checking for restore..." > /tmp/restore.log
echo "start time: `date`" >> /tmp/restore.log
userdata_restore_probe
factory_restore_probe
echo "end time  : `date`" >> /tmp/restore.log

################### cfg init ###########################################
#insmod /usr/lib/modules/3.18.20/drivers/cfg/cfg.ko
find /usr/lib/ -name cfg.ko|xargs insmod
mknod /dev/flash0 c 200 0
mknod /dev/flash1 c 200 1
nvram

echo "restore special_nv start time: `date`" >> /tmp/restore.log
special_nv_restore
echo "restore special_nv end time  : `date`" >> /tmp/restore.log
#Start ZTE syslog
zte_syslog_start()
{
  syslog_mode=`cfg get syslog_mode`
  syslog_level=`cfg get syslog_level`
  
  if [ $syslog_mode = 0 ]; then
    syslog_path=`cfg get syslog_path`

    syslog_size=`cfg get syslog_size`
    /usr/zte/zte_conf/scripts/zte_syslog.sh -L -o $syslog_path -l $syslog_level -s $syslog_size
  else
    if [ $syslog_mode = 1 ]; then
      syslog_host_ip=`cfg get syslog_host_ip` 
      /usr/zte/zte_conf/scripts/zte_syslog.sh -R $syslog_host_ip -l $syslog_level
    else
      /usr/zte/zte_conf/scripts/zte_syslog.sh -L
    fi
fi
}
klogd
zte_syslog_start

#################### Factory Restore Function End ######################
set_passwd()
{
	echo "root:zte9x15" > /tmp/tmppw
	chpasswd < /tmp/tmppw
	rm -rf /tmp/tmppw
}
set_passwd
#start up telnetd for debug use
# telnetd
#################### Add zte programs below ####################
ifconfig lo up
zte_usb_ctl &

diff_time=`cfg get hw_diff_systime`
#echo "diff_systime[$hw_diff_systime]" > /dev/kmsg
if [ "$diff_time" = "" ]; then
  cfg set hw_diff_systime=946684800
  cfg save
#echo hw_diff_systime-reset > /dev/kmsg
fi

zte_topsw_systime &

# qcmap_cli need to be server for adapter ppp
QCMAP_CLI &

# start zte_adapter_gps
zte_adapter_gps &
# zte_topsw_adapter_mgr will cal zte_topsw_cfg
zte_topsw_adapter_mgr 
#cfg will start zte_topsw_daemon
#zte_topsw_cfg &

#start zte_fota_vd
#zte_fota_vd &
zte_topsw_dua standalone &
#zte_dm &---- started by daemon
#zte_topsw_sleep &
#sh /usr/ui/startdui.sh &
sleep 3
zte_tempe_ctrl &
