#! /bin/sh
# 
# ke-recv	Kernel UEvents to D-Bus system daemon proxy etc.
#
# Copyright (C) 2004-2006 Nokia Corporation. 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. 
#
# This program is distributed in the hope that it will be useful, but
# WITHOUT ANY WARRANTY; without even the implied warranty of
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
# General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program; if not, write to the Free Software
# Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA
# 02110-1301 USA

PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
DAEMON=/usr/sbin/ke-recv
NAME=ke-recv
DESC="ke-recv"
USER=root
DTOOL=/usr/sbin/dsmetool
PARAMS=''


test -x $DAEMON || exit 0

source /etc/osso-af-init/af-defines.sh
# temporary workaround for bug 42035:
source /etc/osso-af-init/osso-gtk.defs

if [ "x$INTERNAL_MMC_MOUNTPOINT" != "x" ]; then
  MMC_WHOLE_DEVICE='/dev/mmcblk1'
  INTERNAL_MMC_WHOLE_DEVICE='/dev/mmcblk0'

#  INTERNAL_MMC_COVER_OP='/org/kernel/devices/platform/gpio_switch/bat_cover/cover_switch'
  INTERNAL_SYSFS_MMC_COVER_FILE='/sys/devices/platform/gpio-switch/bat_cover/state'
  export INTERNAL_SYSFS_MMC_COVER_FILE ;# INTERNAL_MMC_COVER_OP 
else
  MMC_WHOLE_DEVICE='/dev/mmcblk0'
fi

MMC_DEVICE_FILE_WITHOUT_PARTITION=$MMC_WHOLE_DEVICE
MMC_DEVICE_FILE_WITH_PARTITION="${MMC_WHOLE_DEVICE}p1"
TMP=`echo "$MMC_WHOLE_DEVICE" | sed 's#/# #g' | awk '{print $2}'`
MMC_DEVICE_OP="/org/kernel/block/$TMP"
MMC_SYSFS_FILE=$MMC_WHOLE_DEVICE
export MMC_DEVICE_FILE_WITHOUT_PARTITION MMC_DEVICE_FILE_WITH_PARTITION \
       MMC_DEVICE_OP MMC_SYSFS_FILE

if [ "x$INTERNAL_MMC_WHOLE_DEVICE" != "x" ]; then
  INTERNAL_MMC_DEVICE_FILE_WITHOUT_PARTITION=$INTERNAL_MMC_WHOLE_DEVICE
  INTERNAL_MMC_DEVICE_FILE_WITH_PARTITION="${INTERNAL_MMC_WHOLE_DEVICE}p1"
  TMP=`echo "$INTERNAL_MMC_WHOLE_DEVICE" | sed 's#/# #g' | awk '{print $2}'`
  INTERNAL_MMC_DEVICE_OP="/org/kernel/block/$TMP"
  INTERNAL_MMC_SYSFS_FILE=$INTERNAL_MMC_WHOLE_DEVICE
  export INTERNAL_MMC_DEVICE_FILE_WITHOUT_PARTITION INTERNAL_MMC_DEVICE_OP \
         INTERNAL_MMC_DEVICE_FILE_WITH_PARTITION INTERNAL_MMC_SYSFS_FILE
fi

#MMC_COVER_OP='/org/kernel/devices/platform/mmci_omap_2/cover_switch'
#MMC_COVER_OP2='not used'
SYSFS_MMC_COVER_FILE='/sys/class/mmc_host/mmc1/cover_switch'
#SYSFS_MMC_COVER_FILE2='not used'
export SYSFS_MMC_COVER_FILE ;#SYSFS_MMC_COVER_FILE2

#USB_CABLE_OP='/org/kernel/devices/platform/tahvo_usb/vbus_state'
#USB_CABLE_OP2='/org/kernel/devices/cbus_omap/tahvo_usb/vbus_state'
SYSFS_USB_CABLE_FILE='/sys/devices/platform/musb_hdrc/cable'
#SYSFS_USB_CABLE_FILE2='not used'
SYSFS_USB_MODE_FILE='/sys/devices/platform/musb_hdrc/mode'
export SYSFS_USB_CABLE_FILE SYSFS_USB_MODE_FILE

#CAM_ACT_OP='/org/kernel/devices/platform/gpio_switch/cam_act/cover_switch'
SYSFS_CAM_ACT_FILE='/sys/devices/platform/gpio-switch/cam_act/state'
#CAM_TURN_OP='/org/kernel/devices/platform/gpio_switch/cam_turn/cover_switch'
SYSFS_CAM_TURN_FILE='/sys/devices/platform/gpio-switch/cam_turn/state'
export SYSFS_CAM_ACT_FILE SYSFS_CAM_TURN_FILE


case "$1" in
  start)
	# Start daemons
	echo -n "Starting $DESC: "

        # g_file_storage is kept loaded in peripheral mode
        cat $SYSFS_USB_MODE_FILE | grep peripheral > /dev/null
        if [ $? = 0 ]; then
                osso-usb-mass-storage-enable.sh
        fi

	if [ -x $DTOOL ]; then
        	$DTOOL -U $USER -n -1 -t $DAEMON
	else
		start-stop-daemon -b --start --quiet --user $USER \
			--exec $DAEMON -- $PARAMS
	fi
	echo "$NAME."
	;;
  stop)
	echo -n "Stopping $DESC: "

	if [ -x $DTOOL ]; then
		$DTOOL -k $DAEMON
	else
		start-stop-daemon --stop --quiet --oknodo --user $USER \
			--exec $DAEMON -- $PARAMS
	fi

        # unload if we're in peripheral mode
        cat $SYSFS_USB_MODE_FILE | grep peripheral > /dev/null
        if [ $? = 0 ]; then
                osso-usb-mass-storage-disable.sh
        fi

	echo "$NAME."
	;;
  reload|restart|force-reload)
	#
	#	If the "reload" option is implemented, move the "force-reload"
	#	option to the "reload" entry above. If not, "force-reload" is
	#	just the same as "restart".
	#
	"$0" stop
	"$0" start
	;;
  *)
	N=/etc/init.d/$NAME
	# echo "Usage: $N {start|stop|restart|reload|force-reload}" >&2
	echo "Usage: $N {start|stop|restart|force-reload}" >&2
	exit 1
	;;
esac

exit 0
