#!/bin/sh

DATE=`date +%Y%m%d_%H:%M:%S`

echo "$DATE ***** starting x session *****" >> ~/tmp/xstart.log
#
# use gsm0710muxd ?
#
MUX=yes

#export DISPLAY=192.168.0.200:1

[ -f ~/.Xresources ] && xrdb ~/.Xresources

#export MOKO_DEBUG=1

export DBUS_SESSION_BUS_ADDRESS=`/usr/bin/dbus-daemon --fork --print-address 1 --session`
echo $DBUS_SESSION_BUS_ADDRESS > /var/run/dbus/dbus_session_bus_address

# Start GPS
echo "1" > /sys/bus/platform/devices/neo1973-pm-gps.0/pwron


#functions
start_gsmd() {
killall -9 gsmd
killall -9 gsm0710muxd
#killall -9 pppd

if [ $MUX = no ]; then

	echo "starting classic gsmd"

	stty -F /dev/ttySAC0 -crtscts -ixon -ixoff -ixany
	echo "0" > /sys/bus/platform/devices/neo1973-pm-gsm.0/power_on ; sleep 1
	echo "1" > /sys/bus/platform/devices/neo1973-pm-gsm.0/power_on ; sleep 1
	echo "1" > /sys/bus/platform/devices/neo1973-pm-gsm.0/reset ; sleep 1
	echo "0" > /sys/bus/platform/devices/neo1973-pm-gsm.0/reset ; sleep 1

	echo -e "AT%N0187\r" >/dev/ttySAC0
	sleep 1

	# disable sleep mode (4 to enable)
	stty -F /dev/ttySAC0 -crtscts
	echo -e "AT%SLEEP=2\r" >/dev/ttySAC0
	sleep 1

#	/usr/sbin/gsmd gsmd -p /dev/ttySAC0 -s 115200 -F -d -l /tmp/gsm.log
	/usr/sbin/gsmd gsmd -p /dev/ttySAC0 -s 115200 -F -d 
else
	#
	# request a pts from the gsm0710muxd
	#


	stty -F /dev/ttySAC0 -crtscts -ixon -ixoff -ixany
	echo "0" > /sys/bus/platform/devices/neo1973-pm-gsm.0/power_on ; sleep 1
	echo "1" > /sys/bus/platform/devices/neo1973-pm-gsm.0/power_on ; sleep 1
	echo "1" > /sys/bus/platform/devices/neo1973-pm-gsm.0/reset ; sleep 1
	echo "0" > /sys/bus/platform/devices/neo1973-pm-gsm.0/reset ; sleep 2

	echo "starting gsm 07.10 multiplexing"

	/usr/sbin/gsm0710muxd -s /dev/ttySAC0 &
	sleep 10
	dbus-send --system --print-reply --type=method_call 	\
		--dest=org.pyneo.mux /org/pyneo/Muxer 		\
		org.pyneo.Powered.SetPower "string:GSM" boolean:true
	sleep 10

	PTS=`dbus-send --system --print-reply --type=method_call\
		--dest=org.pyneo.mux /org/pyneo/Muxer 		\
		org.pyneo.Powered.GetDevice "string:GSM"	\
		| awk  -vORS="" '{print}' 			\
		| awk -F " " '{print $8 }'			\
		| awk -F '"' '{print substr($2, 8)}'`

 	/usr/sbin/gsmd gsmd -p $PTS -s 115200 -F -d  -l /tmp/gsmd.log &
fi
}


start_neod (){
	sleep 5
	while true; do
		DATE=`date +%H:%M:%S`
		echo "$DATE starting neod" >> ~/tmp/xstart.log
		neod
		sleep 1
	done
}


start_phonekit() {
	while true; do
		DATE=`date +%H:%M:%S`
                echo "$DATE starting phonekit" >> ~/tmp/xstart.log
		phone-kit
		sleep 1
	done
}


start_panel () {
	sleep 10
	while true; do
		DATE=`date +%H:%M:%S`
                echo "$DATE starting panel" >> ~/tmp/xstart.log
		matchbox-panel --start-applets systray,startup --end-applets openmoko-panel-clock,openmoko-panel-battery,openmoko-panel-gsm --titlebar > /tmp/panel.log
		sleep 1
	done
}


start_today() {
	sleep 3
	while true; do
		DATE=`date +%H:%M:%S`
                echo "$DATE starting today" >> ~/tmp/xstart.log
		openmoko-today
		sleep 1
	done
}

start_swap() {

	swapoff /swapfile

	# sleep a bit for better UX
	#sleep 500

	if test -e /swapfile ; then
          echo "swap already there" >> ~/tmp/xstart.log
	  swapon /swapfile
        else
	  DATE=`date +%H:%M:%S`
          echo "$DATE -- making swap" >> ~/tmp/xstart.log
	  dd if=/dev/zero of=/swapfile bs=1024 count=65k
	  mkswap -c /swapfile
	  swapon /swapfile
	  DATE=`date +%H:%M:%S`
	  echo "$DATE -- finished making swap" >> ~/tmp/xstart.log
	fi
}

#
# main
#

start_swap 

start_gsmd &
start_neod &
killall pulseaudio
pulseaudio -D &
sleep 40
start_phonekit &
sleep 5
start_panel &
start_today &

killall omrotate


#
# start window manager
#
DATE=`date +%H:%M:%S`
echo "$DATE -- starting matchbox" >> ~/tmp/xstart.log
while true; do
	matchbox-window-manager -use_titlebar yes -use_desktop_mode decorated -theme Moko -use_cursor yes
	sleep 1
done




